Whamcloud - gitweb
debian: build the e2fsck-static package so it works on 2.4 kernels
authorTheodore Ts'o <tytso@mit.edu>
Mon, 31 Dec 2007 22:17:39 +0000 (17:17 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 1 Jan 2008 03:35:18 +0000 (22:35 -0500)
Some people are still running ancient Debian distributions, such as
woody, with a 2.4 kernel, and they want to be able to use the
e2fsck-static package on backlevel systems.

It turns out that we can't just statically link against glibc anymore,
since glibc now uses thread-local storage everywhere.  So we now build
e2fsck-static using dietlibc.

Addresses-Debian-Bug: #458017

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
debian/control
debian/rules

index 55f7e59..c41c829 100644 (file)
@@ -2,7 +2,7 @@ Source: e2fsprogs
 Section: admin
 Priority: required
 Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
-Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libdevmapper-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libselinux1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], debhelper (>= 4)
+Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, dietlibc-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libdevmapper-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libselinux1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], debhelper (>= 4)
 Standards-Version: 3.7.3.0
 
 Package: e2fsck-static
index d757662..11db345 100755 (executable)
@@ -44,6 +44,7 @@ uuidudebdir=${debdir}/libuuid1-udeb
 maindir=${debdir}/e2fsprogs
 stdbuilddir=${debdir}/BUILD-STD
 bfbuilddir=${debdir}/BUILD-BF
+staticbuilddir=${debdir}/BUILD-STATIC
 mipsbuilddir=${debdir}/BUILD-MIPS
 mipsbuilddir64=${debdir}/BUILD-MIPS-64
 # docdir=${maindir}/usr/share/doc/${package}
@@ -62,8 +63,10 @@ UUID_UDEB_PRIORITY = $(shell grep '^Package: libuuid1-udeb' debian/control -A 10
 STAMPSDIR=debian/stampdir
 CFGSTDSTAMP=${STAMPSDIR}/configure-std-stamp
 CFGBFSTAMP=${STAMPSDIR}/configure-bf-stamp
+CFGSTATICSTAMP=${STAMPSDIR}/configure-static-stamp
 BUILDSTDSTAMP=${STAMPSDIR}/build-std-stamp
 BUILDBFSTAMP=${STAMPSDIR}/build-bf-stamp
+BUILDSTATICSTAMP=${STAMPSDIR}/build-static-stamp
 
 CCOPTS = -g
 
@@ -85,6 +88,10 @@ endif
 
 ifeq (${DEB_HOST_ARCH_OS},linux)
 DEVMAPPER = --enable-blkid-devmapper
+BUILD_STATIC = build-static
+E2FSCK_STATIC = ${staticbuilddir}/e2fsck/e2fsck.static
+else
+E2FSCK_STATIC = ${stdbuilddir}/e2fsck/e2fsck.static
 endif
 
 BF_CCOPTS = -Os -fomit-frame-pointer
@@ -101,6 +108,12 @@ BF_CONF_FLAGS = --with-ccopts="${CCOPTS} ${BF_CCOPTS}" \
        --disable-uuidd --disable-tls \
        --disable-debugfs  --disable-e2initrd-helper
 
+STATIC_CONF_FLAGS = --with-ccopts="${CCOPTS}" \
+       --disable-nls --disable-imager \
+       --disable-uuidd --disable-tls \
+       --disable-e2initrd-helper \
+       --with-diet-libc --with-ccopts=-fno-stack-protector
+
 MIPS_NOPIC_CONF_FLAGS = --with-ccopts="${CCOPTS}" \
        --disable-nls \
        --disable-swapfs --disable-imager \
@@ -161,7 +174,23 @@ endif
        mkdir -p ${STAMPSDIR}
        touch ${CFGBFSTAMP}
 
-build: build-std build-bf
+${CFGSTATICSTAMP}:
+       dh_testdir
+       rm -f config.cache
+
+       mkdir -p ${staticbuilddir}
+ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
+       cd ${staticbuilddir} && AWK=/usr/bin/awk \
+               ${topdir}/configure ${STATIC_CONF_FLAGS}
+else
+       cd ${staticbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
+               ${topdir}/configure ${COMMON_CONF_FLAGS} ${STATIC_CONF_FLAGS} \
+               --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
+endif
+       mkdir -p ${STAMPSDIR}
+       touch ${CFGSTATICSTAMP}
+
+build: build-std build-bf $(BUILD_STATIC)
 
 build-std: ${BUILDSTDSTAMP}
 ${BUILDSTDSTAMP}: ${CFGSTDSTAMP}
@@ -195,12 +224,20 @@ ${BUILDBFSTAMP}: ${CFGBFSTAMP}
        make -C ${bfbuilddir}/misc all
        touch ${BUILDBFSTAMP}
 
+build-static: ${BUILDSTATICSTAMP}
+${BUILDSTATICSTAMP}: ${CFGSTATICSTAMP}
+       dh_testdir
+       make -C ${staticbuilddir} libs
+       make -C ${staticbuilddir}/e2fsck all
+       touch ${BUILDSTATICSTAMP}
+
 clean:
        dh_testdir
        rm -rf ${STAMPSDIR}
        [ ! -f ${stdbuilddir}/Makefile ] || make -C ${stdbuilddir} distclean
        [ ! -f ${bfbuilddir}/Makefile ] || make -C ${bfbuilddir} distclean
-       rm -rf ${stdbuilddir} ${bfbuilddir} ${mipsbuilddir} ${mipsbuilddir64}
+       [ ! -f ${staticbuilddir}/Makefile ] || make -C ${staticbuilddir} distclean
+       rm -rf ${stdbuilddir} ${bfbuilddir} ${staticbuilddir} ${mipsbuilddir} ${mipsbuilddir64}
        rm -f doc/libext2fs/*.html lib/et/com_err/*.html debian/*.substvars
        dh_clean
 
@@ -227,7 +264,7 @@ install-std: build
        make -C ${stdbuilddir} install-libs DESTDIR=${tmpdir} LDCONFIG=true
 
   # statically-linked fsck
-       ${INSTALL_PROGRAM} ${stdbuilddir}/e2fsck/e2fsck.static ${tmpdir}/sbin
+       ${INSTALL_PROGRAM} $(E2FSCK_STATIC) ${tmpdir}/sbin
        cp ${mandir}/man8/e2fsck.8 ${mandir}/man8/e2fsck.static.8
 
        ln -s et/com_err.h ${tmpdir}/usr/include