8.32 switched stat(1) to use statx() if available, for file attributtes to optimize performance on linux. The issue is that statx() was added in glibc-2.28 and requires linux>=4.11. This makes stat(1) always fail on travis. Disable statx detection completely for now, to make glibc also use the same code path than musl.
122 lines
3.7 KiB
Bash
122 lines
3.7 KiB
Bash
# Template file for 'coreutils'
|
|
pkgname=coreutils
|
|
version=8.32
|
|
revision=3
|
|
bootstrap=yes
|
|
makedepends="gmp-devel acl-devel libcap-devel"
|
|
short_desc="GNU core utilities"
|
|
maintainer="Enno Boland <gottox@voidlinux.org>"
|
|
license="GPL-3.0-or-later"
|
|
homepage="https://www.gnu.org/software/coreutils"
|
|
changelog="https://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob_plain;f=NEWS;hb=HEAD"
|
|
distfiles="${GNU_SITE}/coreutils/coreutils-${version}.tar.xz"
|
|
checksum=4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa
|
|
|
|
replaces="chroot-coreutils>=0 coreutils-doc>=0 b2sum>=0"
|
|
|
|
if [ "$CHROOT_READY" ]; then
|
|
hostmakedepends+=" perl"
|
|
# allow run ./configure by root in ethereal chroot
|
|
if [ "$XBPS_ALLOW_CHROOT_BREAKOUT" ]; then
|
|
_force_unsafe_configure="FORCE_UNSAFE_CONFIGURE=1"
|
|
fi
|
|
fi
|
|
|
|
alternatives="
|
|
hostname:hostname:/usr/bin/hostname-coreutils
|
|
hostname:hostname.1:/usr/share/man/man1/hostname-coreutils.1"
|
|
|
|
pre_configure() {
|
|
# Build natively all utils for the host, we need this to generate
|
|
# the manpages via help2man.
|
|
if [ "$CROSS_BUILD" ]; then
|
|
env CC=cc LD=ld AR=ar RANLIB=ranlib \
|
|
CFLAGS=-Os CXXFLAGS=-Os LDFLAGS= \
|
|
$_force_unsafe_configure \
|
|
./configure --prefix=${wrksrc}/coreutils-${XBPS_MACHINE} \
|
|
--enable-install-program=arch,hostname \
|
|
--enable-no-install-program=kill,uptime
|
|
make ${makejobs}
|
|
make install
|
|
make distclean
|
|
fi
|
|
}
|
|
|
|
do_configure() {
|
|
if [ "$CROSS_BUILD" ]; then
|
|
configure_args+=" fu_cv_sys_stat_statfs2_bsize=no
|
|
gl_cv_func_working_mkstemp=yes
|
|
gl_cv_func_working_acl_get_file=yes "
|
|
fi
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
# XXX syncfs() in src/sync.c expects a return value.
|
|
*-musl) configure_args+=" ac_cv_func_syncfs=no";;
|
|
# XXX disable statx(), needs glibc>=2.28 and linux>=4.11
|
|
# XXX seems to fail on travis always returning EACCES.
|
|
*) configure_args+=" ac_cv_func_statx=no";;
|
|
esac
|
|
#
|
|
# Do not install kill: provided by util-linux.
|
|
# Do not install uptime: provided by procps-ng.
|
|
#
|
|
env $_force_unsafe_configure ./configure ${configure_args} \
|
|
--enable-install-program=arch,hostname \
|
|
--enable-no-install-program=kill,uptime \
|
|
--disable-rpath
|
|
if [ "$CROSS_BUILD" ]; then
|
|
# Use install when cross compiling
|
|
cp Makefile Makefile.cfg.orig
|
|
sed -e 's;^\(cu_install_program =\).*;\1 install;' \
|
|
Makefile.cfg.orig >Makefile
|
|
fi
|
|
}
|
|
|
|
do_build() {
|
|
if [ "$CROSS_BUILD" ]; then
|
|
cp Makefile Makefile.orig
|
|
sed '/src_make_prime_list/d' Makefile.orig > Makefile
|
|
depbase=$(echo src/make-prime-list.o | sed 's|[^/]*$|.deps/&|;s|\.o$||')
|
|
cc -std=gnu99 -I. -I./lib -Ilib -I./lib -Isrc -I./src \
|
|
-fdiagnostics-show-option -funit-at-a-time -g -O2 -MT \
|
|
src/make-prime-list.o -MD -MP -MF $depbase.Tpo -c \
|
|
-o src/make-prime-list.o \
|
|
src/make-prime-list.c
|
|
mv -f $depbase.Tpo $depbase.Po
|
|
cc -std=gnu99 -fdiagnostics-show-option -funit-at-a-time -g -O2 \
|
|
-Wl,--as-needed -o src/make-prime-list src/make-prime-list.o
|
|
cp Makefile Makefile.bak
|
|
sed -e '/hostname.1/d' Makefile.bak > Makefile
|
|
fi
|
|
make ${makejobs}
|
|
}
|
|
|
|
do_check() {
|
|
local exeext_tests
|
|
|
|
# chgrp tests fail inside a chroot
|
|
sed -i '/tests\/chgrp/d' Makefile
|
|
|
|
# Tests that fail due to being inside a chroot
|
|
exeext_tests="chown lchown fchownat"
|
|
|
|
# Tests that depend on the tests reemoved
|
|
exeext_tests+=" fchmodat fchdir"
|
|
|
|
for test in $exeext_tests ; do
|
|
sed -i "/test-$test\$(EXEEXT)/d" gnulib-tests/Makefile
|
|
done
|
|
|
|
make check
|
|
}
|
|
|
|
do_install() {
|
|
make DESTDIR=${DESTDIR} install
|
|
if [ "$CROSS_BUILD" ]; then
|
|
mv ${wrksrc}/coreutils-${XBPS_MACHINE}/share/man \
|
|
${DESTDIR}/usr/share
|
|
# provided by procps-ng
|
|
rm -f ${DESTDIR}/usr/share/man/man1/{kill,uptime}.1
|
|
fi
|
|
mv ${DESTDIR}/usr/bin/hostname ${DESTDIR}/usr/bin/hostname-coreutils
|
|
mv ${DESTDIR}/usr/share/man/man1/hostname.1 ${DESTDIR}/usr/share/man/man1/hostname-coreutils.1
|
|
}
|