Update Gentoo element for element changes
There have been a few changes over the past few months, here we make the following changes. * change from backtrack=99 to complete-graph as a more correct flag * make python version selection more in line with what gentoo supports * set up python before stuff gets pip installed * ensure we have the proper pip so we can install pip packages as root * ensure we have the proper use flags for the disk formatting changes * set DIB_RELEASE like other distros * fix openssh-server element for gentoo Change-Id: I17202de3016616ce34c8cbead7d0fb047a64e96b
This commit is contained in:
parent
ab1ed1e59a
commit
e29f031bec
@ -34,3 +34,13 @@ Notes:
|
|||||||
* You can set the GENTOO_PORTAGE_CLEANUP environment variable to true (or
|
* You can set the GENTOO_PORTAGE_CLEANUP environment variable to true (or
|
||||||
anything other than False) to clean up portage from the system and get the
|
anything other than False) to clean up portage from the system and get the
|
||||||
image size smaller.
|
image size smaller.
|
||||||
|
|
||||||
|
* Gentoo supports many diferent versions of python, in order to select one
|
||||||
|
you may use the `GENTOO_PYTHON_TARGETS` environment variable to select
|
||||||
|
the versions of python you want on your image. The format of this variable
|
||||||
|
is a string as follows `"python2_7 python3_5"`.
|
||||||
|
|
||||||
|
* In addition you can select the primary python version you wish to use (that
|
||||||
|
which will be called by running the `python` command. The
|
||||||
|
`GENTOO_PYTHON_ACTIVE_VERSION` is used to set that mapping. The variable
|
||||||
|
contents can be something like `python3.5`.
|
||||||
|
45
diskimage_builder/elements/gentoo/bin/fix_shm
Executable file
45
diskimage_builder/elements/gentoo/bin/fix_shm
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright 2017 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
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
[[ -e /run/lock/shm_fixed ]] && exit 0 # shm has already been fixed
|
||||||
|
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
|
||||||
|
mkdir -p /run/lock
|
||||||
|
touch /run/lock/shm_fixed
|
@ -32,49 +32,9 @@ function show_options {
|
|||||||
exit 0
|
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 {
|
function install_gentoo_packages {
|
||||||
RUN_ONCE_SHM='1'
|
RUN_ONCE_SHM='1'
|
||||||
if grep -q /dev/shm /proc/mounts; then
|
if mountpoint -q /dev/shm; then
|
||||||
emerge $@
|
emerge $@
|
||||||
elif [[ -k /dev/shm ]]; then
|
elif [[ -k /dev/shm ]]; then
|
||||||
emerge $@
|
emerge $@
|
||||||
@ -98,7 +58,7 @@ while true; do
|
|||||||
if [[ ! -f /usr/portage/profiles ]]; then
|
if [[ ! -f /usr/portage/profiles ]]; then
|
||||||
emerge-webrsync -q
|
emerge-webrsync -q
|
||||||
fi
|
fi
|
||||||
install_gentoo_packages -uDNv --with-bdeps=y --backtrack=99 --jobs=2 @world
|
install_gentoo_packages -uDNv --with-bdeps=y --complete-graph=y --jobs=2 @world
|
||||||
install_gentoo_packages --verbose=n --depclean
|
install_gentoo_packages --verbose=n --depclean
|
||||||
install_gentoo_packages -v --usepkg=n @preserved-rebuild
|
install_gentoo_packages -v --usepkg=n @preserved-rebuild
|
||||||
etc-update --automode -5
|
etc-update --automode -5
|
||||||
|
34
diskimage_builder/elements/gentoo/bin/unfix_shm
Executable file
34
diskimage_builder/elements/gentoo/bin/unfix_shm
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright 2017 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
|
||||||
|
|
||||||
|
|
||||||
|
# unmount tmpfs
|
||||||
|
# care about anything still using it
|
||||||
|
[[ ! -e /run/lock/shm_fixed ]] && exit 0 # shm hasn't been modified
|
||||||
|
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
|
||||||
|
rm /run/lock/shm_fixed
|
@ -1,3 +1,6 @@
|
|||||||
|
export DIB_RELEASE=gentoo
|
||||||
export DISTRO_NAME=gentoo
|
export DISTRO_NAME=gentoo
|
||||||
export GENTOO_PROFILE=${GENTOO_PROFILE:-'default/linux/amd64/13.0'}
|
export GENTOO_PROFILE=${GENTOO_PROFILE:-'default/linux/amd64/13.0'}
|
||||||
export GENTOO_PORTAGE_CLEANUP=${GENTOO_PORTAGE_CLEANUP:-'False'}
|
export GENTOO_PORTAGE_CLEANUP=${GENTOO_PORTAGE_CLEANUP:-'False'}
|
||||||
|
export GENTOO_PYTHON_TARGETS=${GENTOO_PYTHON_TARGETS:-'python2_7 python3_4'}
|
||||||
|
export GENTOO_PYTHON_ACTIVE_VERSION=${GENTOO_PYTHON_ACTIVE_VERSION:-'python3.4'}
|
||||||
|
@ -6,15 +6,16 @@ fi
|
|||||||
set -eu
|
set -eu
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
# make sure system is in a consistent state
|
if mountpoint -q /dev/shm; then
|
||||||
echo 'PYTHON_TARGETS="python3_4"' >> /etc/portage/make.conf
|
echo "/dev/shm found in /proc/self/mountinfo"
|
||||||
eselect python set python3.4
|
elif [[ -k /dev/shm ]]; then
|
||||||
# allow these uninstalls to fail as they may not be installed
|
echo "/dev/shm exists and is stickied"
|
||||||
set +e
|
else
|
||||||
emerge -C -q dev-lang/python:2.7
|
fix_shm
|
||||||
emerge -C -q dev-vcs/git
|
fi
|
||||||
set -e
|
|
||||||
USE="-build" emerge -q --backtrack=99 --jobs=2 --update --newuse --deep --with-bdeps=y @world
|
# make world consistant
|
||||||
|
USE="-build" emerge -q --complete-graph=y --jobs=2 --update --newuse --deep --with-bdeps=y @world
|
||||||
# rebuild packages that might need it
|
# rebuild packages that might need it
|
||||||
USE="-build" emerge -q --jobs=2 --usepkg=n @preserved-rebuild
|
USE="-build" emerge -q --jobs=2 --usepkg=n @preserved-rebuild
|
||||||
# remove unneeded packages
|
# remove unneeded packages
|
||||||
@ -45,3 +46,5 @@ if [[ -a /usr/sbin/grub2-install ]]; then
|
|||||||
mkdir -p /tmp/grub
|
mkdir -p /tmp/grub
|
||||||
touch /tmp/grub/install
|
touch /tmp/grub/install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
unfix_shm
|
||||||
|
19
diskimage_builder/elements/gentoo/pre-install.d/03-gentoo-flags
Executable file
19
diskimage_builder/elements/gentoo/pre-install.d/03-gentoo-flags
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
mkdir -p /etc/portage/package.use
|
||||||
|
mkdir -p /etc/portage/package.keywords
|
||||||
|
|
||||||
|
# needed in order to install pip packages as root
|
||||||
|
echo 'dev-python/pip vanilla' >> /etc/portage/package.use/pip
|
||||||
|
# needed to create disk images
|
||||||
|
echo 'sys-fs/lvm2 -thin' >> /etc/portage/package.use/grub
|
||||||
|
echo 'sys-boot/grub device-mapper' >> /etc/portage/package.use/grub
|
||||||
|
|
||||||
|
# needed in order to install pip packages as root
|
||||||
|
echo '=dev-python/pip-9.0.1-r2 ~amd64' >> /etc/portage/package.keywords/pip
|
78
diskimage_builder/elements/gentoo/pre-install.d/10-install-desired-python
Executable file
78
diskimage_builder/elements/gentoo/pre-install.d/10-install-desired-python
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ ${DIB_DEBUG_TRACE:-0} -gt 0 ]]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
if mountpoint -q /dev/shm; then
|
||||||
|
echo "/dev/shm found in /proc/self/mountinfo"
|
||||||
|
elif [[ -k /dev/shm ]]; then
|
||||||
|
echo "/dev/shm exists and is stickied"
|
||||||
|
else
|
||||||
|
fix_shm
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f /usr/portage/profiles ]]; then
|
||||||
|
emerge-webrsync -q
|
||||||
|
fi
|
||||||
|
|
||||||
|
# get the directories in order
|
||||||
|
mkdir -p /etc/portage/profile
|
||||||
|
mkdir -p /etc/portage/package.keywords
|
||||||
|
mkdir -p /etc/portage/package.use
|
||||||
|
|
||||||
|
# python-3.6 and python-3.5 are masked and considered unstable for some reason
|
||||||
|
echo "PYTHON_TARGETS=\"${GENTOO_PYTHON_TARGETS}\"" >> /etc/portage/make.conf
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" == *"python3_6"* ]]; then
|
||||||
|
echo -e "-python_targets_python3_6\n-python_single_target_python3_6" >> /etc/portage/profile/use.stable.mask
|
||||||
|
echo 'dev-lang/python:3.6 ~amd64' >> /etc/portage/package.keywords/python
|
||||||
|
echo '~dev-python/setuptools-36.0.1 ~amd64' >> /etc/portage/package.keywords/python
|
||||||
|
echo '~dev-python/pyxattr-0.6.0 ~amd64' >> /etc/portage/package.keywords/python
|
||||||
|
echo '~sys-apps/kmod-24 ~amd64' >> /etc/portage/package.keywords/python
|
||||||
|
[[ ! -e /usr/lib64/libpython3.6m.so ]] && USE="-build" emerge -1q --jobs=2 dev-lang/python:3.6
|
||||||
|
fi
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" == *"python3_5"* ]]; then
|
||||||
|
echo -e "-python_targets_python3_5\n-python_single_target_python3_5" >> /etc/portage/profile/use.stable.mask
|
||||||
|
echo 'dev-lang/python:3.5 ~amd64' >> /etc/portage/package.keywords/python
|
||||||
|
echo '~dev-python/setuptools-36.0.1 ~amd64' >> /etc/portage/package.keywords/python
|
||||||
|
[[ ! -e /usr/lib64/libpython3.5m.so ]] && USE="-build" emerge -1q --jobs=2 dev-lang/python:3.5
|
||||||
|
fi
|
||||||
|
[[ "${GENTOO_PYTHON_TARGETS}" == *"python3_4"* ]] && [[ ! -e /usr/lib64/libpython3.4m.so ]] && USE="-build" emerge -1q --jobs=2 dev-lang/python:3.4
|
||||||
|
[[ "${GENTOO_PYTHON_TARGETS}" == *"python2_7"* ]] && [[ ! -e /usr/lib64/libpython2.7.so ]] && USE="-build" emerge -1q --jobs=2 dev-lang/python:2.7
|
||||||
|
# disable python in git if we have to, it only supports python-2.7
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" != *"python2_7"* ]]; then
|
||||||
|
echo 'dev-vcs/git -python' >> /etc/portage/package.use/git
|
||||||
|
fi
|
||||||
|
# make sure we have the new python for portage bevore we possibly remove python 2.7
|
||||||
|
USE="-build" emerge -q --oneshot --jobs=2 --with-bdeps=y --update --newuse --deep sys-apps/portage dev-python/pyxattr
|
||||||
|
# set the active python version
|
||||||
|
eselect python set ${GENTOO_PYTHON_ACTIVE_VERSION}
|
||||||
|
# allow these uninstalls to fail as they may not be installed to begin with
|
||||||
|
set +e
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" != *"python2_7"* ]]; then
|
||||||
|
emerge -C -q dev-lang/python:2.7
|
||||||
|
fi
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" != *"python3_4"* ]]; then
|
||||||
|
emerge -C -q dev-lang/python:3.4
|
||||||
|
fi
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" != *"python3_5"* ]]; then
|
||||||
|
emerge -C -q dev-lang/python:3.5
|
||||||
|
fi
|
||||||
|
if [[ "${GENTOO_PYTHON_TARGETS}" != *"python3_6"* ]]; then
|
||||||
|
emerge -C -q dev-lang/python:3.6
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# make world consistant
|
||||||
|
USE="-build" emerge -q --complete-graph=y --jobs=2 --update --newuse --deep --with-bdeps=y @world
|
||||||
|
# rebuild packages that might need it
|
||||||
|
USE="-build" emerge -q --jobs=2 --usepkg=n @preserved-rebuild
|
||||||
|
# remove unneeded packages
|
||||||
|
USE="-build" emerge --verbose=n --depclean
|
||||||
|
# rebuild packages that might have somehow depended on the unneeded packages
|
||||||
|
USE="-build" emerge -q --jobs=2 --usepkg=n @preserved-rebuild
|
||||||
|
|
||||||
|
|
||||||
|
unfix_shm
|
@ -19,8 +19,7 @@ case "$DIB_INIT_SYSTEM" in
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
openrc)
|
openrc)
|
||||||
# let dib-init-system's postinstall handle enabling init scripts
|
rc-update add sshd default
|
||||||
exit 0
|
|
||||||
;;
|
;;
|
||||||
sysv)
|
sysv)
|
||||||
# ssh is enabled by default, nothing to do
|
# ssh is enabled by default, nothing to do
|
||||||
|
Loading…
Reference in New Issue
Block a user