1
0
Fork 0
mirror of https://github.com/xHyroM/void-packages.git synced 2024-11-23 23:01:05 +01:00
This commit is contained in:
Jozef Steinhübl 2024-07-15 13:03:48 +02:00
parent 9ec2704005
commit 8012596208
No known key found for this signature in database
GPG key ID: E6BC90C91973B08F
21 changed files with 918 additions and 343 deletions

29
.github/workflows/upstream.yml vendored Normal file
View file

@ -0,0 +1,29 @@
name: Sync with upstream
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions: write-all
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: |
git config --global user.name github-actions[bot]
git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Sync with upstream
run: |
./common/hypa/sync.sh
- name: Commit changes
run: |
git add .
git commit -m "build: sync with upstream $(date +'%Y-%m-%d') https://github.com/void-linux/void-packages/commit/$(git log upstream/master --pretty=format:'%h' -n 1)" || true
git push || true

View file

@ -64,7 +64,7 @@ cat > "${XBPS_WRAPPERDIR}/meson/xbps_meson.cross" <<-EOF
strip = '${STRIP}' strip = '${STRIP}'
readelf = '${READELF}' readelf = '${READELF}'
objcopy = '${OBJCOPY}' objcopy = '${OBJCOPY}'
pkgconfig = '${PKG_CONFIG}' pkg-config = '${PKG_CONFIG}'
rust = ['rustc', '--target', '${RUST_TARGET}' ,'--sysroot', '${XBPS_CROSS_BASE}/usr'] rust = ['rustc', '--target', '${RUST_TARGET}' ,'--sysroot', '${XBPS_CROSS_BASE}/usr']
g-ir-scanner = '${XBPS_CROSS_BASE}/usr/bin/g-ir-scanner' g-ir-scanner = '${XBPS_CROSS_BASE}/usr/bin/g-ir-scanner'
g-ir-compiler = '${XBPS_CROSS_BASE}/usr/bin/g-ir-compiler' g-ir-compiler = '${XBPS_CROSS_BASE}/usr/bin/g-ir-compiler'

View file

@ -0,0 +1,97 @@
# This build-helper sets up qmakes cross environment
# in cases the build-style is mixed,
# e.g. when in a gnu-configure style the configure
# script calls qmake or a makefile in a gnu-makefile style,
# respectively.
if [ "$CROSS_BUILD" ]; then
mkdir -p "${XBPS_WRAPPERDIR}/target-spec/linux-g++"
cat > "${XBPS_WRAPPERDIR}/target-spec/linux-g++/qmake.conf" <<_EOF
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental no_qt_rpath
QMAKE_INCREMENTAL_STYLE = sublib
include(/usr/lib/qt6/mkspecs/common/linux.conf)
include(/usr/lib/qt6/mkspecs/common/gcc-base-unix.conf)
include(/usr/lib/qt6/mkspecs/common/g++-unix.conf)
QMAKE_TARGET_CONFIG = ${XBPS_CROSS_BASE}/usr/lib/qt6/mkspecs/qconfig.pri
QMAKE_TARGET_MODULE = ${XBPS_CROSS_BASE}/usr/lib/qt6/mkspecs/qmodule.pri
QMAKEMODULES = ${XBPS_CROSS_BASE}/usr/lib/qt6/mkspecs/modules
QMAKE_CC = ${CC}
QMAKE_CXX = ${CXX}
QMAKE_LINK = ${CXX}
QMAKE_LINK_C = ${CC}
QMAKE_LINK_SHLIB = ${CXX}
QMAKE_AR = ${XBPS_CROSS_TRIPLET}-gcc-ar cqs
QMAKE_OBJCOPY = ${OBJCOPY}
QMAKE_NM = ${NM} -P
QMAKE_STRIP = ${STRIP}
QMAKE_CFLAGS = ${CFLAGS}
QMAKE_CXXFLAGS = ${CXXFLAGS}
QMAKE_LFLAGS = ${LDFLAGS}
load(qt_config)
_EOF
echo "#include \"${XBPS_CROSS_BASE}/usr/lib/qt6/mkspecs/linux-g++/qplatformdefs.h\"" > "${XBPS_WRAPPERDIR}/target-spec/linux-g++/qplatformdefs.h"
cat > "${XBPS_WRAPPERDIR}/qt.conf" <<_EOF
[Paths]
Sysroot=${XBPS_CROSS_BASE}
Prefix=${XBPS_CROSS_BASE}/usr
ArchData=${XBPS_CROSS_BASE}/usr/lib/qt6
Data=${XBPS_CROSS_BASE}/usr/share/qt6
Documentation=${XBPS_CROSS_BASE}/usr/share/doc/qt6
Headers=${XBPS_CROSS_BASE}/usr/include/qt6
Libraries=${XBPS_CROSS_BASE}/usr/lib
LibraryExecutables=/usr/lib/qt6/libexec
Binaries=/usr/lib/qt6/bin
Tests=${XBPS_CROSS_BASE}/usr/tests
Plugins=/usr/lib/qt6/plugins
Imports=${XBPS_CROSS_BASE}/usr/lib/qt6/imports
Qml2Imports=${XBPS_CROSS_BASE}/usr/lib/qt6/qml
Translations=${XBPS_CROSS_BASE}/usr/share/qt6/translations
Settings=${XBPS_CROSS_BASE}/etc/xdg
Examples=${XBPS_CROSS_BASE}/usr/lib/qt6/examples
HostPrefix=/usr
HostData=/usr/lib/qt6
HostBinaries=/usr/lib/qt6/bin
HostLibraries=/usr/lib
HostLibraryExecutables=/usr/lib/qt6/libexec
Spec=linux-g++
TargetSpec=$XBPS_WRAPPERDIR/target-spec/linux-g++
_EOF
# create the qmake-wrapper here because it only
# makes sense together with the qmake build-helper
# and not to interfere with e.g. the qmake build-style
#
# + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS
# + hardening flags will be picked up from environment variables
cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF
#!/bin/sh
exec /usr/lib/qt6/bin/qmake "\$@" -qtconf "${XBPS_WRAPPERDIR}/qt.conf" \\
QMAKE_CFLAGS+="\${CFLAGS}" \\
QMAKE_CXXFLAGS+="\${CXXFLAGS}" \\
QMAKE_LFLAGS+="\${LDFLAGS}"
_EOF
else
cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF
#!/bin/sh
exec /usr/lib/qt6/bin/qmake \
"\$@" \
PREFIX=/usr \
QT_INSTALL_PREFIX=/usr \
LIB=/usr/lib \
QMAKE_CC="$CC" QMAKE_CXX="$CXX" \
QMAKE_LINK="$CXX" QMAKE_LINK_C="$CC" \
QMAKE_CFLAGS+="\${CFLAGS}" \
QMAKE_CXXFLAGS+="\${CXXFLAGS}" \
QMAKE_LFLAGS+="\${LDFLAGS}" \
CONFIG+=no_qt_rpath
_EOF
fi
chmod 755 ${XBPS_WRAPPERDIR}/qmake
cp -p ${XBPS_WRAPPERDIR}/qmake{,-qt6}
cp -p ${XBPS_WRAPPERDIR}/qmake{,6}

View file

@ -56,7 +56,7 @@ do_build() {
fi fi
else else
# Otherwise, build using GOPATH # Otherwise, build using GOPATH
go get -p "$XBPS_MAKEJOBS" -v -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package} go install -p "$XBPS_MAKEJOBS" -v -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
fi fi
} }

View file

@ -4,17 +4,22 @@
do_configure() { do_configure() {
local qmake local qmake
local qmake_args local qmake_args
local qt local qt=${QT:-}
if [ -x "/usr/lib/qt5/bin/qmake" ]; then local builddir="${wrksrc}/${build_wrksrc}"
qmake="/usr/lib/qt5/bin/qmake" cd ${builddir}
if [ "${QT}" ]; then
qt=${QT}
if [ ! -x "/usr/lib/${qt}/bin/qmake" ]; then
msg_error "${QT} is requested, but not found\n"
fi
elif [ -x "/usr/lib/qt5/bin/qmake" ]; then
qt="qt5" qt="qt5"
elif [ -x "/usr/lib/qt6/bin/qmake" ]; then elif [ -x "/usr/lib/qt6/bin/qmake" ]; then
qmake="/usr/lib/qt6/bin/qmake"
qt="qt6" qt="qt6"
fi else
if [ -z "${qmake}" ]; then
msg_error "${pkgver}: Could not find qmake - missing in hostmakedepends?\n" msg_error "${pkgver}: Could not find qmake - missing in hostmakedepends?\n"
fi fi
qmake="/usr/lib/${qt}/bin/qmake"
if [ "$CROSS_BUILD" ]; then if [ "$CROSS_BUILD" ]; then
case $XBPS_TARGET_MACHINE in case $XBPS_TARGET_MACHINE in
i686*) _qt_arch=i386;; i686*) _qt_arch=i386;;
@ -25,8 +30,8 @@ do_configure() {
ppc64*) _qt_arch=power64;; ppc64*) _qt_arch=power64;;
ppc*) _qt_arch=power;; ppc*) _qt_arch=power;;
esac esac
mkdir -p "${wrksrc}/.target-spec/linux-g++" mkdir -p "${builddir}/.target-spec/linux-g++"
cat > "${wrksrc}/.target-spec/linux-g++/qmake.conf" <<_EOF cat > "${builddir}/.target-spec/linux-g++/qmake.conf" <<_EOF
MAKEFILE_GENERATOR = UNIX MAKEFILE_GENERATOR = UNIX
CONFIG += incremental no_qt_rpath CONFIG += incremental no_qt_rpath
QMAKE_INCREMENTAL_STYLE = sublib QMAKE_INCREMENTAL_STYLE = sublib
@ -54,10 +59,10 @@ QMAKE_CXXFLAGS = ${CXXFLAGS}
QMAKE_LFLAGS = ${LDFLAGS} QMAKE_LFLAGS = ${LDFLAGS}
load(qt_config) load(qt_config)
_EOF _EOF
echo "#include \"${XBPS_CROSS_BASE}/usr/lib/${qt}/mkspecs/linux-g++/qplatformdefs.h\"" > "${wrksrc}/.target-spec/linux-g++/qplatformdefs.h" echo "#include \"${XBPS_CROSS_BASE}/usr/lib/${qt}/mkspecs/linux-g++/qplatformdefs.h\"" > "${builddir}/.target-spec/linux-g++/qplatformdefs.h"
mkdir -p "${wrksrc}/.host-spec/linux-g++" mkdir -p "${builddir}/.host-spec/linux-g++"
cat > "${wrksrc}/.host-spec/linux-g++/qmake.conf" <<_EOF cat > "${builddir}/.host-spec/linux-g++/qmake.conf" <<_EOF
MAKEFILE_GENERATOR = UNIX MAKEFILE_GENERATOR = UNIX
CONFIG += incremental no_qt_rpath CONFIG += incremental no_qt_rpath
QMAKE_INCREMENTAL_STYLE = sublib QMAKE_INCREMENTAL_STYLE = sublib
@ -84,8 +89,8 @@ QMAKE_CXXFLAGS = ${CXXFLAGS_host}
QMAKE_LFLAGS = ${LDFLAGS_host} QMAKE_LFLAGS = ${LDFLAGS_host}
load(qt_config) load(qt_config)
_EOF _EOF
echo '#include "/usr/lib/${qt}/mkspecs/linux-g++/qplatformdefs.h"' > "${wrksrc}/.host-spec/linux-g++/qplatformdefs.h" echo '#include "/usr/lib/${qt}/mkspecs/linux-g++/qplatformdefs.h"' > "${builddir}/.host-spec/linux-g++/qplatformdefs.h"
cat > "${wrksrc}/qt.conf" <<_EOF cat > "${builddir}/qt.conf" <<_EOF
[Paths] [Paths]
Sysroot=${XBPS_CROSS_BASE} Sysroot=${XBPS_CROSS_BASE}
Prefix=/usr Prefix=/usr
@ -108,10 +113,10 @@ HostData=/usr/lib/${qt}
HostBinaries=/usr/lib/${qt}/bin HostBinaries=/usr/lib/${qt}/bin
HostLibraries=/usr/lib HostLibraries=/usr/lib
HostLibraryExecutables=/usr/lib/${qt}/libexec HostLibraryExecutables=/usr/lib/${qt}/libexec
Spec=${wrksrc}/.host-spec/linux-g++ Spec=${builddir}/.host-spec/linux-g++
TargetSpec=${wrksrc}/.target-spec/linux-g++ TargetSpec=${builddir}/.target-spec/linux-g++
_EOF _EOF
qmake_args="-qtconf ${wrksrc}/qt.conf PKG_CONFIG_EXECUTABLE=${XBPS_WRAPPERDIR}/${PKG_CONFIG}" qmake_args="-qtconf ${builddir}/qt.conf PKG_CONFIG_EXECUTABLE=${XBPS_WRAPPERDIR}/${PKG_CONFIG}"
${qmake} ${qmake_args} \ ${qmake} ${qmake_args} \
PREFIX=/usr \ PREFIX=/usr \
QT_INSTALL_PREFIX=/usr \ QT_INSTALL_PREFIX=/usr \
@ -134,6 +139,7 @@ _EOF
} }
do_build() { do_build() {
cd "${wrksrc}/${build_wrksrc}"
: ${make_cmd:=make} : ${make_cmd:=make}
${make_cmd} ${makejobs} ${make_build_args} ${make_build_target} \ ${make_cmd} ${makejobs} ${make_build_args} ${make_build_target} \
@ -141,6 +147,7 @@ do_build() {
} }
do_install() { do_install() {
cd "${wrksrc}/${build_wrksrc}"
: ${make_cmd:=make} : ${make_cmd:=make}
: ${make_install_target:=install} : ${make_install_target:=install}

View file

@ -9,12 +9,27 @@ readonly EXTRA_ARGS="$4"
readonly CMD="$5" readonly CMD="$5"
shift 5 shift 5
if ! command -v xbps-uchroot >/dev/null 2>&1; then msg_red() {
# error messages in bold/red
[ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
printf "=> ERROR: %s\\n" "$@" >&2
[ -n "$NOCOLORS" ] || printf >&2 "\033[m"
}
readonly XBPS_UCHROOT_CMD="$(command -v xbps-uchroot 2>/dev/null)"
if [ -z "$XBPS_UCHROOT_CMD" ]; then
msg_red "could not find xbps-uchroot"
exit 1 exit 1
fi fi
if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then if ! [ -x "$XBPS_UCHROOT_CMD" ]; then
echo "$0 MASTERDIR/DISTDIR not set" msg_red "xbps-uchroot is not executable. Are you in the $(stat -c %G "$XBPS_UCHROOT_CMD") group?"
exit 1
fi
if [ -z "$MASTERDIR" ] || [ -z "$DISTDIR" ]; then
msg_red "$0: MASTERDIR/DISTDIR not set"
exit 1 exit 1
fi fi

View file

@ -1,6 +1,8 @@
noextract=/etc/sv* noextract=/etc/sv*
noextract=/usr/share/man* noextract=/usr/share/man*
noextract=/usr/lib/dracut* noextract=/usr/lib/dracut*
noextract=/etc/hosts
noextract=/etc/mtab
noextract=/etc/skel* noextract=/etc/skel*
noextract=/usr/lib/modprobe.d* noextract=/usr/lib/modprobe.d*
noextract=/usr/lib/sysctl.d* noextract=/usr/lib/sysctl.d*

View file

@ -9,11 +9,13 @@ unalias -a
# disable wildcards helper # disable wildcards helper
_noglob_helper() { _noglob_helper() {
set +f set +f
"$@" IFS= "$@"
} }
# Apply _noglob to v* commands # Apply _noglob to v* commands
for cmd in vinstall vcopy vcompletion vmove vmkdir vbin vman vdoc vconf vsconf vlicense vsv; do for cmd in vinstall vcopy vcompletion vmove vmkdir vbin vman vdoc vconf vsconf vlicense vsv; do
# intentionally expanded when defined
# shellcheck disable=SC2139
alias ${cmd}="set -f; _noglob_helper _${cmd}" alias ${cmd}="set -f; _noglob_helper _${cmd}"
done done
@ -24,6 +26,8 @@ _vsv() {
local svdir="${PKGDESTDIR}/etc/sv/${service}" local svdir="${PKGDESTDIR}/etc/sv/${service}"
if [ $# -lt 1 ] || [ $# -gt 2 ]; then if [ $# -lt 1 ] || [ $# -gt 2 ]; then
# pkgver is defined in common/xbps-src/shutils/commmon.sh
# shellcheck disable=SC2154
msg_red "$pkgver: vsv: up to 2 arguments expected: <service> [<log facility>]\n" msg_red "$pkgver: vsv: up to 2 arguments expected: <service> [<log facility>]\n"
return 1 return 1
fi fi
@ -34,26 +38,26 @@ _vsv() {
vmkdir etc/sv vmkdir etc/sv
vcopy "${FILESDIR}/$service" etc/sv vcopy "${FILESDIR}/$service" etc/sv
if [ ! -L $svdir/run ]; then if [ ! -L "$svdir/run" ]; then
grep -Fq 'exec 2>&1' $svdir/run || msg_warn "$pkgver: vsv: service '$service' does not contain 'exec 2>&1' to log stderr\n" grep -Fq 'exec 2>&1' "$svdir/run" || msg_warn "$pkgver: vsv: service '$service' does not contain 'exec 2>&1' to log stderr\n"
chmod 755 $svdir/run chmod 755 "$svdir/run"
fi fi
if [ -e $svdir/finish ] && [ ! -L $svdir/finish ]; then if [ -e "$svdir/finish" ] && [ ! -L "$svdir/finish" ]; then
chmod 755 $svdir/finish chmod 755 "$svdir/finish"
fi fi
ln ${LN_OPTS} /run/runit/supervise.${service} $svdir/supervise ln ${LN_OPTS} "/run/runit/supervise.${service}" "$svdir/supervise"
if [ -d $svdir/log ] || [ -L $svdir/log ]; then if [ -d "$svdir/log" ] || [ -L "$svdir/log" ]; then
msg_warn "$pkgver: vsv: overriding default log service\n" msg_warn "$pkgver: vsv: overriding default log service\n"
else else
mkdir $svdir/log mkdir "$svdir/log"
cat <<-EOF > $svdir/log/run cat <<-EOF > "$svdir/log/run"
#!/bin/sh #!/bin/sh
exec vlogger -t $service -p $facility exec vlogger -t $service -p $facility
EOF EOF
fi fi
ln ${LN_OPTS} /run/runit/supervise.${service}-log $svdir/log/supervise ln ${LN_OPTS} "/run/runit/supervise.${service}-log" "$svdir/log/supervise"
if [ -e $svdir/log/run ] && [ ! -L $svdir/log/run ]; then if [ -e "$svdir/log/run" ] && [ ! -L "$svdir/log/run" ]; then
chmod 755 ${PKGDESTDIR}/etc/sv/${service}/log/run chmod 755 "${PKGDESTDIR}/etc/sv/${service}/log/run"
fi fi
} }
@ -120,6 +124,8 @@ _vdoc() {
return 1 return 1
fi fi
# pkgname is defined in the package
# shellcheck disable=SC2154
vinstall "$file" 644 "usr/share/doc/${pkgname}" "$targetfile" vinstall "$file" 644 "usr/share/doc/${pkgname}" "$targetfile"
} }
@ -175,9 +181,9 @@ _vinstall() {
fi fi
if [ -z "$targetfile" ]; then if [ -z "$targetfile" ]; then
install -Dm${mode} "${file}" "${PKGDESTDIR}/${targetdir}/${file##*/}" install -Dm"${mode}" "${file}" "${PKGDESTDIR}/${targetdir}/${file##*/}"
else else
install -Dm${mode} "${file}" "${PKGDESTDIR}/${targetdir}/${targetfile##*/}" install -Dm"${mode}" "${file}" "${PKGDESTDIR}/${targetdir}/${targetfile##*/}"
fi fi
} }
@ -193,7 +199,9 @@ _vcopy() {
return 1 return 1
fi fi
cp -a $files ${PKGDESTDIR}/${targetdir} # intentionally unquoted for globbing
# shellcheck disable=SC2086
cp -a $files "${PKGDESTDIR}/${targetdir}"
} }
_vmove() { _vmove() {
@ -219,13 +227,17 @@ _vmove() {
done done
if [ -z "${_targetdir}" ]; then if [ -z "${_targetdir}" ]; then
[ ! -d ${PKGDESTDIR} ] && install -d ${PKGDESTDIR} [ ! -d "${PKGDESTDIR}" ] && install -d "${PKGDESTDIR}"
mv ${DESTDIR}/$files ${PKGDESTDIR} # intentionally unquoted for globbing
# shellcheck disable=SC2086
mv "${DESTDIR}"/$files "${PKGDESTDIR}"
else else
if [ ! -d ${PKGDESTDIR}/${_targetdir} ]; then if [ ! -d "${PKGDESTDIR}/${_targetdir}" ]; then
install -d ${PKGDESTDIR}/${_targetdir} install -d "${PKGDESTDIR}/${_targetdir}"
fi fi
mv ${DESTDIR}/$files ${PKGDESTDIR}/${_targetdir} # intentionally unquoted for globbing
# shellcheck disable=SC2086
mv "${DESTDIR}"/$files "${PKGDESTDIR}/${_targetdir}"
fi fi
} }
@ -243,9 +255,9 @@ _vmkdir() {
fi fi
if [ -z "$mode" ]; then if [ -z "$mode" ]; then
install -d ${PKGDESTDIR}/${dir} install -d "${PKGDESTDIR}/${dir}"
else else
install -dm${mode} ${PKGDESTDIR}/${dir} install -dm"${mode}" "${PKGDESTDIR}/${dir}"
fi fi
} }

View file

@ -119,10 +119,16 @@ _EOF
# #
# Handle binfmts trigger # Handle binfmts trigger
# #
if [ -n "${binfmts}" ]; then if [ -n "${binfmts}" ] || [ -d "${PKGDESTDIR}/usr/share/binfmts" ]; then
_add_trigger binfmts _add_trigger binfmts
fi
if [ -n "${binfmts}" ]; then
echo "export binfmts=\"${binfmts}\"" >> $tmpf echo "export binfmts=\"${binfmts}\"" >> $tmpf
fi fi
if [ -d "${PKGDESTDIR}/usr/share/binfmts" ]; then
_import_binfmts="$(find "${PKGDESTDIR}/usr/share/binfmts" -type f -printf '%f\n')"
echo "export import_binfmts=\"${_import_binfmts}\"" >> $tmpf
fi
# #
# Handle GNU Info files. # Handle GNU Info files.
# #
@ -272,7 +278,7 @@ _EOF
fi fi
fi fi
if [ -n "$python_version" ]; then if [ -n "$python_version" ] && [ "$python_version" != ignore ]; then
pycompile_version=${python_version} pycompile_version=${python_version}
fi fi

View file

@ -0,0 +1,60 @@
# vim: set ts=4 sw=4 et ft=bash :
#
# This hook execute the following tasks:
# - warn if packages uses private Qt API but makedepends doesn't have
# qt6-*-private-devel
#
# This hook only really target qt6-base-private-devel, a lot of packages
# linked with Qt6::CorePrivate and Qt6::GuiPrivate, yet don't need its
# headers.
get_qt_private() {
local _elf _fn _lf
find ${PKGDESTDIR} -type f |
while read -r _fn; do
trap - ERR
_lf=${_fn#${PKGDESTDIR}}
if [ "${skiprdeps/${_lf}/}" != "${skiprdeps}" ]; then
continue
fi
read -n4 _elf < "$_fn"
if [ "$_elf" = $'\177ELF' ]; then
$OBJDUMP -p "$_fn" |
sed -n '
/required from /{s/.*required from \(.*\):/\1/;h;}
/Qt_[0-9]*_PRIVATE_API/{g;p;}
'
fi
done |
sort -u
}
hook() {
local _list _shlib _version _md _v _ok
if [ -n "$noverifyrdeps" ]; then
return 0
fi
_list=$(get_qt_private)
for _shlib in $_list; do
msg_normal "${pkgver}: requires PRIVATE_API from $_shlib\n"
done
_version=$(printf '%s\n' $_list | sed 's/^libQt\([0-9]*\).*/\1/' | grep -v '^5$' | uniq)
for _v in $_version; do
_ok=
for _md in ${makedepends}; do
case "${_md}" in
# Anything will works, because they're updated together
qt${_v}-*-private-devel)
_ok=yes
break
;;
esac
done
if [ -z "$_ok" ]; then
msg_warn "${pkgver}: using Qt${_v}_PRIVATE_API but doesn't use qt${_v}-*-private-devel\n"
fi
done
}

View file

@ -239,6 +239,5 @@ hook() {
generic_wrapper3 giblib-config generic_wrapper3 giblib-config
python_wrapper python-config 2.7 python_wrapper python-config 2.7
python_wrapper python3-config 3.12 python_wrapper python3-config 3.12
apr_apu_wrapper apr-1-config
apr_apu_wrapper apu-1-config apr_apu_wrapper apu-1-config
} }

View file

@ -12,6 +12,10 @@ hook() {
pyver="$python_version" pyver="$python_version"
fi fi
if [ "$python_version" = ignore ]; then
return
fi
if [ -n "$pyver" ]; then if [ -n "$pyver" ]; then
default_shebang="#!/usr/bin/python${pyver%.*}" default_shebang="#!/usr/bin/python${pyver%.*}"
fi fi

View file

@ -98,7 +98,12 @@ hook() {
for f in ${verify_deps}; do for f in ${verify_deps}; do
unset _rdep _pkgname _rdepver unset _rdep _pkgname _rdepver
if [ "$(find ${PKGDESTDIR} -name "$f")" ]; then local _findargs="-name"
# if SONAME is a path, find should use -wholename
if [[ "$f" = */* ]]; then
_findargs="-wholename"
fi
if [ "$(find "${PKGDESTDIR}" $_findargs "$f")" ]; then
# Ignore libs by current pkg # Ignore libs by current pkg
echo " SONAME: $f <-> $pkgname (ignored)" echo " SONAME: $f <-> $pkgname (ignored)"
continue continue

34
common/hypa/sync.sh Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/bash
# Check if upstream remote is set
if ! git remote | grep -q upstream; then
git remote add upstream https://github.com/void-linux/void-packages.git
echo "[+] Added upstream remote"
fi
BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "[?] Fetching upstream changes"
git fetch --depth=1 upstream
echo ""
echo "[?] Moving original common/ to tmp/common"
mkdir -p tmp
mv common tmp/common
mv xbps-src tmp/
echo ""
echo "[?] Copying common/ & xbps-src from upstream/master to $BRANCH"
git checkout upstream/master -- common
git checkout upstream/master -- xbps-src
echo ""
echo "[?] Copying tmp/common/hypa to common/hypa"
cp -r tmp/common/hypa common/hypa
echo ""
echo "[?] Removing tmp/ directory"
rm -rf tmp
echo ""
echo "[+] Update completed"

View file

@ -101,6 +101,10 @@ if __name__ == '__main__':
help='Directory used to cache build dependencies (must exist)') help='Directory used to cache build dependencies (must exist)')
parser.add_argument('-d', '--directory', parser.add_argument('-d', '--directory',
default=None, help='Path to void-packages repo') default=None, help='Path to void-packages repo')
parser.add_argument('-Q', dest='check_pkgs', action='store_const',
const='yes', help='Use build dependencies for check -Q')
parser.add_argument('-K', dest='check_pkgs', action='store_const',
const='full', help='Use build dependencies for check -K')
args = parser.parse_args() args = parser.parse_args()
@ -108,6 +112,9 @@ if __name__ == '__main__':
try: args.directory = os.environ['XBPS_DISTDIR'] try: args.directory = os.environ['XBPS_DISTDIR']
except KeyError: args.directory = '.' except KeyError: args.directory = '.'
if args.check_pkgs:
os.environ['XBPS_CHECK_PKGS'] = args.check_pkgs
pool = multiprocessing.Pool(processes = args.jobs) pool = multiprocessing.Pool(processes = args.jobs)
pattern = os.path.join(args.directory, 'srcpkgs', '*') pattern = os.path.join(args.directory, 'srcpkgs', '*')

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,7 @@ if [ "$3" = 1 ]; then
test="-Q" test="-Q"
fi fi
PKGS=$(/hostrepo/xbps-src sort-dependencies $(cat /tmp/templates)) PKGS=$(/hostrepo/xbps-src $test sort-dependencies $(cat /tmp/templates))
for pkg in ${PKGS}; do for pkg in ${PKGS}; do
/hostrepo/xbps-src -j$(nproc) -s -H "$HOME"/hostdir $arch $test pkg "$pkg" /hostrepo/xbps-src -j$(nproc) -s -H "$HOME"/hostdir $arch $test pkg "$pkg"

View file

@ -1,5 +1,6 @@
0BSD 0BSD
389-exception 389-exception
3D-Slicer-1.0
AAL AAL
ADSL ADSL
AFL-1.1 AFL-1.1
@ -11,7 +12,9 @@ AGPL-1.0-only
AGPL-1.0-or-later AGPL-1.0-or-later
AGPL-3.0-only AGPL-3.0-only
AGPL-3.0-or-later AGPL-3.0-or-later
AMD-newlib
AMDPLPA AMDPLPA
AML-glslang
AML AML
AMPAS AMPAS
ANTLR-PD-fallback ANTLR-PD-fallback
@ -27,6 +30,7 @@ ASWF-Digital-Assets-1.1
Abstyles Abstyles
AdaCore-doc AdaCore-doc
Adobe-2006 Adobe-2006
Adobe-Display-PostScript
Adobe-Glyph Adobe-Glyph
Adobe-Utopia Adobe-Utopia
Afmparse Afmparse
@ -41,14 +45,17 @@ Artistic-1.0-cl8
Artistic-1.0 Artistic-1.0
Artistic-2.0 Artistic-2.0
Asterisk-exception Asterisk-exception
Asterisk-linking-protocols-exception
Autoconf-exception-2.0 Autoconf-exception-2.0
Autoconf-exception-3.0 Autoconf-exception-3.0
Autoconf-exception-generic-3.0 Autoconf-exception-generic-3.0
Autoconf-exception-generic Autoconf-exception-generic
Autoconf-exception-macro Autoconf-exception-macro
BSD-1-Clause BSD-1-Clause
BSD-2-Clause-Darwin
BSD-2-Clause-Patent BSD-2-Clause-Patent
BSD-2-Clause-Views BSD-2-Clause-Views
BSD-2-Clause-first-lines
BSD-2-Clause BSD-2-Clause
BSD-3-Clause-Attribution BSD-3-Clause-Attribution
BSD-3-Clause-Clear BSD-3-Clause-Clear
@ -61,6 +68,7 @@ BSD-3-Clause-No-Nuclear-License
BSD-3-Clause-No-Nuclear-Warranty BSD-3-Clause-No-Nuclear-Warranty
BSD-3-Clause-Open-MPI BSD-3-Clause-Open-MPI
BSD-3-Clause-Sun BSD-3-Clause-Sun
BSD-3-Clause-acpica
BSD-3-Clause-flex BSD-3-Clause-flex
BSD-3-Clause BSD-3-Clause
BSD-4-Clause-Shortened BSD-4-Clause-Shortened
@ -73,6 +81,8 @@ BSD-Attribution-HPND-disclaimer
BSD-Inferno-Nettverk BSD-Inferno-Nettverk
BSD-Protection BSD-Protection
BSD-Source-Code BSD-Source-Code
BSD-Source-beginning-file
BSD-Systemics-W3Works
BSD-Systemics BSD-Systemics
BSL-1.0 BSL-1.0
BUSL-1.1 BUSL-1.1
@ -80,6 +90,7 @@ Baekmuk
Bahyph Bahyph
Barr Barr
Beerware Beerware
Bison-exception-1.24
Bison-exception-2.2 Bison-exception-2.2
BitTorrent-1.0 BitTorrent-1.0
BitTorrent-1.1 BitTorrent-1.1
@ -89,6 +100,7 @@ BlueOak-1.0.0
Boehm-GC Boehm-GC
Bootloader-exception Bootloader-exception
Borceux Borceux
Brian-Gladman-2-Clause
Brian-Gladman-3-Clause Brian-Gladman-3-Clause
C-UDA-1.0 C-UDA-1.0
CAL-1.0-Combined-Work-Exception CAL-1.0-Combined-Work-Exception
@ -99,6 +111,7 @@ CC-BY-2.0
CC-BY-2.5-AU CC-BY-2.5-AU
CC-BY-2.5 CC-BY-2.5
CC-BY-3.0-AT CC-BY-3.0-AT
CC-BY-3.0-AU
CC-BY-3.0-DE CC-BY-3.0-DE
CC-BY-3.0-IGO CC-BY-3.0-IGO
CC-BY-3.0-NL CC-BY-3.0-NL
@ -165,6 +178,7 @@ CERN-OHL-S-2.0
CERN-OHL-W-2.0 CERN-OHL-W-2.0
CFITSIO CFITSIO
CLISP-exception-2.0 CLISP-exception-2.0
CMU-Mach-nodoc
CMU-Mach CMU-Mach
CNRI-Jython CNRI-Jython
CNRI-Python-GPL-Compatible CNRI-Python-GPL-Compatible
@ -174,7 +188,9 @@ CPAL-1.0
CPL-1.0 CPL-1.0
CPOL-1.02 CPOL-1.02
CUA-OPL-1.0 CUA-OPL-1.0
Caldera-no-preamble
Caldera Caldera
Catharon
ClArtistic ClArtistic
Classpath-exception-2.0 Classpath-exception-2.0
Clips Clips
@ -186,10 +202,12 @@ Crossword
CrystalStacker CrystalStacker
Cube Cube
D-FSL-1.0 D-FSL-1.0
DEC-3-Clause
DL-DE-BY-2.0 DL-DE-BY-2.0
DL-DE-ZERO-2.0 DL-DE-ZERO-2.0
DOC DOC
DRL-1.0 DRL-1.0
DRL-1.1
DSDP DSDP
DigiRule-FOSS-exception DigiRule-FOSS-exception
Dotseqn Dotseqn
@ -211,6 +229,7 @@ Eurosym
FBM FBM
FDK-AAC FDK-AAC
FLTK-exception FLTK-exception
FSFAP-no-warranty-disclaimer
FSFAP FSFAP
FSFUL FSFUL
FSFULLR FSFULLR
@ -227,6 +246,7 @@ Furuseth
GCC-exception-2.0-note GCC-exception-2.0-note
GCC-exception-2.0 GCC-exception-2.0
GCC-exception-3.1 GCC-exception-3.1
GCR-docs
GD GD
GFDL-1.1-invariants-only GFDL-1.1-invariants-only
GFDL-1.1-invariants-or-later GFDL-1.1-invariants-or-later
@ -249,6 +269,7 @@ GFDL-1.3-or-later
GL2PS GL2PS
GLWTPL GLWTPL
GNAT-exception GNAT-exception
GNOME-examples-exception
GNU-compiler-exception GNU-compiler-exception
GPL-1.0-only GPL-1.0-only
GPL-1.0-or-later GPL-1.0-or-later
@ -265,18 +286,31 @@ GStreamer-exception-2008
Giftware Giftware
Glide Glide
Glulxe Glulxe
Gmsh-exception
Graphics-Gems Graphics-Gems
Gutmann
HP-1986 HP-1986
HP-1989 HP-1989
HPND-DEC HPND-DEC
HPND-Fenneberg-Livingston
HPND-INRIA-IMAG
HPND-Intel
HPND-Kevlin-Henney
HPND-MIT-disclaimer
HPND-Markus-Kuhn HPND-Markus-Kuhn
HPND-Pbmplus HPND-Pbmplus
HPND-UC-export-US
HPND-UC HPND-UC
HPND-doc-sell HPND-doc-sell
HPND-doc HPND-doc
HPND-export-US-acknowledgement
HPND-export-US-modify HPND-export-US-modify
HPND-export-US HPND-export-US
HPND-export2-US
HPND-merchantability-variant
HPND-sell-MIT-disclaimer-xserver
HPND-sell-regexpr HPND-sell-regexpr
HPND-sell-variant-MIT-disclaimer-rev
HPND-sell-variant-MIT-disclaimer HPND-sell-variant-MIT-disclaimer
HPND-sell-variant HPND-sell-variant
HPND HPND
@ -290,6 +324,7 @@ IJG-short
IJG IJG
IPA IPA
IPL-1.0 IPL-1.0
ISC-Veillard
ISC ISC
ImageMagick ImageMagick
Imlib2 Imlib2
@ -320,6 +355,7 @@ LGPLLR
LLGPL LLGPL
LLVM-exception LLVM-exception
LOOP LOOP
LPD-document
LPL-1.0 LPL-1.0
LPL-1.02 LPL-1.02
LPPL-1.0 LPPL-1.0
@ -348,6 +384,7 @@ Lucida-Bitmap-Fonts
MIT-0 MIT-0
MIT-CMU MIT-CMU
MIT-Festival MIT-Festival
MIT-Khronos-old
MIT-Modern-Variant MIT-Modern-Variant
MIT-Wu MIT-Wu
MIT-advertising MIT-advertising
@ -367,6 +404,8 @@ MS-LPL
MS-PL MS-PL
MS-RL MS-RL
MTLL MTLL
Mackerras-3-Clause-acknowledgment
Mackerras-3-Clause
MakeIndex MakeIndex
Martin-Birgmeier Martin-Birgmeier
McPhee-slideshow McPhee-slideshow
@ -380,7 +419,9 @@ Mup
NAIST-2003 NAIST-2003
NASA-1.3 NASA-1.3
NBPL-1.0 NBPL-1.0
NCBI-PD
NCGL-UK-2.0 NCGL-UK-2.0
NCL
NCSA NCSA
NGPL NGPL
NICTA-1.0 NICTA-1.0
@ -405,6 +446,7 @@ Nokia-Qt-exception-1.1
Nokia Nokia
Noweb Noweb
O-UDA-1.0 O-UDA-1.0
OAR
OCCT-PL OCCT-PL
OCCT-exception-1.0 OCCT-exception-1.0
OCLC-2.0 OCLC-2.0
@ -454,15 +496,20 @@ OSL-2.1
OSL-3.0 OSL-3.0
OpenJDK-assembly-exception-1.0 OpenJDK-assembly-exception-1.0
OpenPBS-2.3 OpenPBS-2.3
OpenSSL-standalone
OpenSSL OpenSSL
OpenVision
PADL PADL
PCRE2-exception
PDDL-1.0 PDDL-1.0
PHP-3.0 PHP-3.0
PHP-3.01 PHP-3.01
PPL
PS-or-PDF-font-exception-20170817 PS-or-PDF-font-exception-20170817
PSF-2.0 PSF-2.0
Parity-6.0.0 Parity-6.0.0
Parity-7.0.0 Parity-7.0.0
Pixar
Plexus Plexus
PolyForm-Noncommercial-1.0.0 PolyForm-Noncommercial-1.0.0
PolyForm-Small-Business-1.0.0 PolyForm-Small-Business-1.0.0
@ -480,11 +527,13 @@ RHeCos-1.1
RPL-1.1 RPL-1.1
RPL-1.5 RPL-1.5
RPSL-1.0 RPSL-1.0
RRDtool-FLOSS-exception-2.0
RSA-MD RSA-MD
RSCPL RSCPL
Rdisc Rdisc
Ruby Ruby
SANE-exception SANE-exception
SAX-PD-2.0
SAX-PD SAX-PD
SCEA SCEA
SGI-B-1.0 SGI-B-1.0
@ -505,6 +554,7 @@ SNIA
SPL-1.0 SPL-1.0
SSH-OpenSSH SSH-OpenSSH
SSH-short SSH-short
SSLeay-standalone
SSPL-1.0 SSPL-1.0
SWI-exception SWI-exception
SWL SWL
@ -519,12 +569,15 @@ Spencer-86
Spencer-94 Spencer-94
Spencer-99 Spencer-99
SugarCRM-1.1.3 SugarCRM-1.1.3
Sun-PPP-2000
Sun-PPP
SunPro SunPro
Swift-exception Swift-exception
Symlinks Symlinks
TAPR-OHL-1.0 TAPR-OHL-1.0
TCL TCL
TCP-wrappers TCP-wrappers
TGPPL-1.0
TMate TMate
TORQUE-1.1 TORQUE-1.1
TOSL TOSL
@ -539,8 +592,10 @@ Texinfo-exception
UBDL-exception UBDL-exception
UCAR UCAR
UCL-1.0 UCL-1.0
UMich-Merit
UPL-1.0 UPL-1.0
URT-RLE URT-RLE
Unicode-3.0
Unicode-DFS-2015 Unicode-DFS-2015
Unicode-DFS-2016 Unicode-DFS-2016
Unicode-TOU Unicode-TOU
@ -577,6 +632,8 @@ Zend-2.0
Zimbra-1.3 Zimbra-1.3
Zimbra-1.4 Zimbra-1.4
Zlib Zlib
any-OSI
bcrypt-Solar-Designer
blessing blessing
bzip2-1.0.6 bzip2-1.0.6
check-cvs check-cvs
@ -585,6 +642,7 @@ copyleft-next-0.3.0
copyleft-next-0.3.1 copyleft-next-0.3.1
cryptsetup-OpenSSL-exception cryptsetup-OpenSSL-exception
curl curl
cve-tou
deprecated_AGPL-1.0 deprecated_AGPL-1.0
deprecated_AGPL-3.0 deprecated_AGPL-3.0
deprecated_BSD-2-Clause-FreeBSD deprecated_BSD-2-Clause-FreeBSD
@ -622,11 +680,14 @@ dvipdfm
eCos-exception-2.0 eCos-exception-2.0
eGenix eGenix
etalab-2.0 etalab-2.0
fmt-exception
freertos-exception-2.0 freertos-exception-2.0
fwlw fwlw
gSOAP-1.3b gSOAP-1.3b
gnu-javamail-exception gnu-javamail-exception
gnuplot gnuplot
gtkbook
hdparm
i2p-gpl-java-exception i2p-gpl-java-exception
iMatix iMatix
libpng-2.0 libpng-2.0
@ -636,26 +697,33 @@ libtiff
libutil-David-Nugent libutil-David-Nugent
lsof lsof
magaz magaz
mailprio
metamail metamail
mif-exception mif-exception
mpi-permissive mpi-permissive
mpich2 mpich2
mplus mplus
openvpn-openssl-exception openvpn-openssl-exception
pkgconf
pnmstitch pnmstitch
psfrag psfrag
psutils psutils
python-ldap python-ldap
radvd
snprintf snprintf
softSurfer
ssh-keyscan ssh-keyscan
stunnel-exception stunnel-exception
swrule swrule
threeparttable
u-boot-exception-2.0 u-boot-exception-2.0
ulem ulem
vsftpd-openssl-exception vsftpd-openssl-exception
w3m w3m
x11vnc-openssl-exception x11vnc-openssl-exception
xinetd xinetd
xkeyboard-config-Zinoviev
xlock xlock
xpp xpp
xzoom
zlib-acknowledgement zlib-acknowledgement

View file

@ -124,6 +124,17 @@ check_installed_pkg() {
return 1 return 1
} }
#
# Return 0 if we will skip the check step
#
skip_check_step() {
[ -z "$XBPS_CHECK_PKGS" ] ||
[ "$XBPS_CROSS_BUILD" ] ||
[ "$make_check" = ci-skip -a "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ] ||
[ "$make_check" = extended -a "$XBPS_CHECK_PKGS" != full ] ||
[ "$make_check" = no ]
}
# #
# Build all dependencies required to build and run. # Build all dependencies required to build and run.
# #
@ -137,7 +148,7 @@ install_pkg_deps() {
local -a host_missing_deps missing_deps missing_rdeps local -a host_missing_deps missing_deps missing_rdeps
[ -z "$pkgname" ] && return 2 [ -z "$pkgname" ] && return 2
[ -z "$XBPS_CHECK_PKGS" ] && unset checkdepends skip_check_step && unset checkdepends
if [[ $build_style ]] || [[ $build_helper ]]; then if [[ $build_style ]] || [[ $build_helper ]]; then
style=" with" style=" with"
@ -208,7 +219,7 @@ install_pkg_deps() {
# #
# Host check dependencies. # Host check dependencies.
# #
if [[ ${checkdepends} ]] && [[ $XBPS_CHECK_PKGS ]] && [ -z "$XBPS_CROSS_BUILD" ]; then if [[ ${checkdepends} ]]; then
templates="" templates=""
# check validity # check validity
for f in ${checkdepends}; do for f in ${checkdepends}; do

View file

@ -116,7 +116,9 @@ show_pkg_build_depends() {
} }
show_pkg_build_deps() { show_pkg_build_deps() {
show_pkg_build_depends "${makedepends} $(setup_pkg_depends '' 1 1)" "${hostmakedepends}" local build_depends="${makedepends} $(setup_pkg_depends '' 1 1)"
skip_check_step || build_depends+=" ${checkdepends}"
show_pkg_build_depends "${build_depends}" "${hostmakedepends}"
} }
show_pkg_hostmakedepends() { show_pkg_hostmakedepends() {
@ -127,6 +129,10 @@ show_pkg_makedepends() {
show_pkg_build_depends "${makedepends}" "" show_pkg_build_depends "${makedepends}" ""
} }
show_pkg_checkdepends() {
show_pkg_build_depends "${checkdepends}" ""
}
show_pkg_build_options() { show_pkg_build_options() {
local f local f

View file

@ -1,4 +1,4 @@
# vim: set ts=4 sw=4 et: # vim: set ts=4 sw=4 et ft=bash :
update_check() { update_check() {
local i p url pkgurlname rx found_version consider local i p url pkgurlname rx found_version consider
@ -13,6 +13,8 @@ update_check() {
--max-time 10 --compressed -Lsk --max-time 10 --compressed -Lsk
) )
pkgname=${pkgname#kf6-}
# XBPS_UPDATE_CHECK_VERBOSE is the old way to show verbose messages # XBPS_UPDATE_CHECK_VERBOSE is the old way to show verbose messages
[ "$XBPS_UPDATE_CHECK_VERBOSE" ] && XBPS_VERBOSE="$XBPS_UPDATE_CHECK_VERBOSE" [ "$XBPS_UPDATE_CHECK_VERBOSE" ] && XBPS_VERBOSE="$XBPS_UPDATE_CHECK_VERBOSE"
@ -67,7 +69,7 @@ update_check() {
*code.google.com*|*googlecode*|\ *code.google.com*|*googlecode*|\
*launchpad.net*|\ *launchpad.net*|\
*cpan.*|\ *cpan.*|\
*pythonhosted.org*|\ *pythonhosted.org*|*pypi.org/project/*|\
*github.com*|\ *github.com*|\
*//gitlab.*|\ *//gitlab.*|\
*bitbucket.org*|\ *bitbucket.org*|\
@ -129,9 +131,10 @@ update_check() {
url="https://launchpad.net/$pkgurlname/+download";; url="https://launchpad.net/$pkgurlname/+download";;
*cpan.*) *cpan.*)
pkgname=${pkgname#perl-};; pkgname=${pkgname#perl-};;
*pythonhosted.org*) *pythonhosted.org*|*pypi.org/project/*)
pkgname=${pkgname#python-} pkgname=${pkgname#python-}
pkgname=${pkgname#python3-} pkgname=${pkgname#python3-}
rx="(?<=${pkgname//-/[-_]}-)[0-9.]+(post[0-9]*)?(?=(([.]tar|-cp|-py)))"
url="https://pypi.org/simple/$pkgname";; url="https://pypi.org/simple/$pkgname";;
*github.com*) *github.com*)
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)" pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
@ -149,10 +152,10 @@ update_check() {
url="https://bitbucket.org/$pkgurlname/downloads" url="https://bitbucket.org/$pkgurlname/downloads"
rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar)';; rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar)';;
*ftp.gnome.org*|*download.gnome.org*) *ftp.gnome.org*|*download.gnome.org*)
: ${pattern="(?<=LATEST-IS-)([0-24-9]|3\.[0-9]*[02468]|[4-9][0-9]+)\.[0-9.]*[0-9](?=\")"} rx='(?<=LATEST-IS-)([0-24-9]|3\.[0-9]*[02468]|[4-9][0-9]+)\.[0-9.]*[0-9](?=\")'
url="https://download.gnome.org/sources/$pkgname/cache.json";; url="https://download.gnome.org/sources/$pkgname/cache.json";;
*archive.xfce.org*) *archive.xfce.org*)
: ${pattern="\Q$pkgname\E-\K((([4-9]|([1-9][0-9]+))\.[0-9]*[02468]\.[0-9.]*[0-9])|([0-3]\.[0-9.]*))(?=.tar)"} rx='\Q'"$pkgname"'\E-\K((([4-9]|([1-9][0-9]+))\.[0-9]*[02468]\.[0-9.]*[0-9])|([0-3]\.[0-9.]*))(?=.tar)'
url="https://archive.xfce.org/feeds/project/$pkgname" ;; url="https://archive.xfce.org/feeds/project/$pkgname" ;;
*kernel.org/pub/linux/kernel/*) *kernel.org/pub/linux/kernel/*)
rx=linux-'\K'${version%.*}'[\d.]+(?=\.tar\.xz)';; rx=linux-'\K'${version%.*}'[\d.]+(?=\.tar\.xz)';;