Merge "Create an element to allow using a dpkg manifest"

This commit is contained in:
Jenkins 2014-07-01 20:39:16 +00:00 committed by Gerrit Code Review
commit 451e571753
2 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,6 @@
# Create package pins for apt systems if packages need to be held back
For APT based systems, you specify package priorities in the apt preferences file.
This element reads the given manifest file, specified in `DIB_DPKG_MANIFEST`, to
set pins to enable pinning of older versions for the given packages.

View File

@ -0,0 +1,49 @@
#!/bin/bash
#
# Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# 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 -eu
set -o pipefail
# exit directly if DIB_DPKG_MANIFEST is not defined properly
if [ -z "$DIB_DPKG_MANIFEST" ]; then
echo "DIB_DPKG_MANIFEST must be set to the location of a manifest file you wish to use"
exit 0
elif [ ! -f "$DIB_DPKG_MANIFEST" -o ! -s "$DIB_DPKG_MANIFEST" ]; then
echo "$DIB_DPKG_MANIFEST is not a valid manifest file."
echo "You should assign a proper manifest file in DIB_DPKG_MANIFEST"
exit 1
fi
DIB_DPKG_MANIFEST=$(readlink -f $DIB_DPKG_MANIFEST)
# Create the preferences file from the given manifest
outfile=$(mktemp)
for package in $(jq -r ".packages[].package" $DIB_DPKG_MANIFEST); do
version=$(jq -r ".packages[] | select(.package == \"${package}\") |\
.version" $DIB_DPKG_MANIFEST)
cat << EOF >> $outfile
Package: ${package}
Pin: version ${version}
Pin-Priority: 1001
EOF
done
if [ -s $outfile ]; then
sudo mv $outfile $TMP_MOUNT_PATH/etc/apt/preferences
else
rm $outfile
fi