Hello,
On 22 May 2021, at 13:25, Adolf Belka adolf.belka@ipfire.org wrote:
Hi Michael and All,
On 20/05/2021 12:15, Michael Tremer wrote:
Hello, Since Core Update 158 is now open, I would like to finish migrating the remaining Python 2 modules. Fedora has dropped crda a little while ago and added some scripts to wireless-regdb: https://src.fedoraproject.org/rpms/wireless-regdb I think we should follow that path and add the udev rules to lfs/wireless-regdb and adapt this script for our needs: https://src.fedoraproject.org/rpms/wireless-regdb/blob/rawhide/f/setregdomai...
I have been working on this script but I have reached an impasse. The script as it is, presumes that /etc/localtime is a symlink to one of the timezones in /usr/share/zoneinfo/ If localtime is a file and not a symlink then the scripts man page says that the system admin must create a file called regdomain containing the country code in /etc/sysconfig/
I believe we are using a hardlink here. I would therefore drop that part of the code, or change /etc/localtime to a symlink.
IPFire does not use symlinks to the zoneinfo files so the country code can't be created by the script.
localtime can't just be read as it is a binary file. zdump could read it but that is not available in IPFire as it is commented out in the glibc rootfile and anyway it would say that the TZ="/etc/localtime" so that wouldn't help either. I tried it on another system that did have zdump.
I thought I could use the location routine with the local-ipaddress from red but that won't work if IPFire is behind another router as red would then be a private ip address.
Then I thought about doing a similar thing as with DDNS to "Guess the real public IP with help of an external server" but I am not sure if that could be just done without letting people know we are accessing an external server.
So I have reached the point where the script will not work as it is and I have not been able to figure out a way to find the country code that has been selected for the IPFire installation.
Hopefully there is an easy option that someone can point me to that I have missed to recognise.
How about to make it so simply that we simply read the value from /var/ipfire/wlanap/settings? Where did we get this data from before?
Best, -Michael
Looking forward to any suggestions.
Regards,
Adolf.
We could then drop crda and all dependencies. Would you be up for having a look at this? -Michael
On 14 May 2021, at 20:28, Adolf Belka adolf.belka@ipfire.org wrote:
Hi Michael,
The blockage of nmap to removing python2 was resolved but I have a new one now that may be more difficult to resolve.
python-m2crypt was able to be successfully built with python3. However crda uses python-m2crypt and from what I have read it only works with python2.
When I do the build then M2Crypto is in python3.8/site-packages/ and crda gives the following error
make[1]: Entering directory '/usr/src/crda-4.14' GEN keys-gcrypt.c Trusted pubkeys: pubkeys/linville.key.pub.pem pubkeys/sforshee.key.pub.pem ERROR: Failed to import the "M2Crypto" module: No module named _m2crypto Please install the "M2Crypto" Python module. On Debian GNU/Linux the package is called "python-m2crypto".
No matter what I do crda doesn't find python-m2crypto. If I change the python-m2crypto lfs from using
cd $(DIR_APP) && python3 setup.py build cd $(DIR_APP) && python3 setup.py install --root=/
to
cd $(DIR_APP) && python setup.py build cd $(DIR_APP) && python setup.py install --root=/
then crda builds successfully.
Arch Linux and Gentoo have a python3 patch for crda (the same patch for both) but it makes no difference for my build.
Regards,
Adolf
On 05/05/2021 16:27, Michael Tremer wrote:
Hello,
I would like to talk about what has been discussed at the last developer conference call this week: Dropping Python 2
This version of Python has reached its end of life and will no longer receive any security fixes. Hence we need to get rid of it as soon as possible.
However, there is lots of software that still depends on it which has to be migrated away first.
There are at least the following packages:
boost fetchmail fireinfo iotop ipaddr libxml2 libxslt newt nmap python python-clientform python-daemon python-distutils python-distutils-extra python-docutils python-feedparser python-inotify python-ipaddress python-m2crypto python-mechanize python-optional-src python-pyparsing python-rssdler python-setuptools python-six python-typing
We also have the following scripts:
config/ca-certificates/certdata2pem.py config/unbound/unbound-dhcp-leases-bridge
Fireinfo is written by us and has a lot of C which will make it a little bit more difficult to migrate. We would also have to be very careful to not change any behaviour of the current implementation.
The rest is probably either software that is entirely written in Python 2 or software that brings bindings for Python. The latter case is easy because we can either force it to build with Python 3 or we just disable the bindings.
Ultimately we might need to keep Python around in the build system if there are other packages that rely on it. However, it would be great if we were able to remove it from the distribution very soon. Looking at his list, it does not seem to be too difficult.
Would anyone be up to help and remove Python from any of those packages above? I would like to aim for Core Update 158 and remove as much stuff as possible - if we can everything - and then remove Python 2 in the update after that. If anyone has any custom scripts or applications, people will have some time to migrate away.
Best, -Michael
-- Sent from my laptop