From 49ca2880d99caace4a85a9d07b0b6ac9a01b14a3 Mon Sep 17 00:00:00 2001 From: Dmitry Burmistrov Date: Thu, 30 Oct 2014 18:43:21 +0300 Subject: [PATCH] Implement creating global packages changelog file Implements: blueprint consolidated-packages-changelog Change-Id: Ieaea19ac4cb78b7ac6d9f8347917d3d3c84008ab --- iso/module.mk | 4 ++++ mirror/module.mk | 8 +++++++- report-changelog.sh | 27 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100755 report-changelog.sh diff --git a/iso/module.mk b/iso/module.mk index 89d491a04..caf452efa 100644 --- a/iso/module.mk +++ b/iso/module.mk @@ -56,11 +56,13 @@ $(BUILD_DIR)/iso/isoroot-centos.done: \ else $(BUILD_DIR)/iso/isoroot-centos.done: \ $(BUILD_DIR)/mirror/build.done \ + $(BUILD_DIR)/mirror/make-changelog.done \ $(BUILD_DIR)/packages/build.done \ $(BUILD_DIR)/openstack/build.done \ $(BUILD_DIR)/iso/isoroot-dotfiles.done mkdir -p $(ISOROOT) rsync -rp $(LOCAL_MIRROR_CENTOS_OS_BASEURL)/ $(ISOROOT) + rsync -rp $(LOCAL_MIRROR)/centos-packages.changelog $(ISOROOT) createrepo -g $(ISOROOT)/comps.xml \ -u media://`head -1 $(ISOROOT)/.discinfo` $(ISOROOT) rpm -qi -p $(ISOROOT)/Packages/*.rpm | $(SOURCE_DIR)/iso/pkg-versions.awk > $(ISOROOT)/centos-versions.yaml @@ -88,10 +90,12 @@ $(BUILD_DIR)/iso/isoroot-ubuntu.done: \ else $(BUILD_DIR)/iso/isoroot-ubuntu.done: \ $(BUILD_DIR)/mirror/build.done \ + $(BUILD_DIR)/mirror/make-changelog.done \ $(BUILD_DIR)/packages/build.done \ $(BUILD_DIR)/iso/isoroot-dotfiles.done mkdir -p $(ISOROOT)/ubuntu rsync -rp $(LOCAL_MIRROR_UBUNTU_OS_BASEURL)/ $(ISOROOT)/ubuntu/ + rsync -rp $(LOCAL_MIRROR)/ubuntu-packages.changelog $(ISOROOT) rsync -p $(BUILD_DIR)/packages/deb/debian-boot/initrd.gz $(ISOROOT)/ubuntu/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz cat $(ISOROOT)/ubuntu/dists/$(UBUNTU_RELEASE)/main/binary-amd64/Packages | $(SOURCE_DIR)/iso/pkg-versions.awk > $(ISOROOT)/ubuntu/ubuntu-versions.yaml $(ACTION.TOUCH) diff --git a/mirror/module.mk b/mirror/module.mk index 2ef0e7833..74e395e13 100644 --- a/mirror/module.mk +++ b/mirror/module.mk @@ -1,6 +1,7 @@ -.PHONY: mirror clean clean-mirror +.PHONY: mirror clean clean-mirror make-changelog mirror: $(BUILD_DIR)/mirror/build.done +make-changelog: $(BUILD_DIR)/mirror/make-changelog.done clean: clean-mirror @@ -17,3 +18,8 @@ $(BUILD_DIR)/mirror/build.done: \ $(BUILD_DIR)/mirror/ubuntu/build.done \ $(BUILD_DIR)/mirror/docker/build.done $(ACTION.TOUCH) + +$(BUILD_DIR)/mirror/make-changelog.done: $(BUILD_DIR)/mirror/build.done + sudo bash -c "export LOCAL_MIRROR=$(LOCAL_MIRROR); \ + $(SOURCE_DIR)/report-changelog.sh" + $(ACTION.TOUCH) diff --git a/report-changelog.sh b/report-changelog.sh new file mode 100755 index 000000000..e56c58aed --- /dev/null +++ b/report-changelog.sh @@ -0,0 +1,27 @@ +#!/bin/bash -e +CENTOS_CHANGELOG=${LOCAL_MIRROR}/centos-packages.changelog +UBUNTU_CHANGELOG=${LOCAL_MIRROR}/ubuntu-packages.changelog +[ -f ${CENTOS_CHANGELOG} ] && rm ${CENTOS_CHANGELOG} +for packagename in `find ${LOCAL_MIRROR} -name \*.rpm | sort -u`; do + echo ${packagename##*/} >> ${CENTOS_CHANGELOG} + rpm -qp --changelog ${packagename} 2>/dev/null | sed -e '/^$/,$d' >> ${CENTOS_CHANGELOG} + echo '' >> ${CENTOS_CHANGELOG} +done + +[ -f ${UBUNTU_CHANGELOG} ] && rm ${UBUNTU_CHANGELOG} +for packagename in `find ${LOCAL_MIRROR} -name \*.deb | sort -u`; do + pkgname=${packagename##*/} + DATAFILE=`ar t $packagename | grep ^data` + case ${DATAFILE##*.} in + bz2) ZFLAG='--bzip2' ;; + gz) ZFLAG='-z' ;; + xz) ZFLAG='-J' ;; + *) echo "Unknown data tarball format for package $packagename"; continue ;; + esac + CHANGELOGFILE=`ar p $packagename $DATAFILE | tar $ZFLAG -tvf - | grep '/usr/share/doc/' | grep "/changelog\.Debian\.gz" || :` + CHANGELOGFILE=${CHANGELOGFILE##* } + if [[ ${CHANGELOGFILE:0:2} == './' ]]; then + ar p $packagename $DATAFILE | tar $ZFLAG -xO $CHANGELOGFILE | gzip -cd | sed -n '1,/--/ p' >> ${UBUNTU_CHANGELOG} + echo '' >> ${UBUNTU_CHANGELOG} + fi +done