Menu

#43 python and python2 required to build

closed
brummer
None
v1.0_(example)
1
2020-01-20
2017-12-03
Anonymous
No

Hi!
I'm now maintaining guitarix for Arch.

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.

Discussion

1 2 > >> (Page 1 of 2)
  • David Runge

    David Runge - 2017-12-03

    Hmm, I created the bug actually, but stupid sf, for some reason didn't log me in correctly, although I logged in...

     
  • brummer

    brummer - 2017-12-03

    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

     
  • David Runge

    David Runge - 2017-12-03

    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! :)

     
  • brummer

    brummer - 2017-12-03

    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

     
  • David Runge

    David Runge - 2018-02-12

    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.cc build/default/src/gx_head/engine/jsonrpc_methods.h
    /usr/bin/env: python: No such file or directory
    Waf: Leaving directory `/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.

     
  • David Runge

    David Runge - 2018-02-12

    Just to clarify: All python scripts in this repository should be python2 instead of python3, yes?

     
  • brummer

    brummer - 2018-02-12

    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

    brummer - 2018-03-26
    • assigned_to: brummer
     
  • David Runge

    David Runge - 2019-03-29

    @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!

     
  • brummer

    brummer - 2019-04-10

    Thanks for the pointer, well, it seems like I need to bite the bullet and do the port.

     
  • Geiger David

    Geiger David - 2019-09-23

    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

     
  • David Runge

    David Runge - 2019-11-25

    @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?

     
  • David Runge

    David Runge - 2019-11-25

    @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).

     
  • brummer

    brummer - 2019-11-28

    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.

     
  • David Runge

    David Runge - 2019-12-24

    @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.

     
  • brummer

    brummer - 2019-12-24

    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.

     
  • David Runge

    David Runge - 2019-12-27

    @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.

     
  • brummer

    brummer - 2019-12-27

    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

     
  • Andreas Degert

    Andreas Degert - 2019-12-29

    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.

     
  • brummer

    brummer - 2019-12-30

    Hi Andreas
    Nice to see you here.
    I tried it, but I getwith python2 and python3:

    python3 ./waf --help
    Waf script '2.0.19' and library '2.0.15' do not match (directory '/home/brummer/projecte/guitarix-git/trunk')
    

    when I try to use plain ./waf --help I get:
    bash: ./waf: Keine Berechtigung

    regards
    hermann

     
    • Andreas Degert

      Andreas Degert - 2019-12-30

      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.

       
  • brummer

    brummer - 2019-12-30

    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.

     
    • Andreas Degert

      Andreas Degert - 2019-12-30

      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.

       
  • brummer

    brummer - 2019-12-30

    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
  • brummer

    brummer - 2019-12-31

    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.

     
1 2 > >> (Page 1 of 2)

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB