Zygo / bees

Best-Effort Extent-Same, a btrfs dedupe agent
GNU General Public License v3.0
661 stars 55 forks source link

Unable to compile against musl libc #177

Open stintel opened 3 years ago

stintel commented 3 years ago
$ make
make PREFIX=/usr LIBEXEC_PREFIX=/usr/lib/bees ETC_PREFIX=/etc TAG="v0.6-138-g80c69f1" -C lib
make[1]: Entering directory '/tmp/bees/lib'
sed configure.h.in >configure.h -e's#@PREFIX@#/usr#' -e's#@ETC_PREFIX@#/etc#' -e's#@LIBEXEC_PREFIX@#/usr/lib/bees#'
mkdir -p .depends
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/chatter.dep -MT chatter.o chatter.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/city.dep -MT city.o city.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/cleanup.dep -MT cleanup.o cleanup.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/crc64.dep -MT crc64.o crc64.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/error.dep -MT error.o error.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/extentwalker.dep -MT extentwalker.o extentwalker.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/fd.dep -MT fd.o fd.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/fs.dep -MT fs.o fs.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/ntoa.dep -MT ntoa.o ntoa.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/path.dep -MT path.o path.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/process.dep -MT process.o process.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/string.dep -MT string.o string.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/task.dep -MT task.o task.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/time.dep -MT time.o time.cc
cat .depends/chatter.dep .depends/city.dep .depends/cleanup.dep .depends/crc64.dep .depends/error.dep .depends/extentwalker.dep .depends/fd.dep .depends/fs.dep .depends/ntoa.dep .depends/path.dep .depends/process.dep .depends/string.dep .depends/task.dep .depends/time.dep > depends.mk.new
mv -f depends.mk.new depends.mk
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o chatter.o -c chatter.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o city.o -c city.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o cleanup.o -c cleanup.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o crc64.o -c crc64.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o error.o -c error.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o extentwalker.o -c extentwalker.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o fd.o -c fd.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o fs.o -c fs.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o ntoa.o -c ntoa.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o path.o -c path.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o process.o -c process.cc
In file included from process.cc:5:
process.cc:194:25: error: 'SIGCLD' was not declared in this scope; did you mean 'SIGCHLD'?
  194 |   NTOA_TABLE_ENTRY_ENUM(SIGCLD),
      |                         ^~~~~~
../include/crucible/ntoa.h:23:42: note: in definition of macro 'NTOA_TABLE_ENTRY_ENUM'
   23 | #define NTOA_TABLE_ENTRY_ENUM(x) { .n = (x), .mask = ~0UL,  .a = (#x) }
      |                                          ^
make[1]: *** [Makefile:48: process.o] Error 1
make[1]: Leaving directory '/tmp/bees/lib'
make: *** [Makefile:34: lib] Error 2

This can be easily fixed by using SIGCHLD instead of the old name. However, after fixing that, there's another one that is less trivial to fix:

$ make
make PREFIX=/usr LIBEXEC_PREFIX=/usr/lib/bees ETC_PREFIX=/etc TAG="v0.6-138-g80c69f1-dirty" -C lib
make[1]: Entering directory '/tmp/bees/lib'
sed configure.h.in >configure.h -e's#@PREFIX@#/usr#' -e's#@ETC_PREFIX@#/etc#' -e's#@LIBEXEC_PREFIX@#/usr/lib/bees#'
mkdir -p .depends
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/chatter.dep -MT chatter.o chatter.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/city.dep -MT city.o city.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/cleanup.dep -MT cleanup.o cleanup.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/crc64.dep -MT crc64.o crc64.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/error.dep -MT error.o error.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/extentwalker.dep -MT extentwalker.o extentwalker.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/fd.dep -MT fd.o fd.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/fs.dep -MT fs.o fs.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/ntoa.dep -MT ntoa.o ntoa.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/path.dep -MT path.o path.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/process.dep -MT process.o process.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/string.dep -MT string.o string.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/task.dep -MT task.o task.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -M -MF .depends/time.dep -MT time.o time.cc
cat .depends/chatter.dep .depends/city.dep .depends/cleanup.dep .depends/crc64.dep .depends/error.dep .depends/extentwalker.dep .depends/fd.dep .depends/fs.dep .depends/ntoa.dep .depends/path.dep .depends/process.dep .depends/string.dep .depends/task.dep .depends/time.dep > depends.mk.new
mv -f depends.mk.new depends.mk
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o chatter.o -c chatter.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o city.o -c city.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o cleanup.o -c cleanup.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o crc64.o -c crc64.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o error.o -c error.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o extentwalker.o -c extentwalker.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o fd.o -c fd.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o fs.o -c fs.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o ntoa.o -c ntoa.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o path.o -c path.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o process.o -c process.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o string.o -c string.cc
c++ -Wall -Wextra -Werror -O3 -I../include -D_FILE_OFFSET_BITS=64 -std=c++11 -Wold-style-cast  -o task.o -c task.cc
In file included from task.cc:3:
task.cc: In member function 'void crucible::TaskState::exec()':
task.cc:195:22: error: 'pthread_getname_np' was not declared in this scope; did you mean 'pthread_setname_np'?
  195 |   DIE_IF_MINUS_ERRNO(pthread_getname_np(pthread_self(), buf, sizeof(buf)));
      |                      ^~~~~~~~~~~~~~~~~~
../include/crucible/error.h:70:70: note: in definition of macro 'DIE_IF_MINUS_ERRNO'
   70 | #define DIE_IF_MINUS_ERRNO(expr) crucible::die_if_minus_errno(#expr, expr)
      |                                                                      ^~~~
make[1]: *** [Makefile:48: task.o] Error 1
make[1]: Leaving directory '/tmp/bees/lib'
make: *** [Makefile:34: lib] Error 2
stroucki commented 3 years ago

Want to patch musl? https://github.com/Estatcamp/musl/commit/2c1dec5fa553abbdf5ffbf5194e173e624699bcf

Or you could perhaps hack musl's new pthread_getname_np into bees.