[trusty/azure,1/3] UBUNTU: Packaging: Introduce copy-files and local-mangle
diff mbox series

Message ID 20190221165451.4232-2-cascardo@canonical.com
State New
Headers show
Series
  • Split copy-files from update-from-*master
Related show

Commit Message

Thadeu Lima de Souza Cascardo Feb. 21, 2019, 4:54 p.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1786013

Two new scripts are introduced in order to do some of the copying and mangling
of copies that update-from-*master does.

One of the changes on copy-files compared to update-from-*master is that the -c
option is given to rsync, so it compares checksums of files in order to decide
whether they are different and need an update. That's necessary because
sometimes files will have the same size and their modified time will be whithin
one second or the original file will be older because git checked it out
earlier.

The script is split in two so the copy-files may be shared between different
kernel tress and the very specific changes are done on the local-mangle file,
which is different between trees.

Also, in order to make the copy-files the same one for all trees, some of the
copies and updates are dependent on a local.conf file, which is present only on
those trees where it's needed. The contents of those files are not so easily
generated, so they are not part of update.conf.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
---
 .../scripts/helpers/copy-files                | 67 +++++++++++++++++++
 .../scripts/helpers/local-mangle              | 13 ++++
 2 files changed, 80 insertions(+)
 create mode 100755 debian.azure-trusty/scripts/helpers/copy-files
 create mode 100755 debian.azure-trusty/scripts/helpers/local-mangle

Patch
diff mbox series

diff --git a/debian.azure-trusty/scripts/helpers/copy-files b/debian.azure-trusty/scripts/helpers/copy-files
new file mode 100755
index 000000000000..0ce0afe84578
--- /dev/null
+++ b/debian.azure-trusty/scripts/helpers/copy-files
@@ -0,0 +1,67 @@ 
+#!/bin/bash -eu
+
+if [ -f debian/debian.env ]; then
+	# shellcheck disable=SC1091
+	. debian/debian.env
+fi
+
+if [ ! -d "${DEBIAN}" ]; then
+	echo You must run this script from the top directory of this repository.
+	exit 1
+fi
+
+CONF="${DEBIAN}"/etc/update.conf
+if [ -f "${CONF}" ]; then
+	# shellcheck disable=SC1090
+	. "${CONF}"
+fi
+
+FOREIGN_ARCHES=""
+LOCAL_CONF="${DEBIAN}/etc/local.conf"
+if [ -f "${LOCAL_CONF}" ]; then
+	# shellcheck disable=SC1090
+	. "${LOCAL_CONF}"
+fi
+
+SKIP_RULES_D=${SKIP_RULES_D:-}
+
+#
+# Pick up any master branch changes to udeb modules or firmware.
+#
+rsync -avc --delete "${DEBIAN_MASTER}/d-i/" "${DEBIAN}/d-i"
+
+#
+# Update configs from master
+#
+rsync -avc --delete "${DEBIAN_MASTER}/config/" "${DEBIAN}/config"
+
+#
+# Update package and DTB settings from master.
+#
+if [ -z "${SKIP_RULES_D}" ] ; then
+	rsync -avc "${DEBIAN_MASTER}/rules.d/"*.mk "${DEBIAN}/rules.d/"
+fi
+
+# Remove the .mk files from the arch's that are not supported
+for i in ${FOREIGN_ARCHES}
+do
+	rm -f "${DEBIAN}/rules.d/${i}.mk"
+	git rm -f --ignore-unmatch "${DEBIAN}/rules.d/${i}.mk" || true
+done
+
+#
+# Update modprobe.d from master
+#
+# Some releases (trusty) don't have this directory, and rsync would fail
+# without this check.
+if [ -d "${DEBIAN}/modprobe.d/" ]; then
+	rsync -avc --delete "${DEBIAN_MASTER}/modprobe.d/" "${DEBIAN}/modprobe.d"
+fi
+
+cp -p "${DEBIAN_MASTER}/control.d/"*.inclusion-list "${DEBIAN}/control.d"
+
+cp -p "${DEBIAN_MASTER}/reconstruct" "${DEBIAN}/reconstruct"
+
+if [ -x "${DEBIAN}/scripts/helpers/local-mangle" ]; then
+	"./${DEBIAN}/scripts/helpers/local-mangle"
+fi
diff --git a/debian.azure-trusty/scripts/helpers/local-mangle b/debian.azure-trusty/scripts/helpers/local-mangle
new file mode 100755
index 000000000000..daa2f1f55d74
--- /dev/null
+++ b/debian.azure-trusty/scripts/helpers/local-mangle
@@ -0,0 +1,13 @@ 
+#!/bin/bash -eu
+
+# shellcheck disable=SC1091
+. debian/debian.env
+
+#
+# Turn off strong stack protection as it requires gcc 4.9+
+#
+sed -i -e 's/^.*CONFIG_CC_STACKPROTECTOR_REGULAR.*$/CONFIG_CC_STACKPROTECTOR_REGULAR=y/' -e 's/^CONFIG_CC_STACKPROTECTOR_STRONG.*$/# CONFIG_CC_STACKPROTECTOR_STRONG is not set/' "${DEBIAN}/config/config.common.ubuntu"
+sed -i 's/CONFIG_CC_STACKPROTECTOR_STRONG/CONFIG_CC_STACKPROTECTOR_REGULAR/' "${DEBIAN}/config/annotations"
+
+# Disable ZFS as we have no tooling in trusty to mount these.
+sed -i -e 's/^\(do_zfs[ \t]*=[ \t]\)true\(.*\)$/\1false\2/' "${DEBIAN}/rules.d/"*.mk