#!/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