01fce7b70c
This checks the profile, if it has hardened in it's name it needs xattr support unfortunately xattr support cannot yet be relied on everywhere, so it needs to be disabled for hardened profile builds to correctly pax-mark. Change-Id: I7fb855249a9e6c9b6497ab5061b4ea3c014f5081 Closes-Bug: 1537177
128 lines
3.1 KiB
Bash
Executable File
128 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env 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 {
|
|
if [[ "${RUN_ONCE_SHM}" == '1' ]]; then
|
|
if [[ -L /dev/shm.orig ]]; then
|
|
rm /dev/shm.orig
|
|
fi
|
|
if [[ -d /dev/shm.orig ]]; then
|
|
rm -Rf /dev/shm.orig
|
|
fi
|
|
mv /dev/shm /dev/shm.orig
|
|
mkdir /dev/shm
|
|
mount -t tmpfs none /dev/shm
|
|
chmod 1777 /dev/shm
|
|
RUN_ONCE_SHM='0'
|
|
fi
|
|
}
|
|
|
|
function unfix_shm {
|
|
if [[ "${RUN_ONCE_SHM}" == '0' ]]; then
|
|
umount /dev/shm
|
|
rmdir /dev/shm
|
|
mv /dev/shm.orig /dev/shm
|
|
fi
|
|
}
|
|
|
|
function install_gentoo_packages {
|
|
RUN_ONCE_SHM='1'
|
|
fix_shm
|
|
emerge $@
|
|
unfix_shm
|
|
}
|
|
|
|
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 )
|
|
emerge-webrsync -q
|
|
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
|
|
emerge-webrsync -q
|
|
install_gentoo_packages -q --jobs=2 --changed-use "${PKGS}"
|
|
elif [[ "${ACTION}" == 'remove' ]]; then
|
|
emerge-webrsync -q
|
|
install_gentoo_packages -C "${PKGS}"
|
|
else
|
|
echo 'something when really wrong, install action is not install or remove'
|
|
fi
|
|
fi
|