3f8800832a
-----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJYk8+9AAoJEBty/58O8cX8LdIH+wU/VrEVs0XYohiL6DUgabzs 112U3UUihH5xMc/ca9Tarx+XwEvfMZkwYN2Qr0JoRJjmSt2AL6AezUhGSV+98vaY iQEccaFDFYlyDHm4V2r7N1xwS0B3mx87FPqVQQSUKlc3JsQxCy4o9RtD9aM8Gvqy +gAxMxL3p3O131K0Rvb0U5lC1FLgft9SuljCV8i5nU4/HdoryD6hedz2/ss8a9KG KKEdBKvPBKn73+nb8peQD/VXpej9C31r87q5VEjUsZkJ7gduY/qYLlGGgoBQqAXN WQ/ef1RkQKW5ba2jsjnk7fdOrA0+wYENxorR2WecuZbe2ieXw6fP3lYiD6VeWsM= =IUuh -----END PGP SIGNATURE----- Merge tag '1.27.0' into merge-branch Release 1.27.0 Change-Id: I9f6948636cae6d375d1d8315976504021f5a3bbb
155 lines
4 KiB
Bash
Executable file
155 lines
4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Copyright 2016 Matthew Thode
|
|
#
|
|
# 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.
|
|
|
|
if [[ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]]; then
|
|
set -x
|
|
fi
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
ACTION='install'
|
|
|
|
SCRIPTNAME="$(basename $0)"
|
|
function show_options {
|
|
echo "Usage: ${SCRIPTNAME} [package ...]"
|
|
echo
|
|
echo 'Options:'
|
|
echo ' -u -- update all packages'
|
|
echo ' -e -- erase/remove packages'
|
|
exit 0
|
|
}
|
|
|
|
function fix_shm {
|
|
# make /dev/shm dir if it doesn't exist
|
|
# mount tmpfs and chown it
|
|
# existing programs could be using /dev/shm
|
|
# This means it cannot be moved or backed
|
|
# up as a copy easily. The only remaining
|
|
# option is to move the link if it exists
|
|
# as a link. Existing programs will still
|
|
# hold the file handle of the original
|
|
# location open and new programs can use
|
|
# the fixed /dev/shm.
|
|
if [[ "${RUN_ONCE_SHM}" == '1' ]]; then
|
|
if [[ ! -d /dev/shm ]]; then
|
|
if [[ ! -e /dev/shm ]]; then
|
|
if [[ -L /dev/shm ]]; then
|
|
mv /dev/shm /dev/shm.orig
|
|
fi
|
|
mkdir /dev/shm
|
|
fi
|
|
fi
|
|
mount -t tmpfs none /dev/shm
|
|
chmod 1777 /dev/shm
|
|
RUN_ONCE_SHM='0'
|
|
fi
|
|
}
|
|
|
|
function unfix_shm {
|
|
# unmount tmpfs
|
|
# care about anything still using it
|
|
if [[ "${RUN_ONCE_SHM}" == '0' ]]; then
|
|
umount /dev/shm
|
|
if fuser /dev/shm; then
|
|
rmdir /dev/shm
|
|
fi
|
|
if [[ -e /dev/shm.orig ]]; then
|
|
mv /dev/shm.orig /dev/shm
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function install_gentoo_packages {
|
|
RUN_ONCE_SHM='1'
|
|
if grep -q /dev/shm /proc/mounts; then
|
|
emerge $@
|
|
elif [[ -k /dev/shm ]]; then
|
|
emerge $@
|
|
else
|
|
fix_shm
|
|
emerge $@
|
|
unfix_shm
|
|
fi
|
|
}
|
|
|
|
TEMP="$(getopt -o huem: -n ${SCRIPTNAME} -- ${@})"
|
|
if [[ "${?}" != 0 ]]; then
|
|
echo 'Terminating...' >&2
|
|
exit 1
|
|
fi
|
|
eval set -- "${TEMP}"
|
|
|
|
while true; do
|
|
case "${1}" in
|
|
-u )
|
|
if [[ ! -f /usr/portage/profiles ]]; then
|
|
emerge-webrsync -q
|
|
fi
|
|
install_gentoo_packages -uDNv --with-bdeps=y --jobs=2 @world
|
|
install_gentoo_packages --verbose=n --depclean
|
|
install_gentoo_packages -v --usepkg=n @preserved-rebuild
|
|
etc-update --automode -5
|
|
eselect news read new
|
|
exit 0;
|
|
;;
|
|
-e )
|
|
ACTION='remove'
|
|
shift
|
|
;;
|
|
-m )
|
|
MAP_ELEMENT="${2}"
|
|
shift 2
|
|
;;
|
|
-h )
|
|
show_options
|
|
;;
|
|
-- )
|
|
shift
|
|
break
|
|
;;
|
|
* )
|
|
echo "Error: unsupported option ${1}."
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
PKGS="${@}"
|
|
if [[ -n "${MAP_ELEMENT:-}" ]]; then
|
|
PKGS="$(pkg-map --element ${MAP_ELEMENT} ${@})"
|
|
if [[ "${?}" != 0 ]]; then
|
|
echo "bin/pkg-map error. ${PKGS}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ -z "${PKGS}" ]]; then
|
|
echo "Not running install-packages ${ACTION} with empty packages list"
|
|
else
|
|
if [[ "${ACTION}" == 'install' ]]; then
|
|
if [[ ! -f /usr/portage/profiles ]]; then
|
|
emerge-webrsync -q
|
|
fi
|
|
install_gentoo_packages -q --jobs=2 --changed-use "${PKGS}"
|
|
elif [[ "${ACTION}" == 'remove' ]]; then
|
|
if [[ ! -f /usr/portage/profiles ]]; then
|
|
emerge-webrsync -q
|
|
fi
|
|
install_gentoo_packages -C "${PKGS}"
|
|
else
|
|
echo 'something when really wrong, install action is not install or remove'
|
|
fi
|
|
fi
|