Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package request(s): linuxsampler and friends #26193

Open
muni-corn opened this issue Nov 7, 2020 · 12 comments
Open

Package request(s): linuxsampler and friends #26193

muni-corn opened this issue Nov 7, 2020 · 12 comments
Labels
request Package request

Comments

@muni-corn
Copy link
Contributor

muni-corn commented Nov 7, 2020

This is something I'm willing to work on, I just want to know how likely it would be to get it accepted into the main repository :)

The Linux Sampler Project consists of a few different packages that work together to enable musicians to use "soundfonts" and make music. Back when I was on Arch Linux, I used it to make orchestral music with Ardour.

This undertaking would add a number of packages to the Void repositories:

  • libgig (dependency of LinuxSampler)
  • LinuxSampler
  • liblscp (dependency of QSampler)
  • QSampler (GUI frontend for LinuxSampler)
  • gigedit

There is also JSampler and jlscp, but I prefer QSampler and will probably save those for later.

All packages have either GPL, GPLv2, or LGPL licenses (see here). The GPL license for LinuxSampler comes with a "commercial exception":

LinuxSampler is licensed under the GNU GPL with the exception that USAGE of the source code, libraries and applications FOR COMMERCIAL HARDWARE OR SOFTWARE PRODUCTS IS NOT ALLOWED without prior written permission by the LinuxSampler authors.

@ericonr ericonr added the request Package request label Nov 7, 2020
@fosslinux
Copy link
Contributor

I think it is ok for us to package this, but we need to install some kind of license with the package to note the commerical exception, and potentially add something in INSTALL.msg (probably unnessecary) regarding this.

@muni-corn
Copy link
Contributor Author

muni-corn commented Nov 20, 2020

Okay, I'm at a loss here. I got linuxsampler to compile successfully ONCE and I don't know what I did right. All other times it has ended with this log:

/bin/sh ../libtool  --tag=CXX   --mode=link g++ -Wreturn-type -ffast-math  -fstack-clash-protection -D_FORTIFY_SOURCE=2 -mtune=g
eneric -O2 -pipe    -pthread  -Wl,-z,relro -Wl,-z,now -Wl,--as-needed     -o linuxsampler linuxsampler.o liblinuxsampler.la
libtool: link: g++ -Wreturn-type -ffast-math -fstack-clash-protection -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -pipe -pthread -Wl,
-z -Wl,relro -Wl,-z -Wl,now -Wl,--as-needed -o .libs/linuxsampler linuxsampler.o  ./.libs/liblinuxsampler.so -pthread -Wl,-rpath
 -Wl,/usr/lib/linuxsampler
/usr/bin/ld: warning: libgig.so.9, needed by ./.libs/liblinuxsampler.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::LoadSampleDataWithNullSamplesExtension(unsigned in
t)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::SetPos(unsigned long, RIFF::stream_whence_t)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG2Decay(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG1PreAttackDelay(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `DLS::File::GetExtensionFile(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::ToRatio(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG1Decay(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::LoadSampleData(unsigned long)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetDelayModLfo(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::GetRegion(unsigned int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetFreqModLfo(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::DeleteRegion(gig::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetFineTune(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::GetFirstRegion()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Script::GetScriptAsText[abi:cxx11]()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::GetCache()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::GetTotalFrameCount()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG1Release(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `typeinfo for DLS::File'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::~File()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `typeinfo for gig::MidiRuleCtrlTrigger'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG2Attack(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::ReadAndLoop(void*, unsigned long, sf2::Sample::Pla
ybackState*, sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::ScriptSlotCount() const'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::LoadSampleDataWithNullSamplesExtension(unsigned in
t)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Query::Query(sf2::InstrumentBase&)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::GetScriptOfSlot(unsigned int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::GetFrameSize()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::DestroyDecompressionBuffer(gig::buffer_t&)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::CreateDecompressionBuffer(unsigned long)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetPan(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::GetNextSample()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetInitialFilterFc(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG1Sustain(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::GetPreset(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Region::GetDimensionRegionByValue(unsigned int const*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetDelayVibLfo(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::GetNextInstrument()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetModLfoToFilterFc(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG2Hold(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG1Attack(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetModEnvToFilterFc(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::SetAutoLoad(bool)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::GetNextRegion()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `RIFF::File::GetFileName[abi:cxx11]() const'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::GetCache()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::GetFirstInstrument()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `RIFF::File::File(std::__cxx11::basic_string<char, std::char_tra
its<char>, std::allocator<char> > const&)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetCoarseTune(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::DeleteSample(sf2::Sample*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::SetPos(unsigned long)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::GetFirstSample(RIFF::progress_t*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Instrument::DeleteRegion(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `typeinfo for gig::File'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Query::next()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetFreqVibLfo(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::GetPresetCount()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG2Sustain(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::HasSamples()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::GetPos() const'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `RIFF::progress_t::progress_t()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::GetChannelCount()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::File(RIFF::File*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Instrument::GetMidiRule(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::Read(void*, unsigned long)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetVibLfoToPitch(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::libraryVersion[abi:cxx11]()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG2PreAttackDelay(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::ReadAndLoop(void*, unsigned long, gig::playback_st
ate_t*, gig::DimensionRegion*, gig::buffer_t*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::DeleteInstrument(sf2::Instrument*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::GetSample(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::InstrumentBase::GetRegionCount()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::DeleteInstrument(gig::Instrument*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG2Release(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Region::GetSample()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Region::GetDimensionRegionIndexByValue(unsigned int
)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetModLfoToVolume(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::ReleaseSampleData()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `DLS::File::GetFileName[abi:cxx11]()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::DimensionRegion::GetVelocityRelease(unsigned char)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::libraryName[abi:cxx11]()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `typeinfo for DLS::Resource'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetModEnvToPitch(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetUnityNote()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetEG1Hold(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::LoadSampleData(unsigned long)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::InstrumentBase::GetRegion(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::DeleteSample(gig::Sample*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::File(RIFF::File*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Sample::GetPos()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::DimensionRegion::GetParent() const'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::Region::GetModLfoToPitch(sf2::Region*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::Sample::Read(void*, unsigned long, gig::buffer_t*)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::GetInstrumentCount()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::File::GetInstrument(unsigned int, RIFF::progress_t*)
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::GetInstrument(int)'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `sf2::File::GetSampleCount()'
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::DimensionRegion::GetVelocityAttenuation(unsigned cha
/usr/bin/ld: ./.libs/liblinuxsampler.so: undefined reference to `gig::DimensionRegion::GetVelocityCutoff(unsigned char)'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:615: linuxsampler] Error 1
make[3]: Leaving directory '/builddir/linuxsampler-2.1.1/src'
make[2]: *** [Makefile:689: all-recursive] Error 1
make[2]: Leaving directory '/builddir/linuxsampler-2.1.1/src'
make[1]: *** [Makefile:509: all-recursive] Error 1
make[1]: Leaving directory '/builddir/linuxsampler-2.1.1'
make: *** [Makefile:414: all] Error 2
=> ERROR: linuxsampler-2.1.1_1: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13

I've experimented with different dependencies and I still don't know how I got it to work. If anyone can spare a moment, check out the branch at [edit: redacted broken link :(]. I'll continue trying to work on it, but I almost feel like I've tried everything.

Thanks :)

@muni-corn
Copy link
Contributor Author

@ericonr @fosslinux Any insight on the above comment?

@ericonr
Copy link
Member

ericonr commented Nov 23, 2020

All I can tell is that it looks to me like you're missing libgig.so.9 from the host system... Might be missing some libraries from the command line as well.

Check that pkg-config calls were successful, too. Sometimes they fail and then the commandline ends up missing certain elements.

@muni-corn
Copy link
Contributor Author

muni-corn commented Nov 23, 2020 via email

@fosslinux
Copy link
Contributor

Try from a clean chroot, run ./xbps-src zap && ./xbps-src binary-bootstrap and try again.

@fosslinux
Copy link
Contributor

Open a PR so we can have a look at the actual template.

@muni-corn
Copy link
Contributor Author

Trying from clean root now, PR #26677 is open as a draft for review

@muni-corn
Copy link
Contributor Author

After adding a few commands I found from the Arch Linux libgig template, I'm encountering a new error:

****************************************************************
*** LinuxSampler was compiled with instruments DB support and
*** /destdir//linuxsampler-2.1.1/var/lib/linuxsampler/instruments.db
*** doesn't exist yet, creating it now:
/builddir/linuxsampler-2.1.1/src/.libs/lt-linuxsampler: error while loading shared libraries: libgig.so.9: cannot open shared object file: No such file or directory
# ...
=> ERROR: linuxsampler-2.1.1_1: do_install: '${make_cmd} DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}' exited with 2
=> ERROR:   in do_install() at common/build-style/gnu-configure.sh:38

@ericonr:

All I can tell is that it looks to me like you're missing libgig.so.9 from the host system... Might be missing some libraries from the command line as well.

How can I ensure that the needed libraries are being fed to the template/build?

@uzr123x

This comment was marked as off-topic.

@muni-corn
Copy link
Contributor Author

@uzr123x Unfortunately no. I didn't find a solution with the time I had and have since hopped to NixOS

As a workaround, I know Void provides a nix package, and the Nix package repository has linuxsampler. You might consider installing and configuring the Nix package manager on your Void system and installing linuxsampler that way 🙂

@luzpaz

This comment was marked as off-topic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
request Package request
Projects
None yet
Development

No branches or pull requests

5 participants