mirror of
https://github.com/wofferl/proxmox-backup-arm64
synced 2025-12-06 00:13:41 +00:00
download arch-independent packages from proxmox
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
packages
|
||||
sources
|
||||
/packages
|
||||
/packages_build
|
||||
/sources
|
||||
|
||||
@@ -3,10 +3,10 @@ Script for building Proxmox Backup Server 2.x for Armbian64 based on Bullseye
|
||||
|
||||
## Install build essentials and dependencies
|
||||
```
|
||||
apt-get -y install \
|
||||
build-essential curl sudo git lintian \
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential curl ca-certificates sudo git lintian \
|
||||
pkg-config libudev-dev libssl-dev libapt-pkg-dev libclang-dev \
|
||||
libnetaddr-ip-perl libpam0g-dev libcurl4-openssl-dev
|
||||
libpam0g-dev
|
||||
```
|
||||
## Install ``rustup``
|
||||
```
|
||||
|
||||
193
build.sh
193
build.sh
@@ -3,6 +3,36 @@
|
||||
# build script for proxmox backup server on arm64
|
||||
# https://github.com/wofferl/proxmox-backup-arm64
|
||||
|
||||
function download_package() {
|
||||
repo=${1}
|
||||
package=${2}
|
||||
if [ -n "${5}" ]; then
|
||||
version_test=("${3}" "${4}")
|
||||
dest=${5}
|
||||
else
|
||||
version_test=('=' "${3}")
|
||||
dest=${4}
|
||||
fi
|
||||
|
||||
url=$(select_package "${repo}" "${package}" "${version_test[@]}")
|
||||
|
||||
if [ -z "${url}" ]; then
|
||||
echo "Error package ${package} in version " "${version_test[@]}" " not found"
|
||||
return
|
||||
fi
|
||||
|
||||
file="${dest}/${url##*/}"
|
||||
if [ -e "${file}" ]; then
|
||||
echo "${package} up-to-date" >&2
|
||||
echo "${file}"
|
||||
return
|
||||
fi
|
||||
|
||||
echo "${package} downloading..." >&2
|
||||
curl -sSfL "${url}" -o "${file}"
|
||||
echo "${file}"
|
||||
}
|
||||
|
||||
function git_clone_or_fetch() {
|
||||
url=${1} # url/name.git
|
||||
name_git=${url##*/} # name.git
|
||||
@@ -28,11 +58,57 @@ function git_clean_and_checkout() {
|
||||
git "${path_args[@]}" checkout "${commit_id}"
|
||||
}
|
||||
|
||||
function load_packages() {
|
||||
url=${1}
|
||||
curl -sSf "${url}" \
|
||||
| gzip -d - \
|
||||
| sed '/./{H;$!d} ; x ; s/^.*Package: \([^\n]*\).*Version: \([^\n]*\).*Filename: \([^\n]*\).*$/\1 \2 \3/p'
|
||||
}
|
||||
|
||||
function select_package() {
|
||||
repo=${1}
|
||||
package_name=${2}
|
||||
version_test=("${3}" "${4}")
|
||||
url_base=http://download.proxmox.com/debian/${repo}
|
||||
if [[ "${repo}" == "pbs" ]]; then
|
||||
packages_target=${PACKAGES_PBS}
|
||||
elif [[ "${repo}" == "devel" ]]; then
|
||||
packages_target=${PACKAGES_DEVEL}
|
||||
else
|
||||
echo "Unknown repo ${repo}" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
version_target=0.0
|
||||
file_target=
|
||||
|
||||
while IFS= read -r line; do
|
||||
name=${line%% *}
|
||||
if [[ "${name}" == "${package_name}" ]]; then
|
||||
version=${line#* }
|
||||
version=${version% *}
|
||||
file=${line##* }
|
||||
if dpkg --compare-versions "${version}" "${version_test[@]}" \
|
||||
&& dpkg --compare-versions "${version}" '>>' "${version_target}"; then
|
||||
version_target=${version}
|
||||
file_target=${file}
|
||||
fi
|
||||
fi
|
||||
done <<<"${packages_target}"
|
||||
|
||||
if [ -z "${file_target}" ]; then
|
||||
return
|
||||
fi
|
||||
url=${url_base}/${file_target}
|
||||
echo "${url}"
|
||||
}
|
||||
|
||||
SUDO="sudo -E"
|
||||
|
||||
SCRIPT=$(realpath "${0}")
|
||||
BASE=$(dirname "${SCRIPT}")
|
||||
PACKAGES="${BASE}/packages"
|
||||
PACKAGES_BUILD="${BASE}/packages_build"
|
||||
PATCHES="${BASE}/patches"
|
||||
SOURCES="${BASE}/sources"
|
||||
|
||||
@@ -42,41 +118,34 @@ if [ ! -d "${PATCHES}" ]; then
|
||||
fi
|
||||
|
||||
[ ! -d "${PACKAGES}" ] && mkdir -p "${PACKAGES}"
|
||||
[ ! -d "${PACKAGES_BUILD}" ] && mkdir -p "${PACKAGES_BUILD}"
|
||||
[ ! -d "${SOURCES}" ] && mkdir -p "${SOURCES}"
|
||||
|
||||
|
||||
PACKAGES_DEVEL=$(load_packages http://download.proxmox.com/debian/devel/dists/bullseye/main/binary-amd64/Packages.gz)
|
||||
PACKAGES_PBS=$(load_packages http://download.proxmox.com/debian/pbs/dists/bullseye/pbs-no-subscription/binary-amd64/Packages.gz)
|
||||
|
||||
|
||||
EXTJS_VER=(">=" "7~")
|
||||
PBS_I18N_VER=(">=" "0")
|
||||
PROXMOX_ACME_VER=(">=" "0")
|
||||
PROXMOX_WIDGETTOOLKIT_VER=(">=" "3.5.2")
|
||||
PVE_ESLINT_VER=(">=" "7.18.0-1")
|
||||
QRCODEJS_VER=(">=" "1.20201119")
|
||||
download_package pbs pbs-i18n "${PBS_I18N_VER[@]}" "${PACKAGES}" >/dev/null
|
||||
download_package pbs libjs-extjs "${EXTJS_VER[@]}" "${PACKAGES}" >/dev/null
|
||||
download_package pbs libjs-qrcodejs "${QRCODEJS_VER[@]}" "${PACKAGES}" >/dev/null
|
||||
download_package pbs libproxmox-acme-plugins "${PROXMOX_ACME_VER[@]}" "${PACKAGES}" >/dev/null
|
||||
download_package pbs proxmox-widget-toolkit "${PROXMOX_WIDGETTOOLKIT_VER[@]}" "${PACKAGES}" >/dev/null
|
||||
packages_install=(
|
||||
"$(download_package devel proxmox-widget-toolkit-dev "${PROXMOX_WIDGETTOOLKIT_VER[@]}" "${PACKAGES_BUILD}")"
|
||||
"$(download_package devel pve-eslint "${PVE_ESLINT_VER[@]}" "${PACKAGES_BUILD}")"
|
||||
)
|
||||
${SUDO} apt install -y "${packages_install[@]}"
|
||||
|
||||
|
||||
cd "${SOURCES}"
|
||||
|
||||
PVE_ESLINT_VER="8.23.1-1"
|
||||
PVE_ESLINT_GIT="857347d600e0ba86451a25e350fbeeef27577b92"
|
||||
if ! dpkg-query -W -f='${Version}' pve-eslint | grep -q ${PVE_ESLINT_VER}; then
|
||||
git_clone_or_fetch https://git.proxmox.com/git/pve-eslint.git
|
||||
cd pve-eslint/
|
||||
git_clean_and_checkout ${PVE_ESLINT_GIT}
|
||||
${SUDO} apt -y build-dep .
|
||||
make deb || exit 0
|
||||
${SUDO} apt -y install ./pve-eslint_${PVE_ESLINT_VER}_all.deb
|
||||
cd ..
|
||||
else
|
||||
echo "pve-eslint up-to-date"
|
||||
fi
|
||||
|
||||
PROXMOX_WIDGETTOOLKIT_VER="3.5.3"
|
||||
PROXMOX_WIDGETTOOLKIT_GIT="0bba4fc63f488d807c2f8410c49a7a051195a3fd"
|
||||
if ! dpkg-query -W -f='${Version}' proxmox-widget-toolkit-dev | grep -q ${PROXMOX_WIDGETTOOLKIT_VER}; then
|
||||
git_clone_or_fetch https://git.proxmox.com/git/proxmox-widget-toolkit.git
|
||||
cd proxmox-widget-toolkit/
|
||||
git_clean_and_checkout ${PROXMOX_WIDGETTOOLKIT_GIT}
|
||||
${SUDO} apt -y build-dep .
|
||||
make deb || exit 0
|
||||
cp -a proxmox-widget-toolkit_${PROXMOX_WIDGETTOOLKIT_VER}_all.deb \
|
||||
proxmox-widget-toolkit-dev_${PROXMOX_WIDGETTOOLKIT_VER}_all.deb \
|
||||
"${PACKAGES}"
|
||||
${SUDO} apt -y install ./proxmox-widget-toolkit-dev_${PROXMOX_WIDGETTOOLKIT_VER}_all.deb
|
||||
cd ..
|
||||
else
|
||||
echo "proxmox-widget-toolkit up-to-date"
|
||||
fi
|
||||
|
||||
PROXMOX_BACKUP_VER="2.3.1-1"
|
||||
PROXMOX_BACKUP_GIT="2abb984b58aca4169fbf9a22ebf302d186f3e062"
|
||||
PATHPATTERNS_GIT="916e41c50e75a718ab7b1b95dc770eed9cd7a403"
|
||||
@@ -120,25 +189,6 @@ else
|
||||
echo "proxmox-backup up-to-date"
|
||||
fi
|
||||
|
||||
PROXMOX_ACME_VER="1.4.2"
|
||||
PROXMOX_ACME_GIT="831d879ba508c40835827852951be1d469208b13" # Version 7.3-1
|
||||
PVE_COMMON_GIT="9d14c9ddcf24a2f20a5ded58d28c3e1657ed3728"
|
||||
if ! dpkg-query -W -f='${Version}' libproxmox-acme-perl | grep -q ${PROXMOX_ACME_VER}; then
|
||||
git_clone_or_fetch https://git.proxmox.com/git/proxmox-acme.git
|
||||
cd proxmox-acme/
|
||||
git_clean_and_checkout ${PROXMOX_ACME_GIT}
|
||||
git_clone_or_fetch https://git.proxmox.com/git/pve-common.git
|
||||
git_clean_and_checkout ${PVE_COMMON_GIT} pve-common
|
||||
(cd pve-common; ${SUDO} apt -y build-dep .)
|
||||
${SUDO} apt -y build-dep .
|
||||
export PERL5LIB=$PWD/pve-common/src
|
||||
make deb || exit 0
|
||||
cp -a libproxmox-acme-plugins_${PROXMOX_ACME_VER}_all.deb "${PACKAGES}"
|
||||
cd ..
|
||||
else
|
||||
echo "libproxmox-acme-perl up-to-date"
|
||||
fi
|
||||
|
||||
PVE_XTERMJS_VER="4.16.0-1"
|
||||
PVE_XTERMJS_GIT="8dcff86a32c3ba8754b84e8aabb01369ef3de407"
|
||||
PROXMOX_XTERMJS_GIT="41862eeb95b70201c47dfd27fca37879e23be3ff"
|
||||
@@ -171,46 +221,3 @@ if [ ! -e "${PACKAGES}/proxmox-mini-journalreader_${PROXMOX_JOURNALREADER_VER}_a
|
||||
else
|
||||
echo "proxmox-mini-journalreader up-to-date"
|
||||
fi
|
||||
|
||||
|
||||
PBS_I18N_VER="2.8-1"
|
||||
PBS_I18N_GIT="b7ff45c1f2265708d619bb9ec4a8b9e7c3e1be98"
|
||||
if [ ! -e "${PACKAGES}/pbs-i18n_${PBS_I18N_VER}_all.deb" ]; then
|
||||
git_clone_or_fetch https://git.proxmox.com/git/proxmox-i18n.git
|
||||
git_clean_and_checkout ${PBS_I18N_GIT} proxmox-i18n
|
||||
cd proxmox-i18n/
|
||||
${SUDO} apt -y build-dep .
|
||||
make deb || exit 0
|
||||
cp -a pbs-i18n_${PBS_I18N_VER}_all.deb "${PACKAGES}"
|
||||
cd ..
|
||||
else
|
||||
echo "pbs-i18n up-to-date"
|
||||
fi
|
||||
|
||||
EXTJS_VER="7.0.0-1"
|
||||
EXTJS_GIT="58b59e2e04ae5cc29a12c10350db15cceb556277"
|
||||
if [ ! -e "${PACKAGES}/libjs-extjs_${EXTJS_VER}_all.deb" ]; then
|
||||
git_clone_or_fetch https://git.proxmox.com/git/extjs.git
|
||||
git_clean_and_checkout ${EXTJS_GIT} extjs
|
||||
cd extjs/
|
||||
${SUDO} apt -y build-dep .
|
||||
make deb || exit 0
|
||||
cp -a libjs-extjs_${EXTJS_VER}_all.deb "${PACKAGES}"
|
||||
cd ..
|
||||
else
|
||||
echo "libjs-extjs up-to-date"
|
||||
fi
|
||||
|
||||
QRCODEJS_VER="1.20201119-pve1"
|
||||
QRCODEJS_GIT="1cc4649f55853d7d890aa444a7a58a8466f10493"
|
||||
if [ ! -e "${PACKAGES}/libjs-qrcodejs_${QRCODEJS_VER}_all.deb" ]; then
|
||||
git_clone_or_fetch https://git.proxmox.com/git/libjs-qrcodejs.git
|
||||
git_clean_and_checkout ${QRCODEJS_GIT} libjs-qrcodejs
|
||||
cd libjs-qrcodejs/
|
||||
${SUDO} apt -y build-dep .
|
||||
make deb || exit 0
|
||||
cp -a libjs-qrcodejs_${QRCODEJS_VER}_all.deb "${PACKAGES}"
|
||||
cd ..
|
||||
else
|
||||
echo "libjs-qrcodejs up-to-date"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user