From 6ad79d8932d10c77d4288009cf3063691fab6c34 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Thu, 27 Sep 2018 15:10:27 -0700 Subject: Add globbing patches to make from upstream Fixes #1004. Signed-off-by: Alexey Neyman diff --git a/packages/make/4.2.1/0000-glob-v2.patch b/packages/make/4.2.1/0000-glob-v2.patch new file mode 100644 index 0000000..ad8ddd8 --- /dev/null +++ b/packages/make/4.2.1/0000-glob-v2.patch @@ -0,0 +1,39 @@ +commit 48c8a116a914a325a0497721f5d8b58d5bba34d4 +Author: Paul Smith +Date: Sun Nov 19 15:09:16 2017 -0500 + + * configure.ac: Support GLIBC glob interface version 2 + +--- + configure | 3 +-- + configure.ac | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +--- a/configure.ac ++++ b/configure.ac +@@ -399,10 +399,9 @@ + #include + #include + +-#define GLOB_INTERFACE_VERSION 1 + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include +-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION ++# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif], +--- a/configure ++++ b/configure +@@ -11481,10 +11481,9 @@ + #include + #include + +-#define GLOB_INTERFACE_VERSION 1 + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include +-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION ++# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif diff --git a/packages/make/4.2.1/0001-glob-v2-gl_lstat.patch b/packages/make/4.2.1/0001-glob-v2-gl_lstat.patch new file mode 100644 index 0000000..ae755e3 --- /dev/null +++ b/packages/make/4.2.1/0001-glob-v2-gl_lstat.patch @@ -0,0 +1,64 @@ +commit 193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4 +Author: Paul Eggert +Date: Sun Sep 24 09:12:58 2017 -0400 + + glob: Do not assume glibc glob internals. + + It has been proposed that glibc glob start using gl_lstat, + which the API allows it to do. GNU 'make' should not get in + the way of this. See: + https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html + + * dir.c (local_lstat): New function, like local_stat. + (dir_setup_glob): Use it to initialize gl_lstat too, as the API + requires. + +--- + dir.c | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +--- a/dir.c ++++ b/dir.c +@@ -1299,15 +1299,40 @@ + } + #endif + ++/* Similarly for lstat. */ ++#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS) ++# ifndef VMS ++# ifndef HAVE_SYS_STAT_H ++int lstat (const char *path, struct stat *sbuf); ++# endif ++# else ++ /* We are done with the fake lstat. Go back to the real lstat */ ++# ifdef lstat ++# undef lstat ++# endif ++# endif ++# define local_lstat lstat ++#elif defined(WINDOWS32) ++/* Windows doesn't support lstat(). */ ++# define local_lstat local_stat ++#else ++static int ++local_lstat (const char *path, struct stat *buf) ++{ ++ int e; ++ EINTRLOOP (e, lstat (path, buf)); ++ return e; ++} ++#endif ++ + void + dir_setup_glob (glob_t *gl) + { + gl->gl_opendir = open_dirstream; + gl->gl_readdir = read_dirstream; + gl->gl_closedir = free; ++ gl->gl_lstat = local_lstat; + gl->gl_stat = local_stat; +- /* We don't bother setting gl_lstat, since glob never calls it. +- The slot is only there for compatibility with 4.4 BSD. */ + } + + void -- cgit v0.10.2-6-g49f6 From efe65615d053f29d25fdf5fe787b267e4609d9cf Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Fri, 28 Sep 2018 11:43:45 -0700 Subject: Fix up timestamps after patching ... so that autotools-based packages do not re-run autoconf/autoheader/automake. Signed-off-by: Alexey Neyman diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh index f8af7fc..bc48cee 100644 --- a/scripts/build/libc/glibc.sh +++ b/scripts/build/libc/glibc.sh @@ -26,7 +26,6 @@ do_libc_extract() { CT_DoExecLog ALL ln -sf "${CT_GLIBC_PORTS_SRC_DIR}/${CT_GLIBC_PORTS_BASENAME}" \ "${CT_GLIBC_SRC_DIR}/${CT_GLIBC_BASENAME}/ports" fi - # TBD make the configure timestamp fix in all patched packages (e.g. part of CT_ExtractPatch) } # Build and install headers and start files diff --git a/scripts/functions b/scripts/functions index 2267a95..2e875f7 100644 --- a/scripts/functions +++ b/scripts/functions @@ -2165,6 +2165,20 @@ CT_DoExtractPatch() CT_DoExecLog ALL "${CT_CONFIG_SHELL}" -c "${devel_bootstrap}" fi + # Fix up the timestamps on the file we may be patching: otherwise, we may + # have a circular dependency. For example, we need make to build autoconf + # and automake companion tools, but we need autoconf and automake to regenerate + # aclocal.m4 or config.h.in after the patch touches configure.ac. Instead, + # assume the patch fixes all the files it needs. + find . -type f -name "aclocal.m4" \ + -exec touch {} \; -exec echo touch {} \; | CT_DoLog ALL + find . -type f -name "config.h.in" \ + -exec touch {} \; -exec echo touch {} \; | CT_DoLog ALL + find . -type f -name "Makefile.in" \ + -exec touch {} \; -exec echo touch {} \; | CT_DoLog ALL + find . -type f -name "configure" \ + -exec touch {} \; -exec echo touch {} \; | CT_DoLog ALL + if [ -n "${patchfunc}" ]; then ${patchfunc} fi -- cgit v0.10.2-6-g49f6 From 9d7c783a93dd4693a009aae5e99156c1f187acaf Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Fri, 28 Sep 2018 11:44:48 -0700 Subject: Make dockerfiles a bit more consistent ... and add Mint 19 and CentOS 6. The latter currently fails in ctng's configure due to an old libtool; need to make libtool optional. Signed-off-by: Alexey Neyman diff --git a/testing/docker/archlinux/Dockerfile b/testing/docker/archlinux/Dockerfile index 2ad9d64..a717088 100644 --- a/testing/docker/archlinux/Dockerfile +++ b/testing/docker/archlinux/Dockerfile @@ -1,3 +1,10 @@ FROM base/archlinux:latest +ARG CTNG_UID +ARG CTNG_GID +RUN groupadd -g $CTNG_GID ctng +RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng RUN pacman -Syu --noconfirm RUN pacman -S --noconfirm base-devel git help2man python unzip +RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64 +RUN chmod a+x /sbin/dumb-init +ENTRYPOINT [ "/sbin/dumb-init", "--" ] diff --git a/testing/docker/centos6/Dockerfile b/testing/docker/centos6/Dockerfile new file mode 100644 index 0000000..f76100f --- /dev/null +++ b/testing/docker/centos6/Dockerfile @@ -0,0 +1,10 @@ +FROM centos:6 +ARG CTNG_UID +ARG CTNG_GID +RUN groupadd -g $CTNG_GID ctng +RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng +RUN yum install -y autoconf gperf bison flex texinfo help2man gcc-c++ patch \ + ncurses-devel python-devel perl-Thread-Queue bzip2 git wget xz unzip +RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64 +RUN chmod a+x /sbin/dumb-init +ENTRYPOINT [ "/sbin/dumb-init", "--" ] diff --git a/testing/docker/common-scripts/ctng-build-sample b/testing/docker/common-scripts/ctng-build-sample index 3f21478..6a6de6a 100755 --- a/testing/docker/common-scripts/ctng-build-sample +++ b/testing/docker/common-scripts/ctng-build-sample @@ -2,8 +2,8 @@ set -e cd -rm -rf bld-samples -mkdir bld-samples -cd bld-samples -export PATH=$HOME/inst-ctng/bin:$PATH -ct-ng build-all ${1+CT_SAMPLES="$*"} +rm -rf work/bld-samples +mkdir -p work/bld-samples work/inst-xtools +cd work/bld-samples +export PATH=$HOME/work/inst-ctng/bin:$PATH +ct-ng build-all CT_PREFIX=$HOME/work/inst-xtools ${1+CT_SAMPLES="$*"} diff --git a/testing/docker/common-scripts/ctng-install b/testing/docker/common-scripts/ctng-install index f29093a..500cb73 100755 --- a/testing/docker/common-scripts/ctng-install +++ b/testing/docker/common-scripts/ctng-install @@ -2,9 +2,9 @@ set -e cd -rm -rf bld-ctng -mkdir bld-ctng -cd bld-ctng -/crosstool-ng/configure --prefix=$HOME/inst-ctng +rm -rf work/bld-ctng work/inst-ctng +mkdir work/bld-ctng +cd work/bld-ctng +/crosstool-ng/configure --prefix=$HOME/work/inst-ctng make make install diff --git a/testing/docker/common-scripts/ctng-test-basic b/testing/docker/common-scripts/ctng-test-basic index 75412e1..0edb899 100755 --- a/testing/docker/common-scripts/ctng-test-basic +++ b/testing/docker/common-scripts/ctng-test-basic @@ -2,7 +2,7 @@ set -e cd -export PATH=$HOME/inst-ctng/bin:$PATH +export PATH=$HOME/work/inst-ctng/bin:$PATH ct-ng help ct-ng list-samples ct-ng list-steps diff --git a/testing/docker/common-scripts/su-as-user b/testing/docker/common-scripts/su-as-user deleted file mode 100755 index 436eb54..0000000 --- a/testing/docker/common-scripts/su-as-user +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -usr=$1 -uid=$2 -grp=$3 -gid=$4 -shift 4 - -groupadd -g ${gid} ${grp} -useradd -d /home/${usr} -m -g ${gid} -u ${uid} ${usr} -rm -f /home/${usr}/src -ln -sf /src /home/${usr}/src -if [ -z "$*" ]; then - exec su -l ${usr} -else - exec su -l -c "/bin/bash -c '$*'" ${usr} -fi diff --git a/testing/docker/dmgr.sh b/testing/docker/dmgr.sh index b6a4294..c059a6f 100755 --- a/testing/docker/dmgr.sh +++ b/testing/docker/dmgr.sh @@ -42,7 +42,8 @@ action_build() local cntr=$1 msg "Building Docker container for ${cntr}" - docker build --no-cache -t "ctng-${cntr}" "${cntr}" +set -x + docker build --no-cache -t "ctng-${cntr}" --build-arg CTNG_GID=`id -g` --build-arg CTNG_UID=`id -u` "${cntr}" } # Common backend for enter/test @@ -50,16 +51,23 @@ _dckr() { local topdir=`cd ../.. && pwd` local cntr=$1 + local scmd prefix shift mkdir -p build-${cntr} - docker run --rm -i -t \ - -v `pwd`/common-scripts:/setup-scripts:ro \ + prefix="docker run --rm -i -t \ + -v `pwd`/common-scripts:/common-scripts:ro \ -v ${topdir}:/crosstool-ng:ro \ - -v `pwd`/build-${cntr}:/home \ - -v $HOME/src:/src:ro \ - ctng-${cntr} \ - ${SETUPCMD:-/setup-scripts/su-as-user `id -un` `id -u` `id -gn` `id -g`} "$@" + -v `pwd`/build-${cntr}:/home/ctng/work \ + -v $HOME/src:/home/ctng/src:ro \ + ctng-${cntr}" + if [ -n "${AS_ROOT}" ]; then + $prefix "$@" + elif [ -n "$*" ]; then + $prefix su -l ctng -c "$*" + else + $prefix su -l ctng + fi } # Run the test @@ -69,8 +77,8 @@ action_install() # The test assumes the top directory is bootstrapped, but clean. msg "Setting up crosstool-NG in ${cntr}" - _dckr "${cntr}" /setup-scripts/ctng-install - _dckr "${cntr}" /setup-scripts/ctng-test-basic + _dckr "${cntr}" /common-scripts/ctng-install && \ + _dckr "${cntr}" /common-scripts/ctng-test-basic } # Run the test @@ -81,16 +89,17 @@ action_sample() # The test assumes the top directory is bootstrapped, but clean. msg "Building samples in ${cntr} [$@]" - _dckr "${cntr}" /setup-scripts/ctng-build-sample "$@" + _dckr "${cntr}" /common-scripts/ctng-build-sample "$@" } # Enter the container using the same user account/environment as for testing. action_enter() { local cntr=$1 + shift msg "Entering ${cntr}" - _dckr "${cntr}" + _dckr "${cntr}" "$@" } # Enter the container using the same user account/environment as for testing. @@ -99,7 +108,7 @@ action_root() local cntr=$1 msg "Entering ${cntr} as root" - SETUPCMD=/bin/bash _dckr "${cntr}" + AS_ROOT=y _dckr "${cntr}" /bin/bash } # Clean up after test suite run diff --git a/testing/docker/docker-remove-all.sh b/testing/docker/docker-remove-all.sh new file mode 100755 index 0000000..d73ba1e --- /dev/null +++ b/testing/docker/docker-remove-all.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +for c in `docker ps -a -q`; do + docker rm $c +done +for i in `docker images -q`; do + docker rmi --force $i +done diff --git a/testing/docker/gentoo-amd64/Dockerfile b/testing/docker/gentoo-amd64/Dockerfile index 455e315..ab5ac94 100644 --- a/testing/docker/gentoo-amd64/Dockerfile +++ b/testing/docker/gentoo-amd64/Dockerfile @@ -1,4 +1,8 @@ FROM gentoo/stage3-amd64-hardened +ARG CTNG_UID +ARG CTNG_GID +RUN groupadd -g $CTNG_GID ctng +RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64 RUN chmod a+x /sbin/dumb-init ENTRYPOINT [ "/sbin/dumb-init", "--" ] diff --git a/testing/docker/mint19-amd64/Dockerfile b/testing/docker/mint19-amd64/Dockerfile new file mode 100644 index 0000000..8fdcc52 --- /dev/null +++ b/testing/docker/mint19-amd64/Dockerfile @@ -0,0 +1,11 @@ +FROM linuxmintd/mint19-amd64 +ARG CTNG_UID +ARG CTNG_GID +RUN groupadd -g $CTNG_GID ctng +RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng +RUN apt-get update +RUN apt-get install -y gcc gperf bison flex texinfo help2man make libncurses5-dev \ + python-dev autoconf automake libtool libtool-bin gawk +RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64 +RUN chmod a+x /sbin/dumb-init +ENTRYPOINT [ "/sbin/dumb-init", "--" ] -- cgit v0.10.2-6-g49f6