Index: list_installed_packages.sh |
diff --git a/list_installed_packages.sh b/list_installed_packages.sh |
deleted file mode 100755 |
index 96de458e97bf30fb46dca0cc029cbec9ef294052..0000000000000000000000000000000000000000 |
--- a/list_installed_packages.sh |
+++ /dev/null |
@@ -1,144 +0,0 @@ |
-#!/bin/bash |
- |
-# Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-# Print a list of installed packages |
-# |
-# This list is used by make_local_repo.sh to construct a local repository |
-# with only those packages. |
-# |
-# Usage: |
-# list_installed_packages.sh > package_list.txt |
- |
-# Die on error |
-set -e |
- |
-USAGE='usage: '"$0"' [options] |
- |
-options: |
- -v Print verbose output. |
- -? Print this help. |
-' |
- |
-# Handle command line options. |
-# Note: Can't use shflags, since this must run inside the rootfs image. |
-VERBOSE=0 |
-# Option processing using getopts |
-while getopts "v?" OPTVAR |
-do |
- case $OPTVAR in |
- "v") |
- VERBOSE=1 |
- ;; |
- "?") |
- echo "$USAGE"; |
- exit 1 |
- ;; |
- esac |
-done |
-shift `expr $OPTIND - 1` |
- |
-# Print information on a single package |
-function print_deb { |
- # Positional parameters from calling script. :? means "fail if unset". |
- DEB_NAME=${1:?} |
- |
- # Get the installed version of the package. |
- DEB_VER=`dpkg-query --show -f='${Version}' $DEB_NAME` |
- |
- # Get information on package from apt-cache. Use a temporary file since |
- # we need to extract multiple fields. |
- rm -f /tmp/print_deb |
- apt-cache show $DEB_NAME > /tmp/print_deb |
- # The apt cache may have more than one version of the package available. |
- # For example, if the user has added another repository to |
- # /etc/apt/sources.list to install/upgrade packages. Use bash arrays to |
- # hold all the results until we can find information on the version we want. |
- # TODO: Is there a way to do this using only awk, so we can use /bin/sh |
- # instead of /bin/bash? |
- ALL_VER=( `grep '^Version: ' < /tmp/print_deb | awk '{print $2}'` ) |
- ALL_PRIO=( `grep '^Priority: ' < /tmp/print_deb | awk '{print $2}'` ) |
- ALL_SECTION=( `grep '^Section: ' < /tmp/print_deb | awk '{print $2}'` ) |
- ALL_FILENAME=( `grep '^Filename: ' < /tmp/print_deb | awk '{print $2}'` ) |
- rm -f /tmp/print_deb |
- |
- # Find only the package version the user has installed. |
- NUM_VER=${#ALL_VER[@]} |
- FOUND_MATCH=0 |
- for ((I=0; I<$NUM_VER; I++)); |
- do |
- if [ "${ALL_VER[$I]}" = "$DEB_VER" ] |
- then |
- FOUND_MATCH=1 |
- DEB_PRIO="${ALL_PRIO[$I]}" |
- DEB_SECTION="${ALL_SECTION[$I]}" |
- DEB_FILENAME="${ALL_FILENAME[$I]}" |
- fi |
- done |
- |
- # Determine if the package filename appears to be from a locally-built |
- # repository (as created in build_image.sh). Use ! to ignore non-zero |
- # exit code, since grep exits 1 if no match. |
- ! DEB_FILENAME_IS_LOCAL=`echo $DEB_FILENAME | grep 'local_packages'` |
- |
- if [ $FOUND_MATCH -eq 0 ] |
- then |
- # Can't find information on package in apt cache |
- if [ $VERBOSE -eq 1 ] |
- then |
- echo "Unable to locate package $DEB_NAME version $DEB_VER" 1>&2 |
- echo "in apt cache. It may have been installed directly, or the" 1>&2 |
- echo "cache has been updated since installation and no longer" 1>&2 |
- echo "contains information on that version. Omitting it in the" 1>&2 |
- echo "list, since we can't determine where it came from." 1>&2 |
- fi |
- echo "# Skipped $DEB_NAME $DEB_VER: not in apt cache" |
- elif [ "x$DEB_FILENAME" = "x" ] |
- then |
- # No filename, so package was installed via dpkg -i. |
- if [ $VERBOSE -eq 1 ] |
- then |
- echo "Package $DEB_NAME appears to have been installed directly" 1>&2 |
- echo "(perhaps using 'dpkg -i'). Omitting it in the list, since we" 1>&2 |
- echo "can't determine where it came from." 1>&2 |
- fi |
- echo "# Skipped $DEB_NAME $DEB_VER: installed directly" |
- elif [ "x$DEB_FILENAME_IS_LOCAL" != "x" ] |
- then |
- # Package was installed from a local_packages directory. |
- # For example, chromeos-wm |
- if [ $VERBOSE -eq 1 ] |
- then |
- echo "Package $DEB_NAME appears to have been installed from a local" 1>&2 |
- echo "package repository. Omitting it in the list, since future" 1>&2 |
- echo "installs will also need to be local." 1>&2 |
- fi |
- echo "# Skipped $DEB_NAME $DEB_VER $DEB_FILENAME: local install" |
- else |
- # Package from external repository. |
- # Don't change the order of these fields; make_local_repo.sh depends |
- # upon this order. |
- echo "$DEB_NAME $DEB_VER $DEB_PRIO $DEB_SECTION $DEB_FILENAME" |
- fi |
-} |
- |
-# Header |
-echo "# Copyright (c) 2009 The Chromium Authors. All rights reserved." |
-echo "# Use of this source code is governed by a BSD-style license that can be" |
-echo "# found in the LICENSE file." |
-echo |
-echo "# Package list created by list_installed_packages.sh" |
-echo "# Creation time: `date`" |
-echo "#" |
-echo "# Contents of /etc/apt/sources.list:" |
-cat /etc/apt/sources.list | sed 's/^/# /' |
-echo "#" |
-echo "# package_name version priority section repo_filename" |
- |
-# List all installed packages |
-for DEB in `dpkg-query --show -f='${Package}\n'` |
-do |
- print_deb $DEB |
-done |