Message ID | 20190301235634.9551-1-cascardo@canonical.com |
---|---|
State | New |
Headers | show |
Series | [1/2] UBUNTU: Packaging: Introduce copy-files and local-mangle | expand |
On 2019-03-01 20:56:33 , Thadeu Lima de Souza Cascardo wrote: > BugLink: https://bugs.launchpad.net/bugs/1817734 > > 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> > Acked-by: Stefan Bader <stefan.bader@canonical.com> > Acked-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com> > Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com> > --- > .../scripts/helpers/copy-files | 67 +++++++++++++++++++ > 1 file changed, 67 insertions(+) > create mode 100755 debian.azure-bionic/scripts/helpers/copy-files > > diff --git a/debian.azure-bionic/scripts/helpers/copy-files b/debian.azure-bionic/scripts/helpers/copy-files > new file mode 100755 > index 000000000000..0ce0afe84578 > --- /dev/null > +++ b/debian.azure-bionic/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 > -- > 2.20.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/debian.azure-bionic/scripts/helpers/copy-files b/debian.azure-bionic/scripts/helpers/copy-files new file mode 100755 index 000000000000..0ce0afe84578 --- /dev/null +++ b/debian.azure-bionic/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