freebsd / kyua

Port/Package build and test system
https://github.com/freebsd/kyua/wiki
BSD 3-Clause "New" or "Revised" License
149 stars 42 forks source link

Fix build failure on macOS #226

Closed fel1x-developer closed 6 months ago

fel1x-developer commented 8 months ago

Prior to this change, building with Homebrew + clang on MacOS would result in a link failure similar to the following:

ld: in libcli.a(libutils.a), archive member 'libutils.a' with length 12546016 is not mach-o or llvm bitcode file 'libcli.a' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Using libtool instead of relying on GNU make's implicit rules for static libraries is the right thing with Homebrew on MacOS as libtool provides the appropriate linker flags for building kyua's shared objects (which are different from how statically linked objects are compiled/linked on MacOS with autotools).

This makes this package consistent with how atf and lutok are built on MacOS.

Closes: #219

ngie-eign commented 6 months ago

I looked a bit closer and the issue provides more detail, as well as the commit messages themselves.. but it was missing from the PR description. Providing this context next time in the PR summary would make it easier for me to understand (without having to dive too deep into the details) what is being done.

(I'm partly dropping this concern, because PR descriptions are only really maintained in the GH UI/ecosystem)

The autogenerated files should still be removed.

ihoro commented 6 months ago

Hi @fel1x-developer . Could you please share the way you build it for macOS? I would like to repeat the build for testing of recent changes in Kyua. The list of steps, dependencies, versions, etc -- anything will be useful. For instance, I use atf installed via homebrew.

My motivation: I see that FreeBSD based build is broken (I'm not sure yet whether it's my local issue or due to recent change in .ac .am), I would like to fix it and make sure that macOS based build still is fine. And I would like to keep macOS based build tested during the future changes of Kyua.

fel1x-developer commented 6 months ago

Hi @fel1x-developer . Could you please share the way you build it for macOS? I would like to repeat the build for testing of recent changes in Kyua. The list of steps, dependencies, versions, etc -- anything will be useful. For instance, I use atf installed via homebrew.

My motivation: I see that FreeBSD based build is broken (I'm not sure yet whether it's my local issue or due to recent change in .ac .am), I would like to fix it and make sure that macOS based build still is fine. And I would like to keep macOS based build tested during the future changes of Kyua.

Hi @ihoro !

First install lutok, atf, and lua with homebrew. Then, build lutok and atf in ~/local with

$ autoreconf -i -s -I ~/local/share/aclocal
$ ./configure --prefix ~/local
$ make -j4
$ make install

Using the same method, you can build kyua at ~/local (Don't forget autoreconf and ./configure options)

Feel free to ask me if you have any question!

ihoro commented 6 months ago

Thanks for the information. It looks we do it almost the same way. The only diff is that I was using atf as is from homebrew without explicit build. I guess it should not be a significant difference.

By the way, from the end user perspective, you use a custom build for your production/personal needs because of: a) custom patches b) outdated version from homebrew without recent fixes c) other reasons?

fel1x-developer commented 6 months ago

Mainly b). New versions of lutok, atf, and kyua should be released ASAP to make them installable and executable from Homebrew. I will work on updating those three formulas when new versions of lutok, atf, and kyua come out.

ihoro commented 6 months ago

Thank you very much for the outline of your use cases. And kudos for the homebrew formulas maintenance. I have hopes that Kyua could get a new version this summer.