Date: Wed, 19 Oct 2022 11:36:40 +0200 From: Evilham <contact@evilham.com> To: Tomek CEDRO <tomek@cedro.info> Cc: FreeBSD Questions Mailing List <freebsd-questions@freebsd.org>, freebsd-hackers@freebsd.org, questions@freebsd.org Subject: Re: proper python3 interpreter invocation Message-ID: <33597a9aff9c418bdb4a7cd9364ebafe51d4@yggdrasil.evilham.com> In-Reply-To: <CAFYkXjn2Nc8Kn%2BLxDZjhBOaz5%2BA2xy_E86asBJikJGoeQNx6Eg@mail.gmail.com> References: <CAFYkXjn2Nc8Kn%2BLxDZjhBOaz5%2BA2xy_E86asBJikJGoeQNx6Eg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hey, here just someone who has fiddled around with ports more than they are willing to admit, so take this with a grain of salt: On dc., oct. 19 2022, Tomek CEDRO wrote: > Hello world :-) > > Is Python 3 part of the base? Nope > > What would be the most valid way to invoke a Python 3 script? > > Two options are possible: > 1. #!/usr/bin/env python > 2. #!/usr/bin/env python3 There is no python port on FreeBSD, so 1 would usually fail. There *is* a python3 meta-port which points to the currently blessed python3 version. > > I am working on a mobile application in Python + Kivy that can > be then > converted into Android and iOS application. It works fine here > on > FreeBSD even in bare console (DRM KMS). I would like to build > Android > application on FreeBSD (I know iOS version needs macOS+XCode). > For > that I need Android NDK that is officially only provided for > Windows, > macOS and Linux. I did a modification to make it work on FreeBSD > using > Linux binaries. The goal is to create a FreeBSD Port for Android > NDK > (no official support / releases will be provided for our > platform). > But the patches are rejected at the upstream :-( > > https://github.com/android/ndk/issues/1780 > https://github.com/android/ndk/issues/1781 > https://github.com/android/ndk/issues/1785 That's great, that you're working on it that is. For this kind of project, sadly I think it is somewhat common that upstream is a tad.. reticent accepting such patches. Possibly the rationale is that if you get this to work, they'll start getting support requests / bug reports that have "nothing to do with their project". Who knows. > > This one is interesting in particular: > https://github.com/android/ndk/issues/1785 > > Some of their scripts use `#!/usr/bin/env python3` and some use > `#!/usr/bin/env python`. The ones using `python` does not work > out of > the box on FreeBSD.. so I wanted to unify the interpreter to use > `python3` (or `python` whatever is best if there was any kind of > sensible discussion). > > I know that I can create a Python VirtualEnv where python == > python3. > Also I can create a symlink /usr/local/bin/python3 -> > /usr/local/bin/python but that customization will make system > incoherent with other standard installations. Maybe I should > simply > create local patches when creating that port? There is something even better than local patches, which is a shebangfix! It'll point to the exact python version that is being supported (aka python3.X nowadays): This is something actually supported by the ports infrastructure. https://docs.freebsd.org/en/books/porters-handbook/uses/#uses-shebangfix You can use it to, ehem, fix the shebang :-). Off memory I can't recall a python port using that, but I am confident you'll find it by grepping around the ports tree. Good luck moving forward ^^. -- Evilham > Google not only does not and will not provide releases for > FreeBSD but > also rejects patches to make things work here. We are doomed to > a > local fork on purpose :-( > > What would be the proper approach on FreeBSD? Where am I wrong? > > Any hints welcome :-) > Tomek
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?33597a9aff9c418bdb4a7cd9364ebafe51d4>