Hello, 2015-08-07 20:29 GMT-03:00 Buck Evan: > > s6-user@696f14e9c9bd:~/scratch$ /opt/make/make > make: *** No rule to make target '-lc', needed by 'all'. Stop. > > s6-user@696f14e9c9bd:~/scratch$ /opt/make/make --version > GNU Make 4.1 > Built for x86_64-unknown-linux-gnu
That's not strange. This is how -l-style prerequisites work: http://www.gnu.org/software/make/manual/html_node/Libraries_002fSearch.html (I believe the documentation is partially wrong, it should say 'libdir' instead of 'prefix/lib', with 'libdir' being the value specified for the --libdir option of the configure script. But if it is not specified, it does default to 'prefix/lib') Your distribution has libc.so in /usr/lib/x86_64-linux-gnu; that's not /lib, not /usr/lib, and probably not $prefix/lib either, for whatever --prefix you specified to the configure script. So libc.so is not found, and because there is no rule in the makefile for building it, make fails. Saying '/opt/make/make VPATH=/usr/lib/x86_64-linux-gnu' would probably make the example work. > s6-user@696f14e9c9bd:~/scratch$ make > echo /usr/lib/x86_64-linux-gnu/libc.so > /usr/lib/x86_64-linux-gnu/libc.so > > s6-user@696f14e9c9bd:~/scratch$ make --version > GNU Make 3.81 This is actually the surprising result for me :) But then again, if this is the Debian-provided make, who knows what the distribution's developers do to build and package it. Anyway, the skarnet.org package's configure scripts generate makefile fragments with appropriate explicit vpath directives, so all libraries specified via -l-style prerequisites would be found. Therefore, things like the one in this example shouldn't happen if correct --with-lib or --with-dynlib options are specified, should they be needed for a particular setup. I do not like the skarnet.org package build system's use of vpath magic instead of relying on the compiler's library search algorithm, and I will confess I have occasionally patched it to remove the vpath stuff. But that being said, the build system should normally work (well, mostly [1]). And I agree with what was said about treating GNU make version >= 4.0 as just another dependency, building it from source using ./configure --prefix=some-throwaway-temporary-dir, and then adding some-throwaway-temporary-dir/bin to PATH to build skalibs, execline and finally s6, being really the fastest way to get s6 installed on an OS that does not have a sufficiently recent version of GNU make. Cheers! G. P.S.: The last three messages from this thread for some reason do not show up in www.mail-archive.com. They do in skarnet.org's local archive. [1] https://bugs.gentoo.org/show_bug.cgi?id=541092 That's the only real bug I believe the skarnet.org build system has so far, i.e. make's prerequisite search algorithm getting confused if libraries with the same name as the ones about to be installed are already present in the target directories. But that report also presents a simple and clever (but ugly) workaround that doesn't involve patching the build system.
