aperezdc / signify

OpenBSD tool to sign and verify signatures on files. Portable version.
ISC License
272 stars 16 forks source link

Build failure, possible Makefile bug #6

Closed lfam closed 8 years ago

lfam commented 8 years ago

Hi!

I've been working on packaging signify for GNU Guix [0].

My packaging of version 14 works fine, but the changes to the build system in version 15 (and into 16) seem to have broken my package. Specifically, the compilation fails with this error:

make: *\ No rule to make target '-L/gnu/store/gjfw0kz6pyxa9nvq958q5ha7igfhij1c-libbsd-0.8.2/lib', needed by 'signify'. Stop.

The only option that I am passing to Make is to set the PREFIX to the output directory, which is something like /gnu/store/...-signify-16/, where '...' is a hash.

Guix is an unusual environment, so please feel free to ask for more information about what's happening on my end.

[0] http://www.gnu.org/software/guix/

aperezdc commented 8 years ago

@lfam: I am not super familiar with Guix, but at some point I had Guix installed over my existing GNU/Linux system (as described here), so I have an idea of what's going on. I think the culprit is line 187 of the Makefile, which defines the signify target like this:

signify: $O $(PKG_LDLIBS)
   $(CC) $(LDFLAGS) -o $@ $^

The above scheme works well when building a static bundled libbsd, because then can point to the locally built libbsd.a and make will take care to build it as a dependency.

In your case pkg-config is adding -L/gnue/store/<hash>-libbsd-0.8.2/lib to $(PKG_LDLIBS), which of course cannot be resolved as a target. In a traditional filesystem layout, the variable contains only -lbsd, which make will resolve as the libbsd.so file from the libraries search path.

I can cook a patch for this which puts the flags obtained from pkg-config always in the command line for linking, and the path to the locally-built libbsd.a in the dependencies list (when enabled). It would be really helpful if you could try building from a branch before pushing the commit to master.

aperezdc commented 8 years ago

@lfam: Could you please check building in a Guix box from the pkgconf-flags-in-command branch to check that the build completes succesfully? Unfortunately I don't have my local Guix installation so it's gonna be much faster if you could verify that for me. Thank you in advance!

lfam commented 8 years ago

That change made it work for me — thank you!

aperezdc commented 8 years ago

@lfam: Great, thanks for confirming that it worked. I have merged the branch to master and tagged v17. That way you can update your Guix package to use v17, which contains the fix for the Makefile.

Thanks again for reporting and for your help checking ythe fix :smile: