diff --git a/elements/dpkg/cleanup.d/01-copy-dpkg-manifest b/elements/dpkg/cleanup.d/01-copy-dpkg-manifest new file mode 100755 index 000000000..124436a6a --- /dev/null +++ b/elements/dpkg/cleanup.d/01-copy-dpkg-manifest @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Copyright 2014 Hewlett-Packard Development Company, L.P. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +set -eux + +MANIFEST_DIR=/etc/dib-manifests +DPKG_MANIFEST_NAME=dib-manifest-dpkg-$(basename ${IMAGE_NAME}) + +if [ -f $TMP_MOUNT_PATH/${MANIFEST_DIR}/${DPKG_MANIFEST_NAME} ]; then + mkdir -p ${IMAGE_NAME}-manifests + cp --no-preserve=ownership -v $TMP_MOUNT_PATH/${MANIFEST_DIR}/${DPKG_MANIFEST_NAME} \ + ${IMAGE_NAME}-manifests/ +fi diff --git a/elements/dpkg/post-install.d/99-write-dpkg-manifest b/elements/dpkg/post-install.d/99-write-dpkg-manifest new file mode 100755 index 000000000..802657ce5 --- /dev/null +++ b/elements/dpkg/post-install.d/99-write-dpkg-manifest @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Copyright 2014 Hewlett-Packard Development Company, L.P. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +set -eux + +MANIFEST_DIR=/etc/dib-manifests +mkdir -p ${MANIFEST_DIR} +DPKG_MANIFEST_NAME=dib-manifest-dpkg-$(basename ${IMAGE_NAME}) + +# Write the json preamble +echo '{"packages": [' > ${MANIFEST_DIR}/${DPKG_MANIFEST_NAME} + +# Write a json-format output for the packages installed +format='{"package": "${binary:Package}","arch": "${Architecture}","version": "${Version}","status": "${db:Status-Abbrev}"},' +# Use the configurable dpkg --show output as a manifest +dpkg-query --show --showformat="${format}" | tee -a ${MANIFEST_DIR}/${DPKG_MANIFEST_NAME} + +# Finish off the json structure and make it easier for human inspection +sed -i -e 's/,$/\n]}/g' -e 's/\(},\)/ \1\n/g' ${MANIFEST_DIR}/${DPKG_MANIFEST_NAME}