Hello,
I am attempting to package ecl for alpine linux and I am having troubles compiling against musl.
Building ecl_min...
.//libeclgc.a(mach_dep.o): In function `GC_with_callee_saves_pushed':
/root/ecl-16.1.3/src/bdwgc/mach_dep.c:245: undefined reference to `getcontext'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:224: ecl_min] Error 1
make[1]: Leaving directory '/root/ecl-16.1.3/build'
make: *** [Makefile:72: all] Error 2 I tried `make CFLAGS='-DNO_GETCONTEXT'` but that did not work either.
Has anyone successfully built ecl using musl?
Hey,
your problem is related to bundled libgc. We have some conditionalization for musl, so I'm sure it worked in the past. I'd suggest trying to install libgc from alpine repositories and build ECL against that libgc. If Alpine doesn't have libgc in the repositories, I'd try building upstream bdwgc and linking ECL with it. If it doesn't build, report a bug on bdwgc project, if it does – please let us know here so we'll update bundled libgc to the working version.
Best regards,
Daniel
On 12.10.2017 18:03, Lucas Ramage wrote:
Hello,
I am attempting to package ecl for alpine linux and I am having troubles compiling against musl.
Building ecl_min...
.//libeclgc.a(mach_dep.o): In function `GC_with_callee_saves_pushed':
/root/ecl-16.1.3/src/bdwgc/mach_dep.c:245: undefined reference to `getcontext'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:224: ecl_min] Error 1
make[1]: Leaving directory '/root/ecl-16.1.3/build'
make: *** [Makefile:72: all] Error 2
I tried `make CFLAGS='-DNO_GETCONTEXT'` but that did not work either.
Has anyone successfully built ecl using musl?
-- Regards,
Visit online journal https://lramage94.github.io/
*Lucas Ramage* / Software Engineer ramage.lucas@openmailbox.org mailto:ramage.lucas@openmailbox.org / (941) 404-6794 tel:%28941%29%20404-6794
*PGP Fingerprint* / Learn More https://emailselfdefense.fsf.org/en/ EAE7 45DF 818D 4948 DDA7 0F44 F52A 5A96 7B9B 6FB7 https://pgp.mit.edu/pks/lookup?op=get&search=0xF52A5A967B9B6FB7
*Visit online journal* http://lramage94.github.io https://lramage94.github.io/
Github https://github.com/lramage94Linkedin https://www.linkedin.com/in/lramage94
The bundled GC is too old; it's not working in the embedded ECL situation on FreeBSD (see https://github.com/ivmai/bdwgc/issues/180 for a very fresh fix to this), or in at least one dynamic C library case on OSX I know about (see https://github.com/miguelmarco/libhomfly).
In general, I don't see the value of bundling with ECL an old snapshot of a relatively popular and actively maintained library. (removing it is trivial - there is one script from bdwgc/ that is used, and should be copied, the rest can go...)
Just my 0.02c. Dima
On Thu, Oct 12, 2017 at 5:12 PM, Daniel Kochmański daniel@turtleware.eu wrote:
Hey,
your problem is related to bundled libgc. We have some conditionalization for musl, so I'm sure it worked in the past. I'd suggest trying to install libgc from alpine repositories and build ECL against that libgc. If Alpine doesn't have libgc in the repositories, I'd try building upstream bdwgc and linking ECL with it. If it doesn't build, report a bug on bdwgc project, if it does – please let us know here so we'll update bundled libgc to the working version.
Best regards,
Daniel
On 12.10.2017 18:03, Lucas Ramage wrote:
Hello,
I am attempting to package ecl for alpine linux and I am having troubles compiling against musl.
Building ecl_min...
.//libeclgc.a(mach_dep.o): In function `GC_with_callee_saves_pushed':
/root/ecl-16.1.3/src/bdwgc/mach_dep.c:245: undefined reference to `getcontext'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:224: ecl_min] Error 1
make[1]: Leaving directory '/root/ecl-16.1.3/build'
make: *** [Makefile:72: all] Error 2 I tried `make CFLAGS='-DNO_GETCONTEXT'` but that did not work either.
Has anyone successfully built ecl using musl?
-- Regards,
[image: Visit online journal] https://lramage94.github.io/
*Lucas Ramage* / Software Engineer ramage.lucas@openmailbox.org / (941) 404-6794 <%28941%29%20404-6794>
*PGP Fingerprint* / Learn More https://emailselfdefense.fsf.org/en/ EAE7 45DF 818D 4948 DDA7 0F44 F52A 5A96 7B9B 6FB7 https://pgp.mit.edu/pks/lookup?op=get&search=0xF52A5A967B9B6FB7
*Visit online journal* http://lramage94.github.io https://lramage94.github.io/
[image: Github] https://github.com/lramage94[image: Linkedin] https://www.linkedin.com/in/lramage94
Hey,
I'll update bundled GC before next release. One of the valid scenarios where bundling GC with ECL makes sense is static linking (and ECL supports that – when GC is bundled it is statically linked and none of its symbols are exported). I've also found it handy, when I was buidling ECL on NetBSD, which shipped only non-threaded build of bdwgc.
Note, that ECL first looks for system GC and if it can be used – it is.
Regards,
Daniel
On 20.10.2017 19:44, Dima Pasechnik wrote:
The bundled GC is too old; it's not working in the embedded ECL situation on FreeBSD (see https://github.com/ivmai/bdwgc/issues/180 for a very fresh fix to this), or in at least one dynamic C library case on OSX I know about (see https://github.com/miguelmarco/libhomfly).
In general, I don't see the value of bundling with ECL an old snapshot of a relatively popular and actively maintained library. (removing it is trivial - there is one script from bdwgc/ that is used, and should be copied, the rest can go...)
Just my 0.02c. Dima
On Thu, Oct 12, 2017 at 5:12 PM, Daniel Kochmański <daniel@turtleware.eu mailto:daniel@turtleware.eu> wrote:
Hey, your problem is related to bundled libgc. We have some conditionalization for musl, so I'm sure it worked in the past. I'd suggest trying to install libgc from alpine repositories and build ECL against that libgc. If Alpine doesn't have libgc in the repositories, I'd try building upstream bdwgc and linking ECL with it. If it doesn't build, report a bug on bdwgc project, if it does – please let us know here so we'll update bundled libgc to the working version. Best regards, Daniel On 12.10.2017 18:03, Lucas Ramage wrote:
Hello, I am attempting to package ecl for alpine linux and I am having troubles compiling against musl. Building ecl_min... .//libeclgc.a(mach_dep.o): In function `GC_with_callee_saves_pushed': /root/ecl-16.1.3/src/bdwgc/mach_dep.c:245: undefined reference to `getcontext' collect2: error: ld returned 1 exit status make[1]: *** [Makefile:224: ecl_min] Error 1 make[1]: Leaving directory '/root/ecl-16.1.3/build' make: *** [Makefile:72: all] Error 2 I tried `make CFLAGS='-DNO_GETCONTEXT'` but that did not work either. Has anyone successfully built ecl using musl? -- Regards, Visit online journal <https://lramage94.github.io/> *Lucas Ramage* / Software Engineer ramage.lucas@openmailbox.org <mailto:ramage.lucas@openmailbox.org> / (941) 404-6794 <tel:%28941%29%20404-6794> *PGP Fingerprint* / Learn More <https://emailselfdefense.fsf.org/en/> EAE7 45DF 818D 4948 DDA7 0F44 F52A 5A96 7B9B 6FB7 <https://pgp.mit.edu/pks/lookup?op=get&search=0xF52A5A967B9B6FB7> *Visit online journal* http://lramage94.github.io <https://lramage94.github.io/> Github <https://github.com/lramage94>Linkedin <https://www.linkedin.com/in/lramage94>