From 1944d8c53d613b5185b5fe6734007f41324e4421 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 2 Sep 2016 00:54:21 -0400 Subject: [PATCH] debian-packaging: add build reproducibility fixups Signed-off-by: Theodore Ts'o --- .gitignore | 1 - ...build-reproducibility-in-mk_cmds-and-compile_et | 262 +++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 debian/patches/fix-build-reproducibility-in-mk_cmds-and-compile_et diff --git a/.gitignore b/.gitignore index baf9b1a..ca0295a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ build.static FILES ^core *~ -patches Makefile *.bak *.diff diff --git a/debian/patches/fix-build-reproducibility-in-mk_cmds-and-compile_et b/debian/patches/fix-build-reproducibility-in-mk_cmds-and-compile_et new file mode 100644 index 0000000..ad75326 --- /dev/null +++ b/debian/patches/fix-build-reproducibility-in-mk_cmds-and-compile_et @@ -0,0 +1,262 @@ +Description: Fix build reproducibility for mk_cmds and compile_et + The mk_cmds and compile_et scripts include the build directory, which + breaks the build reproducibility goal of Debian. +From: Theodore Ts'o + +diff --git a/configure b/configure +index 03e24d1..0ac5dcb 100755 +--- a/configure ++++ b/configure +@@ -633,8 +633,6 @@ BUILD_CFLAGS + MKINSTALLDIRS + INCLUDES + DO_TEST_SUITE +-ET_DIR +-SS_DIR + LDFLAGS_STATIC + root_sysconfdir + root_libdir +@@ -13805,10 +13803,6 @@ $as_echo "#define _INTL_REDIRECT_MACROS 1" >>confdefs.h + + ;; + esac +-SS_DIR=`cd ${srcdir}/lib/ss; pwd` +-ET_DIR=`cd ${srcdir}/lib/et; pwd` +- +- + if test "$cross_compiling" = yes ; then + DO_TEST_SUITE= + else +diff --git a/configure.ac b/configure.ac +index a387dfd..1c73301 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1400,13 +1400,6 @@ darwin*) + ;; + esac + dnl +-dnl Make the ss and et directories work correctly. +-dnl +-SS_DIR=`cd ${srcdir}/lib/ss; pwd` +-ET_DIR=`cd ${srcdir}/lib/et; pwd` +-AC_SUBST(SS_DIR) +-AC_SUBST(ET_DIR) +-dnl + dnl Only try to run the test suite if we're not cross compiling. + dnl + if test "$cross_compiling" = yes ; then +diff --git a/debugfs/Makefile.in b/debugfs/Makefile.in +index c22b8c0..a3fe13e 100644 +--- a/debugfs/Makefile.in ++++ b/debugfs/Makefile.in +@@ -14,7 +14,7 @@ INSTALL = @INSTALL@ + PROGS= debugfs + MANPAGES= debugfs.8 + +-MK_CMDS= _SS_DIR_OVERRIDE=../lib/ss ../lib/ss/mk_cmds ++MK_CMDS= _SS_DIR_OVERRIDE=$(srcdir)/../lib/ss ../lib/ss/mk_cmds + + DEBUG_OBJS= debug_cmds.o debugfs.o util.o ncheck.o icheck.o ls.o \ + lsdel.o dump.o set_fields.o logdump.o htree.o unused.o e2freefrag.o \ +diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in +index 06d9f55..6f626f4 100644 +--- a/e2fsck/Makefile.in ++++ b/e2fsck/Makefile.in +@@ -34,7 +34,7 @@ PROFILED_DEPLIBS= $(DEPPROFILED_LIBSUPPORT) $(PROFILED_LIBEXT2FS) \ + $(DEPPROFILED_LIBCOM_ERR) $(DEPPROFILED_LIBBLKID) \ + $(DEPPROFILED_LIBUUID) $(DEPPROFILED_LIBE2P) + +-COMPILE_ET=$(top_builddir)/lib/et/compile_et --build-tree ++COMPILE_ET= _ET_DIR_OVERRIDE=$(srcdir)/../lib/et/et ../lib/et/compile_et + + .c.o: + $(E) " CC $<" +diff --git a/lib/et/Makefile.in b/lib/et/Makefile.in +index cb75ab8..476f189 100644 +--- a/lib/et/Makefile.in ++++ b/lib/et/Makefile.in +@@ -140,7 +140,7 @@ uninstall:: + check:: compile_et + for i in $(srcdir)/test_cases/*.et ; do \ + t=`basename $$i | sed -e 's/.et//'`; \ +- ./compile_et --build-tree $$i ; \ ++ _ET_DIR_OVERRIDE=$(srcdir) ./compile_et $$i ; \ + diff -c $(srcdir)/test_cases/$$t.c $$t.c > $$t.failed; \ + if [ $$? -ne 0 ]; then echo Test case $$t failed; exit 1 ; fi ; \ + diff -c $(srcdir)/test_cases/$$t.h $$t.h >> $$t.failed; \ +diff --git a/lib/et/compile_et.sh.in b/lib/et/compile_et.sh.in +index c2861f4..4c4ba17 100644 +--- a/lib/et/compile_et.sh.in ++++ b/lib/et/compile_et.sh.in +@@ -4,8 +4,7 @@ + + datarootdir=@datarootdir@ + AWK=@AWK@ +-DIR="${DIR-@datadir@/et}" +-ET_DIR="${ET_DIR-@ET_DIR@}" ++DIR=@datadir@/et + + if test "$1" = "--build-tree" ; then + shift; +@@ -29,13 +28,13 @@ do + fi + done + ++if test -n "$_ET_DIR_OVERRIDE" ; then ++ DIR="$_ET_DIR_OVERRIDE"; ++fi ++ + if test ! -f "$DIR/et_h.awk" || test ! -f "$DIR/et_c.awk" ; then +- DIR="$ET_DIR" +-# echo "Falling back to $DIR..." +- if test ! -f "$DIR/et_h.awk" || test ! -f "$DIR/et_c.awk" ; then +- echo "compile_et: Couldn't find compile_et's template files." +- exit 1 +- fi ++ echo "compile_et: Couldn't find compile_et's template files." ++ exit 1 + fi + + ROOT=`echo $1 | sed -e s/.et$//` +diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in +index 461920c..6a3656d 100644 +--- a/lib/ext2fs/Makefile.in ++++ b/lib/ext2fs/Makefile.in +@@ -13,7 +13,8 @@ DEBUGFS_CFLAGS = -I$(srcdir)/../../e2fsck $(ALL_CFLAGS) -DDEBUGFS + + @DEBUGFS_CMT@DEBUGFS_LIB_OBJS = bb_compat.o inode_io.o write_bb_file.o + +-MK_CMDS= _SS_DIR_OVERRIDE=../ss ../ss/mk_cmds ++MK_CMDS= _SS_DIR_OVERRIDE=$(srcdir)/../ss ../ss/mk_cmds ++COMPILE_ET= _ET_DIR_OVERRIDE=$(srcdir)/../et ../et/compile_et + + @RESIZER_CMT@RESIZE_LIB_OBJS = dupfs.o + @TEST_IO_CMT@TEST_IO_LIB_OBJS = test_io.o +@@ -254,8 +255,6 @@ all:: ext2fs.pc + @ELF_CMT@ $(Q) $(CC) $(ALL_CFLAGS_SHLIB) -fPIC -shared -o elfshared/$*.o -c $< + @BSDLIB_CMT@ $(Q) $(CC) $(ALL_CFLAGS_SHLIB) $(BSDLIB_PIC_FLAG) -o pic/$*.o -c $< + +-COMPILE_ET=../et/compile_et --build-tree +- + DISTFILES= Makefile *.c *.h image + + ext2_err.et: $(DEP_SUBSTITUTE) $(srcdir)/ext2_err.et.in +diff --git a/lib/ss/Makefile.in b/lib/ss/Makefile.in +index 255b58b..f4953f0 100644 +--- a/lib/ss/Makefile.in ++++ b/lib/ss/Makefile.in +@@ -28,8 +28,8 @@ BSDLIB_MYDIR = ss + BSDLIB_INSTALL_DIR = $(root_libdir) + + TAGS=etags +-COMPILE_ET=../et/compile_et --build-tree +-MK_CMDS=_SS_DIR_OVERRIDE=. ./mk_cmds ++MK_CMDS= _SS_DIR_OVERRIDE=$(srcdir) ./mk_cmds ++COMPILE_ET= _ET_DIR_OVERRIDE=$(srcdir)/../et ../et/compile_et + + .c.o: + $(E) " CC $<" +diff --git a/lib/ss/mk_cmds.sh.in b/lib/ss/mk_cmds.sh.in +index a8976a4..0abc19d 100644 +--- a/lib/ss/mk_cmds.sh.in ++++ b/lib/ss/mk_cmds.sh.in +@@ -3,8 +3,7 @@ + # + + datarootdir=@datarootdir@ +-DIR="${DIR-@datadir@/ss}" +-SS_DIR="@SS_DIR@" ++DIR=@datadir@/ss + AWK=@AWK@ + SED=@SED@ + +@@ -30,12 +29,8 @@ if test -n "$_SS_DIR_OVERRIDE" ; then + fi + + if test ! -f $DIR/ct_c.sed || test ! -f $DIR/ct_c.awk ; then +- DIR="$SS_DIR" +-# echo "Falling back to $DIR..." +- if test ! -f "$DIR/ct_c.sed" || test ! -f "$DIR/ct_c.awk" ; then +- echo "mk_cmds: Couldn't find mk_cmds's template files." +- exit 1 +- fi ++ echo "mk_cmds: Couldn't find mk_cmds's template files." ++ exit 1 + fi + + FILE="$1" +diff --git a/lib/support/Makefile.in b/lib/support/Makefile.in +index 5beaaac..112ba24 100644 +--- a/lib/support/Makefile.in ++++ b/lib/support/Makefile.in +@@ -41,7 +41,7 @@ LIBDIR= support + @MAKEFILE_LIBRARY@ + @MAKEFILE_PROFILE@ + +-COMPILE_ET=$(top_builddir)/lib/et/compile_et --build-tree ++COMPILE_ET= _ET_DIR_OVERRIDE=$(srcdir)/../et ../et/compile_et + + .c.o: + $(E) " CC $<" +diff --git a/misc/Makefile.in b/misc/Makefile.in +index e487692..d6436c2 100644 +--- a/misc/Makefile.in ++++ b/misc/Makefile.in +@@ -115,7 +115,7 @@ STATIC_DEPLIBS= $(DEPLIBSUPPORT) $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR) + LIBS_E2P= $(LIBE2P) $(LIBCOM_ERR) + DEPLIBS_E2P= $(LIBE2P) $(DEPLIBCOM_ERR) + +-COMPILE_ET=$(top_builddir)/lib/et/compile_et --build-tree ++COMPILE_ET= _ET_DIR_OVERRIDE=$(srcdir)/../lib/et/et ../lib/et/compile_et + + # This nastyness is needed because of jfs_user.h hackery; when we finally + # clean up this mess, we should be able to drop it +diff --git a/tests/progs/Makefile.in b/tests/progs/Makefile.in +index 22d9417..f6a31b9 100644 +--- a/tests/progs/Makefile.in ++++ b/tests/progs/Makefile.in +@@ -11,7 +11,7 @@ INSTALL = @INSTALL@ + + @MCONFIG@ + +-MK_CMDS= _SS_DIR_OVERRIDE=../../lib/ss ../../lib/ss/mk_cmds ++MK_CMDS= _SS_DIR_OVERRIDE=$(srcdir)/../../lib/ss ../../lib/ss/mk_cmds + + PROGS= test_icount crcsum + +diff --git a/util/gen-android-files b/util/gen-android-files +index 994337b..ebd8778 100755 +--- a/util/gen-android-files ++++ b/util/gen-android-files +@@ -14,8 +14,8 @@ ANDROID_GENERATED_FILES="lib/ext2fs/ext2_err.c lib/ext2fs/ext2_err.h \ + SS_DIR=$(pwd)/lib/ss + MK_CMDS=/tmp/mk_cmds$$.sh + +-sed -e "s;@SS_DIR@;$SS_DIR;" < $SS_DIR/mk_cmds.sh.in \ +- | sed -e "s/@AWK@/awk/" | sed -e "s/@SED@/sed/" > $MK_CMDS ++sed -e "s/@AWK@/awk/" < $SS_DIR/mk_cmds.sh.in \ ++ | sed -e "s/@SED@/sed/" > $MK_CMDS + + sed -e "s/@E2FSPROGS_VERSION@/$(git describe)/" < lib/ext2fs/ext2_err.et.in > lib/ext2fs/ext2_err.et + +@@ -29,7 +29,7 @@ done + for i in lib/ss/std_rqs debugfs/debug_cmds debugfs/ro_debug_cmds \ + debugfs/extent_cmds + do +- /bin/sh $MK_CMDS $i.ct ++ _SS_DIR_OVERRIDE=lib/ss /bin/sh $MK_CMDS $i.ct + mv -f $(basename $i).c $i.c + done + +diff --git a/util/subst.conf.in b/util/subst.conf.in +index ada11e7..fbc044d 100644 +--- a/util/subst.conf.in ++++ b/util/subst.conf.in +@@ -1,7 +1,5 @@ + AWK @AWK@ + SED @SED@ +-ET_DIR @ET_DIR@ +-SS_DIR @SS_DIR@ + E2FSPROGS_MONTH @E2FSPROGS_MONTH@ + E2FSPROGS_YEAR @E2FSPROGS_YEAR@ + E2FSPROGS_VERSION @E2FSPROGS_VERSION@ diff --git a/debian/patches/series b/debian/patches/series index 7725d99..9623e62 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ enable-metadata_csum-by-default +fix-build-reproducibility-in-mk_cmds-and-compile_et -- 1.8.3.1