1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
#!/usr/bin/make -f
include /usr/share/dpkg/pkg-info.mk
package=cpio
CFLAGS = -Wall -g
INSTALL = install
INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644
INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755
INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
STRIP = $(DEB_HOST_GNU_TYPE)-strip
else
CROSS= --build $(DEB_BUILD_GNU_TYPE)
STRIP = strip
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif
obj/Makefile:
$(checkdir)
-test -r /usr/share/misc/config.sub && cp -f /usr/share/misc/config.sub build-aux/config.sub
-test -r /usr/share/misc/config.guess && cp -f /usr/share/misc/config.guess build-aux/config.guess
mkdir -p obj
cd obj && ../configure $(shell dpkg-buildflags --export=configure) --prefix=/usr --enable-mt $(CROSS) \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--bindir=/bin \
--libexecdir=/usr/sbin
touch tests/testsuite tests/package.m4
obj-win32/Makefile:
$(checkdir)
mkdir -p obj-win32
# static to avoid needing the pthreads DLL
cd obj-win32 && CFLAGS='-static $(CFLAGS)' ../configure --host i686-w64-mingw32
build-arch: build
build-indep: build
build: obj/Makefile
$(checkdir)
$(MAKE) -C obj
touch tests/testsuite.at tests/testsuite tests/package.m4
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
$(MAKE) -C obj check
endif
touch build
build-win32: obj-win32/Makefile
$(checkdir)
$(MAKE) -C obj-win32
touch build-win32
clean:
$(checkdir)
$(RM) build
test ! -f Makefile || $(MAKE) distclean
$(RM) config.cache
$(RM) -r obj obj-win32
$(RM) -r *~ debian/tmp debian/tmp-win32 debian/*~ debian/files*
$(RM) -f debian/substvars
$(RM) -rf autom4te.cache
$(RM) -f build-aux/config.guess build-aux/config.sub
binary-indep: checkroot build build-win32
$(checkdir)
$(RM) -r debian/tmp-win32
$(INSTALL_DIR) debian/tmp-win32 debian/tmp-win32/DEBIAN
$(INSTALL_DIR) debian/tmp-win32/usr/share/doc/$(package)-win32
# Install directories
$(INSTALL_DIR) \
debian/tmp-win32/usr/share/win32
# Install files
install -m 755 obj-win32/src/cpio.exe debian/tmp-win32/usr/share/win32/
i686-w64-mingw32-strip debian/tmp-win32/usr/share/win32/cpio.exe
# Install changelog & copyright
install -m 644 debian/changelog \
debian/tmp-win32/usr/share/doc/$(package)-win32/changelog.Debian
gzip -9nv debian/tmp-win32/usr/share/doc/$(package)-win32/*
install -m 644 debian/copyright debian/tmp-win32/usr/share/doc/$(package)-win32/.
# Generate md5sums
cd debian/tmp-win32 && find * -type f ! -regex '^DEBIAN/.*' -print0 | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums
# Generate deb file
dpkg-gencontrol -pcpio-win32 -Pdebian/tmp-win32
chown -R root.root debian/tmp-win32
chmod -R g-ws debian/tmp-win32
find debian/tmp-win32 -depth -newermt '$(BUILD_DATE)' -print0 | \
xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
dpkg-deb --build debian/tmp-win32 ..
binary-arch: checkroot build
$(checkdir)
$(RM) -r debian/tmp
$(INSTALL_DIR) debian/tmp debian/tmp/DEBIAN
$(INSTALL_DIR) debian/tmp/usr/share/doc/$(package)
# Install Debian package control information files
$(INSTALL_SCRIPT) debian/postinst \
debian/prerm debian/tmp/DEBIAN/.
# Install directories
$(INSTALL_DIR) \
debian/tmp/bin \
debian/tmp/usr/share/man/man1 \
debian/tmp/usr/share/info
# Install files
$(MAKE) -C obj install DESTDIR=$(CURDIR)/debian/tmp
rm -rf debian/tmp/usr/libexec
rm -rf debian/tmp/usr/share/man/man8/rmt.8
mv debian/tmp/bin/mt debian/tmp/bin/mt-gnu
mv debian/tmp/usr/share/man/man1/mt.1 \
debian/tmp/usr/share/man/man1/mt-gnu.1
# Strip binaries (including hack by policy wonks)
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
$(STRIP) -R.note -R.comment debian/tmp/bin/*
endif
rm -rf debian/tmp/usr/sbin
# Install documentation
install -m 644 ChangeLog debian/tmp/usr/share/doc/$(package)/changelog
install -m 644 NEWS README debian/tmp/usr/share/doc/$(package)/.
# Install changelog & copyright
install -m 644 debian/changelog \
debian/tmp/usr/share/doc/$(package)/changelog.Debian
gzip -9nv debian/tmp/usr/share/doc/$(package)/*
gzip -9nv debian/tmp/usr/share/man/*/*
find debian/tmp/usr/share/man/ -type d -empty -delete
rm -rf debian/tmp/usr/share/info
install -m 644 debian/copyright debian/tmp/usr/share/doc/$(package)/.
# Determine shared library dependencies
dpkg-shlibdeps debian/tmp/bin/cpio debian/tmp/bin/mt-gnu
# Generate md5sums
cd debian/tmp && find * -type f ! -regex '^DEBIAN/.*' -print0 | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums
# Generate deb file
dpkg-gencontrol -pcpio -Pdebian/tmp
chown -R root.root debian/tmp
chmod -R g-ws debian/tmp
find debian/tmp -depth -newermt '@$(SOURCE_DATE_EPOCH)' -print0 | \
xargs -0r touch --no-dereference --date='@$(SOURCE_DATE_EPOCH)'
dpkg-deb --build debian/tmp ..
define checkdir
test -f src/$(package).h && test -f debian/rules
endef
# Below here is fairly generic really
binary: binary-indep binary-arch
source diff:
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
checkroot:
$(checkdir)
test root = "`whoami`"
.PHONY: binary binary-arch binary-indep clean checkroot
|