dacfc23c36
This patch fixes the profile autodetect. If the profile was passed at install time, it would overridden by the environment.d script. This was fixed by accepting the value passed by the user, if one was passed. The enviroment.d file is run outside of chroot, because of this eselect will not be available on non-gentoo systems. We change the behavior to work elsewhere, it was not working on non-gentoo systems and giving bad results on gentoo systems (returing values from the host, not the guest being built). This patch also fixes shm detection by checking if it is mounted already. Change-Id: Ie58d8e19529a731bfbc9eeb4bb246988d1aaa772
132 lines
3.2 KiB
Bash
Executable File
132 lines
3.2 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 {
|
|
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'
|
|
if ! grep -q /dev/shm /proc/mounts; then
|
|
fix_shm
|
|
emerge $@
|
|
unfix_shm
|
|
else
|
|
emerge $@
|
|
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 )
|
|
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
|