From 32c3cd258f65b7ab8187878bcece5b45964d4336 Mon Sep 17 00:00:00 2001 From: Helmut Buchsbaum Date: Sat, 7 May 2022 09:02:05 +0200 Subject: [PATCH] debian/docker: Add source package handling for local apt repository Tracked-On: #6688 Signed-off-by: Helmut Buchsbaum --- debian/docker/Dockerfile | 42 +++++++++++++++++++++++--------- debian/docker/create-apt-repo.sh | 6 ++--- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/debian/docker/Dockerfile b/debian/docker/Dockerfile index 0c581d77f..b80017c42 100644 --- a/debian/docker/Dockerfile +++ b/debian/docker/Dockerfile @@ -60,8 +60,10 @@ RUN mkdir -p /opt/apt && cd /opt/apt && \ echo "Origin: ACRN Local Build" > .Release.header && \ echo "Label: acrn-local-build" >> .Release.header && \ apt-ftparchive packages . > Packages && \ - cp .Release.header Release && apt-ftparchive release . >> Release && \ - echo "deb [trusted=yes] file:/opt/apt ./" > /etc/apt/sources.list.d/local-apt.list && \ + apt-ftparchive sources . > Sources && \ + (cat .Release.header && apt-ftparchive release .) > Release && \ + echo "deb [trusted=yes] file:/opt/apt ./" > /etc/apt/sources.list.d/acrn-local.list && \ + echo "deb-src [trusted=yes] file:/opt/apt ./" >> /etc/apt/sources.list.d/acrn-local.list && \ touch /etc/apt/preferences.d/pin-acrn # setup git config for temporary use @@ -100,15 +102,21 @@ RUN NEEDEDVERSION="2.5.0"; \ git checkout -b ${debian_branch} ${debian_tag} && \ mk-build-deps --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' --install debian/control --remove && \ rm -f $(dpkg-parsechangelog -Ssource)-build-deps_$(dpkg-parsechangelog -Sversion)_*.* && \ - DEB_BUILD_OPTIONS="nocheck" gbp buildpackage -b -us -uc && \ + DEB_BUILD_OPTIONS="nocheck" gbp buildpackage -F -us -uc && \ for p in $(grep -E '^Package:' debian/control | awk '{print $2}'); do \ echo "Package: $p" >> /etc/apt/preferences.d/pin-acrn; \ echo "Pin: release l=acrn-local-build" >> /etc/apt/preferences.d/pin-acrn; \ echo "Pin-Priority: 900" >> /etc/apt/preferences.d/pin-acrn; \ echo "" >> /etc/apt/preferences.d/pin-acrn; \ done && \ - cd /usr/src && mv *.deb /opt/apt && \ - cd /opt/apt && apt-ftparchive packages . > Packages && cp .Release.header Release && apt-ftparchive release . >> Release && \ + cd /usr/src && \ + mv *.deb /opt/apt && \ + mv ${srcpkg}_*.dsc /opt/apt && \ + mv ${srcpkg}_*.tar.* /opt/apt && \ + cd /opt/apt && \ + apt-ftparchive packages . > Packages && \ + apt-ftparchive sources . > Sources && \ + (cat .Release.header && apt-ftparchive release .) > Release && \ apt-get update -y; \ fi @@ -144,15 +152,21 @@ RUN NEEDEDVERSION="1.10.0"; \ git checkout -b ${debian_branch} ${debian_tag} && \ mk-build-deps --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' --install debian/control --remove && \ rm -f $(dpkg-parsechangelog -Ssource)-build-deps_$(dpkg-parsechangelog -Sversion)_*.* && \ - DEB_BUILD_OPTIONS="nocheck" gbp buildpackage -b -us -uc && \ + DEB_BUILD_OPTIONS="nocheck" gbp buildpackage -F -us -uc && \ for p in $(grep -E '^Package:' debian/control | awk '{print $2}'); do \ echo "Package: $p" >> /etc/apt/preferences.d/pin-acrn; \ echo "Pin: release l=acrn-local-build" >> /etc/apt/preferences.d/pin-acrn; \ echo "Pin-Priority: 900" >> /etc/apt/preferences.d/pin-acrn; \ echo "" >> /etc/apt/preferences.d/pin-acrn; \ done && \ - cd /usr/src && mv *.deb /opt/apt && \ - cd /opt/apt && apt-ftparchive packages . > Packages && cp .Release.header Release && apt-ftparchive release . >> Release && \ + cd /usr/src && \ + mv *.deb /opt/apt && \ + mv python-${srcpkg}_*.dsc /opt/apt && \ + mv python-${srcpkg}_*.tar.* /opt/apt && \ + cd /opt/apt && \ + apt-ftparchive packages . > Packages && \ + apt-ftparchive sources . > Sources && \ + (cat .Release.header && apt-ftparchive release .) > Release && \ apt-get update -y; \ fi @@ -188,15 +202,21 @@ RUN NEEDEDVERSION="20200925"; \ git checkout -b ${debian_branch} ${debian_tag} && \ mk-build-deps --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' --install debian/control --remove && \ rm -f $(dpkg-parsechangelog -Ssource)-build-deps_$(dpkg-parsechangelog -Sversion)_*.* && \ - DEB_BUILD_OPTIONS="nocheck" gbp buildpackage -b -us -uc && \ + DEB_BUILD_OPTIONS="nocheck" gbp buildpackage -F -us -uc && \ for p in $(grep -E '^Package:' debian/control | awk '{print $2}'); do \ echo "Package: $p" >> /etc/apt/preferences.d/pin-acrn; \ echo "Pin: release l=acrn-local-build" >> /etc/apt/preferences.d/pin-acrn; \ echo "Pin-Priority: 900" >> /etc/apt/preferences.d/pin-acrn; \ echo "" >> /etc/apt/preferences.d/pin-acrn; \ done && \ - cd /usr/src && mv *.deb /opt/apt && \ - cd /opt/apt && apt-ftparchive packages . > Packages && cp .Release.header Release && apt-ftparchive release . >> Release && \ + cd /usr/src && \ + mv *.deb /opt/apt && \ + mv ${srcpkg}_*.dsc /opt/apt && \ + mv ${srcpkg}_*.tar.* /opt/apt && \ + cd /opt/apt && \ + apt-ftparchive packages . > Packages && \ + apt-ftparchive sources . > Sources && \ + (cat .Release.header && apt-ftparchive release .) > Release && \ apt-get update -y; \ fi diff --git a/debian/docker/create-apt-repo.sh b/debian/docker/create-apt-repo.sh index a95a911b5..1ca76507c 100755 --- a/debian/docker/create-apt-repo.sh +++ b/debian/docker/create-apt-repo.sh @@ -24,8 +24,8 @@ fi # copy all Debian packages in local APT repo and create local APT repository export HOME=$(echo ~docker-build) sudo -E -u docker-build /bin/bash -c "\ - cd $1 && if ls -A /opt/apt/*.deb >/dev/null 2>&1; then cp /opt/apt/*.deb .; fi && \ + cd $1 && if ls -A /opt/apt/*.deb >/dev/null 2>&1; then cp -a /opt/apt/. .; fi && \ apt-ftparchive packages . > Packages && \ - cp /opt/apt/.Release.header Release && \ - apt-ftparchive release . >> Release" + apt-ftparchive sources . > Sources 2>/dev/null && \ + (cat /opt/apt/.Release.header && apt-ftparchive release .) > Release"