From 0b63fe5f43b94611849641e984d291aa0c143b2b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 19 Jan 2025 19:15:37 +0100 Subject: [PATCH] gnu patches: move to use quilt --- .github/workflows/GnuTests.yml | 2 +- DEVELOPMENT.md | 2 ++ util/build-gnu.sh | 8 ++++++-- util/gnu-patches/series | 10 ++++++++++ util/gnu-patches/tests_cksum_base64.patch | 10 +++++----- util/gnu-patches/tests_comm.pl.patch | 8 ++++---- util/gnu-patches/tests_cut_error_msg.patch | 8 ++++---- util/gnu-patches/tests_dup_source.patch | 10 +++++----- util/gnu-patches/tests_env_env-S.pl.patch | 8 ++++---- util/gnu-patches/tests_factor_factor.pl.patch | 8 ++++---- util/gnu-patches/tests_invalid_opt.patch | 8 ++++---- util/gnu-patches/tests_sort_merge.pl.patch | 8 ++++---- util/gnu-patches/tests_tsort.patch | 8 ++++---- 13 files changed, 57 insertions(+), 41 deletions(-) create mode 100644 util/gnu-patches/series diff --git a/.github/workflows/GnuTests.yml b/.github/workflows/GnuTests.yml index 35eaf8cb35b..4cdf1080cc9 100644 --- a/.github/workflows/GnuTests.yml +++ b/.github/workflows/GnuTests.yml @@ -105,7 +105,7 @@ jobs: run: | ## Install dependencies sudo apt-get update - sudo apt-get install -y autoconf autopoint bison texinfo gperf gcc g++ gdb python3-pyinotify jq valgrind libexpect-perl libacl1-dev libattr1-dev libcap-dev libselinux1-dev attr + sudo apt-get install -y autoconf autopoint bison texinfo gperf gcc g++ gdb python3-pyinotify jq valgrind libexpect-perl libacl1-dev libattr1-dev libcap-dev libselinux1-dev attr quilt - name: Add various locales shell: bash run: | diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 6f1de3b5476..0f3a3691d9d 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -241,6 +241,8 @@ DEBUG=1 bash util/run-gnu-test.sh tests/misc/sm3sum.pl Note that GNU test suite relies on individual utilities (not the multicall binary). +You also need to install [quilt](https://savannah.nongnu.org/projects/quilt), a tool used to manage a stack of patches for modifying GNU tests. + On FreeBSD, you need to install packages for GNU coreutils and sed (used in shell scripts instead of system commands): ```shell diff --git a/util/build-gnu.sh b/util/build-gnu.sh index e05341b2218..fda57ec7800 100755 --- a/util/build-gnu.sh +++ b/util/build-gnu.sh @@ -94,6 +94,12 @@ if [ "$(uname)" == "Linux" ]; then export SELINUX_ENABLED=1 fi +# Set up quilt for patch management +export QUILT_PATCHES="${ME_dir}/gnu-patches/" +cd "$path_GNU" +quilt push -a +cd - + "${MAKE}" PROFILE="${UU_MAKE_PROFILE}" cp "${UU_BUILD_DIR}/install" "${UU_BUILD_DIR}/ginstall" # The GNU tests rename this script before running, to avoid confusion with the make target @@ -206,8 +212,6 @@ grep -rlE '/usr/local/bin/\s?/usr/local/bin' init.cfg tests/* | xargs -r sed -Ei # we should not regress our project just to match what GNU is going. # So, do some changes on the fly -eval cat "$path_UUTILS/util/gnu-patches/*.patch" | patch -N -r - -d "$path_GNU" -p 1 -i - || true - sed -i -e "s|rm: cannot remove 'e/slink'|rm: cannot remove 'e'|g" tests/rm/fail-eacces.sh sed -i -e "s|rm: cannot remove 'a/b/file'|rm: cannot remove 'a'|g" tests/rm/cycle.sh diff --git a/util/gnu-patches/series b/util/gnu-patches/series new file mode 100644 index 00000000000..f303e89c42b --- /dev/null +++ b/util/gnu-patches/series @@ -0,0 +1,10 @@ +tests_factor_factor.pl.patch +tests_cksum_base64.patch +tests_comm.pl.patch +tests_cut_error_msg.patch +tests_dup_source.patch +tests_env_env-S.pl.patch +tests_invalid_opt.patch +tests_ls_no_cap.patch +tests_sort_merge.pl.patch +tests_tsort.patch diff --git a/util/gnu-patches/tests_cksum_base64.patch b/util/gnu-patches/tests_cksum_base64.patch index 2a8ed0af40e..ea6bf92e164 100644 --- a/util/gnu-patches/tests_cksum_base64.patch +++ b/util/gnu-patches/tests_cksum_base64.patch @@ -1,8 +1,8 @@ -diff --git a/tests/cksum/cksum-base64.pl b/tests/cksum/cksum-base64.pl -index a037a1628..c6d87d447 100755 ---- a/tests/cksum/cksum-base64.pl -+++ b/tests/cksum/cksum-base64.pl -@@ -91,8 +91,8 @@ my $prog = 'cksum'; +Index: gnu/tests/cksum/cksum-base64.pl +=================================================================== +--- gnu.orig/tests/cksum/cksum-base64.pl ++++ gnu/tests/cksum/cksum-base64.pl +@@ -92,8 +92,8 @@ my $prog = 'cksum'; my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose); # Ensure hash names from cksum --help match those in @pairs above. diff --git a/util/gnu-patches/tests_comm.pl.patch b/util/gnu-patches/tests_comm.pl.patch index d3d5595a2c5..602071f483a 100644 --- a/util/gnu-patches/tests_comm.pl.patch +++ b/util/gnu-patches/tests_comm.pl.patch @@ -1,7 +1,7 @@ -diff --git a/tests/misc/comm.pl b/tests/misc/comm.pl -index 5bd5f56d7..8322d92ba 100755 ---- a/tests/misc/comm.pl -+++ b/tests/misc/comm.pl +Index: gnu/tests/misc/comm.pl +=================================================================== +--- gnu.orig/tests/misc/comm.pl ++++ gnu/tests/misc/comm.pl @@ -73,18 +73,24 @@ my @Tests = # invalid missing command line argument (1) diff --git a/util/gnu-patches/tests_cut_error_msg.patch b/util/gnu-patches/tests_cut_error_msg.patch index 3f57d204813..1b1673fef72 100644 --- a/util/gnu-patches/tests_cut_error_msg.patch +++ b/util/gnu-patches/tests_cut_error_msg.patch @@ -1,7 +1,7 @@ -diff --git a/tests/cut/cut.pl b/tests/cut/cut.pl -index 1670db02e..ed633792a 100755 ---- a/tests/cut/cut.pl -+++ b/tests/cut/cut.pl +Index: gnu/tests/cut/cut.pl +=================================================================== +--- gnu.orig/tests/cut/cut.pl ++++ gnu/tests/cut/cut.pl @@ -29,13 +29,15 @@ my $mb_locale = $ENV{LOCALE_FR_UTF8}; my $prog = 'cut'; diff --git a/util/gnu-patches/tests_dup_source.patch b/util/gnu-patches/tests_dup_source.patch index 44e33723bc1..4c24498253d 100644 --- a/util/gnu-patches/tests_dup_source.patch +++ b/util/gnu-patches/tests_dup_source.patch @@ -1,8 +1,8 @@ -diff --git a/tests/mv/dup-source.sh b/tests/mv/dup-source.sh -index 7bcd82fc3..0f9005296 100755 ---- a/tests/mv/dup-source.sh -+++ b/tests/mv/dup-source.sh -@@ -83,7 +83,7 @@ $i: cannot stat 'a': No such file or directory +Index: gnu/tests/mv/dup-source.sh +=================================================================== +--- gnu.orig/tests/mv/dup-source.sh ++++ gnu/tests/mv/dup-source.sh +@@ -83,7 +83,7 @@ $i: cannot stat 'a': No such file or dir $i: cannot stat 'a': No such file or directory $i: cannot stat 'b': No such file or directory $i: cannot move './b' to a subdirectory of itself, 'b/b' diff --git a/util/gnu-patches/tests_env_env-S.pl.patch b/util/gnu-patches/tests_env_env-S.pl.patch index 404a00ca60e..4a1ae939a6b 100644 --- a/util/gnu-patches/tests_env_env-S.pl.patch +++ b/util/gnu-patches/tests_env_env-S.pl.patch @@ -1,7 +1,7 @@ -diff --git a/tests/env/env-S.pl b/tests/env/env-S.pl -index 710ca82cf..af7cf6efa 100755 ---- a/tests/env/env-S.pl -+++ b/tests/env/env-S.pl +Index: gnu/tests/env/env-S.pl +=================================================================== +--- gnu.orig/tests/env/env-S.pl ++++ gnu/tests/env/env-S.pl @@ -209,27 +209,28 @@ my @Tests = {ERR=>"$prog: no terminating quote in -S string\n"}], ['err5', q[-S'A=B\\q'], {EXIT=>125}, diff --git a/util/gnu-patches/tests_factor_factor.pl.patch b/util/gnu-patches/tests_factor_factor.pl.patch index 731abcc9117..892d526964e 100644 --- a/util/gnu-patches/tests_factor_factor.pl.patch +++ b/util/gnu-patches/tests_factor_factor.pl.patch @@ -1,7 +1,7 @@ -diff --git a/tests/factor/factor.pl b/tests/factor/factor.pl -index b1406c266..3d97cd6a5 100755 ---- a/tests/factor/factor.pl -+++ b/tests/factor/factor.pl +Index: gnu/tests/factor/factor.pl +=================================================================== +--- gnu.orig/tests/factor/factor.pl ++++ gnu/tests/factor/factor.pl @@ -61,12 +61,14 @@ my @Tests = # Map newer glibc diagnostic to expected. # Also map OpenBSD 5.1's "unknown option" to expected "invalid option". diff --git a/util/gnu-patches/tests_invalid_opt.patch b/util/gnu-patches/tests_invalid_opt.patch index 1c70bc8c92a..c23476674e7 100644 --- a/util/gnu-patches/tests_invalid_opt.patch +++ b/util/gnu-patches/tests_invalid_opt.patch @@ -1,7 +1,7 @@ -diff --git a/tests/misc/invalid-opt.pl b/tests/misc/invalid-opt.pl -index 4b9c4c184..4ccd89482 100755 ---- a/tests/misc/invalid-opt.pl -+++ b/tests/misc/invalid-opt.pl +Index: gnu/tests/misc/invalid-opt.pl +=================================================================== +--- gnu.orig/tests/misc/invalid-opt.pl ++++ gnu/tests/misc/invalid-opt.pl @@ -74,23 +74,13 @@ foreach my $prog (@built_programs) defined $out or $out = ''; diff --git a/util/gnu-patches/tests_sort_merge.pl.patch b/util/gnu-patches/tests_sort_merge.pl.patch index a19677a6d0a..d6db2e09c60 100644 --- a/util/gnu-patches/tests_sort_merge.pl.patch +++ b/util/gnu-patches/tests_sort_merge.pl.patch @@ -1,7 +1,7 @@ -diff --git a/tests/sort/sort-merge.pl b/tests/sort/sort-merge.pl -index 89eed0c64..c2f5aa7e5 100755 ---- a/tests/sort/sort-merge.pl -+++ b/tests/sort/sort-merge.pl +Index: gnu/tests/sort/sort-merge.pl +=================================================================== +--- gnu.orig/tests/sort/sort-merge.pl ++++ gnu/tests/sort/sort-merge.pl @@ -43,22 +43,22 @@ my @Tests = # check validation of --batch-size option ['nmerge-0', "-m --batch-size=0", @inputs, diff --git a/util/gnu-patches/tests_tsort.patch b/util/gnu-patches/tests_tsort.patch index 40c612c288f..1084f97043a 100644 --- a/util/gnu-patches/tests_tsort.patch +++ b/util/gnu-patches/tests_tsort.patch @@ -1,7 +1,7 @@ -diff --git a/tests/misc/tsort.pl b/tests/misc/tsort.pl -index 70bdc474c..4fd420a4e 100755 ---- a/tests/misc/tsort.pl -+++ b/tests/misc/tsort.pl +Index: gnu/tests/misc/tsort.pl +=================================================================== +--- gnu.orig/tests/misc/tsort.pl ++++ gnu/tests/misc/tsort.pl @@ -54,8 +54,10 @@ my @Tests = ['only-one', {IN => {f => ""}}, {IN => {g => ""}},