stargatedaw / stargate

Innovation-first digital audio workstation (DAW), instrument and effect plugins, wave editor
GNU General Public License v3.0
662 stars 34 forks source link

make install doesn't install sglib in /usr/lib*/python*/site-package #13

Closed ycollet closed 2 years ago

ycollet commented 2 years ago

I build stargate on Fedora 33 64 bits from the release downloaded on github. make build works fine make PREFIX=/opt/stargate install doesn't install sglib (and maybe other python libs) into /opt/stargate/lib* (lib64 on 64 bits linux).

ghost commented 2 years ago

Is /opt/stargate/bin/stargate failing to run because it cannot find Python libraries? BTW, in the source code there is scripts/fedora_deps.sh and scripts/rpm.py to help with building on Fedora.

We don't install to site-packages because Stargate DAW is meant to have an unlimited number of completely self-contained installs on one system, would not want a global copy of the libs getting picked up by the wrong installation. Everything is based on the relative path to $(PREFIX)/bin/stargate

ycollet commented 2 years ago

When I do the "make install", I don't see a copy of sglib occuring. So, when I start stargate, I've got:

$ stargate
Adding PYTHONPATH /usr
Did not detect local development environment, trying system installation
Adding PYTHONPATH /usr/lib/stargate/stargate
Traceback (most recent call last):
  File "/usr/bin/stargate", line 122, in main
    start_stargate(args.project_file)
  File "/usr/bin/stargate", line 78, in start_stargate
    app, scaler = _setup()
  File "/usr/bin/stargate", line 57, in _setup
    from sglib.log import LOG, setup_logging
ModuleNotFoundError: No module named 'sglib'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/stargate", line 141, in <module>
    main()
  File "/usr/bin/stargate", line 138, in main
    start_stargate(args.project_file)
  File "/usr/bin/stargate", line 78, in start_stargate
    app, scaler = _setup()
  File "/usr/bin/stargate", line 57, in _setup
    from sglib.log import LOG, setup_logging
ModuleNotFoundError: No module named 'sglib'

I put the ""fine tune" spec here: https://raw.githubusercontent.com/audinux/fedora-spec/master/stargate/stargate.spec

I disabled the automatic install of pymarshal and wavefile because these libraries are now in the audinux repository: https://copr.fedorainfracloud.org/coprs/ycollet/audinux/

ghost commented 2 years ago

It looks like I may need to fix something, I will look at this tonight after work.

Did PREFIX=/opt/stargate make install install the copy of /usr/bin/stargate you are running? That command should have installed it to /opt/stargate/bin/stargate. If you symlinked /usr/bin/stargate to /opt/stargate/bin/stargate, that may account for this behavior. It should be possible for me to fix that if so.

ghost commented 2 years ago

Nice project, BTW. I am a Fedora user myself.

I think this line might be part of the problem:

sed -i -e "s/'lib'/'%{_lib}'/g" sglib/lib/path/linux.py

I think there are probably more places in the code and build scripts that you would need to replace lib with lib64.

Not sure if you already saw this, but you might find this useful for creating a rpmspec: https://github.com/stargateaudio/stargate/blob/main/scripts/rpm.py#L93

ycollet commented 2 years ago

Thanks a lot for this answer. I found the problem. It was on my side: sed -i -e "s/cp -r sg_py_vendor/cp -r /g" Makefile Removed the line managing the installation of the sglib and sgui. I will close the ticket and open a new one to manage the lib / lib64 library directory. Sorry for the noise :)

ycollet commented 2 years ago

THanks for the link to the rpm.py file :)