void-linux / void-packages

The Void source packages collection
https://voidlinux.org
Other
2.5k stars 2.11k forks source link

Package request(s): linuxsampler and friends #26193

Open muni-corn opened 3 years ago

muni-corn commented 3 years ago

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:

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.

fosslinux commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

@ericonr @fosslinux Any insight on the above comment?

ericonr commented 3 years ago

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 commented 3 years ago

Does that mean libgig needs to be added to hostmakedepends? But it might already be there iirc -------- Original Message -------- On Nov 22, 2020, 8:29 PM, Érico Nogueira Rolim wrote:

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.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

fosslinux commented 3 years ago

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

fosslinux commented 3 years ago

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

muni-corn commented 3 years ago

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

muni-corn commented 3 years ago

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 commented 2 years ago

@harrisonthorne any updates?

muni-corn commented 2 years ago

@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 :slightly_smiling_face:

luzpaz commented 1 year ago

Anyone willing to carry the mantle on this one ?