summaryrefslogtreecommitdiffstats
path: root/debian
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2018-05-31 10:56:31 +0200
committerMichael Olbrich <m.olbrich@pengutronix.de>2018-12-06 15:22:35 +0100
commit4d2b5936e0783e8c57007348919535fdba90595c (patch)
treeb7b74fa17df3dba8aeac4c98813fc40cb0914aaa /debian
parent51f117eb24235ec98d4ddf7534bb9a9949ac70d5 (diff)
downloadOSELAS.Toolchain-4d2b5936e0783e8c57007348919535fdba90595c.tar.gz
OSELAS.Toolchain-4d2b5936e0783e8c57007348919535fdba90595c.tar.xz
debian: complete overhaul of debian package generation
Make use of modern packaging tools. The most visible benefits are automatic generation of debug packages and meta packages depending on the current toolchain.
Diffstat (limited to 'debian')
-rw-r--r--debian/.gitignore18
-rwxr-xr-xdebian/bin/gencontrol.sh65
-rw-r--r--debian/changelog5
-rw-r--r--debian/compat1
-rw-r--r--debian/patches/dont-strip.patch15
-rw-r--r--debian/patches/series1
-rwxr-xr-xdebian/rules33
-rw-r--r--debian/source/format1
-rw-r--r--debian/source/options0
-rw-r--r--debian/watch3
10 files changed, 142 insertions, 0 deletions
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 0000000..e3505df
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,18 @@
+/control
+/*.log
+/oselas.toolchain-2018.02.0-aarch64-v8a-linux-gnu-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-1136jfs-linux-gnueabi-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-1136jfs-linux-gnueabihf-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-v4t-linux-gnueabi-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-v5te-linux-gnueabi-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-v7a-linux-gnueabi-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-v7a-linux-gnueabihf-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-v7em-eabihf-gcc-7.3.1-newlib-2.5.0-binutils-2.30.install
+/oselas.toolchain-2018.02.0-arm-v7em-uclinuxeabihf-gcc-7.3.1-uclibc-ng-1.0.28-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-arm-v7m-eabi-gcc-7.3.1-newlib-2.5.0-binutils-2.30.install
+/oselas.toolchain-2018.02.0-arm-v7m-uclinuxeabi-gcc-7.3.1-uclibc-ng-1.0.28-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-i586-unknown-linux-gnu-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-i686-atom-linux-gnu-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-mipsel-softfloat-linux-gnu-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-powerpc-603e-linux-gnu-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
+/oselas.toolchain-2018.02.0-x86-64-unknown-linux-gnu-gcc-7.3.1-glibc-2.27-binutils-2.30-kernel-4.15-sanitized.install
diff --git a/debian/bin/gencontrol.sh b/debian/bin/gencontrol.sh
new file mode 100755
index 0000000..66c2fe5
--- /dev/null
+++ b/debian/bin/gencontrol.sh
@@ -0,0 +1,65 @@
+#!/bin/sh -e
+
+die() {
+ echo >&2 "$@"
+ return 1
+}
+
+# This script assumes to have CWD = toplevel of OSELAS.Toolchain
+test -f debian/changelog || die "debian/changelog not found"
+test "$(dpkg-vendor --query Vendor)" = "Debian" || die "This script only works on Debian"
+
+toolchain_version=$(dpkg-parsechangelog -SVersion | sed -e 's/-[^-]*$//')
+newcontrol=$(mktemp debian/control.XXXXXXXXX)
+trap 'rm -v -- "$newcontrol"' INT QUIT EXIT
+
+cat > "$newcontrol" << EOF
+Source: oselas.toolchain
+Section: devel
+Priority: optional
+Maintainer: PTXdist Devevelopers <ptxdist@pengutronix.de>
+Homepage: https://www.pengutronix.de/software/toolchain.html
+Bugs: mailto:bugs@pengutronix.de
+Build-Depends: debhelper (>= 9), libncurses-dev, python3-dev, bison, flex
+EOF
+
+find ptxconfigs -maxdepth 2 -name \*.ptxconfig |
+while read configfile; do
+ toolchain_name="$(basename "${configfile}" .ptxconfig | sed s/_/-/g)"
+ pkg="oselas.toolchain-${toolchain_version}-${toolchain_name}"
+ gnutriplet="$(sed -n 's/^PTXCONF_GNU_TARGET="\(.*\)"/\1/p' "$configfile")"
+
+ cat >> "$newcontrol" << EOF
+
+Package: $pkg
+Architecture: any
+Depends: \${shlibs:Depends}, \${misc:Depends}
+Description: OSELAS Toolchain for ${gnutriplet}
+
+Package: oselas.toolchain-${toolchain_version}-${gnutriplet}
+Architecture: all
+Depends: $pkg
+Description: Meta package depending on latest OSELAS Toolchain for ${gnutriplet}
+
+Package: oselas.toolchain-${toolchain_version%.*}-${gnutriplet}
+Architecture: all
+Depends: $pkg
+Description: Meta package depending on latest OSELAS Toolchain for ${gnutriplet}
+EOF
+
+ echo "/opt/OSELAS.Toolchain-2018.02.0/${gnutriplet}" > "debian/${pkg}.install"
+done
+
+if ! cmp -s "$newcontrol" "debian/control"; then
+ mv "$newcontrol" "debian/control"
+ trap '' INT QUIT EXIT
+
+ echo >&2 debian/control was updated successfully.
+ echo >&2 Nevertheless return failure here to eventually abort
+ echo >&2 building because the debian/control must not change
+ echo >&2 during a build.
+
+ exit 1
+else
+ touch "debian/control"
+fi
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..3f47365
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+oselas.toolchain (2018.02.0-0ptx2) unstable; urgency=medium
+
+ * Initial packaging of OSELAS.Toolchain using debhelper
+
+ -- Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Wed, 30 May 2018 11:27:03 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/patches/dont-strip.patch b/debian/patches/dont-strip.patch
new file mode 100644
index 0000000..8d80b30
--- /dev/null
+++ b/debian/patches/dont-strip.patch
@@ -0,0 +1,15 @@
+Description: Don't strip in post/cleanup
+
+Index: OSELAS.Toolchain/rules/post/cleanup.make
+===================================================================
+--- OSELAS.Toolchain.orig/rules/post/cleanup.make
++++ OSELAS.Toolchain/rules/post/cleanup.make
+@@ -14,7 +14,7 @@ $(STATEDIR)/world.cleanup: $(STATEDIR)/w
+ -wholename "$(PTXCONF_SYSROOT_CROSS)/lib/gcc" -prune -o \
+ -type f -name "*.a" -print0 | xargs -0 -r rm
+ # # strip all host binaries
+- find $(TOOLCHAIN_CLEANUP_HOST_DIRS) \
++ : || find $(TOOLCHAIN_CLEANUP_HOST_DIRS) \
+ -wholename "$(PTXCONF_SYSROOT_CROSS)/lib/gcc" -prune -o \
+ -type f \( -executable -o -name "*.so*" \) -print0 \
+ | xargs -0 -n1 --verbose strip --preserve-dates || true
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..2c0f4b4
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+dont-strip.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..6e6d1e3
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+RULETARGETS := binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep
+$(RULETARGETS): %: debian/control
+ dh $@
+
+debian/control: debian/bin/gencontrol.sh $(wildcard ptxconfigs/*.ptxconfig)
+ debian/bin/gencontrol.sh
+
+ptxdistrc:
+ : > $@
+ test ! -d /ptx/src || echo 'PTXCONF_SETUP_SRCDIR="/ptx/src"' >> $@
+
+override_dh_auto_build: ptxdistrc
+ PTXDIST_PTXRC=$(CURDIR)/ptxdistrc make -f build_all_v2.mk ARG="-j -q go" PTXDIST=/opt/bin/ptxdist-2018.02.0 CROSS_GDB_WITHOUT_PYTHON=n
+
+override_dh_auto_install:
+ mkdir -p $(CURDIR)/debian/tmp
+ mv inst/opt debian/tmp/opt
+
+override_dh_auto_clean:
+ dh_auto_clean
+ rm -rf gstate platform-*
+
+# don't strip target stuff
+override_dh_strip:
+ dh_strip -Xsysroot- $(foreach d,$(wildcard debian/tmp/opt/OSELAS.Toolchain-*/*/*/*/lib),-X$(subst debian/tmp,,$(d)))
+
+# don't use target binaries to generate dependencies
+override_dh_shlibdeps:
+ dh_shlibdeps -Xsysroot- $(foreach d,$(wildcard debian/tmp/opt/OSELAS.Toolchain-*/*/*/*/lib),-X$(subst debian/tmp,,$(d)))
+
+.PHONY: $(RULETARGETS)
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/source/options
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..e586ed3
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+
+https://public.pengutronix.de/oselas/toolchain/OSELAS.Toolchain-(.*).tar.bz2