summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorXenHat2023-06-29 19:38:49 -0400
committerXenHat2023-06-29 19:38:49 -0400
commitb095c53be5a734c8160197f64473e0f951890722 (patch)
tree67c6c5efe5ea75ae28913803555a489b63a2e481 /PKGBUILD
parenta25125c05bc778c8eb4397c04ee21daf50cd4d73 (diff)
downloadaur-b095c53be5a734c8160197f64473e0f951890722.tar.gz
Update to new PKGBUILD, with fixed commit
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD178
1 files changed, 134 insertions, 44 deletions
diff --git a/PKGBUILD b/PKGBUILD
index b642cdbf4893..5c2cb510cab8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,67 +1,157 @@
-#!/bin/bash
# Author: Justin Jagieniak <justin@jagieniak.net>
# Contributor: Rye Mutt
# Maintainers: Xenhat Hex (me@xenh.at), Justin Jagieniak <justin@jagieniak.net>
# shellcheck disable=2034,3030,2154
pkgname=alchemy-viewer
-pkgver=6.5.5_r48681.g12c2a9b7e9
+pkgver=7.0.25.a25125c
+_commit_hash=ab5ba4aa71437bbdd0a00a02df28a14aa5bc240f
pkgrel=1
-pkgdesc="This is the next generation of Alchemy Viewer!"
+pkgdesc="A Second Life client with focus on performance and code correctness."
arch=('x86_64')
-url=https://www.alchemyviewer.org
license=('LGPL')
-depends=(dbus-glib glu gtk3 libgl libidn libjpeg-turbo libpng libxss libxml2 mesa nss openal sdl2 vlc zlib)
-makedepends=('coreutils' 'cmake' 'gcc' 'python-virtualenv' 'python-pip' 'git' 'boost' 'xz' 'ninja' 'sed')
+options=('!buildflags' '!lto' '!strip')
+url="https://www.alchemyviewer.org"
+depends=(glu libgl libiconv libidn libjpeg-turbo libpng libxss libxml2 mesa nss openal sdl2 vlc xdg-desktop-portal zlib)
+makedepends=('gcc' 'python-virtualenv' 'python-pip' 'git' 'xz')
optdepends=(
- 'alsa-lib: ALSA support'
- 'freealut: OpenAL support'
- 'gamemode: Gamemode support'
- 'lib32-libidn11: SLVoice support'
- 'lib32-libsndfile: SLVoice support'
- 'lib32-util-linux: SLVoice support'
- 'lib32-gstreamer0.10: SLVoice support'
- 'libpulse: PulseAudio support'
- 'mesa-libgl: Intel, Radeon, Nouveau support'
- 'nvidia-libgl: NVIDIA support'
- 'nvidia-utils: NVIDIA support')
-replaces=('alchemy-next-viewer')
+ 'alsa-lib: ALSA support'
+ 'freealut: OpenAL support'
+ 'gamemode: Gamemode support'
+ 'lib32-libidn11: SLVoice support'
+ 'lib32-libsndfile: SLVoice support'
+ 'lib32-util-linux: SLVoice support'
+ 'lib32-gstreamer0.10: SLVoice support'
+ 'libpulse: PulseAudio support'
+ 'mesa-libgl: Intel, Radeon, Nouveau support'
+ 'nvidia-libgl: NVIDIA support'
+ 'nvidia-utils: NVIDIA support'
+ 'wine: More up-to-date, less buggy SLVoice support')
+replaces=('alchemy-viewer-git')
provides=('alchemy-viewer')
-options=(!emptydirs !makeflags !strip !lto)
install=alchemy.install
-source=("${pkgname}"::'git+https://git.alchemyviewer.org/alchemy/alchemy-next.git#branch='"${AL_BRANCH_OVERRIDE:-main}"
-'compile.bash')
-b2sums=('SKIP'
- 'b03a84626d849b87fdc012cdee3743d4bc60ffd9cf865f99b7db58fe5fef9fa98e476277ac73f554ffa16a8fdc0b0304b8a93e1d8e62e48b1c79c8b9d18f3f75')
+source=("${pkgname}.tar.gz"::'https://git-cdn.alchemyviewer.org/alchemy/alchemy-next/-/archive/'"${_commit_hash}"'/alchemy-next-'"${_commit_hash}"'.tar.gz')
+noextract=("${pkgname}.tar.gz")
+sha256sums=('SKIP')
+
+_distname="Alchemy-Config-Simple"
+
+_distdir="${_distname}-${pkgver}"
+_srcdir="${pkgname}-${_commit_hash}"
+depends+=(dbus-glib systemd-libs)
+conflicts+=("alchemy-next-viewer-nosystemd-git")
pkgver() {
- cd "${pkgname}" || exit 1
- ( set -o pipefail
- git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
- # At the moment, git tags are sorely underused, fake a semver-friendly one
- printf "%s_r%s.g%s" "$(cat indra/newview/VIEWER_VERSION.txt)" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
- )
+ bsdtar -xf ${pkgname}.tar.gz --strip-components=1
+ (
+ set -o pipefail
+ vwr_version=$(cat indra/newview/VIEWER_VERSION.txt)
+ rev=$(git rev-list --count HEAD)
+ short=$(git rev-parse --short HEAD)
+ printf "%s.%s.%s" "${vwr_version}" "${rev}" "${short}"
+ )
}
prepare() {
- cd "${pkgname}" || exit 1
- git fetch --prune
- git checkout main
- git pull --autostash
- if [ -z "$AL_BRANCH_OVERRIDE" ]; then
- git checkout "${AL_COMMIT_OVERRIDE:-12c2a9b7e90024f2990956ba0d0efff42d2b45bc}"
- else
- git checkout "${AL_COMMIT_OVERRIDE:-HEAD}"
- fi
+ echo "$PWD"
+ # cd "${_srcdir}" || exit 1
+ echo "Creating virtual environment in $PWD"
+ virtualenv ".venv" -p python3
+ # source "${_srcdir}/.venv/bin/activate"
+ source ".venv/bin/activate" || exit 1
+
+ echo "Installing build toolchain..."
+ pip3 install --upgrade certifi --quiet
+ pip3 install --upgrade llbase --quiet
+ pip3 install --no-cache --upgrade autobuild --quiet
+ pip3 install --upgrade cmake ninja
}
build() {
- cd "${pkgname}" || exit 1
- ../../compile.bash "${OPTIONS}"
+ # cd "${pkgname}" || exit 1
+ source ".venv/bin/activate"
+ if command -v schedtool >/dev/null 2>&1; then
+ # Set current shell and all descendents as SCHED_BATCH, see schedtool(8)
+ schedtool -B $$
+ prefix_cmd='schedtool -B -n20 -e '
+ fi
+ build_jobs=$(nproc)
+ if [[ -z "$NO_SMART_JOB_COUNT" ]]; then
+ if [[ ${build_jobs} -gt 1 ]]; then
+ jobs=1
+ # The viewer requires an average of 2GB of memory per core to link
+ # Note: Behaviour change compared to the previous versions:
+ # This script will no longer try to allocate build memory into swap
+ # This is bad practice, and swap should be reserved to evict process
+ # memory from physical ram to make place for the current workset.
+ # This script will now try to check if swap is present and sufficent
+ # for the current used memory to be stored in swap before allocating,
+ # and will fallback to conservative allocation if swap is not available
+ gigperlinkprocess=2
+ mempercorekb=$((gigperlinkprocess * 1048576))
+ requiredmemorykb=$(($(nproc) * mempercorekb))
+ free_output="$(free --kilo --total | tail -n+2 | tr -s ' ')"
+ physical_output=$(grep "Mem:" <<<"$free_output")
+ #total_output=$(grep Total: <<< "$free_output")
+ usedmemorykbphysical=$(cut -d ' ' -f 3 <<<"$physical_output")
+ totalmemorykbphysical=$(cut -d ' ' -f 2 <<<"$physical_output")
+ swap_output=$(grep Swap: <<<"$free_output")
+ # Determine available swap space
+ availableswapkb=0
+ if [[ -n "$swap_output" ]]; then
+ availableswapkb=$(cut -d ' ' -f 4 <<<"$swap_output")
+ fi
+ availablememorykbphysical=$(cut -d ' ' -f 7 <<<"$free_output")
+ echo "Total memory: $totalmemorykbphysical (includes swap)"
+ echo "Available memory: $availablememorykbphysical"
+ echo "Required memory: $requiredmemorykb"
+ echo "Available physical memory on this system: $((availablememorykbphysical / 1024 / 1024)) GB"
+ echo "Estimated required memory to build with all cores: $((requiredmemorykb / 1024 / 1024)) GB"
+ if [[ ${requiredmemorykb} -gt ${availablememorykbphysical} ]]; then
+ echo "Warning: Not enough available physical memory to build with all cores"
+ if [[ ${usedmemorykbphysical} -lt ${availableswapkb} ]]; then
+ # use all physical ram as swap will do its job
+ echo "There is enough free swap to store the currently used memory"
+ jobs=$(((totalmemorykbphysical / 1024 / 1024) / gigperlinkprocess))
+ else
+ # Not enough swap to hold ram contents, calculate manually
+ echo "Allocating build jobs according to available physical memory ("$((availablememorykbphysical / 1024 / 1024))"/"$((requiredmemorykb / 1024 / 1024))"GB)..."
+ # FIXME: Goes one iteration beyond what it should
+ while [[ $((jobs * mempercorekb)) -lt ${availablememorykbphysical} ]]; do
+ jobs=$((jobs + 1))
+ echo -e "${jobs} jobs would consume $(((jobs * mempercorekb) / 1024 / 1024))GB"
+ done
+ # Back off one job count. Not sure why I have to do this but
+ # the loop is doing one extra iteration.
+ jobs=$((jobs - 1))
+ fi
+ build_jobs=${jobs}
+ echo "Computed job count: ${build_jobs}"
+ fi
+ fi
+ fi
+ export AUTOBUILD_CPU_COUNT=$build_jobs
+ AL_CMAKE_CONFIG=(
+ -DLL_TESTS:BOOL=ON
+ -DDISABLE_FATAL_WARNINGS=ON
+ -DUSE_LTO:BOOL=OFF
+ -DVIEWER_CHANNEL="Alchemy Test"
+ )
+ echo "BUILDENV: ${BUILDENV[*]}"
+ if [[ " ${BUILDENV[*]} " =~ ' ccache ' ]] && command -v ccache; then
+ echo "------ Will Use CCACHE ------"
+ CMAKE_CXX_COMPILER_LAUNCHER="$(which ccache)"
+ export CMAKE_CXX_COMPILER_LAUNCHER
+ fi
+ $prefix_cmd autobuild configure -A 64 -c ReleaseOS -- "${AL_CMAKE_CONFIG[@]}"
+ echo "Building with ${AUTOBUILD_CPU_COUNT} jobs (adjusted)"
+ $prefix_cmd autobuild build -A64 -c ReleaseOS --no-configure
}
package() {
- mkdir -p "${pkgdir}/opt"
- mkdir -p "${pkgdir}/usr/local/share/applications"
- sed -i 's;alchemy-viewer\.desktop;'"${pkgname}\.desktop"';' "${pkgname}/build-linux-64/newview/packaged/etc/refresh_desktop_app_entry.sh"
- mv "${pkgname}/build-linux-64/newview/packaged" "${pkgdir}/opt/${pkgname}"
+ mkdir -p "${pkgdir}/opt"
+ mkdir -p "${pkgdir}/usr/local/share/applications"
+ # Patch shortcut to avoid duplicated entries
+ sed -i 's;Name=Alchemy;Name=Alchemy (git build);' "${pkgname}/build-linux-64/newview/packaged/etc/refresh_desktop_app_entry.sh"
+ sed -i 's;alchemy-viewer\.desktop;'"${pkgname}\.desktop"';' "${pkgname}/build-linux-64/newview/packaged/etc/refresh_desktop_app_entry.sh"
+ mv "${pkgname}/build-linux-64/newview/packaged" "${pkgdir}/opt/${pkgname}"
}