Only python should be required to build guitarix, but because of the waf script, python2 is also pulled in as a dependency.
It would be nice, to only use python as make dependency.
Thanks for taking the maintenance for guitarix in Arch.
Just I didn't understand exactly what you mean.
python2 is requiered to build guitarix, no other python version is requiered.
Do you suggest to upgrade all our build scripts to python3?
regards
hermann
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If installing in a chroot (which is usually used for the building of official packages), the build process fails, because there is no /usr/bin/python.
This means, for the build process python2 and python are both required.
By all means, if you can update the build process to use python instead of python2 (aka. legacy python), please do it! :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm sorry, but no, upgrade our scripts to use python3 isn't on our list for now.
the waf in use is heavely modified by us to fit our needs, and we've a couple of internal development scripts which all use python2, upgrade them all will be a lot of work.
regards
hermann
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I reproduced the problem by explicitely excluding python (3) from the build environment.
I then get the following error:
[530/1029]gperf:src/gx_head/engine/jsonrpc_methods.gperf_tmpl->build/default/src/gx_head/engine/jsonrpc_methods.ccbuild/default/src/gx_head/engine/jsonrpc_methods.h/usr/bin/env:‘python’:NosuchfileordirectoryWaf:Leavingdirectory`/build/guitarix2/src/guitarix-0.36.1/build'Build failed: [Errno 2] No such file or directory: 'default/src/gx_head/engine/jsonrpc_methods.cc'
This means, that the installation scripts at some point try to call python (which is python3 in Arch Linux), instead of python2.
If I add python (3) to the build environment, the build works, but I wonder, whether I should rather patch whatever is using python during build to force python2 usage.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, we use python2. True, we've set the 2to3 var in the wscript to true, so, it may work with 2to3, but, to be honest, I've never tried it.
Recomended python version still is 2.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@brummer please reconsider the priority of this, as python2 is soon EOL. Arch (and most likely most other distros) will implement a hard drop (I would have to drop guitarix to the AUR, if there are python2 parts remaining).
@brummer10: I've tried to have a stab at it on current HEAD, but the wafadmin stuff in use in the wscripts is full of very non-standard python code and really hard to debug.
I've fixed many of the non-resolved imports in wafadmin3 (see attachment), but waf configure --prefix=/usr still fails (see other attachment) on bizarre errors.
IMHO looking at other build systems should be an alternative, given that the amount of custom code "just for the build system" is really extensive in this project (considering, that guitarix is only built for Linux IIRC).
Hi David
Thanks for looking inside.
Indeed, the included waf version is way to old, even the wafadmin3 simply didn't work any more with python3.
Some time ago I do a session for update to python3 and found the only waf version which could be used in conjunction with our included addons is waf-1.6.8
But at least I give up on that because I run out of time.
I guess I'll add simple make based build environment to allow building without python2. That will proberly remove some features from the build system, but allow to keep guitarix in recent distros.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@brummer10 yeah, waf-1.6.8 is also ancient I guess :-/
Is there any further progress on an alternative build system approach?
I'm currently working on a TODO to remove python2 support for the distribution, as we're closing in on EOL of python2.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi David
Unfortunately not. I running out of time. I'll try to find the time to introduce a simple makefile before the end of the year, but can't promisse anything.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@brummer10 would you be interested in a meson setup?
I'm currently working on porting jack2 to use meson and so far I'm very happy with the results (Windows is still a pain due to the project's dependencies and general tooling nightmare though).
I can't promise anything in regards to the timeline though, as I'm quite busy myself.
However, I think, that it could be quite benificial for guitarix to use a more high level and declarative build system.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi David
Yes, please, that would be very welcome.
Side note, your post reach me just were I've started to study the meson toutorials and insert the first meson.build in trunk. But when I've to do it myself it properly takes very long time before it get usuable.
regards
hermann
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi all,
after trying to get the old waf version to work with current python3 and running into problems with python3 pickle and some bizarre constructs in the waf source code, I decided to try the current waf version (2.0.19). This basically works (after lots of changes in the wscripts), you can find it in the branch waf2. Changing to another build system like meson would be really a lot of work.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Hermann,
does your environment contain WAFDIR? Somehow Waf seems to find an existing library instead of unpacking itself. I didn't make waf executable (yet), so one has to choose the Python version explicitly, like "python3 waf --help". Please use --no-faust, generating from .dsp will work with one of the next commits.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Nope, echo $WAFDIR is empty. Maybe I've some waflibs in the guitarix source dirs from some try's I made to port to a newer waflib. My source dir is a bit clumsy right now, I've to admit.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If you look into the file waf, you will find a line "wafdir = find_lib()". Maybe just put a "print(wafdir)" below that line, so you can see which path it uses (be sure to use an editor that doesn't garble the binary part which is appended after the script). Normally this version of waf will unpack the library into .waf3-2.0.19-1f3c580272b15a03d2566843c5fe872a/ on the first time run.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Okay, a first success.
The issue with the waf version was indeed home made. I've a wafli dir around in trunk, with version 2.0.15. After delete it, configure steps are succsesful. I'm able to build guitarix with python3.
What fail now, is the option --includeresampler --convolver-ffmpeg
after configure I get:
Traceback (most recent call last):
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 119, in waf_entry_point
run_commands()
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 182, in run_commands
ctx=run_command(cmd_name)
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 173, in run_command
ctx.execute()
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 375, in execute
return execute_method(self)
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Build.py", line 93, in execute
self.execute_build()
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Build.py", line 96, in execute_build
self.recurse([self.run_dir])
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Context.py", line 133, in recurse
user_function(self)
File "/home/brummer/projecte/guitarix-git/trunk/wscript", line 1042, in build
bld.add_subdirs('src/gx_head')
File "/home/brummer/projecte/guitarix-git/trunk/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Context.py", line 133, in recurse
user_function(self)
File "/home/brummer/projecte/guitarix-git/trunk/src/gx_head/wscript", line 170, in build
wscript_helper.add_zita_resampler(bld, uselib, sources, incl)
File "/home/brummer/projecte/guitarix-git/trunk/wscript_helper.py", line 12, in add_zita_resampler
assert bld.env['ZITA_RESAMPLER']
AssertionError
Last edit: brummer 2019-12-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Andreas
Okay, --includeresampler works now.
Still --convolver-ffmpeg and --includeconvolver fail durring build.
But so far we are able to build guitarix with python3, what is really nice.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hmm, I created the bug actually, but stupid sf, for some reason didn't log me in correctly, although I logged in...
Hi
Thanks for taking the maintenance for guitarix in Arch.
Just I didn't understand exactly what you mean.
python2 is requiered to build guitarix, no other python version is requiered.
Do you suggest to upgrade all our build scripts to python3?
regards
hermann
Hey!
If installing in a chroot (which is usually used for the building of official packages), the build process fails, because there is no /usr/bin/python.
This means, for the build process python2 and python are both required.
By all means, if you can update the build process to use python instead of python2 (aka. legacy python), please do it! :)
I'm sorry, but no, upgrade our scripts to use python3 isn't on our list for now.
the waf in use is heavely modified by us to fit our needs, and we've a couple of internal development scripts which all use python2, upgrade them all will be a lot of work.
regards
hermann
I reproduced the problem by explicitely excluding python (3) from the build environment.
I then get the following error:
This means, that the installation scripts at some point try to call python (which is python3 in Arch Linux), instead of python2.
If I add python (3) to the build environment, the build works, but I wonder, whether I should rather patch whatever is using python during build to force python2 usage.
Just to clarify: All python scripts in this repository should be python2 instead of python3, yes?
Yes, we use python2. True, we've set the 2to3 var in the wscript to true, so, it may work with 2to3, but, to be honest, I've never tried it.
Recomended python version still is 2.
@brummer please reconsider the priority of this, as python2 is soon EOL. Arch (and most likely most other distros) will implement a hard drop (I would have to drop guitarix to the AUR, if there are python2 parts remaining).
Currently I'm explicitely fixing all of these scripts to make the build process work.
Thanks for your work on guitarix!
Thanks for the pointer, well, it seems like I need to bite the bullet and do the port.
Hi,
I'm now maintaining guitarix for Mageia.
We have the same issue on Mageia Cauldron as we have starting to drop all python2 packages.
Regards,
David
@brummer10: Is there any progress on this?
I've successfully (at least from a packaging perspective) ported ardour to use python3.
I can try to start working on the same for guitarix, if time permits, but maybe you have already started on the topic as well?
@brummer10: I've tried to have a stab at it on current HEAD, but the wafadmin stuff in use in the wscripts is full of very non-standard python code and really hard to debug.
I've fixed many of the non-resolved imports in wafadmin3 (see attachment), but
waf configure --prefix=/usrstill fails (see other attachment) on bizarre errors.IMHO looking at other build systems should be an alternative, given that the amount of custom code "just for the build system" is really extensive in this project (considering, that guitarix is only built for Linux IIRC).
Hi David
Thanks for looking inside.
Indeed, the included waf version is way to old, even the wafadmin3 simply didn't work any more with python3.
Some time ago I do a session for update to python3 and found the only waf version which could be used in conjunction with our included addons is waf-1.6.8
But at least I give up on that because I run out of time.
I guess I'll add simple make based build environment to allow building without python2. That will proberly remove some features from the build system, but allow to keep guitarix in recent distros.
@brummer10 yeah, waf-1.6.8 is also ancient I guess :-/
Is there any further progress on an alternative build system approach?
I'm currently working on a TODO to remove python2 support for the distribution, as we're closing in on EOL of python2.
Hi David
Unfortunately not. I running out of time. I'll try to find the time to introduce a simple makefile before the end of the year, but can't promisse anything.
@brummer10 would you be interested in a meson setup?
I'm currently working on porting jack2 to use meson and so far I'm very happy with the results (Windows is still a pain due to the project's dependencies and general tooling nightmare though).
I can't promise anything in regards to the timeline though, as I'm quite busy myself.
However, I think, that it could be quite benificial for guitarix to use a more high level and declarative build system.
Hi David
Yes, please, that would be very welcome.
Side note, your post reach me just were I've started to study the meson toutorials and insert the first meson.build in trunk. But when I've to do it myself it properly takes very long time before it get usuable.
regards
hermann
Hi all,
after trying to get the old waf version to work with current python3 and running into problems with python3 pickle and some bizarre constructs in the waf source code, I decided to try the current waf version (2.0.19). This basically works (after lots of changes in the wscripts), you can find it in the branch waf2. Changing to another build system like meson would be really a lot of work.
Hi Andreas
Nice to see you here.
I tried it, but I getwith python2 and python3:
when I try to use plain ./waf --help I get:
bash: ./waf: Keine Berechtigungregards
hermann
Hi Hermann,
does your environment contain WAFDIR? Somehow Waf seems to find an existing library instead of unpacking itself. I didn't make waf executable (yet), so one has to choose the Python version explicitly, like "python3 waf --help". Please use --no-faust, generating from .dsp will work with one of the next commits.
Nope, echo $WAFDIR is empty. Maybe I've some waflibs in the guitarix source dirs from some try's I made to port to a newer waflib. My source dir is a bit clumsy right now, I've to admit.
If you look into the file waf, you will find a line "wafdir = find_lib()". Maybe just put a "print(wafdir)" below that line, so you can see which path it uses (be sure to use an editor that doesn't garble the binary part which is appended after the script). Normally this version of waf will unpack the library into .waf3-2.0.19-1f3c580272b15a03d2566843c5fe872a/ on the first time run.
Okay, a first success.
The issue with the waf version was indeed home made. I've a wafli dir around in trunk, with version 2.0.15. After delete it, configure steps are succsesful. I'm able to build guitarix with python3.
What fail now, is the option
--includeresampler --convolver-ffmpegafter configure I get:
Last edit: brummer 2019-12-30
Hi Andreas
Okay, --includeresampler works now.
Still
--convolver-ffmpegand--includeconvolverfail durring build.But so far we are able to build guitarix with python3, what is really nice.