[PATCH] Use env to find python

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Use env to find python

Sid Spry
From b3854bd9791bb21d7284ef6284a3fb7d4b585412 Mon Sep 17 00:00:00 2001
From: Sid Spry <[hidden email]>
Date: Sun, 14 Jun 2020 23:29:46 -0500
Subject: [PATCH] Use env to find python
To: [hidden email]

---
bin/archive-conf | 2 +-
bin/binhost-snapshot | 2 +-
bin/check-implicit-pointer-usage.py | 2 +-
bin/chmod-lite.py | 2 +-
bin/chpathtool.py | 2 +-
bin/clean_locks | 2 +-
bin/dispatch-conf | 2 +-
bin/dohtml.py | 2 +-
bin/doins.py | 2 +-
bin/ebuild | 2 +-
bin/ebuild-ipc.py | 2 +-
bin/egencache | 2 +-
bin/emaint | 2 +-
bin/emerge | 2 +-
bin/emirrordist | 2 +-
bin/env-update | 2 +-
bin/filter-bash-environment.py | 2 +-
bin/fixpackages | 2 +-
bin/glsa-check | 2 +-
bin/install.py | 2 +-
bin/lock-helper.py | 2 +-
bin/portageq | 2 +-
bin/quickpkg | 2 +-
bin/regenworld | 2 +-
bin/xattr-helper.py | 2 +-
bin/xpak-helper.py | 2 +-
lib/portage/tests/runTests.py | 2 +-
lib/portage/util/changelog.py | 2 +-
runtests | 2 +-
tabcheck.py | 2 +-
30 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/bin/archive-conf b/bin/archive-conf
index 8341ffe73..36a4da07a 100755
--- a/bin/archive-conf
+++ b/bin/archive-conf
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/binhost-snapshot b/bin/binhost-snapshot
index d677e7568..3726bb20a 100755
--- a/bin/binhost-snapshot
+++ b/bin/binhost-snapshot
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2010-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/check-implicit-pointer-usage.py b/bin/check-implicit-pointer-usage.py
index a49db8107..5b3cec019 100755
--- a/bin/check-implicit-pointer-usage.py
+++ b/bin/check-implicit-pointer-usage.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b

# Ripped from HP and updated from Debian
# Update by Gentoo to support unicode output
diff --git a/bin/chmod-lite.py b/bin/chmod-lite.py
index 177be7eab..c34c68912 100755
--- a/bin/chmod-lite.py
+++ b/bin/chmod-lite.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/chpathtool.py b/bin/chpathtool.py
index fbd18b987..fb438e5ba 100755
--- a/bin/chpathtool.py
+++ b/bin/chpathtool.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2011-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/clean_locks b/bin/clean_locks
index 94ba4c606..c62d10b94 100755
--- a/bin/clean_locks
+++ b/bin/clean_locks
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/dispatch-conf b/bin/dispatch-conf
index 62ab3f6cc..9d22aae72 100755
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/dohtml.py b/bin/dohtml.py
index dfcaa6026..8505134c5 100755
--- a/bin/dohtml.py
+++ b/bin/dohtml.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/doins.py b/bin/doins.py
index 6bc30c90b..8de480e81 100644
--- a/bin/doins.py
+++ b/bin/doins.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
diff --git a/bin/ebuild b/bin/ebuild
index 460aa0fd1..fbc6ad177 100755
--- a/bin/ebuild
+++ b/bin/ebuild
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py
index d68d3f05e..02b59f5ef 100755
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2010-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
diff --git a/bin/egencache b/bin/egencache
index d172319f8..6fb2fe0fe 100755
--- a/bin/egencache
+++ b/bin/egencache
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2009-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/emaint b/bin/emaint
index df904f7c0..d07e0d022 100755
--- a/bin/emaint
+++ b/bin/emaint
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2005-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/emerge b/bin/emerge
index e372f5e9e..08f92b40e 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2006-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/emirrordist b/bin/emirrordist
index 3ea08379e..4797053d6 100755
--- a/bin/emirrordist
+++ b/bin/emirrordist
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2013-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/env-update b/bin/env-update
index 2256b37f5..5de3b1560 100755
--- a/bin/env-update
+++ b/bin/env-update
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/filter-bash-environment.py b/bin/filter-bash-environment.py
index 045ea6f52..312c322d4 100755
--- a/bin/filter-bash-environment.py
+++ b/bin/filter-bash-environment.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/fixpackages b/bin/fixpackages
index a291e013d..0a977a01b 100755
--- a/bin/fixpackages
+++ b/bin/fixpackages
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/glsa-check b/bin/glsa-check
index eff01cf31..161553711 100755
--- a/bin/glsa-check
+++ b/bin/glsa-check
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/install.py b/bin/install.py
index 495534d33..d2e757bed 100755
--- a/bin/install.py
+++ b/bin/install.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2013-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/lock-helper.py b/bin/lock-helper.py
index aa2dd60fa..8434977e1 100755
--- a/bin/lock-helper.py
+++ b/bin/lock-helper.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2010-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/portageq b/bin/portageq
index 3be5ab584..362087afa 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/quickpkg b/bin/quickpkg
index df8c1a8e8..6cf9f6434 100755
--- a/bin/quickpkg
+++ b/bin/quickpkg
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/regenworld b/bin/regenworld
index bedc58bda..065215379 100755
--- a/bin/regenworld
+++ b/bin/regenworld
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/xattr-helper.py b/bin/xattr-helper.py
index 49c981580..7e11c1a73 100755
--- a/bin/xattr-helper.py
+++ b/bin/xattr-helper.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2012-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/bin/xpak-helper.py b/bin/xpak-helper.py
index 8c965ecda..413febf73 100755
--- a/bin/xpak-helper.py
+++ b/bin/xpak-helper.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2009-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/lib/portage/tests/runTests.py b/lib/portage/tests/runTests.py
index d4d1f7c76..9dc06df31 100755
--- a/lib/portage/tests/runTests.py
+++ b/lib/portage/tests/runTests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -bWd
+#!/usr/bin/env -S python -bWd
# runTests.py -- Portage Unit Test Functionality
# Copyright 2006-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
diff --git a/lib/portage/util/changelog.py b/lib/portage/util/changelog.py
index 9fc5ab6df..d99f6c17d 100644
--- a/lib/portage/util/changelog.py
+++ b/lib/portage/util/changelog.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b
# Copyright 2009-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

diff --git a/runtests b/runtests
index 11c317dff..fab9b5157 100755
--- a/runtests
+++ b/runtests
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env -S python
# Copyright 2010-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
diff --git a/tabcheck.py b/tabcheck.py
index a28ad93d9..8b6ed8738 100755
--- a/tabcheck.py
+++ b/tabcheck.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python -b
+#!/usr/bin/env -S python -b

import tabnanny,sys

--
2.26.2


Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Ulrich Mueller-2
But we know that it is in /usr/bin, so why add yet another indirection?

signature.asc (517 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Sid Spry
On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
> But we know that it is in /usr/bin, so why add yet another indirection?
>
> Attachments:
> * signature.asc

Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.

I understand your concern but are these really in a hot path? Whatever the scripts are doing will beat the time it takes to invoke env by orders of magnitude. I can run benchmarks if you'd like, would the tests serve as such?

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Mike Gilbert-2
On Mon, Jun 15, 2020 at 9:39 AM Sid Spry <[hidden email]> wrote:
>
> On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
> > But we know that it is in /usr/bin, so why add yet another indirection?
> >
> > Attachments:
> > * signature.asc
>
> Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.

The portage ebuild and the python distutils module already take care
of updating shebangs at install time.

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Mike Gilbert-2
On Tue, Jun 16, 2020 at 1:45 PM Mike Gilbert <[hidden email]> wrote:

>
> On Mon, Jun 15, 2020 at 9:39 AM Sid Spry <[hidden email]> wrote:
> >
> > On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
> > > But we know that it is in /usr/bin, so why add yet another indirection?
> > >
> > > Attachments:
> > > * signature.asc
> >
> > Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.
>
> The portage ebuild and the python distutils module already take care
> of updating shebangs at install time.

I suppose your patch might be useful if you are trying to run portage
from a git checkout on a prefix system.

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Zac Medico-2
On 6/16/20 10:46 AM, Mike Gilbert wrote:

> On Tue, Jun 16, 2020 at 1:45 PM Mike Gilbert <[hidden email]> wrote:
>>
>> On Mon, Jun 15, 2020 at 9:39 AM Sid Spry <[hidden email]> wrote:
>>>
>>> On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
>>>> But we know that it is in /usr/bin, so why add yet another indirection?
>>>>
>>>> Attachments:
>>>> * signature.asc
>>>
>>> Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.
>>
>> The portage ebuild and the python distutils module already take care
>> of updating shebangs at install time.
>
> I suppose your patch might be useful if you are trying to run portage
> from a git checkout on a prefix system.
>
So, given that the ebuild updates shebangs automatically, should't we
optimize the default shebangs to be as flexible as possible?
--
Thanks,
Zac


signature.asc (1000 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Mike Gilbert-2
On Tue, Jun 16, 2020 at 1:55 PM Zac Medico <[hidden email]> wrote:

>
> On 6/16/20 10:46 AM, Mike Gilbert wrote:
> > On Tue, Jun 16, 2020 at 1:45 PM Mike Gilbert <[hidden email]> wrote:
> >>
> >> On Mon, Jun 15, 2020 at 9:39 AM Sid Spry <[hidden email]> wrote:
> >>>
> >>> On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
> >>>> But we know that it is in /usr/bin, so why add yet another indirection?
> >>>>
> >>>> Attachments:
> >>>> * signature.asc
> >>>
> >>> Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.
> >>
> >> The portage ebuild and the python distutils module already take care
> >> of updating shebangs at install time.
> >
> > I suppose your patch might be useful if you are trying to run portage
> > from a git checkout on a prefix system.
> >
>
> So, given that the ebuild updates shebangs automatically, should't we
> optimize the default shebangs to be as flexible as possible?

Yes, that makes sense.

However, we should test to make sure that distutils is smart enough to
parse that "/usr/bin/env -S python" string and replace it with
version-specific python shebang.

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Michał Górny-5
On Tue, 2020-06-16 at 15:19 -0400, Mike Gilbert wrote:

> On Tue, Jun 16, 2020 at 1:55 PM Zac Medico <[hidden email]> wrote:
> > On 6/16/20 10:46 AM, Mike Gilbert wrote:
> > > On Tue, Jun 16, 2020 at 1:45 PM Mike Gilbert <[hidden email]> wrote:
> > > > On Mon, Jun 15, 2020 at 9:39 AM Sid Spry <[hidden email]> wrote:
> > > > > On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
> > > > > > But we know that it is in /usr/bin, so why add yet another indirection?
> > > > > >
> > > > > > Attachments:
> > > > > > * signature.asc
> > > > >
> > > > > Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.
> > > >
> > > > The portage ebuild and the python distutils module already take care
> > > > of updating shebangs at install time.
> > >
> > > I suppose your patch might be useful if you are trying to run portage
> > > from a git checkout on a prefix system.
> > >
> >
> > So, given that the ebuild updates shebangs automatically, should't we
> > optimize the default shebangs to be as flexible as possible?
>
> Yes, that makes sense.
>
> However, we should test to make sure that distutils is smart enough to
> parse that "/usr/bin/env -S python" string and replace it with
> version-specific python shebang.
>
'/usr/bin/env python' (with no extra options) is the portable shebang.

--
Best regards,
Michał Górny


signature.asc (631 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Sid Spry
On Tue, Jun 16, 2020, at 3:57 PM, Michał Górny wrote:

> On Tue, 2020-06-16 at 15:19 -0400, Mike Gilbert wrote:
> > On Tue, Jun 16, 2020 at 1:55 PM Zac Medico <[hidden email]> wrote:
> > > On 6/16/20 10:46 AM, Mike Gilbert wrote:
> > > > On Tue, Jun 16, 2020 at 1:45 PM Mike Gilbert <[hidden email]> wrote:
> > > > > On Mon, Jun 15, 2020 at 9:39 AM Sid Spry <[hidden email]> wrote:
> > > > > > On Mon, Jun 15, 2020, at 2:36 AM, Ulrich Mueller wrote:
> > > > > > > But we know that it is in /usr/bin, so why add yet another indirection?
> > > > > > >
> > > > > > > Attachments:
> > > > > > > * signature.asc
> > > > > >
> > > > > > Ah, sorry -- I forgot to note this here. If you wish to support prefix it is possible it may not be in /usr/bin. Granted I am not sure if the prefix stage3 I was using is old enough to be broken in some way, but adding this would prevent future breakage.
> > > > >
> > > > > The portage ebuild and the python distutils module already take care
> > > > > of updating shebangs at install time.
> > > >
> > > > I suppose your patch might be useful if you are trying to run portage
> > > > from a git checkout on a prefix system.
> > > >
> > >
> > > So, given that the ebuild updates shebangs automatically, should't we
> > > optimize the default shebangs to be as flexible as possible?
> >
> > Yes, that makes sense.
> >
> > However, we should test to make sure that distutils is smart enough to
> > parse that "/usr/bin/env -S python" string and replace it with
> > version-specific python shebang.
> >
>
> '/usr/bin/env python' (with no extra options) is the portable shebang.
>

I added `-S` to preserve the options passed via the shebang line. It seems they can be left off, does anyone know otherwise?

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Fabian Groffen-2
On 16-06-2020 23:10:28 -0500, Sid Spry wrote:
> On Tue, Jun 16, 2020, at 3:57 PM, Michał Górny wrote:
> > '/usr/bin/env python' (with no extra options) is the portable shebang.
> >
>
> I added `-S` to preserve the options passed via the shebang line. It seems they can be left off, does anyone know otherwise?

-S is not supported on some platforms.

In any case, I think this patch is wrong.  In the Prefix case, the
shebangs are set during install, in the non-Prefix case I think there is
machinery in place to replace the shebangs during install.

It seems the problem is already solved, why do you need these shebangs
changed?

Thanks,
Fabian

--
Fabian Groffen
Gentoo on a different level

signature.asc (499 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Ulrich Mueller-2
In reply to this post by Michał Górny-5
>>>>> On Tue, 16 Jun 2020, Michał Górny wrote:

> '/usr/bin/env python' (with no extra options) is the portable shebang.

I still think this is a gross hack. You want your script to use the
correct interpreter (which is in /usr/bin, or the path substituted for
it at install time), not some random binary which happens to be found
in the user's ${PATH}.

Ulrich

signature.asc (517 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use env to find python

Michał Górny-5
On Wed, 2020-06-17 at 10:18 +0200, Ulrich Mueller wrote:
> > > > > > On Tue, 16 Jun 2020, Michał Górny wrote:
> > '/usr/bin/env python' (with no extra options) is the portable shebang.
>
> I still think this is a gross hack. You want your script to use the
> correct interpreter (which is in /usr/bin, or the path substituted for
> it at install time), not some random binary which happens to be found
> in the user's ${PATH}.
>

How do you presume what the correct interpreter is, and why do you
presume that users put 'random binaries' in their PATH?  What if
the user needs to override 'correct interpreter'?  Requiring people to
overwrite executables in /usr/bin sounds like a 'gross hack'.

--
Best regards,
Michał Górny


signature.asc (631 bytes) Download Attachment