diff --git a/README.md b/README.md index a299a60..f26db83 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ These files are used by Linuxserver build processes to handle mods in our images. Not for end-user consumption. +* **16.05.23:** - Add package installer. * **15.05.23:** - Add DOCKER_MODS_DEBUG env. * **19.03.23:** - Add quay.io support for mods. * **25.02.23:** - Inject branding. diff --git a/package-install.v1 b/package-install.v1 new file mode 100755 index 0000000..7dc1e2c --- /dev/null +++ b/package-install.v1 @@ -0,0 +1,69 @@ +#!/usr/bin/with-contenv bash +# shellcheck shell=bash + +if [[ -f "/mod-pip-packages-to-install.list" ]]; then + IFS=' ' read -ra PIP_PACKAGES <<< "$(tr '\n' ' ' < /mod-pip-packages-to-install.list)" + if [[ ${#PIP_PACKAGES[@]} -ne 0 ]] && [[ ${PIP_PACKAGES[*]} != "" ]]; then + if [[ -f /usr/bin/apt ]]; then + echo "python3-venv" >> /mod-repo-packages-to-install.list + elif [[ -f /sbin/apk ]]; then + echo "python3" >> /mod-repo-packages-to-install.list + elif [[ -f /usr/sbin/pacman ]]; then + echo "python" >> /mod-repo-packages-to-install.list + elif [[ -f /usr/bin/dnf ]]; then + echo "python3" >> /mod-repo-packages-to-install.list + fi + fi +fi + +if [[ -f "/mod-repo-packages-to-install.list" ]]; then + IFS=' ' read -ra REPO_PACKAGES <<< "$(tr '\n' ' ' < /mod-repo-packages-to-install.list)" + if [[ ${#REPO_PACKAGES[@]} -ne 0 ]] && [[ ${REPO_PACKAGES[*]} != "" ]]; then + echo "[mod-init] **** Installing all mod packages ****" + if [[ -f /usr/bin/apt ]]; then + export DEBIAN_FRONTEND="noninteractive" + apt-get update + apt-get install -y --no-install-recommends \ + "${REPO_PACKAGES[@]}" + elif [[ -f /sbin/apk ]]; then + apk add --no-cache \ + "${REPO_PACKAGES[@]}" + elif [[ -f /usr/sbin/pacman ]]; then + pacman -Sy --noconfirm \ + "${REPO_PACKAGES[@]}" + elif [[ -f /usr/bin/dnf ]]; then + dnf install -y --setopt=install_weak_deps=False --best \ + "${REPO_PACKAGES[@]}" + fi + fi +fi + +if [[ -f "/mod-pip-packages-to-install.list" ]]; then + IFS=' ' read -ra PIP_PACKAGES <<< "$(tr '\n' ' ' < /mod-pip-packages-to-install.list)" + if [[ ${#PIP_PACKAGES[@]} -ne 0 ]] && [[ ${PIP_PACKAGES[*]} != "" ]]; then + echo "[mod-init] **** Installing all pip packages ****" + if [[ ! -d /lsiopy/bin ]]; then + echo "**** Creating venv ****" + python3 -m venv /lsiopy + fi + python3 -m pip install -U pip wheel setuptools + PIP_ARGS=() + if [[ -f /usr/bin/apt ]] && grep -q 'ID=ubuntu' /etc/os-release; then + PIP_ARGS+=("-f" "https://wheel-index.linuxserver.io/ubuntu/") + elif [[ -f /sbin/apk ]]; then + ALPINE_VER=$(grep main /etc/apk/repositories | sed 's|.*alpine/v||' | sed 's|/main.*||') + if [[ "${ALPINE_VER}" = "3.14" ]]; then + PIP_ARGS+=("-f" "https://wheel-index.linuxserver.io/alpine/") + else + PIP_ARGS+=("-f" "https://wheel-index.linuxserver.io/alpine-${ALPINE_VER}/") + fi + fi + python3 -m pip install \ + "${PIP_ARGS[@]}" \ + "${PIP_PACKAGES[@]}" + fi +fi + +rm -rf \ + /mod-repo-packages-to-install.list \ + /mod-pip-packages-to-install.list