Compare commits
209 commits
velocity/i
...
edge
| Author | SHA1 | Date | |
|---|---|---|---|
|
f98506d3bb |
|||
| 6a81c77cf8 | |||
|
797de7c2a9 |
|||
|
206336bdd1 |
|||
|
dfd1702835 |
|||
|
e14a8dc1e6 |
|||
|
|
88d7b4e8c7 |
||
|
|
839fa112c7 |
||
|
|
5a29004820 |
||
|
|
7a023d0024 | ||
|
|
094222021c |
||
|
|
946a011b61 |
||
|
|
3d599aff17 | ||
|
|
a7a531a637 | ||
|
|
7ef8cfa070 | ||
|
|
2e181afd19 | ||
|
|
ac2f1855db | ||
|
|
35e7f126ce |
||
|
|
ed788403aa |
||
|
|
55135b73b1 |
||
|
273730b1b9 |
|||
|
7be7e19fc9 |
|||
|
8791fcb06c |
|||
|
cacd6ba22b |
|||
|
16a4ebc1e4 |
|||
|
7ce80a2dd7 |
|||
|
6fceb42254 |
|||
|
8e2f15f244 |
|||
|
ba29f2b000 |
|||
|
2865b8f524 |
|||
|
8792a8c06a |
|||
|
df11191c86 |
|||
|
fd29f9c77b |
|||
|
a1898dab2d |
|||
|
fe3b86d53a |
|||
|
e5734af93e |
|||
|
061cc8069c |
|||
|
1300d81709 |
|||
|
a993aebd4d |
|||
|
2825fbb4f5 |
|||
|
ee0ce13773 |
|||
|
d6eed040f2 |
|||
|
23bcbc7513 |
|||
|
c25b332251 |
|||
|
73ebcb7fcc |
|||
|
f45c1e54db |
|||
|
749f413ab8 |
|||
|
6770f6babb |
|||
| 42d2681350 | |||
| 16d5ce552f | |||
| df65efacf1 | |||
|
869d5c3845 |
|||
|
03b4f6425d |
|||
|
8658e947c7 |
|||
|
b3d03dc817 |
|||
|
223efcc89f |
|||
|
bd1a71e8a2 |
|||
|
d3043bab85 |
|||
|
2eeb660610 |
|||
|
8c1da51a60 |
|||
|
4de45ea910 |
|||
|
d0dfb021eb |
|||
|
953627f48d |
|||
|
8789a20256 |
|||
|
7332be7561 |
|||
|
4adb8575d1 |
|||
|
4a5617805a |
|||
|
9c137f0b9d |
|||
|
b621ae6716 |
|||
|
d0b5791120 |
|||
|
c600b841b3 |
|||
|
2fa99e56c7 |
|||
|
22a33dd83d |
|||
|
a48dd2cc70 |
|||
|
5ea7fbce20 |
|||
|
f7e711f9a1 |
|||
|
923797f1b9 |
|||
|
7c780b5d0f |
|||
|
edac436331 |
|||
|
eea9bc1537 |
|||
|
d746dda5cb |
|||
|
7a2ebe9cfe |
|||
|
3da0a268ee |
|||
|
3611b942ed |
|||
|
f2ad704226 |
|||
|
7b106bae0c |
|||
|
3f1fd192e5 |
|||
|
bff91156de |
|||
|
97a6234e8e |
|||
|
614aa49d49 |
|||
|
fd63d1544f |
|||
|
f94e3afd33 |
|||
|
378739e007 |
|||
|
106fe3e570 |
|||
|
dfe9556b9d |
|||
|
5503c80497 |
|||
|
352e518f8e |
|||
|
762159a7e9 |
|||
|
72e6999c87 |
|||
|
ce94f901d0 |
|||
|
2fb7a3cd25 |
|||
|
5d9d856a6c |
|||
|
56f0391fd1 |
|||
|
6b7279026d |
|||
|
370d84dc77 |
|||
|
92c41ceef9 |
|||
|
23c870f2c6 |
|||
|
e287d26996 |
|||
|
234904618e |
|||
|
9a93d206fb |
|||
|
d55be2f427 |
|||
|
a04e0ca17b |
|||
|
0df5b0abb6 |
|||
|
eb112910e9 |
|||
|
024544f4df |
|||
|
73b064ed37 |
|||
|
26821abb53 |
|||
|
6a037b09a6 |
|||
|
b72d6e62e4 |
|||
|
d09e18a9da |
|||
|
e73030be6b |
|||
|
59283db32a |
|||
|
6abdbe7e50 |
|||
|
9e839bd17b |
|||
|
b4b4877fd3 |
|||
|
9a735111c7 |
|||
|
27e1275d13 |
|||
|
166b952516 |
|||
|
012a294f6d |
|||
|
20281faaf5 |
|||
|
41cd4ce83b |
|||
|
a6c26bc587 |
|||
|
39b8c7c45d |
|||
|
39823fcb31 |
|||
|
0cfe53ed2c |
|||
|
494a4e9ebd |
|||
|
9ab70541a0 |
|||
|
c4e0656192 |
|||
|
de224ac5c4 |
|||
|
975ca3acc6 |
|||
|
ea32d2af8e |
|||
|
ab89660806 |
|||
|
ff38eb3200 |
|||
|
24d2f84bab |
|||
|
48447cd14c |
|||
|
50524f1f2a |
|||
|
260eca3424 |
|||
|
cea504a924 |
|||
|
4919fe261c |
|||
|
25ba00ae7f |
|||
|
83207c4dae |
|||
|
ffdbdaafd9 |
|||
|
420fc93b84 |
|||
|
747c2c79a6 |
|||
|
48ef10378e |
|||
|
11b717b3c2 |
|||
|
0a65a63be1 |
|||
|
637e2f14ed |
|||
|
91d930b63d |
|||
|
c1baeb0f35 |
|||
|
5ccaf8e4d7 |
|||
|
bcbb961623 |
|||
|
4677e14f49 |
|||
|
5901ea37ae |
|||
|
366cbca424 |
|||
|
dc8a32f4b9 |
|||
|
10c0f61045 |
|||
|
2162431bb5 |
|||
|
90bda986c7 |
|||
|
ef52fcc239 |
|||
|
16e489995a |
|||
|
c319f2b6ca |
|||
|
1f49286ca2 |
|||
|
b4c27f6e3e |
|||
|
0261319dda |
|||
|
c7b89349dd |
|||
|
e861045fe3 |
|||
|
1351bcc0fd |
|||
|
8763a65fdb |
|||
|
7caaeeee04 |
|||
|
474e2ea62d |
|||
|
2d19224dcb |
|||
|
63dd181c59 |
|||
|
d7538d14bb |
|||
|
61153cb989 |
|||
|
3c3b7fe1ae |
|||
|
c7fa4babd2 |
|||
|
d20ee3e612 |
|||
|
2c9d1bc657 |
|||
|
4e133161c7 |
|||
|
edf630c6dc |
|||
|
a7e99375b3 |
|||
|
6306486b82 |
|||
|
0bb36c34c9 |
|||
|
eb38d0963f |
|||
|
dd132b86fa |
|||
|
ab7d3dce4a |
|||
|
99107ff63a |
|||
|
a7d9756c64 |
|||
|
3e86f4927c |
|||
|
928ff35f6b |
|||
|
6b56f7cb51 |
|||
|
b03043f08c |
|||
| d08c1392bc | |||
| c6d37636b6 | |||
|
c82ac68ca4 |
|||
| 5d7449a835 | |||
| c2b6767bfa | |||
|
8c9065c3af |
256 changed files with 11913 additions and 9660 deletions
|
|
@ -7,7 +7,7 @@
|
|||
set -eu -o pipefail
|
||||
|
||||
readonly APORTSDIR=$CI_PROJECT_DIR
|
||||
readonly REPOS="backports user"
|
||||
readonly REPOS="backports user pmos"
|
||||
readonly ALPINE_REPOS="main community testing"
|
||||
readonly ARCH=$(apk --print-arch)
|
||||
# gitlab variables
|
||||
|
|
@ -16,6 +16,8 @@ readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
|||
: "${REPODEST:=$HOME/packages}"
|
||||
: "${MIRROR:=https://ayakael.net/api/packages/forge/alpine}"
|
||||
: "${ALPINE_MIRROR:=http://dl-cdn.alpinelinux.org/alpine}"
|
||||
: "${PMOS_MIRROR:=http://mirror.postmarketos.org/postmarketos}"
|
||||
: "${PMOS_KEY:=https://git.syndicate-lang.org/synit/pmbootstrap/raw/commit/8efee86388408c0d8de45c64fe383580ffd91700/pmb/data/keys/build.postmarketos.org.rsa.pub}"
|
||||
: "${MAX_ARTIFACT_SIZE:=300000000}" #300M
|
||||
: "${CI_DEBUG_BUILD:=}"
|
||||
|
||||
|
|
@ -137,6 +139,22 @@ setup_system() {
|
|||
git config --global init.defaultBranch master
|
||||
}
|
||||
|
||||
setup_pmos() {
|
||||
local release
|
||||
|
||||
case $BASEBRANCH in
|
||||
v3.21) release="v24.12";;
|
||||
v3.20) release="v24.6";;
|
||||
v3.19) release="v23.12";;
|
||||
edge) release=master;;
|
||||
*) die "Branch \"$BASEBRANCH\" not supported!"
|
||||
esac
|
||||
|
||||
doas wget "$PMOS_KEY" -P /etc/apk/keys
|
||||
doas sh -c "echo $PMOS_MIRROR/$release >> /etc/apk/repositories"
|
||||
doas apk update || true
|
||||
}
|
||||
|
||||
sysinfo() {
|
||||
printf ">>> Host system information (arch: %s, release: %s) <<<\n" "$ARCH" "$(get_release)"
|
||||
printf "- Number of Cores: %s\n" "$(nproc)"
|
||||
|
|
@ -144,6 +162,7 @@ sysinfo() {
|
|||
printf "- Free space: %s\n" "$(df -hP / | awk '/\/$/ {print $4}')"
|
||||
}
|
||||
|
||||
|
||||
copy_artifacts() {
|
||||
cd "$APORTSDIR"
|
||||
|
||||
|
|
@ -182,7 +201,7 @@ setup_system || die "Failed to setup system"
|
|||
# git no longer allows to execute in repositories owned by different users
|
||||
doas chown -R buildozer: .
|
||||
|
||||
fetch_flags="-qn"
|
||||
fetch_flags="-qnu"
|
||||
debugging && fetch_flags="-v"
|
||||
|
||||
git fetch $fetch_flags "$CI_MERGE_REQUEST_PROJECT_URL" \
|
||||
|
|
@ -204,6 +223,7 @@ build_limit=$CI_ALPINE_BUILD_LIMIT
|
|||
|
||||
for repo in $(changed_repos); do
|
||||
set_repositories_for "$repo"
|
||||
[ "$repo" == "pmos" ] && setup_pmos
|
||||
built_aports=0
|
||||
changed_aports_in_repo=$(changed_aports "$repo")
|
||||
changed_aports_in_repo_count=$(echo "$changed_aports_in_repo" | wc -l)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,49 @@
|
|||
#!/bin/bash
|
||||
|
||||
# expects the following env variables:
|
||||
# downstream: downstream repo
|
||||
# downstream: downstream repo
|
||||
#
|
||||
# env variables to track minor or bug-fix updates
|
||||
# minor_only: array of packages that should only track minor releases (seperate by space)
|
||||
# default: none
|
||||
# all packages: all
|
||||
# fix_only: array of packages that should only track bug fix releases (seperated by space)
|
||||
# default: none
|
||||
# all packages: all
|
||||
#
|
||||
# If either minor_only or fix_only is set, only packages with semantic versioning schemes
|
||||
# will be tracked.
|
||||
#
|
||||
# If a package is both minor_only and fix_only, the minor releases will be tracked
|
||||
#
|
||||
# If a - is placed in front of package name, it'll be excluded from the update rule
|
||||
#
|
||||
# optional env variables
|
||||
# ALL_PACKAGES: when true, ignore is package is owned by me
|
||||
# skip_package: array of packages to skip, place a - in front of package name to not exclude it
|
||||
# add_package: array of additional packages to check
|
||||
#
|
||||
|
||||
repo=${downstream/*\/}
|
||||
release=${downstream/\/$repo/}
|
||||
release=${release/*\/}
|
||||
release=${release/v}
|
||||
arch=$(apk --print-arch)
|
||||
# add special case for postmarketos
|
||||
[ "$release" == "postmarketos" ] && { release=$repo; repo="pmos"; arch="aarch64"; }
|
||||
[ "$release" == "master" ] && release=edge
|
||||
|
||||
curl --silent $downstream/x86_64/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX
|
||||
is_semantic() {
|
||||
local downstream_version_dot=${1//[^.]}
|
||||
if [[ ${#downstream_version_dot} -eq 2 ]]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
echo "Checking $downstream for out of date packages"
|
||||
curl --silent $downstream/$arch/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX
|
||||
|
||||
if [ "$ALL_PACKAGES" == "true" ]; then
|
||||
owned_by_you=$(awk -F ':' '{if($1=="o"){print $2}}' APKINDEX | sort | uniq)
|
||||
|
|
@ -15,27 +53,145 @@ else
|
|||
echo "Found $(printf '%s\n' $owned_by_you | wc -l ) packages owned by you"
|
||||
fi
|
||||
|
||||
# add additionnal packages
|
||||
owned_by_you="$owned_by_you $add_package"
|
||||
|
||||
rm -f out_of_date not_in_anitya
|
||||
|
||||
for pkg in $owned_by_you; do
|
||||
upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version')
|
||||
downstream_version=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}' | sort -V | tail -n 1)
|
||||
downstream_version=${downstream_version/-*}
|
||||
|
||||
# special cases
|
||||
# skip package if in $skip_package array
|
||||
if [[ "$skip_package" == *all* || "$skip_package" == *$pkg* ]] && [[ "$skip_package" != *-$pkg* ]]; then
|
||||
echo "$pkg skipped"
|
||||
continue
|
||||
fi
|
||||
|
||||
# special cases where package is not semantic
|
||||
case $pkg in
|
||||
freetube) upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].version' | sed "s|-beta||");;
|
||||
dotnet9-sdk|dotnet9-stage0) upstream_version=${upstream_version/-*};;
|
||||
# track u-boot-pine64-pinenote against mainline u-boot, and track upstream rockchip blobs
|
||||
u-boot-pine64-pinenote)
|
||||
upstream_version="$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/u-boot" | jq -r '.stable_versions.[]' | head -n1)"
|
||||
|
||||
# some reason the commit now not in APKINDEX, using master instead
|
||||
#commit=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="c"){print $2}}')
|
||||
#commit=${commit/-dirty/}
|
||||
commit=master
|
||||
|
||||
# fetches upstream version for blobs using ini file
|
||||
upstream_trust="$(curl --fail -s 'https://raw.githubusercontent.com/rockchip-linux/rkbin/master/RKTRUST/RK3566TRUST_ULTRA.ini' | grep bl31 | awk -F '=' '{if($1"="PATH){print $2}}' | grep -o -P '(?<=_v).*(?=.elf)')"
|
||||
upstream_ddr="$(curl --fail -s 'https://raw.githubusercontent.com/rockchip-linux/rkbin/master/RKBOOT/RK3566MINIALL_ULTRA.ini' | grep ddr | awk -F '=' '{if($1"="PATH){print $2}}' | head -n 1 | grep -o -P '(?<=_v).*(?=.bin)')"
|
||||
|
||||
# extracts downstream version via _trust_ver and _ddr_ver variable
|
||||
downstream_trust=$(curl --fail -X GET -s "https://gitlab.postmarketos.org/postmarketOS/pmaports/-/raw/$commit/device/testing/u-boot-pine64-pinenote/APKBUILD" | awk -F '=' '{if($1=="_trust_ver"){print $2}}')
|
||||
downstream_ddr=$(curl --fail -X GET -s "https://gitlab.postmarketos.org/postmarketOS/pmaports/-/raw/$commit/device/testing/u-boot-pine64-pinenote/APKBUILD" | awk -F '=' '{if($1=="_ddr_ver"){print $2}}')
|
||||
|
||||
# compares versions and creates newline in out_of_date if problematic
|
||||
if [ "$upstream_trust" != "$downstream_trust" ]; then
|
||||
echo "$pkg new Trust blob $upstream_trust version available"
|
||||
echo "$pkg(trust) $downstream_trust $upstream_trust $repo $release" >> out_of_date
|
||||
fi
|
||||
if [ "$upstream_ddr" != "$downstream_ddr" ]; then
|
||||
echo "$pkg new ddr blob $upstream_ddr version available"
|
||||
echo "$pkg(ddr) $downstream_ddr $upstream_ddr $repo $release" >> out_of_date
|
||||
fi
|
||||
|
||||
;;
|
||||
# release-monitoring omits the extra B, while we keep it but put it after the version no.
|
||||
looking-glass) upstream_version="$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1)b";;
|
||||
# we want to track both Firefox security upgrades + Zotero upgrades
|
||||
zotero)
|
||||
commit=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="c"){print $2}}')
|
||||
downstream_fx_ver=$(curl --fail -X GET -s "https://gitlab.alpinelinux.org/alpine/aports/-/raw/$commit/community/zotero/APKBUILD" | awk -F '=' '{if($1=="_fxver"){print $2}}')
|
||||
upstream_fx_ver=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/firefox-esr" | jq -r ".stable_versions.[] | match(\"${downstream_fx_ver/.*.*}.*\").string" | head -n1)
|
||||
if [ "$upstream_fx_ver" != "$downstream_fx_ver" ]; then
|
||||
echo "$pkg new Firefox $upstream_fx_ver version available"
|
||||
echo "$pkg(fx_ver) $downstream_fx_ver $upstream_fx_ver $repo $release" >> out_of_date
|
||||
fi
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1)
|
||||
;;
|
||||
# aports omits the -beta part of the version
|
||||
freetube) upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].version' | sed "s|-beta||");;
|
||||
# we only track x.x.1xx feature branches of SDK and stage0
|
||||
dotnet*sdk|dotnet*stage0) upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version::-2}.*\").string" | sed 's|-.*||' | head -n1);;
|
||||
# we want to track both current major version and upstream latest
|
||||
electron)
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/projects/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_versions' | jq -r ".[] | match(\"${downstream_version/.*}.*\").string" | head -n 1)
|
||||
latest_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version' )
|
||||
# append version number to signal that this is not latest major version
|
||||
if [ "${upstream_version/.*}" != "${latest_version/.*}" ]; then
|
||||
echo "$pkg(${latest_version/.*}) major version available"
|
||||
echo "$pkg(${latest_version/.*}) $downstream_version $latest_version $repo $release" >> out_of_date
|
||||
pkg="$pkg(${upstream_version/.*})"
|
||||
fi
|
||||
;;
|
||||
# we want to track LTS (even releases) rather than latest
|
||||
arm-trusted-firmware)
|
||||
if [[ "$fix_only" == *all* || "$fix_only" == *$pkg* ]] || [[ "$minor_only" == *all* || "$minor_only" == *$pkg* ]]; then
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1)
|
||||
else
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[] | select(test("^[0-9]+\\.[0-9]+\\.[0-9]+$")) | select(split(".") | .[1] | tonumber | . % 2 == 0)' | head -n1)
|
||||
fi
|
||||
;;
|
||||
# track linux-pine64-pinenote against latest
|
||||
linux-pine64-pinenote)
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/315000" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1)
|
||||
latest_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/315000" | jq -r ".stable_versions.[]" | head -n1)
|
||||
|
||||
# append version number to signal that this is not latest major version
|
||||
if [ "${upstream_version/.*.*}" != "${latest_version/.*.*}" ]; then
|
||||
echo "$pkg(${latest_version/.*.*}) major version available"
|
||||
echo "$pkg(${latest_version/.*.*}) $downstream_version $latest_version $repo $release" >> out_of_date
|
||||
pkg="$pkg(${upstream_version%.*})"
|
||||
fi
|
||||
;;
|
||||
# track linux-radxa against BSP kernel (usually got awful late
|
||||
linux-radxa)
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1)
|
||||
upstream_version=${upstream_version/-*}
|
||||
;;
|
||||
dotnet*-sdk|dotnet*-stage0)
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/141853" | jq -r ".stable_versions.[] | match(\"${downstream_version::-2}.*\").string" | head -n 1)
|
||||
;;
|
||||
dotnet*-runtime)
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/220385" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n 1)
|
||||
;;
|
||||
# removes last bit in github tag from usbboot release, as not needed
|
||||
raspberrypi-usbboot) curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1 | sed 's|-.*||';;
|
||||
*)
|
||||
|
||||
if [[ "$minor_only" == *all* || "$minor_only" == *$pkg* ]] && [[ "$minor_only" != *-$pkg* ]]; then
|
||||
# continues when package version scheme is not semantic, but minor_only or fix_only is set
|
||||
if ! is_semantic $downstream_version; then
|
||||
echo "$pkg is not semantic, and minor_only is set"
|
||||
continue
|
||||
fi
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*.*}.*\").string" | head -n1)
|
||||
elif [[ "$fix_only" == *all* || "$fix_only" == *$pkg* ]] && [[ "$fix_only" != *-$pkg* ]]; then
|
||||
# continues when package version scheme is not semantic, but minor_only or fix_only is set
|
||||
if ! is_semantic $downstream_version; then
|
||||
echo "$pkg is not semantic, and fix_only is set"
|
||||
continue
|
||||
fi
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1)
|
||||
else
|
||||
upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$upstream_version" ]; then
|
||||
echo "$pkg not in anitya"
|
||||
echo "$pkg" >> not_in_anitya
|
||||
# do not track not_in_anitya if either minor_only or fix_only is set
|
||||
if [ -z ${minor_only+x} ] && [ -z ${fix_only+x} ]; then
|
||||
echo "$pkg" >> not_in_anitya
|
||||
fi
|
||||
elif [ "$downstream_version" != "$(printf '%s\n' $upstream_version $downstream_version | sort -V | head -n 1)" ]; then
|
||||
echo "$pkg higher downstream"
|
||||
echo "$pkg higher downstream $upstream_version"
|
||||
continue
|
||||
elif [ "$upstream_version" != "$downstream_version" ]; then
|
||||
echo "$pkg upstream version $upstream_version does not match downstream version $downstream_version"
|
||||
echo "$pkg $downstream_version $upstream_version $repo" >> out_of_date
|
||||
echo "$pkg upstream version $upstream_version does not match downstream version $downstream_version in $release"
|
||||
echo "$pkg $downstream_version $upstream_version $repo $release" >> out_of_date
|
||||
fi
|
||||
done
|
||||
|
|
|
|||
|
|
@ -1,17 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
TARGET_REPO=$1
|
||||
ARCH=$2
|
||||
ARCH="x86 x86_64 armhf armv7 aarch64 ppc64le s390x mips64 riscv64 loongarch64"
|
||||
|
||||
for arch in $ARCH; do
|
||||
# check if repo exists
|
||||
wget --spider $TARGET_REPO/$arch/APKINDEX.tar.gz -o /dev/null || continue
|
||||
echo ">>> Clearing repo $TARGET_REPO/$arch"
|
||||
|
||||
curl --silent $TARGET_REPO/$ARCH/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX
|
||||
curl --silent $TARGET_REPO/$arch/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX
|
||||
|
||||
pkgs=$(awk -F ':' '{if($1=="o"){print $2}}' APKINDEX | sort | uniq)
|
||||
pkgs=$(awk -F ':' '{if($1=="o"){print $2}}' APKINDEX | sort | uniq)
|
||||
|
||||
for pkg in $pkgs; do
|
||||
pkgvers=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}')
|
||||
for pkgver in $pkgvers; do
|
||||
echo "Deleting $pkg-$pkgver of arch $ARCH from $TARGET_REPO"
|
||||
curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN -X DELETE $TARGET_REPO/$ARCH/$pkg-$pkgver.apk
|
||||
for pkg in $pkgs; do
|
||||
pkgvers=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}')
|
||||
for pkgver in $pkgvers; do
|
||||
echo "Deleting $pkg-$pkgver of arch $arch from $TARGET_REPO"
|
||||
curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN -X DELETE $TARGET_REPO/$arch/$pkg-$pkgver.apk
|
||||
done
|
||||
done
|
||||
done
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# expects:
|
||||
# env variable FORGEJO_TOKEN
|
||||
# env variable ISSUE_TOKEN
|
||||
# file out_of_date
|
||||
|
||||
IFS='
|
||||
|
|
@ -13,14 +13,23 @@ does_it_exist() {
|
|||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
release=$5
|
||||
|
||||
query="$repo/$name: upgrade to $upstream_version"
|
||||
query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' )"
|
||||
if [ "$release" != "edge" ]; then
|
||||
query="%22[$release] $query%22"
|
||||
elif [ "$repo" != "pmos" ] && [ "$repo" != "user" ]; then
|
||||
# workaround to this query matching both stable and edge branch
|
||||
query="%22$query%22&labels=Edge"
|
||||
else
|
||||
query="%22$query%22"
|
||||
fi
|
||||
query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' | sed 's|\[|%5B|g' | sed 's|\]|%5D|g')"
|
||||
|
||||
result="$(curl --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues" \
|
||||
result="$(curl -L --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues&sort=latest" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN"
|
||||
-H "Authorization: token $ISSUE_TOKEN"
|
||||
)"
|
||||
|
||||
if [ "$result" == "[]" ]; then
|
||||
|
|
@ -33,14 +42,23 @@ is_it_old() {
|
|||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
release=$5
|
||||
|
||||
query="$repo/$name: upgrade to"
|
||||
query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' )"
|
||||
if [ "$release" != "edge" ]; then
|
||||
query="%22[$release] $query%22"
|
||||
elif [ "$repo" != "pmos" ] && [ "$repo" != "user" ]; then
|
||||
# workaround to this query matching both stable and edge branch
|
||||
query="%22$query%22&labels=Edge"
|
||||
else
|
||||
query="%22$query%22"
|
||||
fi
|
||||
query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' | sed 's|\[|%5B|g' | sed 's|\]|%5D|g')"
|
||||
|
||||
result="$(curl --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues" \
|
||||
result="$(curl -L --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues&sort=latest" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN"
|
||||
-H "authorization: token $ISSUE_TOKEN"
|
||||
)"
|
||||
|
||||
result_title="$(echo $result | jq -r '.[].title' )"
|
||||
|
|
@ -59,16 +77,18 @@ update_title() {
|
|||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
id=$5
|
||||
release=$5
|
||||
id=$6
|
||||
|
||||
result=$(curl --silent -X 'PATCH' \
|
||||
title="$repo/$name: upgrade to $upstream_version"
|
||||
if [ "$release" != "edge" ]; then title="[$release] $title"; fi
|
||||
|
||||
result=$(curl -L --silent -X 'PATCH' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$id" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H "authorization: token $ISSUE_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"title\": \"$repo/$name: upgrade to $upstream_version\"
|
||||
}"
|
||||
-d "{\"title\": \"$title\"}"
|
||||
)
|
||||
|
||||
return 0
|
||||
|
|
@ -79,14 +99,18 @@ create_issue() {
|
|||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
release=$5
|
||||
|
||||
result=$(curl --silent -X 'POST' \
|
||||
title="$repo/$name: upgrade to $upstream_version"
|
||||
if [ "$release" != "edge" ]; then title="[$release] $title"; fi
|
||||
|
||||
result=$(curl -L --silent -X 'POST' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H "authorization: token $ISSUE_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"title\": \"$repo/$name: upgrade to $upstream_version\",
|
||||
\"title\": \"$title\",
|
||||
\"labels\": [
|
||||
$LABEL_NUMBER
|
||||
]
|
||||
|
|
@ -105,41 +129,42 @@ if [ -f out_of_date ]; then
|
|||
downstream_version="$(echo $pkg | awk '{print $2}')"
|
||||
upstream_version="$(echo $pkg | awk '{print $3}')"
|
||||
repo="$(echo $pkg | awk '{print $4}')"
|
||||
release="$(echo $pkg | awk '{print $5}')"
|
||||
|
||||
if does_it_exist $name $downstream_version $upstream_version $repo; then
|
||||
if does_it_exist $name $downstream_version $upstream_version $repo $release; then
|
||||
echo "Issue for $repo/$name already exists"
|
||||
continue
|
||||
fi
|
||||
|
||||
id=$(is_it_old $name $downstream_version $upstream_version $repo)
|
||||
id=$(is_it_old $name $downstream_version $upstream_version $repo $release)
|
||||
|
||||
if [ "$id" != "0" ] && [ -n "$id" ]; then
|
||||
echo "Issue for $repo/$name needs updating"
|
||||
update_title $name $downstream_version $upstream_version $repo $id
|
||||
update_title $name $downstream_version $upstream_version $repo $release $id
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Creating issue for $repo/$name"
|
||||
create_issue $name $downstream_version $upstream_version $repo
|
||||
create_issue $name $downstream_version $upstream_version $repo $release
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -f not_in_anitya ]; then
|
||||
query="Add missing $repo packages to anitya"
|
||||
query="$(echo $query | sed 's| |%20|g')"
|
||||
query="%22$(echo $query | sed 's| |%20|g')%22"
|
||||
|
||||
result="$(curl --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues" \
|
||||
result="$(curl -L --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues&sort=latest" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN"
|
||||
-H "authorization: token $ISSUE_TOKEN"
|
||||
)"
|
||||
|
||||
if [ "$result" == "[]" ]; then
|
||||
echo "Creating anitya issue"
|
||||
result=$(curl --silent -X 'POST' \
|
||||
result=$(curl -L --silent -X 'POST' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H "authorization: token $ISSUE_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"title\": \"Add missing $repo packages to anitya\",
|
||||
|
|
@ -152,10 +177,10 @@ if [ -f not_in_anitya ]; then
|
|||
else
|
||||
echo "Updating anitya issue"
|
||||
result_id="$(echo $result | jq -r '.[].number' )"
|
||||
result=$(curl --silent -X 'PATCH' \
|
||||
result=$(curl -L --silent -X 'PATCH' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$result_id" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H "authorization: token $ISSUE_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"body\": \"- [ ] $(sed '{:q;N;s/\n/\\n- [ ] /g;t q}' not_in_anitya)\"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
set -eu -o pipefail
|
||||
|
||||
readonly REPOS="backports user"
|
||||
readonly BASEBRANCH=$GITHUB_BASE_REF
|
||||
readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
readonly TARGET_REPO=$CI_ALPINE_REPO
|
||||
|
||||
apkgs=$(find package -type f -name "*.apk")
|
||||
|
|
|
|||
54
.forgejo/bin/generate-cross.sh
Executable file
54
.forgejo/bin/generate-cross.sh
Executable file
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
|
||||
TARGET_RELEASE=$1
|
||||
shift
|
||||
TARGET_ARCH=$@
|
||||
CURRENT_ARCH=$(cat /etc/apk/arch)
|
||||
|
||||
if [ -z "$TARGET_RELEASE" ]; then
|
||||
echo ">>> No target release specified, assumming edge"
|
||||
TARGET_RELEASE=edge
|
||||
fi
|
||||
[[ "$TARGET_RELEASE" == "edge" ]] && TARGET_BRANCH=master || TARGET_BRANCH="${TARGET_RELEASE/v}-stable"
|
||||
|
||||
if [[ ! -d "aports-$TARGET_RELEASE" ]]; then
|
||||
echo ">>> Fetching aports for $TARGET_RELEASE"
|
||||
git init aports-$TARGET_RELEASE
|
||||
git -C aports-$TARGET_RELEASE remote add origin https://gitlab.alpinelinux.org/alpine/aports
|
||||
git -C aports-$TARGET_RELEASE fetch --depth 1 origin $TARGET_BRANCH
|
||||
git -C aports-$TARGET_RELEASE checkout $TARGET_BRANCH
|
||||
[[ $? -ne 0 ]] && { echo ">>> Git fetch failed, does your release exist?"; exit; } || true
|
||||
fi
|
||||
|
||||
if [ -z "$TARGET_ARCH" ]; then
|
||||
echo ">>> No arch specified, assuming target to all arches supported by upstream for release $TARGET_RELEASE"
|
||||
TARGET_ARCH=$(cat aports-$TARGET_RELEASE/scripts/mkimg.minirootfs.sh | tr -d "\t" | awk -F "=" '{if($1=="arch"){print $2}}' | tr -d \" | sed "s| $CURRENT_ARCH||")
|
||||
if [ -z "$TARGET_ARCH" ]; then
|
||||
echo ">>> Could not compute arches that are supported, does your release exist?"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
. /usr/share/abuild/functions.sh
|
||||
|
||||
for arch in $TARGET_ARCH; do
|
||||
if [[ "$(arch_to_hostspec $arch)" == "unknown" ]]; then
|
||||
echo ">>> $arch not valid arch, please chose among the following"
|
||||
sed -n '/^arch_to_hostspec/,/esac$/ {s/esac//;p;}' /usr/share/abuild/functions.sh | sed -e '/unknown/d' -e '/arch/d' -e '/case/d' -e "/$CURRENT_ARCH/d" | awk '{print $1}' | tr -d ')'
|
||||
exit
|
||||
fi
|
||||
done
|
||||
|
||||
echo ">>> Targetting $TARGET_ARCH for cross generation"
|
||||
|
||||
(
|
||||
cd aports-$TARGET_RELEASE/scripts
|
||||
# this stops bootstrap from building the whole base system
|
||||
sed -i 's|^msg "Cross building base system"|exit; msg "Cross building base system"|' bootstrap.sh
|
||||
for arch in $TARGET_ARCH; do
|
||||
echo ">>> Building cross-compilers for $arch"
|
||||
./bootstrap.sh $arch
|
||||
[[ $? -ne 0 ]] && { echo ">>> Cross-build failure"; exit; } || true
|
||||
done
|
||||
echo ">>> Building done"
|
||||
)
|
||||
|
|
@ -15,6 +15,7 @@ jobs:
|
|||
steps:
|
||||
- name: Environment setup
|
||||
run: |
|
||||
doas apk upgrade -a
|
||||
doas apk add nodejs git patch curl
|
||||
cd /etc/apk/keys
|
||||
doas curl -JO https://ayakael.net/api/packages/forge/alpine/key
|
||||
|
|
@ -27,7 +28,7 @@ jobs:
|
|||
${{ github.workspace }}/.forgejo/bin/build.sh
|
||||
touch packages/dummy
|
||||
- name: Package upload
|
||||
uses: forgejo/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: package
|
||||
path: packages
|
||||
|
|
@ -39,6 +40,7 @@ jobs:
|
|||
image: alpine:latest
|
||||
env:
|
||||
CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine'
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }}
|
||||
FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }}
|
||||
FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }}
|
||||
steps:
|
||||
|
|
@ -47,6 +49,6 @@ jobs:
|
|||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
- name: Package download
|
||||
uses: forgejo/download-artifact@v3
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Package deployment
|
||||
run: ${{ github.workspace }}/.forgejo/bin/deploy.sh
|
||||
|
|
|
|||
54
.forgejo/workflows/build-armv7.yaml
Normal file
54
.forgejo/workflows/build-armv7.yaml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
on:
|
||||
pull_request:
|
||||
types: [ assigned, opened, synchronize, reopened ]
|
||||
|
||||
jobs:
|
||||
build-armv7:
|
||||
runs-on: armv7
|
||||
container:
|
||||
image: alpinelinux/alpine-gitlab-ci:latest
|
||||
env:
|
||||
CI_PROJECT_DIR: ${{ github.workspace }}
|
||||
CI_DEBUG_BUILD: ${{ runner.debug }}
|
||||
CI_MERGE_REQUEST_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }}
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }}
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: |
|
||||
doas apk upgrade -a
|
||||
doas apk add nodejs git patch curl
|
||||
cd /etc/apk/keys
|
||||
doas curl -JO https://ayakael.net/api/packages/forge/alpine/key
|
||||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 500
|
||||
- name: Package build
|
||||
run: |
|
||||
${{ github.workspace }}/.forgejo/bin/build.sh
|
||||
touch packages/dummy
|
||||
- name: Package upload
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: package
|
||||
path: packages
|
||||
|
||||
deploy-armv7:
|
||||
needs: [build-armv7]
|
||||
runs-on: armv7
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine'
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }}
|
||||
FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }}
|
||||
FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }}
|
||||
steps:
|
||||
- name: Setting up environment
|
||||
run: apk add nodejs curl findutils git gawk
|
||||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
- name: Package download
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Package deployment
|
||||
run: ${{ github.workspace }}/.forgejo/bin/deploy.sh
|
||||
59
.forgejo/workflows/build-cross.yaml
Normal file
59
.forgejo/workflows/build-cross.yaml
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
target_arch:
|
||||
description: 'target arch'
|
||||
required: false
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
build-cross:
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpinelinux/alpine-gitlab-ci:latest
|
||||
env:
|
||||
CI_PROJECT_DIR: ${{ github.workspace }}
|
||||
CI_DEBUG_BUILD: ${{ runner.debug }}
|
||||
CI_MERGE_REQUEST_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }}
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.ref_name }}
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: |
|
||||
doas apk upgrade -a
|
||||
doas apk add nodejs git patch curl bash
|
||||
cd /etc/apk/keys
|
||||
doas curl -JO https://ayakael.net/api/packages/forge/alpine/key
|
||||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 500
|
||||
- name: Package build
|
||||
run: |
|
||||
${{ github.workspace }}/.forgejo/bin/build.sh
|
||||
${{ github.workspace }}/.forgejo/bin/generate-cross.sh ${{ github.ref_name }} ${{ inputs.target_arch }}
|
||||
mv -v /home/buildozer/packages/main ${{ github.workspace }}/packages/cross
|
||||
- name: Package upload
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: package
|
||||
path: packages
|
||||
|
||||
deploy-cross:
|
||||
needs: [build-cross]
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine'
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.ref_name }}
|
||||
FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }}
|
||||
FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }}
|
||||
steps:
|
||||
- name: Setting up environment
|
||||
run: apk add nodejs curl findutils git gawk
|
||||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
- name: Package download
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Package deployment
|
||||
run: ${{ github.workspace }}/.forgejo/bin/deploy.sh
|
||||
|
|
@ -15,6 +15,7 @@ jobs:
|
|||
steps:
|
||||
- name: Environment setup
|
||||
run: |
|
||||
doas apk upgrade -a
|
||||
doas apk add nodejs git patch curl
|
||||
cd /etc/apk/keys
|
||||
doas curl -JO https://ayakael.net/api/packages/forge/alpine/key
|
||||
|
|
@ -27,7 +28,7 @@ jobs:
|
|||
${{ github.workspace }}/.forgejo/bin/build.sh
|
||||
touch packages/dummy
|
||||
- name: Package upload
|
||||
uses: forgejo/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: package
|
||||
path: packages
|
||||
|
|
@ -39,6 +40,7 @@ jobs:
|
|||
image: alpine:latest
|
||||
env:
|
||||
CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine'
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }}
|
||||
FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }}
|
||||
FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }}
|
||||
steps:
|
||||
|
|
@ -47,6 +49,6 @@ jobs:
|
|||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
- name: Package download
|
||||
uses: forgejo/download-artifact@v3
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Package deployment
|
||||
run: ${{ github.workspace }}/.forgejo/bin/deploy.sh
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ on:
|
|||
jobs:
|
||||
check-backports:
|
||||
name: Check backports repo
|
||||
runs-on: x86_64
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://ayakael.net/api/packages/forge/alpine/v3.21/backports
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
downstream: https://ayakael.net/api/packages/forge/alpine/v3.23/backports
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 1
|
||||
ALL_PACKAGES: true
|
||||
steps:
|
||||
|
|
|
|||
|
|
@ -5,14 +5,14 @@ on:
|
|||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-community:
|
||||
name: Check community repo
|
||||
runs-on: x86_64
|
||||
check-community-edge:
|
||||
name: Check community(edge) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 4
|
||||
steps:
|
||||
- name: Environment setup
|
||||
|
|
@ -25,3 +25,92 @@ jobs:
|
|||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-community-3.23:
|
||||
name: Check community(3.23) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.23/community
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
fix_only: all -git-annex
|
||||
skip_package: dotnet9-stage0 dotnet8-stage0 py3-boto3 py3-botocore dotnet10-stage0
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-community-3.22:
|
||||
name: Check community(3.22) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.22/community
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
skip_package: 'all -dotnet8-runtime -dotnet9-runtime'
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-community-3.21:
|
||||
name: Check community(3.21) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.21/community
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
skip_package: 'all -dotnet8-runtime -dotnet9-runtime'
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-community-3.20:
|
||||
name: Check community(3.20) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.20/community
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
skip_package: 'all -dotnet8-runtime'
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
|
||||
|
|
|
|||
112
.forgejo/workflows/check-main.yml
Normal file
112
.forgejo/workflows/check-main.yml
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-main-edge:
|
||||
name: Check main(edge) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/edge/main
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 4
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-main-3.23:
|
||||
name: Check main(3.23) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.23/main
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-main-3.22:
|
||||
name: Check main(3.22) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.22/main
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-main-3.21:
|
||||
name: Check main(3.21) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.21/main
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-main-3.20:
|
||||
name: Check main(3.20) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.20/main
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 13
|
||||
fix_only: all
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
|
||||
50
.forgejo/workflows/check-pmos.yml
Normal file
50
.forgejo/workflows/check-pmos.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-pmos-edge:
|
||||
name: Check pmos(edge) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: http://mirror.postmarketos.org/postmarketos/master
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 14
|
||||
skip_package: device-clockworkpi-uconsole-radxa-cm5 device-pine64-pinenote u-boot-radxa-cm5
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
check-pmos-latest:
|
||||
name: Check pmos(v25.12) repo
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: http://mirror.postmarketos.org/postmarketos/v25.12
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 14
|
||||
fix_only: all
|
||||
skip_package: device-clockworkpi-uconsole-radxa-cm5 device-pine64-pinenote u-boot-radxa-cm5
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
||||
|
|
@ -5,15 +5,16 @@ on:
|
|||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-community:
|
||||
check-testing:
|
||||
name: Check testing repo
|
||||
runs-on: x86_64
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/edge/testing
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 4
|
||||
skip_package: dotnet6-stage0 dotnet6-build
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ on:
|
|||
jobs:
|
||||
check-user:
|
||||
name: Check user repo
|
||||
runs-on: x86_64
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://ayakael.net/api/packages/forge/alpine/edge/user
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
LABEL_NUMBER: 4
|
||||
ISSUE_TOKEN: ${{ secrets.issue_token }}
|
||||
LABEL_NUMBER: 12
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
|
|
|
|||
25
.forgejo/workflows/clear-repo.yml
Normal file
25
.forgejo/workflows/clear-repo.yml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
target_repo:
|
||||
description: 'target repo'
|
||||
default: 'edge/user'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
clear-repo:
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
TARGET_REPO: 'https://ayakael.net/api/packages/forge/alpine/${{ inputs.target_repo }}'
|
||||
FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }}
|
||||
FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }}
|
||||
steps:
|
||||
- name: Setting up environment
|
||||
run: apk add nodejs curl findutils git gawk
|
||||
- name: Repo pull
|
||||
uses: actions/checkout@v4
|
||||
- name: Clear repo
|
||||
run: ${{ github.workspace }}/.forgejo/bin/clear-repo.sh $TARGET_REPO
|
||||
|
|
@ -14,7 +14,9 @@ jobs:
|
|||
CI_MERGE_REQUEST_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }}
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }}
|
||||
steps:
|
||||
- run: doas apk add nodejs git
|
||||
- run: |
|
||||
doas apk upgrade -a
|
||||
doas apk add nodejs git
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 500
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
# Contributor: Kay Thomas <kaythomas@pm.me>
|
||||
# Maintainer: Kay Thomas <kaythomas@pm.me>
|
||||
pkgname=airsonic-advanced
|
||||
_sha=1397446f979b1cdea283eec89ce4f0eae7d63450
|
||||
pkgver=11.0.0_git20230217
|
||||
pkgrel=0
|
||||
pkgdesc="Modern implementation of the Airsonic fork with several key performance and feature enhancements"
|
||||
url="https://github.com/airsonic-advanced/airsonic-advanced"
|
||||
# inconsistent test and build failures on other arches
|
||||
arch="x86_64"
|
||||
license="GPL-3.0-or-later"
|
||||
depends="openjdk11"
|
||||
makedepends="maven"
|
||||
subpackages="$pkgname-openrc"
|
||||
pkgusers="airsonic-advanced"
|
||||
pkggroups="airsonic-advanced"
|
||||
install="$pkgname.pre-install"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/airsonic-advanced/airsonic-advanced/archive/$_sha.tar.gz
|
||||
maven.patch
|
||||
airsonic-advanced.initd
|
||||
"
|
||||
builddir="$srcdir/$pkgname-$_sha"
|
||||
|
||||
build() {
|
||||
mvn clean package -DskipTests
|
||||
}
|
||||
|
||||
check() {
|
||||
mvn test
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm755 -o airsonic-advanced -g airsonic-advanced \
|
||||
"$pkgdir"/var/airsonic
|
||||
|
||||
install -m755 -o airsonic-advanced -g airsonic-advanced \
|
||||
"$builddir"/airsonic-main/target/airsonic.war \
|
||||
"$pkgdir"/var/airsonic/airsonic.war
|
||||
|
||||
install -Dm755 "$srcdir"/$pkgname.initd \
|
||||
"$pkgdir"/etc/init.d/$pkgname
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
f415620bdbed9fb3874afbf30d9362e68b1e9e8e90dbbed4ca3206b643cad97ca0558e64ec5b4440382f0ec908c3325e321ea3631c38ff9a2109163c8f0cfe0b airsonic-advanced-11.0.0_git20230217.tar.gz
|
||||
6cb52fee19815fcdf2596e55d97d3e750321b1df7a4fec36fc9bc2a57d4be979a3905a42d3aa9dbeb2bf0d4f56edbf344f13551219b8e4d2ca583abd4bb5c8f9 maven.patch
|
||||
ca87e6a7199950e6ac52aeb076a03f831d60ee9d4ceed47366bbd78443765d205796d895ebb244051d8033e5b2e9ccd648d20434039c854b8b50e766cc5cd10d airsonic-advanced.initd
|
||||
"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
#!/sbin/openrc-run
|
||||
|
||||
supervisor=supervise-daemon
|
||||
name="airsonic-advanced"
|
||||
command="/usr/lib/jvm/java-11-openjdk/jre/bin/java"
|
||||
command_args="-jar airsonic.war"
|
||||
command_user="airsonic-advanced:airsonic-advanced"
|
||||
directory="/var/airsonic"
|
||||
pidfile="/run/airsonic-advanced.pid"
|
||||
|
||||
depend() {
|
||||
need net localmount
|
||||
after firewall
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
addgroup -S airsonic-advanced 2>/dev/null
|
||||
adduser -S -D -H -s /sbin/nologin -G airsonic-advanced -g airsonic-advanced airsonic-advanced 2>/dev/null
|
||||
|
||||
exit 0
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
fixes maven 3.9 breaking change
|
||||
https://maven.apache.org/docs/3.9.0/release-notes.html#potentially-breaking-core-changes
|
||||
--- airsonic-advanced-1397446f979b1cdea283eec89ce4f0eae7d63450/.mvn/maven.config
|
||||
+++ airsonic-advanced-1397446f979b1cdea283eec89ce4f0eae7d63450/.mvn/maven.config
|
||||
@@ -1 +1,2 @@
|
||||
---settings ./.mvn/settings.xml
|
||||
+--settings
|
||||
+./.mvn/settings.xml
|
||||
13
backports/calibre/0002-calibre-use-make.patch
Normal file
13
backports/calibre/0002-calibre-use-make.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/setup/build.py b/setup/build.py
|
||||
index 956ad7504f..aa9d7ea028 100644
|
||||
--- a/setup/build.py
|
||||
+++ b/setup/build.py
|
||||
@@ -662,7 +662,7 @@ def build_headless(self):
|
||||
f.seek(0), f.truncate()
|
||||
f.write(raw)
|
||||
bdir = os.path.join(bdir, 'build')
|
||||
- cmd = [CMAKE]
|
||||
+ cmd = [CMAKE, '-GUnix Makefiles']
|
||||
if is_macos_universal_build:
|
||||
cmd += ['-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64']
|
||||
if sw and os.path.exists(os.path.join(sw, 'qt')):
|
||||
46
backports/calibre/0003-calibre-disable-piper.patch
Normal file
46
backports/calibre/0003-calibre-disable-piper.patch
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
piper uses a function in espeak-ng that is upstreamed but not in a
|
||||
release.
|
||||
|
||||
diff --git a/setup/extensions.json b/setup/extensions.json
|
||||
index b39ce6d..c105031 100644
|
||||
--- a/setup/extensions.json
|
||||
+++ b/setup/extensions.json
|
||||
@@ -134,14 +134,6 @@
|
||||
"error": "!podofo_error",
|
||||
"needs_c++": "17"
|
||||
},
|
||||
- {
|
||||
- "name": "piper",
|
||||
- "sources": "calibre/utils/tts/piper.cpp",
|
||||
- "needs_c++": "17",
|
||||
- "libraries": "!piper_libs",
|
||||
- "lib_dirs": "!piper_lib_dirs",
|
||||
- "inc_dirs": "!piper_inc_dirs"
|
||||
- },
|
||||
{
|
||||
"name": "html_as_json",
|
||||
"sources": "calibre/srv/html_as_json.cpp",
|
||||
diff --git a/src/calibre/constants.py b/src/calibre/constants.py
|
||||
index fa4b211459..7b27768953 100644
|
||||
--- a/src/calibre/constants.py
|
||||
+++ b/src/calibre/constants.py
|
||||
@@ -258,7 +258,6 @@ def __init__(self):
|
||||
'rcc_backend',
|
||||
'icu',
|
||||
'speedup',
|
||||
- 'piper',
|
||||
'html_as_json',
|
||||
'fast_css_transform',
|
||||
'fast_html_entities',
|
||||
diff --git a/src/calibre/utils/run_tests.py b/src/calibre/utils/run_tests.py
|
||||
index ffd0f95c04..c80a35f83d 100644
|
||||
--- a/src/calibre/utils/run_tests.py
|
||||
+++ b/src/calibre/utils/run_tests.py
|
||||
@@ -192,6 +192,7 @@ def test_import_of_all_python_modules(self):
|
||||
}
|
||||
if 'SKIP_SPEECH_TESTS' in os.environ:
|
||||
exclude_packages.add('calibre.gui2.tts')
|
||||
+ exclude_modules.add('calibre.utils.tts.piper')
|
||||
if not isbsd:
|
||||
exclude_modules.add('calibre.devices.usbms.hal')
|
||||
d = os.path.dirname
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Maintainer: Cowington Post <cowingtonpost@gmail.com>
|
||||
pkgname=calibre
|
||||
pkgver=7.21.0
|
||||
pkgver=8.14.0
|
||||
pkgrel=0
|
||||
pkgdesc="Ebook management application"
|
||||
# qt6-webengine
|
||||
|
|
@ -41,11 +41,13 @@ depends="
|
|||
qt6-qtimageformats
|
||||
qt6-qtsvg
|
||||
qt6-qtwebengine
|
||||
qt6-qtbase-private-dev
|
||||
udisks2
|
||||
"
|
||||
makedepends="
|
||||
cmake
|
||||
curl
|
||||
ffmpeg-dev
|
||||
hunspell-dev
|
||||
hyphen-dev
|
||||
libmtp-dev
|
||||
|
|
@ -54,12 +56,12 @@ makedepends="
|
|||
podofo-dev
|
||||
py3-pyqt-builder
|
||||
py3-pyqt6-sip
|
||||
py3-qt6
|
||||
py3-sip
|
||||
python3-dev
|
||||
qt6-qtbase-dev
|
||||
uchardet-dev
|
||||
xdg-utils
|
||||
ffmpeg-dev
|
||||
"
|
||||
subpackages="
|
||||
$pkgname-pyc
|
||||
|
|
@ -69,12 +71,15 @@ subpackages="
|
|||
"
|
||||
source="https://download.calibre-ebook.com/$pkgver/calibre-$pkgver.tar.xz
|
||||
0001-$pkgname-no-update.patch
|
||||
0002-$pkgname-use-make.patch
|
||||
0003-$pkgname-disable-piper.patch
|
||||
"
|
||||
# net: downloads iso-codes
|
||||
# !check: no tests ran
|
||||
options="net !check"
|
||||
|
||||
export LANG="en_US.UTF-8"
|
||||
export PATH="$PATH:/usr/lib/qt6/bin"
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
|
@ -111,6 +116,8 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
0c2ee610833df83219c0c33b09e1374a8262f1630ccd48e3c4725c92922a3ac5d102ad83fc213457fb9de3efa4f5a2c98ff6dff039828e1661085a1054d7f631 calibre-7.21.0.tar.xz
|
||||
edb32e47b083e10fbf53088e485737f3b61bb642ce6c4dd444e58a6618979c3b05b77ceffc4b8cb42e35eee7dcc2b94145abc22030ffd8b5de63e45b321fbf72 calibre-8.14.0.tar.xz
|
||||
eb8e7ce40ff8b8daf6e7e55a5dff8ec4dff06c45744266bb48b3194e92ab1196bc91468203e3c2ca1e5144166a7d6be90e6cf0253513e761b56a4c85be4c2c76 0001-calibre-no-update.patch
|
||||
bbb7253257073ae14840b3b4697943fe129d862b49cabd9388ea24cbd0259e68a1d359870334772164897f0c781db121de55fcdf5bccc841e36c021abe56f1ec 0002-calibre-use-make.patch
|
||||
0efcf35944cd0f42d6f3572839647fc5c8336562db3f71655211d3de682e155b6d6fee4d281f9576201156e0bc828b6a579a8708a27791e4e4d604d456416954 0003-calibre-disable-piper.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
pkgname=caprine
|
||||
pkgver=2.60.1
|
||||
pkgrel=2
|
||||
pkgver=2.60.3
|
||||
pkgrel=6
|
||||
pkgdesc="Elegant Facebook Messenger desktop app"
|
||||
arch="x86_64 aarch64" # blocked by electron
|
||||
url="https://github.com/sindresorhus/caprine"
|
||||
|
|
@ -17,12 +17,10 @@ source="
|
|||
"
|
||||
|
||||
build() {
|
||||
npm install --ignore-scripts
|
||||
npx --yes patch-package
|
||||
npm ci --ignore-scripts
|
||||
npx patch-package
|
||||
npx tsc
|
||||
rm -r node_modules
|
||||
npm install --ignore-scripts --production
|
||||
npx --yes patch-package
|
||||
npm prune --ignore-scripts --omit=dev
|
||||
}
|
||||
|
||||
package() {
|
||||
|
|
@ -59,7 +57,7 @@ package() {
|
|||
-or -name "test" -prune -exec rm -r '{}' \;
|
||||
}
|
||||
sha512sums="
|
||||
0df7f233c91f5a044dcffde94b976c6ad71e6d355518615c48cd825a249c01d63f455de31ece69193a66ca0fd8157506f9b88088da1bd47fc75e9d3800784ed0 caprine-2.60.1.tar.gz
|
||||
edf6452294b3c661befd9811c5836da33311171d587cb9a5939ac11a0c1e2a7ebbc4f2a8d81e02c1db1a2d814ac1aa7bbdadca9e21892cc8d7f7e9c23dc2e221 caprine-2.60.3.tar.gz
|
||||
a469e3bea24926119e51642b777ef794c5fa65421107903f967c36d81bbb1adb3d52469ce3a3301b2c890f1aa53ab989ded22a7c6e811fb8cf0a582dbd835e19 caprine.desktop
|
||||
3ad8994c1a0417e73d622587769e527b4236a32c1a89442ff76413b75b4392d667c9e2908979b453e5926e54db6d94b31625340c5a94e84e91ea77f56feae778 caprine.sh
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=coin
|
||||
pkgver=4.0.0
|
||||
pkgrel=7
|
||||
pkgdesc="OpenGL OpenInventor compatible graphics library"
|
||||
url="https://github.com/coin3d/coin"
|
||||
license="BSD-3-Clause"
|
||||
arch="all"
|
||||
makedepends="boost-dev cmake glu-dev graphviz samurai"
|
||||
subpackages="$pkgname-dev"
|
||||
source="https://github.com/coin3d/coin/releases/download/Coin-$pkgver/coin-$pkgver-src.tar.gz
|
||||
TestSuitePatch.patch
|
||||
"
|
||||
builddir="$srcdir/coin"
|
||||
|
||||
build() {
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCOIN_BUILD_TESTS=ON
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cmake --build build --target test
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
e036276a243bfe252569cee1b67d38b8633fcf35bdf4e366a92ca67e23799d54d91fe272c23b383c451d330cee284809f28f237857493948149e0da1ebd64fae coin-4.0.0-src.tar.gz
|
||||
aab464244b13371badf0878e5bfbcce859a42756cf8c7657d1480318aa291d296eac2741219c346bae056f761c5f46857f8fd1ec1c4129f86bc10236d3869deb TestSuitePatch.patch
|
||||
"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- ./testsuite/TestSuiteUtils.cpp
|
||||
+++ ./testsuite/TestSuiteUtils.cpp
|
||||
@@ -39,7 +39,7 @@
|
||||
#elif defined(_WIN32)
|
||||
#define USE_WIN32
|
||||
#else //_WIN32
|
||||
-#error Unknown system
|
||||
+#define USE_POSIX
|
||||
#endif //POSIX
|
||||
|
||||
#include <Inventor/errors/SoDebugError.h>
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=cura
|
||||
# uranium and curaengine packages must be updated in sync with this verion number
|
||||
# py3-pynest2d and fdm-materials should be checked as well, but their versions are not always in sync
|
||||
pkgver=5.2.2
|
||||
pkgrel=1
|
||||
pkgdesc="3D printer / slicing GUI built on top of the Uranium framework"
|
||||
url="https://ultimaker.com/software/ultimaker-cura"
|
||||
# ppc64le: no py3-keyring
|
||||
# x86: no curaengine
|
||||
# armhf: no uranium, qt5-qtquickcontrols, qt5-qtquickcontrols2, qt5-qtgraphicaleffects
|
||||
# riscv64: no uranium
|
||||
# s390x: no py3-trimesh, no py3-numpy-stl
|
||||
# armv7: no py3-trimesh
|
||||
arch="noarch !ppc64le !x86 !armhf !riscv64 !s390x !armv7"
|
||||
license="LGPL-3.0-or-later"
|
||||
# add cura-binary-data to depends when packaged
|
||||
depends="
|
||||
curaengine
|
||||
fdm-materials
|
||||
uranium
|
||||
py3-arcus
|
||||
py3-keyring
|
||||
py3-numpy-stl
|
||||
py3-pyclipper
|
||||
py3-pynest2d
|
||||
py3-pyserial
|
||||
py3-qt6
|
||||
py3-requests
|
||||
py3-trimesh
|
||||
py3-zeroconf
|
||||
"
|
||||
makedepends="samurai cmake gettext gettext-dev" # needs msginit from gettext
|
||||
checkdepends="py3-pytest"
|
||||
subpackages="$pkgname-lang"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/Ultimaker/Cura/archive/refs/tags/$pkgver.tar.gz
|
||||
AppDesktopData.patch
|
||||
CuraVersion.patch
|
||||
cmake-helpers.patch
|
||||
cmake.patch"
|
||||
builddir="$srcdir/Cura-$pkgver"
|
||||
options="!check" # tests broken after v5.x
|
||||
|
||||
build() {
|
||||
local pyver="$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
|
||||
cmake -B build -G Ninja \
|
||||
-DCURA_VERSION=$pkgver \
|
||||
-DPython_VERSION=$pyver \
|
||||
-DURANIUM_DIR=/usr/share/uranium \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DGETTEXT_MSGINIT_EXECUTABLE=msginit \
|
||||
-DCURA_BINARY_DATA_DIRECTORY=/usr/share/cura \
|
||||
-DCMAKE_BUILD_TYPE=minsizerel
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
mv $pkgdir/usr/bin/cura_app.py $pkgdir/usr/bin/cura
|
||||
|
||||
# don't ever send any user or print info through the internet to Ultimaker
|
||||
rm -rf "$pkgdir/usr/lib/cura/plugins/SliceInfoPlugin"
|
||||
|
||||
install -d "$pkgdir"/usr/share/locale
|
||||
mv "$pkgdir"/usr/share/cura/resources/i18n/* "$pkgdir"/usr/share/locale/
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
5d4e0fdc740d0c048905e2b87cc8c73eedea59b54766b74760505902007b365582d22b46b1cfdcd6914828840865c10a3beb0ef6a1f04ea181c81d44f42434bc cura-5.2.2.tar.gz
|
||||
214e373f6cab7e3ccac12c96d1b5ca636d8d1e9ecdadaae84fc28fb429969c7c2d6055ce2a01b6db3ad85ab6cbc8d135cf2c26c77d7cfe13a73eb81aa5e85f11 AppDesktopData.patch
|
||||
e3bb302db70ca195b2ce9831e71302c8ee2a51955fecc7264a495d7d4fc9c107cfd48811aa5865f16671e7b1ae126f95d3d7bbb6a70f367f7f91a2b32bce377b CuraVersion.patch
|
||||
0db4ff97e7f82ae1a9dbc9c330d08c3e46249feeb3fb630f7c4e2de73749327337ec041680c39a07e0b5034c1b3f3656d75614ab4dc2f39861c8e27bdb2a58ef cmake-helpers.patch
|
||||
05a73f892700ff6279230385b04180873a62b7413fa7f7d55ae150f1bcee57ef05eda0bd7fe444fe660ab66a044c958f42badd33b743fca81033ae8f19dd3805 cmake.patch
|
||||
"
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./com.ultimaker.cura.appdata.xml
|
||||
@@ -0,0 +1,33 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<!-- Copyright 2016 Richard Hughes <richard@hughsie.com> -->
|
||||
+<component type="desktop">
|
||||
+ <id>com.ultimaker.cura.desktop</id>
|
||||
+ <metadata_license>CC0-1.0</metadata_license>
|
||||
+ <project_license>LGPL-3.0 and CC-BY-SA-4.0</project_license>
|
||||
+ <name>Cura</name>
|
||||
+ <summary>The world's most advanced 3d printer software</summary>
|
||||
+ <description>
|
||||
+ <p>
|
||||
+ Cura creates a seamless integration between hardware, software and
|
||||
+ materials for the best 3D printing experience around.
|
||||
+ Cura supports the 3MF, OBJ and STL file formats and is available on
|
||||
+ Windows, Mac and Linux.
|
||||
+ </p>
|
||||
+ <ul>
|
||||
+ <li>Novices can start printing right away</li>
|
||||
+ <li>Experts are able to customize 300 settings to achieve the best results</li>
|
||||
+ <li>Optimized profiles for Ultimaker materials</li>
|
||||
+ <li>Supported by a global network of Ultimaker certified service partners</li>
|
||||
+ <li>Print multiple objects at once with different settings for each object</li>
|
||||
+ <li>Cura supports STL, 3MF and OBJ file formats</li>
|
||||
+ <li>Open source and completely free</li>
|
||||
+ </ul>
|
||||
+ </description>
|
||||
+ <screenshots>
|
||||
+ <screenshot type="default">
|
||||
+ <image>https://raw.githubusercontent.com/Ultimaker/Cura/master/screenshot.png</image>
|
||||
+ </screenshot>
|
||||
+ </screenshots>
|
||||
+ <url type="homepage">https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux</url>
|
||||
+ <translation type="gettext">Cura</translation>
|
||||
+</component>
|
||||
--- /dev/null
|
||||
+++ ./com.ultimaker.cura.desktop.in
|
||||
@@ -0,0 +1,19 @@
|
||||
+[Desktop Entry]
|
||||
+Name=Ultimaker Cura
|
||||
+Name[de]=Ultimaker Cura
|
||||
+Name[nl]=Ultimaker Cura
|
||||
+GenericName=3D Printing Software
|
||||
+GenericName[de]=3D-Druck-Software
|
||||
+GenericName[nl]=3D-printsoftware
|
||||
+Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
|
||||
+Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird.
|
||||
+Comment[nl]=Cura converteert 3D-modellen naar paden voor een 3D printer. Het bereidt je print voor om zeer precies, snel en betrouwbaar te kunnen printen, met veel extra functionaliteit om je print er goed uit te laten komen.
|
||||
+Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F
|
||||
+TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura
|
||||
+Icon=cura-icon
|
||||
+Terminal=false
|
||||
+Type=Application
|
||||
+MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip;
|
||||
+Categories=Graphics;
|
||||
+Keywords=3D;Printing;Slicer;
|
||||
+StartupWMClass=cura.real
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./cura/CuraVersion.py.in
|
||||
@@ -0,0 +1,13 @@
|
||||
+# Copyright (c) 2020 Ultimaker B.V.
|
||||
+# Cura is released under the terms of the LGPLv3 or higher.
|
||||
+
|
||||
+CuraAppName = "@CURA_APP_NAME@"
|
||||
+CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@"
|
||||
+CuraVersion = "@CURA_VERSION@"
|
||||
+CuraBuildType = "@CURA_BUILDTYPE@"
|
||||
+CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False
|
||||
+CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@"
|
||||
+CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@"
|
||||
+CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@"
|
||||
+CuraMarketplaceRoot = "@CURA_MARKETPLACE_ROOT@"
|
||||
+CuraDigitalFactoryURL = "@CURA_DIGITAL_FACTORY_URL@"
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./cmake/CuraPluginInstall.cmake
|
||||
@@ -0,0 +1,92 @@
|
||||
+# Copyright (c) 2022 Ultimaker B.V.
|
||||
+# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher.
|
||||
+
|
||||
+#
|
||||
+# This module detects all plugins that need to be installed and adds them using the CMake install() command.
|
||||
+# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it.
|
||||
+#
|
||||
+# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the
|
||||
+# form of "a;b;c" or "a,b,c". By default all plugins will be installed.
|
||||
+#
|
||||
+
|
||||
+option(PRINT_PLUGIN_LIST "Should the list of plugins that are installed be printed?" ON)
|
||||
+
|
||||
+# Options or configuration variables
|
||||
+set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.")
|
||||
+
|
||||
+file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json)
|
||||
+list(LENGTH _plugin_json_list _plugin_json_list_len)
|
||||
+
|
||||
+# Sort the lists alphabetically so we can handle cases like this:
|
||||
+# - plugins/my_plugin/plugin.json
|
||||
+# - plugins/my_plugin/my_module/plugin.json
|
||||
+# In this case, only "plugins/my_plugin" should be added via install().
|
||||
+set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS})
|
||||
+# Sanitize the string so the comparison will be case-insensitive.
|
||||
+string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list)
|
||||
+string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list)
|
||||
+
|
||||
+# WORKAROUND counterpart of what's in cura-build.
|
||||
+string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}")
|
||||
+
|
||||
+list(LENGTH _no_install_plugin_list _no_install_plugin_list_len)
|
||||
+
|
||||
+if(_no_install_plugin_list_len GREATER 0)
|
||||
+ list(SORT _no_install_plugin_list)
|
||||
+endif()
|
||||
+if(_plugin_json_list_len GREATER 0)
|
||||
+ list(SORT _plugin_json_list)
|
||||
+endif()
|
||||
+
|
||||
+# Check all plugin directories and add them via install() if needed.
|
||||
+set(_install_plugin_list "")
|
||||
+foreach(_plugin_json_path ${_plugin_json_list})
|
||||
+ get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY)
|
||||
+ file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir})
|
||||
+ get_filename_component(_plugin_dir_name ${_plugin_dir} NAME)
|
||||
+
|
||||
+ # Make plugin name comparison case-insensitive
|
||||
+ string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase)
|
||||
+
|
||||
+ # Check if this plugin needs to be skipped for installation
|
||||
+ set(_add_plugin ON) # Indicates if this plugin should be added to the build or not.
|
||||
+ set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is
|
||||
+ # specified in the NO_INSTALL_PLUGINS list.
|
||||
+ if(_no_install_plugin_list)
|
||||
+ if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list)
|
||||
+ set(_add_plugin OFF)
|
||||
+ set(_is_no_install_plugin ON)
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
+ # Make sure this is not a subdirectory in a plugin that's already in the install list
|
||||
+ if(_add_plugin)
|
||||
+ foreach(_known_install_plugin_dir ${_install_plugin_list})
|
||||
+ if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+")
|
||||
+ set(_add_plugin OFF)
|
||||
+ break()
|
||||
+ endif()
|
||||
+ endforeach()
|
||||
+ endif()
|
||||
+
|
||||
+ if(_add_plugin)
|
||||
+ if(${PRINT_PLUGIN_LIST})
|
||||
+ message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}")
|
||||
+ endif()
|
||||
+ get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY)
|
||||
+ install(DIRECTORY ${_rel_plugin_dir}
|
||||
+ DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir}
|
||||
+ PATTERN "__pycache__" EXCLUDE
|
||||
+ PATTERN "*.qmlc" EXCLUDE
|
||||
+ )
|
||||
+ list(APPEND _install_plugin_list ${_plugin_dir})
|
||||
+ elseif(_is_no_install_plugin)
|
||||
+ if(${PRINT_PLUGIN_LIST})
|
||||
+ message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}")
|
||||
+ endif()
|
||||
+ execute_process(COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py
|
||||
+ -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages
|
||||
+ ${_plugin_dir_name}
|
||||
+ RESULT_VARIABLE _mod_json_result)
|
||||
+ endif()
|
||||
+endforeach()
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
--- ./CMakeLists.txt.orig
|
||||
+++ ./CMakeLists.txt
|
||||
@@ -1,10 +1,6 @@
|
||||
# Copyright (c) 2022 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
-# NOTE: This is only being used for translation scripts.
|
||||
-
|
||||
-# For MSVC flags, will be ignored on non-Windows OS's and this project in general. Only needed for cura-build-environment.
|
||||
-cmake_policy(SET CMP0091 NEW)
|
||||
project(cura)
|
||||
cmake_minimum_required(VERSION 3.18)
|
||||
|
||||
@@ -15,8 +11,44 @@
|
||||
set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository")
|
||||
set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository")
|
||||
|
||||
+option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF)
|
||||
+if(CURA_DEBUGMODE)
|
||||
+ set(_cura_debugmode "ON")
|
||||
+endif()
|
||||
+
|
||||
option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON)
|
||||
|
||||
+set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder")
|
||||
+set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura")
|
||||
+set(CURA_VERSION "master" CACHE STRING "Version name of Cura")
|
||||
+set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'")
|
||||
+set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root")
|
||||
+set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version")
|
||||
+set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version")
|
||||
+set(CURA_MARKETPLACE_ROOT "" CACHE STRING "Alternative Marketplace location")
|
||||
+set(CURA_DIGITAL_FACTORY_URL "" CACHE STRING "Alternative Digital Factory location")
|
||||
+
|
||||
+configure_file(${CMAKE_SOURCE_DIR}/com.ultimaker.cura.desktop.in ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop @ONLY)
|
||||
+
|
||||
+configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY)
|
||||
+
|
||||
+if(NOT DEFINED Python_VERSION)
|
||||
+ set(Python_VERSION
|
||||
+ 3.11
|
||||
+ CACHE STRING "Python Version" FORCE)
|
||||
+ message(STATUS "Setting Python version to ${Python_VERSION}. Set Python_VERSION if you want to compile against an other version.")
|
||||
+endif()
|
||||
+if(APPLE)
|
||||
+ set(Python_FIND_FRAMEWORK NEVER)
|
||||
+endif()
|
||||
+find_package(Python ${Python_VERSION} EXACT REQUIRED COMPONENTS Interpreter)
|
||||
+message(STATUS "Linking and building ${project_name} against Python ${Python_VERSION}")
|
||||
+if(NOT DEFINED Python_SITELIB_LOCAL)
|
||||
+ set(Python_SITELIB_LOCAL
|
||||
+ "${Python_SITELIB}"
|
||||
+ CACHE PATH "Local alternative site-package location to install Cura" FORCE)
|
||||
+endif()
|
||||
+
|
||||
if(NOT ${URANIUM_DIR} STREQUAL "")
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake")
|
||||
endif()
|
||||
@@ -29,4 +61,24 @@
|
||||
if(${GENERATE_TRANSLATIONS})
|
||||
CREATE_TRANSLATION_TARGETS()
|
||||
endif()
|
||||
-endif()
|
||||
\ No newline at end of file
|
||||
+endif()
|
||||
+
|
||||
+install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||
+
|
||||
+include(CuraPluginInstall)
|
||||
+
|
||||
+install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
+install(DIRECTORY cura DESTINATION "${Python_SITELIB_LOCAL}")
|
||||
+install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION "${Python_SITELIB_LOCAL}/cura/")
|
||||
+if(NOT APPLE AND NOT WIN32)
|
||||
+ install(FILES ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
+ install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/)
|
||||
+ install(FILES com.ultimaker.cura.appdata.xml
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
||||
+ install(FILES cura.sharedmimeinfo
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
|
||||
+ RENAME cura.xml )
|
||||
+endif()
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=dex
|
||||
pkgver=0.9.0
|
||||
pkgrel=1
|
||||
pkgdesc="program to generate and execute DesktopEntry files of the Application type"
|
||||
url="https://github.com/jceb/dex"
|
||||
arch="all"
|
||||
license="GPL-3.0-or-later"
|
||||
depends="python3"
|
||||
makedepends="py3-sphinx"
|
||||
subpackages="$pkgname-doc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/jceb/dex/archive/refs/tags/v$pkgver.tar.gz"
|
||||
options="!check" # no testsuite
|
||||
|
||||
build() {
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
make install PREFIX=/usr MANPREFIX=/usr/share/man DESTDIR="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
d68f5482cb0948f27a724437ddfc6de9a0f502bfd0d5c60c76fb85dda3c30e4c432013e530f6a91138c9ac9ff36b3824cd5e382e9d29bb9fb2ec2b9de4133094 dex-0.9.0.tar.gz
|
||||
"
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
From adbc495726382c023b755c35aea36c6e9cad1950 Mon Sep 17 00:00:00 2001
|
||||
From: LN Liberda <lauren@selfisekai.rocks>
|
||||
Date: Sat, 23 Aug 2025 03:11:09 +0200
|
||||
Subject: [PATCH] hotfix: ignore a new warning in rust 1.89
|
||||
|
||||
---
|
||||
third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs
|
||||
index 1b729621c2f47..55d392c6da72f 100644
|
||||
--- a/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs
|
||||
+++ b/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs
|
||||
@@ -5,7 +5,6 @@
|
||||
//!
|
||||
|
||||
#![deny(missing_docs)]
|
||||
-#![deny(warnings)]
|
||||
# and tag @ayakael
|
||||
|
||||
## Building electron
|
||||
|
||||
Electron is an application framework based on `chromium`. Just like `chromium`,
|
||||
and any Google application, the build process is a form of [hostile
|
||||
architecture] (https://en.wikipedia.org/wiki/Hostile_architecture) It's quite
|
||||
literally chromium with patches applied on top for the most part. The build
|
||||
process applies a series of git patches against `chromium` from directories
|
||||
with a script.
|
||||
|
||||
Its source code isn't available as a downloadable tarball. It is only fetchable
|
||||
using Google's `gclient` available in `depot_tools` with a reimplemented
|
||||
version in the `teapot` package. By executing, `abuild snapshot`, the tarball
|
||||
can be fetched and packaged, as long as `gclient` is in your path. For ease of
|
||||
maintenance, a workflow on [Ayakael's Forge](https://ayakael.net/mirrors/electron)
|
||||
automatically fetches and packages the source code on new releases and makes it
|
||||
available in a [generic Forgejo repository](https://ayakael.net/mirrors/-/packages/generic/electron).
|
||||
|
||||
## Electron maintenance cycle
|
||||
|
||||
Security / bug fixes land from upstream land randomly, but chromium security fixes land
|
||||
basically weekly around Tuesday in `America/Los_Angeles`. Minor relases only require
|
||||
an upgrade to the `electron` packages. It is advisable to follow chromium weekly
|
||||
security fixes, although following `electron` minor releases is fine.
|
||||
|
||||
Major version upgrades require a more thorough approach. For one, most changes
|
||||
can be backported from `chromium` APKBUILD by diffing the previous version
|
||||
packaged with `electron` with the current (set with `_chromium` var). You also
|
||||
need to rebuild all `electron` apps, with patches sometimes necessary when
|
||||
upstream bumps to a new `nodejs` major verion. Major electron releases are
|
||||
every two `chromium` major releases, with [dates known well ahead]
|
||||
(https://chromiumdash.appspot.com/schedule) with a few major releases of
|
||||
`electron` [officially supported at a time](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
|
||||
|
||||
Steps, in a nutshell:
|
||||
|
||||
1. Set `pkgver` to up-to-date version
|
||||
|
||||
2. Optional: fetch source-code using `abuild snapshot`, making sure `gclient`
|
||||
is in your path
|
||||
|
||||
3. Update source checksum using `abuild checksum`
|
||||
|
||||
4. If major update, backport changes from `chromium` aport and bump `pkgrel`
|
||||
for all electron-based applications.
|
||||
|
||||
## Why is this package still in testing
|
||||
|
||||
[Work is under way](https://gitlab.alpinelinux.org/alpine/aports/-/issues/15760)
|
||||
to make this aport ready for `community`
|
||||
|
||||
Until that happens, this package is also kept-to-date against the latest
|
||||
release of Alpine Linux in [Ayakael's Forge](https://ayakael.net/forge/-/packages/alpine/signal-desktop)
|
||||
This is true of all Ayakael's packages still in `testing`.
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
This was dropped for some reason in 6951c37cecd05979b232a39e5c10e6346a0f74ef
|
||||
allows using /usr/bin/java instead of a downloaded one (that doesn't work on musl)
|
||||
--
|
||||
--- a/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200
|
||||
+++ b/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200
|
||||
@@ -13,8 +13,9 @@
|
||||
|
||||
|
||||
_CURRENT_DIR = os.path.join(os.path.dirname(__file__))
|
||||
-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java")
|
||||
-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds"
|
||||
+_JAVA_BIN = "java"
|
||||
+_JDK_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java")
|
||||
+_JAVA_PATH = _JDK_PATH if os.path.isfile(_JDK_PATH) else _JAVA_BIN
|
||||
|
||||
class Compiler(object):
|
||||
"""Runs the Closure compiler on given source files to typecheck them
|
||||
|
|
@ -1,14 +1,12 @@
|
|||
--- ./build/config/compiler/BUILD.gn.orig
|
||||
+++ ./build/config/compiler/BUILD.gn
|
||||
@@ -568,24 +568,6 @@
|
||||
@@ -658,22 +658,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- # TODO(crbug.com/40283598): This causes binary size growth and potentially
|
||||
- # other problems.
|
||||
- # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version.
|
||||
- if (default_toolchain != "//build/toolchain/cros:target" &&
|
||||
- !llvm_android_mainline) {
|
||||
- if (default_toolchain != "//build/toolchain/cros:target") {
|
||||
- cflags += [
|
||||
- "-mllvm",
|
||||
- "-split-threshold-for-reg-with-hint=0",
|
||||
|
|
@ -25,47 +23,91 @@
|
|||
# TODO(crbug.com/40192287): Investigate why/if this should be needed.
|
||||
if (is_win) {
|
||||
cflags += [ "/clang:-ffp-contract=off" ]
|
||||
@@ -998,17 +980,6 @@
|
||||
# `-nodefaultlibs` from the linker invocation from Rust, which would be used
|
||||
# to compile dylibs on Android, such as for constructing unit test APKs.
|
||||
"-Cdefault-linker-libraries",
|
||||
-
|
||||
- # To make Rust .d files compatible with ninja
|
||||
- "-Zdep-info-omit-d-target",
|
||||
-
|
||||
- # If a macro panics during compilation, show which macro and where it is
|
||||
- # defined.
|
||||
- "-Zmacro-backtrace",
|
||||
-
|
||||
- # For deterministic builds, keep the local machine's current working
|
||||
- # directory from appearing in build outputs.
|
||||
- "-Zremap-cwd-prefix=.",
|
||||
]
|
||||
|
||||
if (!is_win || force_rustc_color_output) {
|
||||
@@ -1175,8 +1146,8 @@
|
||||
@@ -1273,8 +1257,8 @@
|
||||
# simplicity we always explicitly set the architecture.
|
||||
if (current_cpu == "x64") {
|
||||
if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) {
|
||||
- cflags += [ "--target=x86_64-unknown-linux-gnu" ]
|
||||
- ldflags += [ "--target=x86_64-unknown-linux-gnu" ]
|
||||
+ cflags += [ "--target=x86_64-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=x86_64-alpine-linux-musl" ]
|
||||
} else {
|
||||
cflags += [ "-m64" ]
|
||||
ldflags += [ "-m64" ]
|
||||
@@ -1282,8 +1266,8 @@
|
||||
cflags += [ "-msse3" ]
|
||||
} else if (current_cpu == "x86") {
|
||||
if (is_clang && !is_android && !is_chromeos_device) {
|
||||
- cflags += [ "--target=i386-unknown-linux-gnu" ]
|
||||
- ldflags += [ "--target=i386-unknown-linux-gnu" ]
|
||||
+ cflags += [ "--target=i586-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=i586-alpine-linux-musl" ]
|
||||
} else {
|
||||
cflags += [ "-m32" ]
|
||||
ldflags += [ "-m32" ]
|
||||
@@ -1294,8 +1278,8 @@
|
||||
]
|
||||
} else if (current_cpu == "arm") {
|
||||
if (is_clang && !is_android && !is_nacl &&
|
||||
!(is_chromeos_lacros && is_chromeos_device)) {
|
||||
if (is_clang && !is_android && !is_chromeos_device) {
|
||||
- cflags += [ "--target=arm-linux-gnueabihf" ]
|
||||
- ldflags += [ "--target=arm-linux-gnueabihf" ]
|
||||
+ cflags += [ "--target=armv7-alpine-linux-musleabihf" ]
|
||||
+ ldflags += [ "--target=armv7-alpine-linux-musleabihf" ]
|
||||
}
|
||||
if (!is_nacl) {
|
||||
cflags += [
|
||||
@@ -1190,8 +1161,8 @@
|
||||
cflags += [
|
||||
"-march=$arm_arch",
|
||||
@@ -1306,8 +1290,8 @@
|
||||
}
|
||||
} else if (current_cpu == "arm64") {
|
||||
if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
|
||||
!(is_chromeos_lacros && is_chromeos_device)) {
|
||||
if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) {
|
||||
- cflags += [ "--target=aarch64-linux-gnu" ]
|
||||
- ldflags += [ "--target=aarch64-linux-gnu" ]
|
||||
+ cflags += [ "--target=aarch64-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=aarch64-alpine-linux-musl" ]
|
||||
}
|
||||
} else if (current_cpu == "mipsel" && !is_nacl) {
|
||||
} else if (current_cpu == "mipsel") {
|
||||
ldflags += [ "-Wl,--hash-style=sysv" ]
|
||||
@@ -1982,7 +1953,7 @@
|
||||
@@ -1551,22 +1535,22 @@
|
||||
ldflags += [ "-maix64" ]
|
||||
}
|
||||
} else if (is_clang) {
|
||||
- cflags += [ "--target=powerpc64le-unknown-linux-gnu" ]
|
||||
- ldflags += [ "--target=powerpc64le-unknown-linux-gnu" ]
|
||||
+ cflags += [ "--target=powerpc64le-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=powerpc64le-alpine-linux-musl" ]
|
||||
} else {
|
||||
cflags += [ "-m64" ]
|
||||
ldflags += [ "-m64" ]
|
||||
}
|
||||
} else if (current_cpu == "riscv64") {
|
||||
if (is_clang && !is_android) {
|
||||
- cflags += [ "--target=riscv64-linux-gnu" ]
|
||||
- ldflags += [ "--target=riscv64-linux-gnu" ]
|
||||
+ cflags += [ "--target=riscv64-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=riscv64-alpine-linux-musl" ]
|
||||
}
|
||||
cflags += [ "-mabi=lp64d" ]
|
||||
} else if (current_cpu == "loong64") {
|
||||
if (is_clang) {
|
||||
- cflags += [ "--target=loongarch64-linux-gnu" ]
|
||||
- ldflags += [ "--target=loongarch64-linux-gnu" ]
|
||||
+ cflags += [ "--target=loongarch64-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=loongarch64-alpine-linux-musl" ]
|
||||
}
|
||||
cflags += [
|
||||
"-mabi=lp64d",
|
||||
@@ -1574,8 +1558,8 @@
|
||||
]
|
||||
} else if (current_cpu == "s390x") {
|
||||
if (is_clang) {
|
||||
- cflags += [ "--target=s390x-unknown-linux-gnu" ]
|
||||
- ldflags += [ "--target=s390x-unknown-linux-gnu" ]
|
||||
+ cflags += [ "--target=s390x-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=s390x-alpine-linux-musl" ]
|
||||
}
|
||||
cflags += [ "-m64" ]
|
||||
ldflags += [ "-m64" ]
|
||||
@@ -2274,7 +2258,7 @@
|
||||
defines = [ "_HAS_NODISCARD" ]
|
||||
}
|
||||
} else {
|
||||
|
|
@ -76,7 +118,7 @@
|
|||
cflags += [ "-Wextra" ]
|
||||
--- ./build/config/rust.gni.orig
|
||||
+++ ./build/config/rust.gni
|
||||
@@ -185,11 +185,11 @@
|
||||
@@ -178,11 +178,11 @@
|
||||
rust_abi_target = ""
|
||||
if (is_linux || is_chromeos) {
|
||||
if (current_cpu == "arm64") {
|
||||
|
|
@ -91,11 +133,15 @@
|
|||
} else if (current_cpu == "arm") {
|
||||
if (arm_float_abi == "hard") {
|
||||
float_suffix = "hf"
|
||||
@@ -198,15 +198,15 @@
|
||||
}
|
||||
if (arm_arch == "armv7-a" || arm_arch == "armv7") {
|
||||
# No way to inform Rust about the -a suffix.
|
||||
- rust_abi_target = "armv7-unknown-linux-gnueabi" + float_suffix
|
||||
@@ -200,25 +200,21 @@
|
||||
# The thumbv7 vs. armv7 distinction is for legacy reasons and both
|
||||
# targets in fact target Thumb, see:
|
||||
# https://github.com/rust-lang/rust/issues/44722
|
||||
- if (arm_use_neon) {
|
||||
- rust_abi_target = "thumbv7neon-unknown-linux-gnueabi" + float_suffix
|
||||
- } else {
|
||||
- rust_abi_target = "armv7-unknown-linux-gnueabi" + float_suffix
|
||||
- }
|
||||
+ rust_abi_target = "armv7-alpine-linux-musleabi" + float_suffix
|
||||
} else {
|
||||
- rust_abi_target = "arm-unknown-linux-gnueabi" + float_suffix
|
||||
|
|
@ -104,6 +150,15 @@
|
|||
} else if (current_cpu == "riscv64") {
|
||||
- rust_abi_target = "riscv64gc-unknown-linux-gnu"
|
||||
+ rust_abi_target = "riscv64-alpine-linux-musl"
|
||||
} else if (current_cpu == "ppc64") {
|
||||
- rust_abi_target = "powerpc64le-unknown-linux-gnu"
|
||||
+ rust_abi_target = "powerpc64le-alpine-linux-musl"
|
||||
} else if (current_cpu == "s390x") {
|
||||
- rust_abi_target = "s390x-unknown-linux-gnu"
|
||||
+ rust_abi_target = "s390x-alpine-linux-musl"
|
||||
} else if (current_cpu == "loong64") {
|
||||
- rust_abi_target = "loongarch64-unknown-linux-gnu"
|
||||
+ rust_abi_target = "loongarch64-alpine-linux-musl"
|
||||
} else {
|
||||
# Best guess for other future platforms.
|
||||
- rust_abi_target = current_cpu + "-unknown-linux-gnu"
|
||||
|
|
@ -113,9 +168,9 @@
|
|||
import("//build/config/android/abi.gni")
|
||||
--- ./build/config/clang/BUILD.gn.orig
|
||||
+++ ./build/config/clang/BUILD.gn
|
||||
@@ -128,14 +128,15 @@
|
||||
} else if (is_apple) {
|
||||
_dir = "darwin"
|
||||
@@ -207,22 +207,23 @@
|
||||
assert(false) # Unhandled cpu type
|
||||
}
|
||||
} else if (is_linux || is_chromeos) {
|
||||
+ _dir = "linux"
|
||||
if (current_cpu == "x64") {
|
||||
|
|
@ -130,6 +185,18 @@
|
|||
} else if (current_cpu == "arm64") {
|
||||
- _dir = "aarch64-unknown-linux-gnu"
|
||||
+ _suffix = "-aarch64"
|
||||
} else if (current_cpu == "loong64") {
|
||||
- _dir = "loongarch64-unknown-linux-gnu"
|
||||
+ _suffix = "-loongarch64"
|
||||
} else if (current_cpu == "riscv64") {
|
||||
- _dir = "riscv64-unknown-linux-gnu"
|
||||
+ _suffix = "-riscv64"
|
||||
} else if (current_cpu == "ppc64") {
|
||||
- _dir = "ppc64le-unknown-linux-gnu"
|
||||
+ _suffix = "-powerpc64le"
|
||||
} else if (current_cpu == "s390x") {
|
||||
- _dir = "s390x-unknown-linux-gnu"
|
||||
+ _suffix = "-s390x"
|
||||
} else {
|
||||
assert(false) # Unhandled cpu type
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ diff --git a/net/dns/BUILD.gn b/net/dns/BUILD.gn
|
|||
index f36bf68..805d9a6 100644
|
||||
--- a/net/dns/BUILD.gn
|
||||
+++ b/net/dns/BUILD.gn
|
||||
@@ -130,8 +130,8 @@ source_set("dns") {
|
||||
@@ -142,8 +142,8 @@
|
||||
]
|
||||
} else if (is_linux) {
|
||||
sources += [
|
||||
|
|
@ -13,3 +13,11 @@ index f36bf68..805d9a6 100644
|
|||
]
|
||||
} else if (is_posix) {
|
||||
sources += [
|
||||
@@ -455,7 +455,6 @@
|
||||
if (is_android) {
|
||||
sources += [ "dns_config_service_android_unittest.cc" ]
|
||||
} else if (is_linux) {
|
||||
- sources += [ "dns_config_service_linux_unittest.cc" ]
|
||||
} else if (is_posix) {
|
||||
sources += [ "dns_config_service_posix_unittest.cc" ]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,86 +2,6 @@ safesprintf emitnull:
|
|||
error: conversion from 'std::nullptr_t' to 'const internal::Arg' is ambiguous
|
||||
const internal::Arg arg_array[] = { args... };
|
||||
|
||||
flatmap incompletetype:
|
||||
error: static assertion failed due to requirement 'std::__is_complete_or_unbounded(std::__type_identity<std::pair<A, A>>{})': template argument must be a complete class or an unbounded array
|
||||
static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
|
||||
|
||||
i18n, time:
|
||||
various icu failures (new icu time formatting? internal api difference?)
|
||||
a ton of these fail:
|
||||
|
||||
Expected equality of these values:
|
||||
u"Monday 16 May – Saturday 28 May"
|
||||
Which is: u"Monday 16 May \x2013 Saturday 28 May"
|
||||
DateIntervalFormat(begin_time, end_time, DATE_FORMAT_MONTH_WEEKDAY_DAY)
|
||||
Which is: u"Monday 16\x2009\x2013\x2009Saturday 28 May"
|
||||
|
||||
../../base/i18n/time_formatting_unittest.cc:84: Failure
|
||||
Expected equality of these values:
|
||||
clock12h_pm
|
||||
Which is: u"3:42 PM"
|
||||
TimeFormatTimeOfDay(time)
|
||||
Which is: u"3:42\x202FPM"
|
||||
|
||||
.. and so on
|
||||
|
||||
fileutiltest filetofile:
|
||||
../../base/files/file_util_unittest.cc:2692: Failure
|
||||
Value of: stream
|
||||
Actual: true
|
||||
Expected: false
|
||||
|
||||
stacktracetest: crashes (this doesn't seem to use execinfo so probably relies on glibc internal layout for tracing here)
|
||||
|
||||
platformthreadtest canchangethreadtype:
|
||||
../../base/threading/platform_thread_unittest.cc:445: Failure
|
||||
Expected equality of these values:
|
||||
PlatformThread::CanChangeThreadType(ThreadType::kBackground, ThreadType::kResourceEfficient)
|
||||
Which is: true
|
||||
kCanIncreasePriority
|
||||
Which is: false
|
||||
|
||||
scopedfdownershiptrackingtest crashonunownedclose: fails due to scoped-file-no-close.patch
|
||||
|
||||
stackcontainer customallocator:
|
||||
../../base/containers/stack_container_unittest.cc:211: Failure
|
||||
Expected equality of these values:
|
||||
1
|
||||
Allocator::deallocated
|
||||
Which is: 0
|
||||
|
||||
nativelibrarytest loadlibrarypreferownsymbols: crashes (probably musl dlopen does not play nice here)
|
||||
|
||||
spantest empty: crashes (this looks fishy)
|
||||
|
||||
readelfbuildid: crashes (this looks like glibc dynamic linker semantics)
|
||||
|
||||
nss db unittest: various nss failures: e.g.:
|
||||
../../net/cert/nss_cert_database_unittest.cc:209: Failure
|
||||
Expected equality of these values:
|
||||
OK
|
||||
Which is: 0
|
||||
cert_db_->ImportFromPKCS12(GetPublicSlot(), pkcs12_data, u"12345", true, nullptr)
|
||||
Which is: -702
|
||||
|
||||
processutiltest cloneflags: fails in CI (ulimit? too many threads?)
|
||||
../../base/process/process_util_unittest.cc:1434: Failure
|
||||
Value of: process.IsValid()
|
||||
Actual: false
|
||||
Expected: true
|
||||
|
||||
addresstrackerlinuxnetlinktest:
|
||||
../../net/base/address_tracker_linux_unittest.cc:886: Failure
|
||||
Value of: child.process.IsValid()
|
||||
Actual: false
|
||||
Expected: true
|
||||
|
||||
ToAddressDoesNotDereference: ; Expected `get_for_extraction_cnt` to be 1 but got 0;
|
||||
|
||||
DataCapturedManyThreads: flaky
|
||||
|
||||
ProcessAlternativeServicesTest.Process*: crashed ?
|
||||
|
||||
--- a/base/strings/safe_sprintf_unittest.cc
|
||||
+++ b/base/strings/safe_sprintf_unittest.cc
|
||||
@@ -740,6 +740,7 @@
|
||||
|
|
@ -100,244 +20,3 @@ ProcessAlternativeServicesTest.Process*: crashed ?
|
|||
|
||||
TEST(SafeSPrintfTest, PointerSize) {
|
||||
// The internal data representation is a 64bit value, independent of the
|
||||
--- a/base/containers/flat_map_unittest.cc
|
||||
+++ b/base/containers/flat_map_unittest.cc
|
||||
@@ -52,6 +52,7 @@
|
||||
|
||||
} // namespace
|
||||
|
||||
+#if 0
|
||||
TEST(FlatMap, IncompleteType) {
|
||||
struct A {
|
||||
using Map = flat_map<A, A>;
|
||||
@@ -65,6 +66,7 @@
|
||||
|
||||
A a;
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(FlatMap, RangeConstructor) {
|
||||
flat_map<int, int>::value_type input_vals[] = {
|
||||
--- a/base/BUILD.gn
|
||||
+++ b/base/BUILD.gn
|
||||
@@ -3194,21 +3194,6 @@
|
||||
"hash/md5_constexpr_unittest.cc",
|
||||
"hash/md5_unittest.cc",
|
||||
"hash/sha1_unittest.cc",
|
||||
- "i18n/break_iterator_unittest.cc",
|
||||
- "i18n/case_conversion_unittest.cc",
|
||||
- "i18n/char_iterator_unittest.cc",
|
||||
- "i18n/character_encoding_unittest.cc",
|
||||
- "i18n/file_util_icu_unittest.cc",
|
||||
- "i18n/icu_string_conversions_unittest.cc",
|
||||
- "i18n/icu_util_unittest.cc",
|
||||
- "i18n/message_formatter_unittest.cc",
|
||||
- "i18n/number_formatting_unittest.cc",
|
||||
- "i18n/rtl_unittest.cc",
|
||||
- "i18n/streaming_utf8_validator_unittest.cc",
|
||||
- "i18n/string_search_unittest.cc",
|
||||
- "i18n/time_formatting_unittest.cc",
|
||||
- "i18n/timezone_unittest.cc",
|
||||
- "i18n/transliterator_unittest.cc",
|
||||
"immediate_crash_unittest.cc",
|
||||
"json/json_parser_unittest.cc",
|
||||
"json/json_reader_unittest.cc",
|
||||
--- a/base/files/file_util_unittest.cc
|
||||
+++ b/base/files/file_util_unittest.cc
|
||||
@@ -2686,6 +2686,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST_F(FileUtilTest, FileToFILE) {
|
||||
File file;
|
||||
FILE* stream = FileToFILE(std::move(file), "w");
|
||||
@@ -2700,6 +2701,7 @@
|
||||
EXPECT_FALSE(file.IsValid());
|
||||
EXPECT_TRUE(CloseFile(stream));
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST_F(FileUtilTest, FILEToFile) {
|
||||
ScopedFILE stream;
|
||||
--- a/base/threading/platform_thread_unittest.cc
|
||||
+++ b/base/threading/platform_thread_unittest.cc
|
||||
@@ -416,6 +416,7 @@
|
||||
// platforms for all priorities. This not being the case. This test documents
|
||||
// and hardcodes what we know. Please inform scheduler-dev@chromium.org if this
|
||||
// proprerty changes for a given platform.
|
||||
+#if 0
|
||||
TEST(PlatformThreadTest, CanChangeThreadType) {
|
||||
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
|
||||
// On Ubuntu, RLIMIT_NICE and RLIMIT_RTPRIO are 0 by default, so we won't be
|
||||
@@ -472,6 +473,7 @@
|
||||
ThreadType::kBackground));
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(PlatformThreadTest, SetCurrentThreadTypeTest) {
|
||||
TestPriorityResultingFromThreadType(ThreadType::kBackground,
|
||||
--- a/base/files/scoped_file_linux_unittest.cc
|
||||
+++ b/base/files/scoped_file_linux_unittest.cc
|
||||
@@ -42,11 +42,13 @@
|
||||
EXPECT_DEATH(ScopedFD(fd.get()), "");
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST_F(ScopedFDOwnershipTrackingTest, CrashOnUnownedClose) {
|
||||
ScopedFD fd = OpenFD();
|
||||
subtle::EnableFDOwnershipEnforcement(true);
|
||||
EXPECT_DEATH(close(fd.get()), "");
|
||||
}
|
||||
+#endif
|
||||
|
||||
#endif // defined(GTEST_HAS_DEATH_TEST)
|
||||
|
||||
--- a/base/native_library_unittest.cc
|
||||
+++ b/base/native_library_unittest.cc
|
||||
@@ -139,6 +139,7 @@
|
||||
// Verifies that the |prefer_own_symbols| option satisfies its guarantee that
|
||||
// a loaded library will always prefer local symbol resolution before
|
||||
// considering global symbols.
|
||||
+#if 0
|
||||
TEST(NativeLibraryTest, LoadLibraryPreferOwnSymbols) {
|
||||
NativeLibraryOptions options;
|
||||
options.prefer_own_symbols = true;
|
||||
@@ -171,6 +172,7 @@
|
||||
EXPECT_EQ(2, NativeLibraryTestIncrement());
|
||||
EXPECT_EQ(3, NativeLibraryTestIncrement());
|
||||
}
|
||||
+#endif
|
||||
|
||||
#endif // !BUILDFLAG(IS_ANDROID) && !defined(THREAD_SANITIZER) && \
|
||||
// !defined(MEMORY_SANITIZER)
|
||||
--- a/base/containers/span_unittest.cc
|
||||
+++ b/base/containers/span_unittest.cc
|
||||
@@ -995,6 +995,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST(SpanTest, Empty) {
|
||||
{
|
||||
span<int> span;
|
||||
@@ -1014,6 +1015,7 @@
|
||||
EXPECT_TRUE(span_of_checked_iterators.empty());
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(SpanTest, OperatorAt) {
|
||||
static constexpr int kArray[] = {1, 6, 1, 8, 0};
|
||||
--- a/base/debug/elf_reader_unittest.cc
|
||||
+++ b/base/debug/elf_reader_unittest.cc
|
||||
@@ -194,6 +194,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST(ElfReaderTestWithCurrentImage, ReadElfBuildId) {
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// On Android the library loader memory maps the full so file.
|
||||
@@ -229,6 +230,7 @@
|
||||
UnloadNativeLibrary(library);
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
} // namespace debug
|
||||
} // namespace base
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -4826,7 +4826,6 @@
|
||||
sources += [
|
||||
"cert/internal/system_trust_store_nss_unittest.cc",
|
||||
"cert/internal/trust_store_nss_unittest.cc",
|
||||
- "cert/nss_cert_database_unittest.cc",
|
||||
"cert/x509_util_nss_unittest.cc",
|
||||
]
|
||||
if (!is_castos) {
|
||||
--- a/base/process/process_util_unittest.cc
|
||||
+++ b/base/process/process_util_unittest.cc
|
||||
@@ -1419,7 +1419,7 @@
|
||||
return kSuccess;
|
||||
}
|
||||
|
||||
-#if defined(CLONE_NEWUSER) && defined(CLONE_NEWPID)
|
||||
+#if 0 && defined(CLONE_NEWUSER) && defined(CLONE_NEWPID)
|
||||
TEST_F(ProcessUtilTest, CloneFlags) {
|
||||
if (!PathExists(FilePath("/proc/self/ns/user")) ||
|
||||
!PathExists(FilePath("/proc/self/ns/pid"))) {
|
||||
--- a/net/base/address_tracker_linux_unittest.cc
|
||||
+++ b/net/base/address_tracker_linux_unittest.cc
|
||||
@@ -831,6 +831,7 @@
|
||||
//
|
||||
// This test creates multiple concurrent `AddressTrackerLinux` instances in
|
||||
// separate processes, each in their own PID namespaces.
|
||||
+#if 0
|
||||
TEST(AddressTrackerLinuxNetlinkTest, TestInitializeTwoTrackersInPidNamespaces) {
|
||||
// This test initializes `kNumChildren` instances of `AddressTrackerLinux` in
|
||||
// tracking mode, each in their own child process running in a PID namespace.
|
||||
@@ -901,6 +902,7 @@
|
||||
ASSERT_EQ(exit_code, 0);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
MULTIPROCESS_TEST_MAIN(ChildProcessInitializeTrackerForTesting) {
|
||||
base::test::TaskEnvironment task_env(
|
||||
--- a/base/trace_event/trace_event_unittest.cc
|
||||
+++ b/base/trace_event/trace_event_unittest.cc
|
||||
@@ -1368,6 +1368,7 @@
|
||||
}
|
||||
|
||||
// Test that data sent from multiple threads is gathered
|
||||
+#if 0
|
||||
TEST_F(TraceEventTestFixture, DataCapturedManyThreads) {
|
||||
BeginTrace();
|
||||
|
||||
@@ -1408,6 +1409,7 @@
|
||||
delete task_complete_events[i];
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
// Test that thread and process names show up in the trace.
|
||||
// In SDK build, thread names are not tracked inside //base. Instead, there's
|
||||
--- a/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc
|
||||
+++ b/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc
|
||||
@@ -1481,6 +1481,7 @@
|
||||
// `base::to_address()` will use the dereference operator. This is not
|
||||
// what we want; this test enforces extraction semantics for
|
||||
// `to_address()`.
|
||||
+#if 0
|
||||
TEST_F(RawPtrTest, ToAddressDoesNotDereference) {
|
||||
CountingRawPtr<int> ptr = nullptr;
|
||||
int* raw = base::to_address(ptr);
|
||||
@@ -1492,6 +1493,7 @@
|
||||
.get_for_duplication_cnt = 0}),
|
||||
CountersMatch());
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST_F(RawPtrTest, ToAddressGivesBackRawAddress) {
|
||||
int* raw = nullptr;
|
||||
--- a/net/http/http_stream_factory_unittest.cc
|
||||
+++ b/net/http/http_stream_factory_unittest.cc
|
||||
@@ -3477,6 +3477,7 @@
|
||||
DefaultCTPolicyEnforcer ct_policy_enforcer_;
|
||||
};
|
||||
|
||||
+#if 0
|
||||
TEST_F(ProcessAlternativeServicesTest, ProcessEmptyAltSvc) {
|
||||
session_ =
|
||||
std::make_unique<HttpNetworkSession>(session_params_, session_context_);
|
||||
@@ -3585,6 +3586,7 @@
|
||||
alternatives[0].host_port_pair());
|
||||
EXPECT_EQ(0u, alternatives[0].advertised_versions().size());
|
||||
}
|
||||
+#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
|
|
|
|||
127
backports/electron/electron_do-not-strip-binaries.patch
Normal file
127
backports/electron/electron_do-not-strip-binaries.patch
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
diff --git a/electron/BUILD.gn.orig b/electron/BUILD.gn
|
||||
index b08f434..4062428 100644
|
||||
--- a/electron/BUILD.gn.orig
|
||||
+++ b/electron/BUILD.gn
|
||||
@@ -44,7 +44,6 @@ if (is_mac) {
|
||||
|
||||
if (is_linux) {
|
||||
import("//build/config/linux/pkg_config.gni")
|
||||
- import("//electron/build/linux/strip_binary.gni")
|
||||
import("//tools/generate_stubs/rules.gni")
|
||||
|
||||
pkg_config("gio_unix") {
|
||||
@@ -1424,18 +1423,6 @@ dist_zip("electron_dist_zip") {
|
||||
":licenses",
|
||||
]
|
||||
if (is_linux) {
|
||||
- if (is_official_build) {
|
||||
- data_deps += [
|
||||
- ":strip_chrome_crashpad_handler",
|
||||
- ":strip_chrome_sandbox",
|
||||
- ":strip_electron_binary",
|
||||
- ":strip_libEGL_shlib",
|
||||
- ":strip_libGLESv2_shlib",
|
||||
- ":strip_libffmpeg_shlib",
|
||||
- ":strip_libvk_swiftshader_shlib",
|
||||
- ]
|
||||
- }
|
||||
-
|
||||
data_deps += [ "//sandbox/linux:chrome_sandbox" ]
|
||||
}
|
||||
deps = data_deps
|
||||
@@ -1481,16 +1468,6 @@ group("electron_mksnapshot") {
|
||||
|
||||
dist_zip("electron_mksnapshot_zip") {
|
||||
data_deps = mksnapshot_deps
|
||||
- if (is_linux && is_official_build) {
|
||||
- data_deps += [
|
||||
- ":strip_libEGL_shlib",
|
||||
- ":strip_libGLESv2_shlib",
|
||||
- ":strip_libffmpeg_shlib",
|
||||
- ":strip_libvk_swiftshader_shlib",
|
||||
- ":strip_mksnapshot_binary",
|
||||
- ":strip_v8_context_snapshot_generator_binary",
|
||||
- ]
|
||||
- }
|
||||
deps = data_deps
|
||||
outputs = [ "$root_build_dir/mksnapshot.zip" ]
|
||||
}
|
||||
@@ -1637,78 +1614,3 @@ group("release_build") {
|
||||
]
|
||||
}
|
||||
}
|
||||
-
|
||||
-if (is_linux && is_official_build) {
|
||||
- strip_binary("strip_electron_binary") {
|
||||
- binary_input = "$root_out_dir/$electron_project_name"
|
||||
- symbol_output = "$root_out_dir/debug/$electron_project_name.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ ":electron_app" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_chrome_crashpad_handler") {
|
||||
- binary_input = "$root_out_dir/chrome_crashpad_handler"
|
||||
- symbol_output = "$root_out_dir/debug/chrome_crashpad_handler.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ "//components/crash/core/app:chrome_crashpad_handler" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_chrome_sandbox") {
|
||||
- binary_input = "$root_out_dir/chrome_sandbox"
|
||||
- symbol_output = "$root_out_dir/debug/chrome-sandbox.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ "//sandbox/linux:chrome_sandbox" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_libEGL_shlib") {
|
||||
- binary_input = "$root_out_dir/libEGL.so"
|
||||
- symbol_output = "$root_out_dir/debug/libEGL.so.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ "//third_party/angle:libEGL" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_libGLESv2_shlib") {
|
||||
- binary_input = "$root_out_dir/libGLESv2.so"
|
||||
- symbol_output = "$root_out_dir/debug/libGLESv2.so.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ "//third_party/angle:libGLESv2" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_libffmpeg_shlib") {
|
||||
- binary_input = "$root_out_dir/libffmpeg.so"
|
||||
- symbol_output = "$root_out_dir/debug/libffmpeg.so.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ "//third_party/ffmpeg" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_libvk_swiftshader_shlib") {
|
||||
- binary_input = "$root_out_dir/libvk_swiftshader.so"
|
||||
- symbol_output = "$root_out_dir/debug/libvk_swiftshader.so.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = [ "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan" ]
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_mksnapshot_binary") {
|
||||
- _binary_path = rebase_path(
|
||||
- get_label_info(
|
||||
- ":v8_context_snapshot_generator($v8_snapshot_toolchain)",
|
||||
- "root_out_dir") + "/mksnapshot",
|
||||
- root_build_dir)
|
||||
- binary_input = "$root_out_dir/$_binary_path"
|
||||
- symbol_output = "$root_out_dir/debug/${_binary_path}.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = mksnapshot_deps
|
||||
- }
|
||||
-
|
||||
- strip_binary("strip_v8_context_snapshot_generator_binary") {
|
||||
- _binary_path = rebase_path(
|
||||
- get_label_info(
|
||||
- ":v8_context_snapshot_generator($v8_snapshot_toolchain)",
|
||||
- "root_out_dir") + "/v8_context_snapshot_generator",
|
||||
- root_build_dir)
|
||||
- binary_input = "$root_out_dir/$_binary_path"
|
||||
- symbol_output = "$root_out_dir/debug/${_binary_path}.debug"
|
||||
- compress_debug_sections = true
|
||||
- deps = mksnapshot_deps
|
||||
- }
|
||||
-}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
diff --git a/./electron/shell/browser/ui/file_dialog.h.orig b/./electron/shell/browser/ui/file_dialog.h
|
||||
index 6cdfc7b..f7757da 100644
|
||||
--- a/./electron/shell/browser/ui/file_dialog.h.orig
|
||||
+++ b/./electron/shell/browser/ui/file_dialog.h
|
||||
@@ -13,10 +13,6 @@
|
||||
#include "base/files/file_path.h"
|
||||
#include "base/memory/raw_ptr_exclusion.h"
|
||||
|
||||
-#if BUILDFLAG(IS_LINUX)
|
||||
-#include <bits/stdint-uintn.h>
|
||||
-#endif
|
||||
-
|
||||
namespace electron {
|
||||
class NativeWindow;
|
||||
}
|
||||
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
--- ./electron/BUILD.gn.orig
|
||||
+++ ./electron/BUILD.gn
|
||||
@@ -1565,7 +1565,6 @@
|
||||
public_deps = header_groups + [
|
||||
":node_gypi_headers",
|
||||
":node_version_header",
|
||||
- ":zlib_headers",
|
||||
]
|
||||
diff --git a/electron/BUILD.gn.orig b/electron/BUILD.gn
|
||||
index 235c7abd3e8..088c24ac45e 100644
|
||||
--- a/electron/BUILD.gn.orig
|
||||
+++ b/electron/BUILD.gn
|
||||
@@ -1569,7 +1569,6 @@ group("copy_node_headers") {
|
||||
":generate_node_headers",
|
||||
":node_gypi_headers",
|
||||
":node_version_header",
|
||||
- ":zlib_headers",
|
||||
]
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,69 +1,143 @@
|
|||
--- ./third_party/electron_node/BUILD.gn.orig
|
||||
+++ ./third_party/electron_node/BUILD.gn
|
||||
@@ -40,6 +40,8 @@
|
||||
node_release_urlbase = ""
|
||||
|
||||
# Allows downstream packagers (eg. Linux distributions) to build Electron against system shared libraries.
|
||||
+ use_system_ada = false
|
||||
+ use_system_base64 = false
|
||||
use_system_cares = false
|
||||
use_system_nghttp2 = false
|
||||
use_system_llhttp = false
|
||||
@@ -48,6 +50,16 @@
|
||||
|
||||
if (is_linux) {
|
||||
import("//build/config/linux/pkg_config.gni")
|
||||
+ if (use_system_ada) {
|
||||
+ config("ada") {
|
||||
+ libs = [ "ada" ]
|
||||
+ }
|
||||
+ }
|
||||
+ if (use_system_base64) {
|
||||
+ pkg_config("base64") {
|
||||
+ packages = [ "base64" ]
|
||||
+ }
|
||||
+ }
|
||||
if (use_system_cares) {
|
||||
pkg_config("cares") {
|
||||
packages = [ "libcares" ]
|
||||
@@ -258,8 +270,6 @@
|
||||
deps = [
|
||||
":node_js2c_exec",
|
||||
"deps/googletest:gtest",
|
||||
- "deps/ada",
|
||||
- "deps/base64",
|
||||
"deps/simdutf",
|
||||
"deps/uvwasi",
|
||||
"//third_party/zlib",
|
||||
@@ -267,6 +277,16 @@
|
||||
"//third_party/brotli:enc",
|
||||
"//v8:v8_libplatform",
|
||||
]
|
||||
+ if (use_system_ada) {
|
||||
+ configs += [ ":ada" ]
|
||||
+ } else {
|
||||
+ deps += [ "deps/ada" ]
|
||||
+ }
|
||||
+ if (use_system_base64) {
|
||||
+ configs += [ ":base64" ]
|
||||
+ } else {
|
||||
+ deps += [ "deps/base64" ]
|
||||
+ }
|
||||
if (use_system_cares) {
|
||||
configs += [ ":cares" ]
|
||||
} else {
|
||||
diff --git a/./electron/script/generate-config-gypi.py.orig b/./electron/script/generate-config-gypi.py
|
||||
index b41cd7eb450..bc4098debb5 100755
|
||||
--- a/./electron/script/generate-config-gypi.py.orig
|
||||
+++ b/./electron/script/generate-config-gypi.py
|
||||
@@ -62,6 +62,11 @@ def main(target_file, target_cpu):
|
||||
# Used by certain versions of node-gyp.
|
||||
v['build_v8_with_gn'] = 'false'
|
||||
|
||||
diff --git a/electron/script/generate-config-gypi.py.orig b/electron/script/generate-config-gypi.py
|
||||
index 58c973b..c215d90 100755
|
||||
--- a/electron/script/generate-config-gypi.py.orig
|
||||
+++ b/electron/script/generate-config-gypi.py
|
||||
@@ -64,6 +64,11 @@ def main(target_file, target_cpu):
|
||||
# in common.gypi
|
||||
if 'clang' in v:
|
||||
del v['clang']
|
||||
+
|
||||
+ with open(os.path.join(NODE_DIR, 'use_system.txt')) as f:
|
||||
+ for dep in f.read().strip().split(' '):
|
||||
+ if v.get(f'node_shared_{dep}') is not None:
|
||||
+ v[f'node_shared_{dep}'] = 'true'
|
||||
+
|
||||
|
||||
with open(target_file, 'w+', encoding='utf-8') as file_out:
|
||||
file_out.write(pprint.pformat(config, indent=2))
|
||||
|
||||
diff --git a/third_party/electron_node/node.gni.orig b/third_party/electron_node/node.gni
|
||||
index 73bf383..1c80d5a 100644
|
||||
--- a/third_party/electron_node/node.gni.orig
|
||||
+++ b/third_party/electron_node/node.gni
|
||||
@@ -73,6 +73,7 @@ declare_args() {
|
||||
node_use_amaro = true
|
||||
|
||||
# Allows downstream packagers (eg. Linux distributions) to build against system shared libraries.
|
||||
+ use_system_ada = false
|
||||
use_system_cares = false
|
||||
use_system_nghttp2 = false
|
||||
use_system_llhttp = false
|
||||
diff --git a/third_party/electron_node/unofficial.gni.orig b/third_party/electron_node/unofficial.gni
|
||||
index d61a9bd..8bf990e 100644
|
||||
--- a/third_party/electron_node/unofficial.gni.orig
|
||||
+++ b/third_party/electron_node/unofficial.gni
|
||||
@@ -143,7 +143,6 @@ template("node_gn_build") {
|
||||
"deps/googletest:googletest_config",
|
||||
]
|
||||
public_deps = [
|
||||
- "deps/ada",
|
||||
"deps/uv",
|
||||
"//electron:electron_js2c",
|
||||
"deps/simdjson",
|
||||
@@ -151,10 +150,7 @@ template("node_gn_build") {
|
||||
]
|
||||
deps = [
|
||||
":run_node_js2c",
|
||||
- "deps/cares",
|
||||
- "deps/histogram",
|
||||
"deps/nbytes",
|
||||
- "deps/nghttp2",
|
||||
"deps/postject",
|
||||
"deps/sqlite",
|
||||
"deps/uvwasi",
|
||||
@@ -182,12 +178,30 @@ template("node_gn_build") {
|
||||
if (is_posix) {
|
||||
configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
|
||||
configs += [ "//build/config/gcc:symbol_visibility_default" ]
|
||||
+ libs = []
|
||||
+ include_dirs = []
|
||||
}
|
||||
if (use_system_llhttp) {
|
||||
libs += [ "llhttp" ]
|
||||
} else {
|
||||
deps += [ "deps/llhttp" ]
|
||||
}
|
||||
+ if (use_system_cares) {
|
||||
+ libs += [ "cares" ]
|
||||
+ } else {
|
||||
+ deps += [ "deps/cares" ]
|
||||
+ }
|
||||
+ if (use_system_nghttp2) {
|
||||
+ libs += [ "nghttp2" ]
|
||||
+ } else {
|
||||
+ deps += [ "deps/nghttp2" ]
|
||||
+ }
|
||||
+ if (use_system_ada) {
|
||||
+ libs += [ "ada" ]
|
||||
+ include_dirs += [ "/usr/include/ada" ]
|
||||
+ } else {
|
||||
+ public_deps += [ "deps/ada" ]
|
||||
+ }
|
||||
if (use_system_histogram) {
|
||||
libs += [ "hdr_histogram" ]
|
||||
include_dirs += [ "/usr/include/hdr" ]
|
||||
@@ -208,7 +222,7 @@ template("node_gn_build") {
|
||||
"src/inspector:node_protocol_generated_sources",
|
||||
"src/inspector:v8_inspector_compress_protocol_json",
|
||||
]
|
||||
- include_dirs = [
|
||||
+ include_dirs += [
|
||||
"$target_gen_dir/src",
|
||||
"$target_gen_dir/src/inspector",
|
||||
"$node_inspector_protocol_path",
|
||||
@@ -222,17 +236,18 @@ template("node_gn_build") {
|
||||
sources += node_inspector.node_inspector_sources +
|
||||
node_inspector.node_inspector_generated_sources
|
||||
}
|
||||
- if (is_linux) {
|
||||
- import("//build/config/linux/pkg_config.gni")
|
||||
- if (use_system_cares) {
|
||||
- pkg_config("cares") {
|
||||
- packages = [ "libcares" ]
|
||||
- }
|
||||
- }
|
||||
- if (use_system_nghttp2) {
|
||||
- pkg_config("nghttp2") {
|
||||
- packages = [ "libnghttp2" ]
|
||||
- }
|
||||
+ }
|
||||
+
|
||||
+ if (is_linux) {
|
||||
+ import("//build/config/linux/pkg_config.gni")
|
||||
+ if (use_system_cares) {
|
||||
+ pkg_config("cares") {
|
||||
+ packages = [ "libcares" ]
|
||||
+ }
|
||||
+ }
|
||||
+ if (use_system_nghttp2) {
|
||||
+ pkg_config("nghttp2") {
|
||||
+ packages = [ "libnghttp2" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/third_party/electron_node/unofficial.gni.orig b/third_party/electron_node/unofficial.gni
|
||||
index 6bcc40b..7e383b2 100644
|
||||
--- a/third_party/electron_node/unofficial.gni.orig
|
||||
+++ b/third_party/electron_node/unofficial.gni
|
||||
@@ -142,7 +142,6 @@ template("node_gn_build") {
|
||||
public_configs = [
|
||||
":node_external_config",
|
||||
"deps/googletest:googletest_config",
|
||||
- ":zstd_include_config"
|
||||
]
|
||||
public_deps = [
|
||||
"deps/ada",
|
||||
@@ -163,8 +162,6 @@ template("node_gn_build") {
|
||||
"//third_party/zlib",
|
||||
"//third_party/brotli:dec",
|
||||
"//third_party/brotli:enc",
|
||||
- "//third_party/zstd:decompress",
|
||||
- "//third_party/zstd:headers",
|
||||
"$node_simdutf_path",
|
||||
"$node_v8_path:v8_libplatform",
|
||||
]
|
||||
|
|
|
|||
17
backports/electron/electron_use-system-yarn.patch
Normal file
17
backports/electron/electron_use-system-yarn.patch
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
diff --git a/electron/.yarnrc.yml.orig b/electron/.yarnrc.yml
|
||||
index ca0a580..a388ff9 100644
|
||||
--- a/electron/.yarnrc.yml.orig
|
||||
+++ b/electron/.yarnrc.yml
|
||||
@@ -1,12 +1,3 @@
|
||||
enableScripts: false
|
||||
|
||||
-nmHoistingLimits: workspaces
|
||||
-
|
||||
nodeLinker: node-modules
|
||||
-
|
||||
-npmMinimalAgeGate: 10080
|
||||
-
|
||||
-npmPreapprovedPackages:
|
||||
- - "@electron/*"
|
||||
-
|
||||
-yarnPath: .yarn/releases/yarn-4.12.0.cjs
|
||||
|
|
@ -1,12 +1,10 @@
|
|||
instead of hardcoding the version, use the defined macro.
|
||||
--
|
||||
--- a/third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc
|
||||
+++ b/third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc
|
||||
--- ./third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc.orig
|
||||
+++ ./third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc
|
||||
@@ -56,7 +56,7 @@
|
||||
FcFini();
|
||||
|
||||
// Check existence of intended fontconfig cache file.
|
||||
- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-9";
|
||||
- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-11";
|
||||
+ auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-" + FC_CACHE_VERSION;
|
||||
bool cache_exists = access(cache.c_str(), F_OK) == 0;
|
||||
return !cache_exists;
|
||||
|
|
|
|||
13
backports/electron/fix-ffmpeg-codec-list.patch
Normal file
13
backports/electron/fix-ffmpeg-codec-list.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
--- a/media/ffmpeg/ffmpeg_common.cc
|
||||
+++ b/media/ffmpeg/ffmpeg_common.cc
|
||||
@@ -1046,8 +1046,8 @@
|
||||
|
||||
// This should match the configured lists in //third_party/ffmpeg.
|
||||
static constexpr std::string_view kAllowedAudioCodecs =
|
||||
- "vorbis,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,"
|
||||
- "mp3,pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw" EXTRA_CODECS;
|
||||
+ "vorbis,opus,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,"
|
||||
+ "mp3float,mp3,pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw" EXTRA_CODECS;
|
||||
#undef EXTRA_CODECS
|
||||
|
||||
return kAllowedAudioCodecs.data();
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
--- a/media/filters/ffmpeg_glue.cc
|
||||
+++ b/media/filters/ffmpeg_glue.cc
|
||||
@@ -142,7 +142,7 @@ const char* FFmpegGlue::GetAllowedAudioDecoders() {
|
||||
static const base::NoDestructor<std::string> kAllowedAudioCodecs([]() {
|
||||
// This should match the configured lists in //third_party/ffmpeg.
|
||||
std::string allowed_decoders(
|
||||
- "vorbis,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,"
|
||||
+ "vorbis,opus,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,"
|
||||
"mp3,pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw");
|
||||
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
|
||||
allowed_decoders += ",aac";
|
||||
|
||||
27
backports/electron/headless-shell-no-license.patch
Normal file
27
backports/electron/headless-shell-no-license.patch
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
From 6f4685cff1ab8c68de98c0731bb8afaf8a05a723 Mon Sep 17 00:00:00 2001
|
||||
From: knuxify <knuxify@gmail.com>
|
||||
Date: Sat, 5 Apr 2025 14:10:37 +0200
|
||||
Subject: [PATCH] Do not generate license file for headless-shell build
|
||||
|
||||
---
|
||||
headless/BUILD.gn | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/headless/BUILD.gn b/headless/BUILD.gn
|
||||
index 798bb22..9d83f49 100644
|
||||
--- a/headless/BUILD.gn
|
||||
+++ b/headless/BUILD.gn
|
||||
@@ -934,10 +934,6 @@ executable("headless_shell") {
|
||||
|
||||
deps = [ ":headless_shell_lib" ]
|
||||
|
||||
- if (proprietary_codecs) {
|
||||
- deps += [ ":generate_headless_shell_license_file" ]
|
||||
- }
|
||||
-
|
||||
if (!headless_use_embedded_resources) {
|
||||
data = [
|
||||
"$root_out_dir/headless_lib_data.pak",
|
||||
--
|
||||
2.49.0
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- ./v8/src/base/cpu.cc.orig
|
||||
+++ ./v8/src/base/cpu.cc
|
||||
@@ -14,7 +14,7 @@
|
||||
#if V8_OS_LINUX
|
||||
#include <linux/auxvec.h> // AT_HWCAP
|
||||
#endif
|
||||
-#if V8_GLIBC_PREREQ(2, 16) || V8_OS_ANDROID
|
||||
+#if 1
|
||||
#include <sys/auxv.h> // getauxval()
|
||||
#endif
|
||||
#if V8_OS_QNX
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
use monotonic clock for pthread_cond_timedwait with musl too, since it supports
|
||||
it
|
||||
--
|
||||
--- a/v8/src/base/platform/condition-variable.cc
|
||||
+++ b/v8/src/base/platform/condition-variable.cc
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
ConditionVariable::ConditionVariable() {
|
||||
#if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
|
||||
- (V8_OS_LINUX && V8_LIBC_GLIBC))
|
||||
+ V8_OS_LINUX)
|
||||
// On Free/Net/OpenBSD and Linux with glibc we can change the time
|
||||
// source for pthread_cond_timedwait() to use the monotonic clock.
|
||||
pthread_condattr_t attr;
|
||||
@@ -92,7 +92,7 @@
|
||||
&native_handle_, &mutex->native_handle(), &ts);
|
||||
#else
|
||||
#if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
|
||||
- (V8_OS_LINUX && V8_LIBC_GLIBC))
|
||||
+ V8_OS_LINUX)
|
||||
// On Free/Net/OpenBSD and Linux with glibc we can change the time
|
||||
// source for pthread_cond_timedwait() to use the monotonic clock.
|
||||
result = clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
22
backports/electron/net-test-no-vpython.patch
Normal file
22
backports/electron/net-test-no-vpython.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
From 4b41417068045f11db9e7edead1447e93adb9073 Mon Sep 17 00:00:00 2001
|
||||
From: LN Liberda <lauren@selfisekai.rocks>
|
||||
Date: Sat, 28 Jun 2025 18:13:59 +0200
|
||||
Subject: [PATCH] Test net without vendored python
|
||||
|
||||
---
|
||||
net/test/python_utils.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/test/python_utils.cc b/net/test/python_utils.cc
|
||||
index 2cdc07dad9948..0b2d42a5bf126 100644
|
||||
--- a/net/test/python_utils.cc
|
||||
+++ b/net/test/python_utils.cc
|
||||
@@ -47,7 +47,7 @@ bool GetPython3Command(base::CommandLine* python_cmd) {
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("vpython3.bat")));
|
||||
#else
|
||||
- python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("vpython3")));
|
||||
+ python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("python3")));
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
39
backports/electron/net-test-pyws3-py3.12.patch
Normal file
39
backports/electron/net-test-pyws3-py3.12.patch
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
ssl.wrap_socket() was removed in Python 3.12, needed for net_unittests.
|
||||
Patch-Source: https://github.com/GoogleChromeLabs/pywebsocket3/pull/39
|
||||
Modified (changed path) -lnl
|
||||
|
||||
From bc50ae9d451ca705edd6101d987b839e1a09d45e Mon Sep 17 00:00:00 2001
|
||||
From: Sven Diederichs <22592421+zaurask@users.noreply.github.com>
|
||||
Date: Thu, 28 Mar 2024 18:55:28 +0100
|
||||
Subject: [PATCH] use ssl.SSLContext.wrap_socket rather than the deprecated
|
||||
ssl.wrap_socket
|
||||
|
||||
---
|
||||
pywebsocket3/websocket_server.py | 14 ++++++++------
|
||||
1 file changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py b/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py
|
||||
index e7485ec..93ad6f1 100644
|
||||
--- a/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py
|
||||
+++ b/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py
|
||||
@@ -157,12 +157,14 @@ class WebSocketServer(socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
||||
client_cert_ = ssl.CERT_REQUIRED
|
||||
else:
|
||||
client_cert_ = ssl.CERT_NONE
|
||||
- socket_ = ssl.wrap_socket(
|
||||
- socket_,
|
||||
- keyfile=server_options.private_key,
|
||||
- certfile=server_options.certificate,
|
||||
- ca_certs=server_options.tls_client_ca,
|
||||
- cert_reqs=client_cert_)
|
||||
+
|
||||
+ ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
||||
+ if server_options.certificate:
|
||||
+ ssl_context.load_cert_chain(certfile=server_options.certificate, keyfile=server_options.private_key)
|
||||
+ if server_options.tls_client_ca:
|
||||
+ ssl_context.load_verify_locations(server_options.tls_client_ca)
|
||||
+ ssl_context.verify_mode =client_cert_
|
||||
+ socket_ = ssl_context.wrap_socket(socket_)
|
||||
self._sockets.append((socket_, addrinfo))
|
||||
|
||||
def server_bind(self):
|
||||
|
|
@ -3,15 +3,16 @@ missing some required interface headers for it, and it's not clear how
|
|||
to make the partalloc support code for it work.
|
||||
--- ./base/allocator/partition_allocator/partition_alloc.gni.orig
|
||||
+++ ./base/allocator/partition_allocator/partition_alloc.gni
|
||||
@@ -30,7 +30,7 @@
|
||||
}
|
||||
@@ -89,8 +89,7 @@
|
||||
# TODO(crbug.com/329199197): Clean this up when experiments are complete.
|
||||
use_large_empty_slot_span_ring = true
|
||||
|
||||
has_memory_tagging =
|
||||
- current_cpu == "arm64" && is_clang && !is_asan && (is_linux || is_android)
|
||||
+ false
|
||||
-has_memory_tagging = current_cpu == "arm64" && is_clang && !is_asan &&
|
||||
- !is_hwasan && (is_linux || is_android)
|
||||
+has_memory_tagging = false
|
||||
|
||||
declare_args() {
|
||||
# Causes all the allocations to be routed via allocator_shim.cc. Usually,
|
||||
# Debug configuration.
|
||||
--- ./base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.orig
|
||||
+++ ./base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h
|
||||
@@ -10,7 +10,7 @@
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
--- ./buildtools/third_party/libc++/__config_site.orig
|
||||
+++ ./buildtools/third_party/libc++/__config_site
|
||||
@@ -18,7 +18,7 @@
|
||||
/* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
|
||||
/* #undef _LIBCPP_HAS_NO_THREADS */
|
||||
/* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
|
||||
-/* #undef _LIBCPP_HAS_MUSL_LIBC */
|
||||
+#define _LIBCPP_HAS_MUSL_LIBC 1
|
||||
/* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
|
||||
/* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
|
||||
/* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
|
||||
172
backports/element-desktop/APKBUILD
Normal file
172
backports/element-desktop/APKBUILD
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
maintainer="lauren n. liberda <lauren@selfisekai.rocks>"
|
||||
pkgname=element-desktop
|
||||
pkgver=1.12.3
|
||||
pkgrel=1
|
||||
pkgdesc="Secure and independent communication, connected via Matrix"
|
||||
url="https://element.io/"
|
||||
arch="aarch64 x86_64" # same as electron
|
||||
license="GPL-3.0-only"
|
||||
_electronver=39
|
||||
depends="
|
||||
electron~$_electronver
|
||||
font-inconsolata
|
||||
font-inter
|
||||
font-nunito
|
||||
font-opensans
|
||||
font-twemoji
|
||||
"
|
||||
makedepends="
|
||||
cargo
|
||||
electron-dev~$_electronver
|
||||
electron-tasje
|
||||
jq
|
||||
libsecret-dev
|
||||
nodejs
|
||||
npm
|
||||
python3
|
||||
py3-setuptools
|
||||
sqlcipher-dev
|
||||
swc
|
||||
yarn
|
||||
"
|
||||
source="
|
||||
https://github.com/vector-im/element-desktop/archive/refs/tags/v$pkgver/element-desktop-$pkgver.tar.gz
|
||||
https://github.com/vector-im/element-web/archive/refs/tags/v$pkgver/element-web-$pkgver.tar.gz
|
||||
|
||||
add-alpine-targets.patch
|
||||
use-system-headers.patch
|
||||
tasje-fixes.patch
|
||||
no-source-maps.patch.web
|
||||
use-system-fonts.patch.web
|
||||
|
||||
element-desktop
|
||||
"
|
||||
options="net !check" # broken
|
||||
# Avoid conflicting providers
|
||||
sonameprefix="$pkgname:"
|
||||
|
||||
# secfixes:
|
||||
# 1.11.30-r0:
|
||||
# - CVE-2023-30609
|
||||
# 1.11.26-r0:
|
||||
# - CVE-2023-28103
|
||||
# - CVE-2023-28427
|
||||
# 1.11.7-r0:
|
||||
# - CVE-2022-39249
|
||||
# - CVE-2022-39250
|
||||
# - CVE-2022-39251
|
||||
# - CVE-2022-39236
|
||||
# 1.11.4-r0:
|
||||
# - CVE-2022-36059
|
||||
# - CVE-2022-36060
|
||||
|
||||
# used by buildscripts (at least web's webpack)
|
||||
export VERSION=$pkgver
|
||||
|
||||
export CARGO_PROFILE_RELEASE_OPT_LEVEL=2
|
||||
export CARGO_PROFILE_RELEASE_STRIP="symbols"
|
||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
msg "Applying more patches"
|
||||
for x in $source; do
|
||||
case "$x" in
|
||||
*.patch.web)
|
||||
msg "$x"
|
||||
patch -p1 -i "$srcdir"/$x -d "$srcdir"/element-web-$pkgver
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
rm -rf res/fonts
|
||||
|
||||
(
|
||||
cd "$srcdir"/element-web-$pkgver
|
||||
|
||||
msg "Fetch element-web dependencies"
|
||||
yarn install --frozen-lockfile --ignore-scripts --ignore-engines
|
||||
jq '.show_labs_settings = true' < config.sample.json > config.json
|
||||
)
|
||||
|
||||
ln -s "$srcdir"/element-web-$pkgver/webapp webapp
|
||||
|
||||
msg "Fetch element-desktop dependencies"
|
||||
yarn install --frozen-lockfile --ignore-scripts
|
||||
patch -p1 -i patches/@types+auto-launch+5.0.5.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
(
|
||||
cd "$srcdir"/element-web-$pkgver
|
||||
|
||||
msg "Build element-web"
|
||||
NODE_ENV=production yarn build
|
||||
)
|
||||
|
||||
msg "Build element-desktop"
|
||||
|
||||
yarn asar-webapp
|
||||
|
||||
# add "optional" native dependencies
|
||||
# hak stands for hack
|
||||
yarn run hak --target "$(uname -m)-alpine-linux-musl"
|
||||
|
||||
yarn build:ts
|
||||
|
||||
yarn build:res
|
||||
|
||||
# we need it as js to be of any use for tasje.
|
||||
# fails with `yarn tsc`. https://github.com/electron-userland/electron-builder/issues/7961
|
||||
swc compile electron-builder.ts --out-file electron-builder.mjs
|
||||
|
||||
yarn install --frozen-lockfile --ignore-scripts --production
|
||||
|
||||
npm rebuild keytar-forked --nodedir=/usr/include/electron/node_headers --build-from-source
|
||||
find node_modules/keytar-forked/build/ -type f \
|
||||
\! -path node_modules/keytar-forked/build/Release/keytar.node \
|
||||
-delete
|
||||
# stripping in build because it gets into asar
|
||||
strip node_modules/keytar-forked/build/Release/keytar.node
|
||||
|
||||
tasje -c electron-builder.mjs pack
|
||||
}
|
||||
|
||||
check() {
|
||||
(
|
||||
cd "$srcdir"/element-web-$pkgver
|
||||
|
||||
yarn test
|
||||
)
|
||||
}
|
||||
|
||||
package() {
|
||||
local resources="dist/resources"
|
||||
|
||||
install -Dm644 $resources/app.asar "$pkgdir"/usr/lib/element-desktop/app.asar
|
||||
install -Dm644 webapp.asar "$pkgdir"/usr/lib/element-desktop/webapp.asar
|
||||
|
||||
cp -r $resources/app.asar.unpacked "$pkgdir"/usr/lib/element-desktop/app.asar.unpacked
|
||||
|
||||
install -Dm644 $resources/build/icon.png "$pkgdir"/usr/lib/element-desktop/build/icon.png
|
||||
|
||||
install -Dm755 "$srcdir"/$pkgname "$pkgdir"/usr/bin/$pkgname
|
||||
|
||||
install -Dm644 dist/$pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
|
||||
while read -r size; do
|
||||
install -Dm644 dist/icons/$size.png "$pkgdir"/usr/share/icons/hicolor/$size/apps/$pkgname.png
|
||||
done < dist/icons/size-list
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
f302907165a35f4a4f069f5aec6bc28edeba3d09c75f483c818e3930ceb4e838e5bb91ad9d42019a11a661d6e656da3c1ff25507cbb281c69183aac7d499e882 element-desktop-1.12.3.tar.gz
|
||||
b845ff71ca39d7ae4dca9bb55e821bfdf911b12de5d012ba55d598f3287046fb2b525bce608925a9fa8fa7d39a4ceed9b4213d5d1c1d0c9e6b9b72154c9a35a5 element-web-1.12.3.tar.gz
|
||||
4747893ed3e43d3074e9afe1cdd668a6be0de073d439205fe8c38c5e0f4091cc76e3cd15d98818bea5139add29501d8d07e83c58e9da230a4ce5bb538d388f80 add-alpine-targets.patch
|
||||
755b17f7b828eb6920c06a6950ad4e14c32c99d22e9c05fcef7a081b5d2034adb03db3958aa5209c99fb7201f4d888c2383fc9864c5e743dd33f8b5c4925acd7 use-system-headers.patch
|
||||
a5d90dd1ec7aec0dc18b73eb3a6fd51ac1223e381c492d24e7dc0fd2ade955ac727cebbaff6ffa27c7e18d9acf712c709de3f886ee2ddf87ab3b028d3eb461c6 tasje-fixes.patch
|
||||
ec635fde026f7fce8e8cc57960b5b9dcec4418416d4867ed47711422d48f068bb58a3c9ceb7715efc9c177beca3788da6b0babc9b689ea8c0724a0395f2b85f8 no-source-maps.patch.web
|
||||
aaf46476bac403aa5204aa265fcf0654fad4c149fd74d0ec4273c051a5549943384cae3cdd62c5b78fdedfed55c11ecceb898b886e44165cbe7e30953a095cf9 use-system-fonts.patch.web
|
||||
afc588311dc3b566a754e3e7fe6b37b99a06d47b8bbce0ed9acca8ef308fdab0bd1d41b406199e5cbdd86bdce695ff847cd8668857a235cbdc292ad8b899c063 element-desktop
|
||||
"
|
||||
52
backports/element-desktop/add-alpine-targets.patch
Normal file
52
backports/element-desktop/add-alpine-targets.patch
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
--- a/scripts/hak/target.ts
|
||||
+++ b/scripts/hak/target.ts
|
||||
@@ -29,8 +29,10 @@
|
||||
| "i686-unknown-linux-gnu"
|
||||
| "x86_64-unknown-linux-musl"
|
||||
| "x86_64-unknown-linux-gnu"
|
||||
+ | "x86_64-alpine-linux-musl"
|
||||
| "aarch64-unknown-linux-musl"
|
||||
| "aarch64-unknown-linux-gnu"
|
||||
+ | "aarch64-alpine-linux-musl"
|
||||
| "powerpc64le-unknown-linux-musl"
|
||||
| "powerpc64le-unknown-linux-gnu";
|
||||
|
||||
@@ -112,6 +114,13 @@
|
||||
libC: MUSL,
|
||||
};
|
||||
|
||||
+const x8664AlpineLinuxMusl: LinuxTarget = {
|
||||
+ id: "x86_64-alpine-linux-musl",
|
||||
+ platform: "linux",
|
||||
+ arch: "x64",
|
||||
+ libC: MUSL,
|
||||
+};
|
||||
+
|
||||
const i686UnknownLinuxGnu: LinuxTarget = {
|
||||
id: "i686-unknown-linux-gnu",
|
||||
platform: "linux",
|
||||
@@ -140,6 +149,13 @@
|
||||
libC: MUSL,
|
||||
};
|
||||
|
||||
+const aarch64AlpineLinuxMusl: LinuxTarget = {
|
||||
+ id: "aarch64-alpine-linux-musl",
|
||||
+ platform: "linux",
|
||||
+ arch: "arm64",
|
||||
+ libC: MUSL,
|
||||
+};
|
||||
+
|
||||
const powerpc64leUnknownLinuxGnu: LinuxTarget = {
|
||||
id: "powerpc64le-unknown-linux-gnu",
|
||||
platform: "linux",
|
||||
@@ -167,8 +183,10 @@
|
||||
"i686-unknown-linux-gnu": i686UnknownLinuxGnu,
|
||||
"x86_64-unknown-linux-musl": x8664UnknownLinuxMusl,
|
||||
"x86_64-unknown-linux-gnu": x8664UnknownLinuxGnu,
|
||||
+ "x86_64-alpine-linux-musl": x8664AlpineLinuxMusl,
|
||||
"aarch64-unknown-linux-musl": aarch64UnknownLinuxMusl,
|
||||
"aarch64-unknown-linux-gnu": aarch64UnknownLinuxGnu,
|
||||
+ "aarch64-alpine-linux-musl": aarch64AlpineLinuxMusl,
|
||||
"powerpc64le-unknown-linux-musl": powerpc64leUnknownLinuxMusl,
|
||||
"powerpc64le-unknown-linux-gnu": powerpc64leUnknownLinuxGnu,
|
||||
};
|
||||
3
backports/element-desktop/element-desktop
Executable file
3
backports/element-desktop/element-desktop
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
exec electron /usr/lib/element-desktop/app.asar "$@"
|
||||
18
backports/element-desktop/no-source-maps.patch.web
Normal file
18
backports/element-desktop/no-source-maps.patch.web
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
--- ./webpack.config.js.orig
|
||||
+++ ./webpack.config.js
|
||||
@@ -102,15 +102,6 @@
|
||||
}
|
||||
|
||||
const development = {};
|
||||
- if (devMode) {
|
||||
- // Embedded source maps for dev builds, can't use eval-source-map due to CSP
|
||||
- development["devtool"] = "inline-source-map";
|
||||
- } else {
|
||||
- // High quality source maps in separate .map files which include the source. This doesn't bulk up the .js
|
||||
- // payload file size, which is nice for performance but also necessary to get the bundle to a small enough
|
||||
- // size that sentry will accept the upload.
|
||||
- development["devtool"] = "source-map";
|
||||
- }
|
||||
|
||||
// Resolve the directories for the js-sdk for later use. We resolve these early, so we
|
||||
// don't have to call them over and over. We also resolve to the package.json instead of the src
|
||||
33
backports/element-desktop/tasje-fixes.patch
Normal file
33
backports/element-desktop/tasje-fixes.patch
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
directories in .hak/hakModules are already symlinked inside node_modules,
|
||||
and as such are already being copied by default. this makes tasje fail with:
|
||||
```
|
||||
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:
|
||||
FileAlreadyWritten("/node_modules/keytar/package.json")', src/main.rs:200:18
|
||||
```
|
||||
|
||||
console.log interferes with tasje, which reads config from node stdout
|
||||
|
||||
--- ./electron-builder.ts.orig
|
||||
+++ ./electron-builder.ts
|
||||
@@ -72,10 +72,6 @@
|
||||
console.warn(`No VARIANT_PATH specified, using default variant configuration '${DEFAULT_VARIANT}':`);
|
||||
}
|
||||
|
||||
-for (const key in variant) {
|
||||
- console.log(`${key}: ${variant[key]}`);
|
||||
-}
|
||||
-
|
||||
interface Configuration extends BaseConfiguration {
|
||||
extraMetadata: Partial<Pick<Pkg, "version">> & ExtraMetadata;
|
||||
linux: BaseConfiguration["linux"];
|
||||
@@ -112,10 +108,6 @@
|
||||
},
|
||||
files: [
|
||||
"package.json",
|
||||
- {
|
||||
- from: ".hak/hakModules",
|
||||
- to: "node_modules",
|
||||
- },
|
||||
"lib/**",
|
||||
],
|
||||
extraResources: ["build/icon.*", "webapp.asar"],
|
||||
79
backports/element-desktop/use-system-fonts.patch.web
Normal file
79
backports/element-desktop/use-system-fonts.patch.web
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
--- a/src/vector/jitsi/index.pcss
|
||||
+++ b/src/vector/jitsi/index.pcss
|
||||
@@ -14,7 +14,7 @@
|
||||
font-family: "Nunito";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
- src: url("$(res)/fonts/Nunito/Nunito-Regular.ttf") format("truetype");
|
||||
+ src: local("Nunito Regular");
|
||||
}
|
||||
|
||||
$dark-fg: #edf3ff;
|
||||
--- a/res/themes/light/css/_fonts.pcss
|
||||
+++ b/res/themes/light/css/_fonts.pcss
|
||||
@@ -5,16 +5,16 @@
|
||||
@font-face {
|
||||
font-family: "Twemoji";
|
||||
font-weight: 400;
|
||||
- src: url("$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2") format("woff2");
|
||||
+ src: local("Twemoji");
|
||||
}
|
||||
/* For at least Chrome on Windows 10, we have to explictly add extra weights for the emoji to appear in bold messages, etc. */
|
||||
@font-face {
|
||||
font-family: "Twemoji";
|
||||
font-weight: 600;
|
||||
- src: url("$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2") format("woff2");
|
||||
+ src: local("Twemoji");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Twemoji";
|
||||
font-weight: 700;
|
||||
- src: url("$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2") format("woff2");
|
||||
+ src: local("Twemoji");
|
||||
}
|
||||
--- a/res/themes/legacy-light/css/_fonts.pcss
|
||||
+++ b/res/themes/legacy-light/css/_fonts.pcss
|
||||
@@ -23,17 +23,17 @@
|
||||
font-family: "Nunito";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
- src: url("$(res)/fonts/Nunito/Nunito-Regular.ttf") format("truetype");
|
||||
+ src: local("Nunito Regular");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Nunito";
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
- src: url("$(res)/fonts/Nunito/Nunito-SemiBold.ttf") format("truetype");
|
||||
+ src: local("Nunito SemiBold");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Nunito";
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
- src: url("$(res)/fonts/Nunito/Nunito-Bold.ttf") format("truetype");
|
||||
+ src: local("Nunito Bold");
|
||||
}
|
||||
--- ./src/theme.ts.orig
|
||||
+++ ./src/theme.ts
|
||||
@@ -7,20 +7,6 @@
|
||||
Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
-import "@fontsource/inter/400.css";
|
||||
-import "@fontsource/inter/400-italic.css";
|
||||
-import "@fontsource/inter/500.css";
|
||||
-import "@fontsource/inter/500-italic.css";
|
||||
-import "@fontsource/inter/600.css";
|
||||
-import "@fontsource/inter/600-italic.css";
|
||||
-import "@fontsource/inter/700.css";
|
||||
-import "@fontsource/inter/700-italic.css";
|
||||
-
|
||||
-import "@fontsource/inconsolata/latin-ext-400.css";
|
||||
-import "@fontsource/inconsolata/latin-400.css";
|
||||
-import "@fontsource/inconsolata/latin-ext-700.css";
|
||||
-import "@fontsource/inconsolata/latin-700.css";
|
||||
-
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
import { _t } from "./languageHandler";
|
||||
15
backports/element-desktop/use-system-headers.patch
Normal file
15
backports/element-desktop/use-system-headers.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
--- a/scripts/hak/hakEnv.ts
|
||||
+++ b/scripts/hak/hakEnv.ts
|
||||
@@ -101,11 +101,10 @@
|
||||
...process.env,
|
||||
npm_config_arch: this.target.arch,
|
||||
npm_config_target_arch: this.target.arch,
|
||||
- npm_config_disturl: "https://electronjs.org/headers",
|
||||
+ npm_config_nodedir: "/usr/include/electron/node_headers",
|
||||
npm_config_runtime: this.runtime,
|
||||
npm_config_target: this.runtimeVersion,
|
||||
npm_config_build_from_source: "true",
|
||||
- npm_config_devdir: path.join(os.homedir(), ".electron-gyp"),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=fdm-materials
|
||||
pkgver=5.2.2
|
||||
pkgrel=1
|
||||
pkgdesc="FDM Material Database"
|
||||
url="https://github.com/Ultimaker/fdm_materials"
|
||||
arch="noarch"
|
||||
license="CC0-1.0"
|
||||
makedepends="cmake samurai"
|
||||
options="!check" # no checks provided
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/Ultimaker/fdm_materials/archive/refs/tags/$pkgver.tar.gz"
|
||||
builddir="$srcdir/fdm_materials-$pkgver"
|
||||
|
||||
build() {
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
73eefec8b7b88af73afc578ffba583480bda30309945b1720d7a1a075bd7ab3279599d53fe83f4c96695f294a5a3e11297abc334ca6cc9db163d4eb0fbdaf0f9 fdm-materials-5.2.2.tar.gz
|
||||
"
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
pkgname=freetube
|
||||
pkgver=0.21.3
|
||||
pkgrel=2
|
||||
pkgver=0.23.12
|
||||
pkgrel=1
|
||||
pkgdesc="An open source desktop YouTube player built with privacy in mind."
|
||||
arch="x86_64 aarch64" # blocked by electron
|
||||
license="AGPL-3.0-only"
|
||||
|
|
@ -50,7 +50,7 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
22e5ab677cd442d50237b2d62534698d8ad73a37e1731003dc23c4ea3da992b3cae936f0bb3a0a86cd4b7fba731c9fa53276cb0a6cd5bab213ff2a6c9006cb05 freetube-0.21.3.tar.gz
|
||||
e19c7e8de0c6c5bbddcd3da73cd1907cae7157e8f44f550c4a34965b3b4f3c1a180c111a8c497d74a556d6d8e74e9fdd1ed6e064d4fc899f80712a1f187395ae freetube-0.23.12.tar.gz
|
||||
2ce2effc794bb663789cefe968b5899122127983dbfa1b240aa33a2be383720b18204e6d01b4a550df72956f02b6636b79c93a58f470a970b09b770f5b8f2fc4 freetube.sh
|
||||
d27cb896b65a7e8d52ffe86e5f74eed72b6cf976b28e1a13012d34c7eceba5ff6f20298017738dfa93c0336ffa52b8ee4da7e06b02747062898db7e678819526 tasje-dotdash.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=libnest2d
|
||||
pkgver=0.4
|
||||
pkgrel=6
|
||||
pkgdesc="2D irregular bin packaging and nesting library written in modern C++"
|
||||
url="https://github.com/tamasmeszaros/libnest2d"
|
||||
arch="noarch"
|
||||
license="LGPL-3.0-only"
|
||||
makedepends="samurai cmake clipper-dev boost-dev nlopt-dev"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/tamasmeszaros/libnest2d/archive/refs/tags/$pkgver.tar.gz
|
||||
allow-disallowed-area.patch"
|
||||
|
||||
build() {
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
||||
fi
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=True \
|
||||
-DCMAKE_BUILD_TYPE=minsizerel \
|
||||
$CMAKE_CROSSOPTS .
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build
|
||||
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
fadce18986b844eed13a581f84055df909a17407a0980deb6c7c24248a969a537a8840650bcfc673e61973810ce9a008acb599e3b8e00c9bff6b566ca41cd62c libnest2d-0.4.tar.gz
|
||||
2e8cd3343c72c576ecb54960d7ad9f4f2322f822b19ac41850b3b28da95e97c2cefe7c67de6c97627df08cd5cdc1660ce4dfa95fe51f88e0ff5c066c8d785458 allow-disallowed-area.patch
|
||||
"
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
From 2e91be2679b5efa0773292d9d0a2ae72255bb271 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:13:15 +0200
|
||||
Subject: [PATCH 1/3] Allow for an item to be a disallowed area
|
||||
|
||||
url: https://github.com/tamasmeszaros/libnest2d/pull/18
|
||||
|
||||
Disallowed areas have slightly different behaviour from fixed items: Other items won't get packed closely around them. Implementation of that pending.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp
|
||||
index 2f207d5..932a060 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -71,6 +71,15 @@ class _Item {
|
||||
int binid_{BIN_ID_UNSET}, priority_{0};
|
||||
bool fixed_{false};
|
||||
|
||||
+ /**
|
||||
+ * \brief If this is a fixed area, indicates whether it is a disallowed area
|
||||
+ * or a previously placed item.
|
||||
+ *
|
||||
+ * If this is a disallowed area, other objects will not get packed close
|
||||
+ * together with this item. It only blocks other items in its area.
|
||||
+ */
|
||||
+ bool disallowed_{false};
|
||||
+
|
||||
public:
|
||||
|
||||
/// The type of the shape which was handed over as the template argument.
|
||||
@@ -129,11 +138,18 @@ class _Item {
|
||||
sh_(sl::create<RawShape>(std::move(contour), std::move(holes))) {}
|
||||
|
||||
inline bool isFixed() const noexcept { return fixed_; }
|
||||
+ inline bool isDisallowedArea() const noexcept { return disallowed_; }
|
||||
inline void markAsFixedInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
}
|
||||
+ inline void markAsDisallowedAreaInBin(int binid)
|
||||
+ {
|
||||
+ fixed_ = binid >= 0;
|
||||
+ binid_ = binid;
|
||||
+ disallowed_ = true;
|
||||
+ }
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
inline int binId() const noexcept { return binid_; }
|
||||
|
||||
From ff61049e59d3151462bca7ff2e2268c2b32731e7 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:14:36 +0200
|
||||
Subject: [PATCH 2/3] Allow unsetting of being a disallowed area
|
||||
|
||||
If you set the bin to -1 or set the item to be a simple fixed item afterwards, it'll no longer be a disallowed area.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp
|
||||
index 932a060..54761a6 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -143,12 +143,13 @@ class _Item {
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
+ disallowed_ = false;
|
||||
}
|
||||
inline void markAsDisallowedAreaInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
- disallowed_ = true;
|
||||
+ disallowed_ = fixed_;
|
||||
}
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
|
||||
From 31391fd173249ad9b906390058e13b09238fadc8 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Thu, 8 Oct 2020 11:06:58 +0200
|
||||
Subject: [PATCH 3/3] Align items to their starting position if all placed
|
||||
items are disallowed
|
||||
|
||||
We shouldn't align items to disallowed areas. So place them in the starting position according to the alignment property.
|
||||
|
||||
Lot of work to investigate. But very little code changes!
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/placers/nfpplacer.hpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/libnest2d/placers/nfpplacer.hpp b/include/libnest2d/placers/nfpplacer.hpp
|
||||
index 96a8cff..b0ebb15 100644
|
||||
--- a/include/libnest2d/placers/nfpplacer.hpp
|
||||
+++ b/include/libnest2d/placers/nfpplacer.hpp
|
||||
@@ -101,7 +101,7 @@ struct NfpPConfig {
|
||||
* alignment with the candidate item or do anything else.
|
||||
*
|
||||
* \param remaining A container with the remaining items waiting to be
|
||||
- * placed. You can use some features about the remaining items to alter to
|
||||
+ * placed. You can use some features about the remaining items to alter the
|
||||
* score of the current placement. If you know that you have to leave place
|
||||
* for other items as well, that might influence your decision about where
|
||||
* the current candidate should be placed. E.g. imagine three big circles
|
||||
@@ -735,7 +735,8 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer<RawShape, TBin
|
||||
remlist.insert(remlist.end(), remaining.from, remaining.to);
|
||||
}
|
||||
|
||||
- if(items_.empty()) {
|
||||
+ if(std::all_of(items_.begin(), items_.end(),
|
||||
+ [](const Item& item) { return item.isDisallowedArea(); })) {
|
||||
setInitialPosition(item);
|
||||
best_overfit = overfit(item.transformedShape(), bin_);
|
||||
can_pack = best_overfit <= 0;
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
# Contributor: Alex Yam <alex@alexyam.com>
|
||||
# Maintainer: Alex Yam <alex@alexyam.com>
|
||||
pkgname=libspatialindex
|
||||
pkgver=0_git20210205
|
||||
_commit=8ee223632f95c81f49f5eb2d547ad973475c4601
|
||||
pkgrel=1
|
||||
pkgdesc="extensible framework for robust spatial indexing methods"
|
||||
url="https://libspatialindex.org/"
|
||||
arch="all"
|
||||
license="MIT"
|
||||
makedepends="cmake"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$_commit.tar.gz::https://github.com/libspatialindex/libspatialindex/archive/$_commit.tar.gz"
|
||||
builddir="$srcdir/$pkgname-$_commit"
|
||||
|
||||
build() {
|
||||
cmake -B build \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DCMAKE_PREFIX_PATH=/usr \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DBUILD_TESTING=ON
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build && ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --build build --target install
|
||||
}
|
||||
|
||||
sha512sums="caf91aac77b75445e4fc4d0baedcd10c619b2097dfd841b00339d9ddd4b73db05b99de1d84be88f1083f4713a936cf110d5851523491f5a74c6f96e1d5795dbb libspatialindex-8ee223632f95c81f49f5eb2d547ad973475c4601.tar.gz"
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
# Contributor: Quillith <tag.quill@protonmail.com>
|
||||
# Maintainer: Quillith <tag.quill@protonmail.com>
|
||||
pkgname=nb
|
||||
pkgver=7.12.1
|
||||
pkgver=7.19.1
|
||||
pkgrel=0
|
||||
pkgdesc="Command line note-taking, bookmarking, archiving, and knowledge base application"
|
||||
url="https://github.com/xwmx/nb"
|
||||
|
|
@ -41,5 +41,5 @@ full() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
ed3d41a809e39a19711c6c97c38216f17f144b8b474eb94aec4134f9756da03440073f3f6557acf8f7959d3d9fba6392d1d5f59e8b94d5269b7336b11353457e nb-7.12.1.tar.gz
|
||||
fdfcedc5a32c1a5fe62b00141e25193bc33eee9249fef559938f2b4baf0bff5eb7cc792db3c664c68afb2ba2db84303432790ae5254a9cdd319ce4d9a9face9f nb-7.19.1.tar.gz
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,71 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Celeste <cielesti@protonmail.com>
|
||||
maintainer="Celeste <cielesti@protonmail.com>"
|
||||
pkgname=nlopt
|
||||
pkgver=2.8.0
|
||||
pkgrel=0
|
||||
pkgdesc="Library for nonlinear optimization"
|
||||
url="https://github.com/stevengj/nlopt"
|
||||
arch="all"
|
||||
license="LGPL-2.1-or-later"
|
||||
makedepends="
|
||||
cmake
|
||||
guile-dev
|
||||
python3-dev
|
||||
samurai
|
||||
swig
|
||||
"
|
||||
subpackages="
|
||||
$pkgname-dev
|
||||
$pkgname-doc
|
||||
$pkgname-guile
|
||||
"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/stevengj/nlopt/archive/refs/tags/v$pkgver.tar.gz"
|
||||
|
||||
case "$CARCH" in
|
||||
# octave unavailable on these 3 archs
|
||||
s390x|riscv64|ppc64le) ;;
|
||||
*)
|
||||
makedepends="$makedepends octave-dev"
|
||||
subpackages="$subpackages $pkgname-octave"
|
||||
;;
|
||||
esac
|
||||
|
||||
build() {
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
local crossopts="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
||||
fi
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
$crossopts
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
ctest --test-dir build --output-on-failure
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
guile() {
|
||||
pkgdesc="$pkgdesc (Guile bindings)"
|
||||
depends="$pkgname=$pkgver-r$pkgrel guile"
|
||||
|
||||
amove usr/lib/guile usr/share/guile
|
||||
}
|
||||
|
||||
octave() {
|
||||
pkgdesc="$pkgdesc (Octave bindings)"
|
||||
depends="$pkgname=$pkgver-r$pkgrel octave"
|
||||
|
||||
amove usr/lib/octave usr/share/octave
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
cb294caa5532e11ae0d22ed849705920bbae79f712144c840a5ca865ef8e6a15c6c9540c81ced0c3c05b9f44c360d50f74e235e69d893be34b7e1c5599f07c71 nlopt-2.8.0.tar.gz
|
||||
"
|
||||
|
|
@ -1,168 +0,0 @@
|
|||
# Contributor: Ariadne Conill <ariadne@dereferenced.org>
|
||||
# Maintainer: Timo Teras <timo.teras@iki.fi>
|
||||
pkgname=openssl1.1-compat
|
||||
pkgver=1.1.1w
|
||||
_abiver=${pkgver%.*}
|
||||
pkgrel=1
|
||||
pkgdesc="toolkit for transport layer security (TLS) - version 1.1"
|
||||
url="https://www.openssl.org/"
|
||||
arch="all"
|
||||
license="OpenSSL"
|
||||
replaces="libressl"
|
||||
depends_dev="!openssl-dev"
|
||||
makedepends_build="perl"
|
||||
makedepends_host="linux-headers"
|
||||
makedepends="$makedepends_host $makedepends_build"
|
||||
subpackages="$pkgname-dbg $pkgname-libs-static:_static $pkgname-dev
|
||||
libcrypto$_abiver:_libcrypto libssl$_abiver:_libssl"
|
||||
source="https://www.openssl.org/source/openssl-$pkgver.tar.gz
|
||||
man-section.patch
|
||||
ppc64.patch
|
||||
"
|
||||
builddir="$srcdir/openssl-$pkgver"
|
||||
pcprefix="openssl$_abiver:pc:"
|
||||
|
||||
# secfixes:
|
||||
# 1.1.1u-r1:
|
||||
# - CVE-2023-3446
|
||||
# 1.1.1t-r2:
|
||||
# - CVE-2023-0465
|
||||
# 1.1.1t-r1:
|
||||
# - CVE-2023-0464
|
||||
# 1.1.1t-r0:
|
||||
# - CVE-2022-4304
|
||||
# - CVE-2022-4450
|
||||
# - CVE-2023-0215
|
||||
# - CVE-2023-0286
|
||||
# 1.1.1q-r0:
|
||||
# - CVE-2022-2097
|
||||
# 1.1.1n-r0:
|
||||
# - CVE-2022-0778
|
||||
# 1.1.1l-r0:
|
||||
# - CVE-2021-3711
|
||||
# - CVE-2021-3712
|
||||
# 1.1.1k-r0:
|
||||
# - CVE-2021-3449
|
||||
# - CVE-2021-3450
|
||||
# 1.1.1j-r0:
|
||||
# - CVE-2021-23841
|
||||
# - CVE-2021-23840
|
||||
# - CVE-2021-23839
|
||||
# 1.1.1i-r0:
|
||||
# - CVE-2020-1971
|
||||
# 1.1.1g-r0:
|
||||
# - CVE-2020-1967
|
||||
# 1.1.1d-r3:
|
||||
# - CVE-2019-1551
|
||||
# 1.1.1d-r1:
|
||||
# - CVE-2019-1547
|
||||
# - CVE-2019-1549
|
||||
# - CVE-2019-1563
|
||||
# 1.1.1b-r1:
|
||||
# - CVE-2019-1543
|
||||
# 1.1.1a-r0:
|
||||
# - CVE-2018-0734
|
||||
# - CVE-2018-0735
|
||||
# 0:
|
||||
# - CVE-2022-1292
|
||||
# - CVE-2022-2068
|
||||
|
||||
build() {
|
||||
local _target _optflags
|
||||
|
||||
# openssl will prepend crosscompile always core CC et al
|
||||
CC=${CC#${CROSS_COMPILE}}
|
||||
CXX=${CXX#${CROSS_COMPILE}}
|
||||
CPP=${CPP#${CROSS_COMPILE}}
|
||||
|
||||
# determine target OS for openssl
|
||||
case "$CARCH" in
|
||||
aarch64*) _target="linux-aarch64" ;;
|
||||
arm*) _target="linux-armv4" ;;
|
||||
ppc) _target="linux-ppc" ;;
|
||||
ppc64) _target="linux-ppc64" ;;
|
||||
ppc64le) _target="linux-ppc64le" ;;
|
||||
x86) _target="linux-elf" ;;
|
||||
x86_64) _target="linux-x86_64"; _optflags="enable-ec_nistp_64_gcc_128" ;;
|
||||
s390x) _target="linux64-s390x";;
|
||||
riscv64) _target="linux-generic64";;
|
||||
loongarch64) _target="linux-generic64";;
|
||||
*) msg "Unable to determine architecture from (CARCH=$CARCH)" ; return 1 ;;
|
||||
esac
|
||||
|
||||
# Configure assumes --options are for it, so can't use
|
||||
# gcc's --sysroot fake this by overriding CC
|
||||
[ -n "$CBUILDROOT" ] && CC="$CC --sysroot=$CBUILDROOT"
|
||||
|
||||
# when cross building do not enable threads as libatomic is not avaiable
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
case $CARCH in
|
||||
riscv64) _optflags="$_optflags no-threads";;
|
||||
esac
|
||||
fi
|
||||
|
||||
perl ./Configure \
|
||||
$_target \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib \
|
||||
--openssldir=/etc/ssl1.1 \
|
||||
shared \
|
||||
no-zlib \
|
||||
no-async \
|
||||
no-comp \
|
||||
no-idea \
|
||||
no-mdc2 \
|
||||
no-rc5 \
|
||||
no-ec2m \
|
||||
no-sm2 \
|
||||
no-sm4 \
|
||||
no-ssl2 \
|
||||
no-ssl3 \
|
||||
no-seed \
|
||||
no-weak-ssl-ciphers \
|
||||
$_optflags \
|
||||
$CPPFLAGS \
|
||||
$CFLAGS \
|
||||
$LDFLAGS -Wa,--noexecstack
|
||||
make
|
||||
}
|
||||
|
||||
check() {
|
||||
# AFALG tests have a sporadic test failure, just delete the broken
|
||||
# test for now.
|
||||
rm -f test/recipes/30-test_afalg.t
|
||||
|
||||
make test
|
||||
}
|
||||
|
||||
package() {
|
||||
make DESTDIR="$pkgdir" install_sw install_ssldirs
|
||||
# remove the script c_rehash
|
||||
rm "$pkgdir"/usr/bin/c_rehash
|
||||
mv -f "$pkgdir"/usr/bin/openssl "$pkgdir"/usr/bin/openssl$_abiver
|
||||
}
|
||||
|
||||
_libcrypto() {
|
||||
pkgdesc="Crypto library from openssl"
|
||||
replaces="libressl2.7-libcrypto"
|
||||
|
||||
amove etc
|
||||
amove usr/lib/libcrypto*
|
||||
amove usr/lib/engines-$_abiver
|
||||
}
|
||||
|
||||
_libssl() {
|
||||
pkgdesc="SSL shared libraries"
|
||||
|
||||
amove usr/lib/libssl*
|
||||
}
|
||||
|
||||
_static() {
|
||||
default_static
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
b4c625fe56a4e690b57b6a011a225ad0cb3af54bd8fb67af77b5eceac55cc7191291d96a660c5b568a08a2fbf62b4612818e7cca1bb95b2b6b4fc649b0552b6d openssl-1.1.1w.tar.gz
|
||||
43c3255118db6f5f340dc865c0f25ccbcafe5bf7507585244ca59b4d27daf533d6c3171aa32a8685cbb6200104bec535894b633de13feaadff87ab86739a445a man-section.patch
|
||||
e040f23770d52b988578f7ff84d77563340f37c026db7643db8e4ef18e795e27d10cb42cb8656da4d9c57a28283a2828729d70f940edc950c3422a54fea55509 ppc64.patch
|
||||
"
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
From: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
|
||||
Date: Sun, 5 Nov 2017 15:09:09 +0100
|
||||
Subject: man-section
|
||||
|
||||
---
|
||||
Configurations/unix-Makefile.tmpl | 6 ++++--
|
||||
util/process_docs.pl | 3 ++-
|
||||
2 files changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
|
||||
index 1292053546f5..c034d21884d8 100644
|
||||
--- a/Configurations/unix-Makefile.tmpl
|
||||
+++ b/Configurations/unix-Makefile.tmpl
|
||||
@@ -183,7 +183,8 @@ HTMLDIR=$(DOCDIR)/html
|
||||
# MANSUFFIX is for the benefit of anyone who may want to have a suffix
|
||||
# appended after the manpage file section number. "ssl" is popular,
|
||||
# resulting in files such as config.5ssl rather than config.5.
|
||||
-MANSUFFIX=
|
||||
+MANSUFFIX=ssl
|
||||
+MANSECTION=SSL
|
||||
HTMLSUFFIX=html
|
||||
|
||||
# For "optional" echo messages, to get "real" silence
|
||||
@@ -726,7 +727,8 @@ uninstall_runtime: uninstall_programs uninstall_runtime_libs
|
||||
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
|
||||
@$(ECHO) "*** Installing manpages"
|
||||
$(PERL) $(SRCDIR)/util/process_docs.pl \
|
||||
- "--destdir=$(DESTDIR)$(MANDIR)" --type=man --suffix=$(MANSUFFIX)
|
||||
+ "--destdir=$(DESTDIR)$(MANDIR)" --type=man --suffix=$(MANSUFFIX) \
|
||||
+ --mansection=$(MANSECTION)
|
||||
|
||||
uninstall_man_docs:
|
||||
@$(ECHO) "*** Uninstalling manpages"
|
||||
diff --git a/util/process_docs.pl b/util/process_docs.pl
|
||||
index 30b149eb8fcc..424155ea808e 100755
|
||||
--- a/util/process_docs.pl
|
||||
+++ b/util/process_docs.pl
|
||||
@@ -37,6 +37,7 @@ GetOptions(\%options,
|
||||
'type=s', # The result type, 'man' or 'html'
|
||||
'suffix:s', # Suffix to add to the extension.
|
||||
# Only used with type=man
|
||||
+ 'mansection:s', # Section to put to manpage in
|
||||
'remove', # To remove files rather than writing them
|
||||
'dry-run|n', # Only output file names on STDOUT
|
||||
'debug|D+',
|
||||
@@ -97,7 +98,7 @@ foreach my $section (sort @{$options{section}}) {
|
||||
my $name = uc $podname;
|
||||
my $suffix = { man => ".$podinfo{section}".($options{suffix} // ""),
|
||||
html => ".html" } -> {$options{type}};
|
||||
- my $generate = { man => "pod2man --name=$name --section=$podinfo{section} --center=OpenSSL --release=$config{version} \"$podpath\"",
|
||||
+ my $generate = { man => "pod2man --name=$name --section=$podinfo{section}$options{mansection} --center=OpenSSL --release=$config{version} \"$podpath\"",
|
||||
html => "pod2html \"--podroot=$options{sourcedir}\" --htmldir=$updir --podpath=man1:man3:man5:man7 \"--infile=$podpath\" \"--title=$podname\" --quiet"
|
||||
} -> {$options{type}};
|
||||
my $output_dir = catdir($options{destdir}, "man$podinfo{section}");
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
From 34ab13b7d8e3e723adb60be8142e38b7c9cd382a Mon Sep 17 00:00:00 2001
|
||||
From: Andy Polyakov <appro@openssl.org>
|
||||
Date: Sun, 5 May 2019 18:25:50 +0200
|
||||
Subject: [PATCH] crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This is a big endian ELFv2 configuration. ELFv2 was already being
|
||||
used for little endian, and big endian was traditionally ELFv1
|
||||
but there are practical configurations that use ELFv2 with big
|
||||
endian nowadays (Adélie Linux, Void Linux, possibly Gentoo, etc.)
|
||||
|
||||
Reviewed-by: Paul Dale <paul.dale@oracle.com>
|
||||
Reviewed-by: Richard Levitte <levitte@openssl.org>
|
||||
(Merged from https://github.com/openssl/openssl/pull/8883)
|
||||
---
|
||||
crypto/perlasm/ppc-xlate.pl | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
|
||||
index e52f2f6ea62..5fcd0526dff 100755
|
||||
--- a/crypto/perlasm/ppc-xlate.pl
|
||||
+++ b/crypto/perlasm/ppc-xlate.pl
|
||||
@@ -49,7 +49,7 @@
|
||||
/osx/ && do { $name = "_$name";
|
||||
last;
|
||||
};
|
||||
- /linux.*(32|64le)/
|
||||
+ /linux.*(32|64(le|v2))/
|
||||
&& do { $ret .= ".globl $name";
|
||||
if (!$$type) {
|
||||
$ret .= "\n.type $name,\@function";
|
||||
@@ -80,7 +80,7 @@
|
||||
};
|
||||
my $text = sub {
|
||||
my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text";
|
||||
- $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/);
|
||||
+ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64(le|v2)/);
|
||||
$ret;
|
||||
};
|
||||
my $machine = sub {
|
||||
@@ -186,7 +186,7 @@
|
||||
|
||||
# Some ABIs specify vrsave, special-purpose register #256, as reserved
|
||||
# for system use.
|
||||
-my $no_vrsave = ($flavour =~ /aix|linux64le/);
|
||||
+my $no_vrsave = ($flavour =~ /aix|linux64(le|v2)/);
|
||||
my $mtspr = sub {
|
||||
my ($f,$idx,$ra) = @_;
|
||||
if ($idx == 256 && $no_vrsave) {
|
||||
@@ -318,7 +318,7 @@ sub vfour {
|
||||
if ($label) {
|
||||
my $xlated = ($GLOBALS{$label} or $label);
|
||||
print "$xlated:";
|
||||
- if ($flavour =~ /linux.*64le/) {
|
||||
+ if ($flavour =~ /linux.*64(le|v2)/) {
|
||||
if ($TYPES{$label} =~ /function/) {
|
||||
printf "\n.localentry %s,0\n",$xlated;
|
||||
}
|
||||
|
||||
From 098404128383ded87ba390dd74ecd9e2ffa6f530 Mon Sep 17 00:00:00 2001
|
||||
From: Andy Polyakov <appro@openssl.org>
|
||||
Date: Sun, 5 May 2019 18:30:55 +0200
|
||||
Subject: [PATCH] Configure: use ELFv2 ABI on some ppc64 big endian systems
|
||||
|
||||
If _CALL_ELF is defined to be 2, it's an ELFv2 system.
|
||||
Conditionally switch to the v2 perlasm scheme.
|
||||
|
||||
Reviewed-by: Paul Dale <paul.dale@oracle.com>
|
||||
Reviewed-by: Richard Levitte <levitte@openssl.org>
|
||||
(Merged from https://github.com/openssl/openssl/pull/8883)
|
||||
---
|
||||
Configure | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Configure b/Configure
|
||||
index 22082deb4c7..e303d98deb3 100755
|
||||
--- a/Configure
|
||||
+++ b/Configure
|
||||
@@ -1402,8 +1402,15 @@
|
||||
my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC});
|
||||
my %predefined_CXX = $config{CXX}
|
||||
? compiler_predefined($config{CROSS_COMPILE}.$config{CXX})
|
||||
: ();
|
||||
|
||||
+unless ($disabled{asm}) {
|
||||
+ # big endian systems can use ELFv2 ABI
|
||||
+ if ($target eq "linux-ppc64") {
|
||||
+ $target{perlasm_scheme} = "linux64v2" if ($predefined_C{_CALL_ELF} == 2);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
# Check for makedepend capabilities.
|
||||
if (!$disabled{makedepend}) {
|
||||
if ($config{target} =~ /^(VC|vms)-/) {
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
diff --git a/serial/SerialPortManager.cpp.orig b/serial/SerialPortManager.cpp
|
||||
index 22565b5..d444eee 100644
|
||||
--- a/serial/SerialPortManager.cpp.orig
|
||||
+++ b/serial/SerialPortManager.cpp
|
||||
@@ -1945,8 +1945,9 @@ void SerialPortManager::attemptRecovery()
|
||||
}
|
||||
} else {
|
||||
qCWarning(log_core_serial) << "Serial port recovery attempt failed";
|
||||
- if (eventCallback) {
|
||||
- eventCallback->onStatusUpdate(QString("Recovery attempt %1 failed").arg(m_connectionRetryCount));
|
||||
+ if (eventCallback) {
|
||||
+ int crc = m_connectionRetryCount;
|
||||
+ eventCallback->onStatusUpdate(QString("Recovery attempt %1 failed").arg(crc));
|
||||
}
|
||||
|
||||
// Try again if we haven't exceeded max attempts
|
||||
@@ -2034,4 +2035,4 @@ void SerialPortManager::applyCommandBasedBaudrateChange(int baudRate, const QStr
|
||||
} else {
|
||||
qCWarning(log_core_serial) << logPrefix << "Failed to apply user selected baudrate:" << baudRate;
|
||||
}
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
|
|
@ -0,0 +1,586 @@
|
|||
From 4478cfb004d3db7797e99fd3bdb23bf880a9c85b Mon Sep 17 00:00:00 2001
|
||||
From: John Lane <1786613+johnlane@users.noreply.github.com>
|
||||
Date: Wed, 3 Dec 2025 21:19:33 +0000
|
||||
Subject: [PATCH 1/2] Remove additional backslashes and add missing cpp and h
|
||||
files
|
||||
|
||||
---
|
||||
openterfaceQT.pro | 28 +++++++++++++++++++---------
|
||||
1 file changed, 19 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/openterfaceQT.pro b/openterfaceQT.pro
|
||||
index 3460dbac..f0d878e8 100644
|
||||
--- a/openterfaceQT.pro
|
||||
+++ b/openterfaceQT.pro
|
||||
@@ -84,16 +84,26 @@ SOURCES += main.cpp \
|
||||
!win32 {
|
||||
SOURCES += host/backend/ffmpegbackendhandler.cpp \
|
||||
host/backend/gstreamerbackendhandler.cpp \
|
||||
- host/backend/gstreamer/sinkselector.cpp \\
|
||||
- host/backend/gstreamer/queueconfigurator.cpp \\
|
||||
- host/backend/gstreamer/videooverlaymanager.cpp \\
|
||||
- host/backend/gstreamer/pipelinebuilder.cpp
|
||||
+ host/backend/gstreamer/pipelinefactory.cpp \
|
||||
+ host/backend/gstreamer/externalgstrunner.cpp \
|
||||
+ host/backend/gstreamer/inprocessgstrunner.cpp \
|
||||
+ host/backend/gstreamer/sinkselector.cpp \
|
||||
+ host/backend/gstreamer/queueconfigurator.cpp \
|
||||
+ host/backend/gstreamer/videooverlaymanager.cpp \
|
||||
+ host/backend/gstreamer/pipelinebuilder.cpp \
|
||||
+ host/backend/gstreamer/recordingmanager.cpp \
|
||||
+ host/backend/gstreamer/gstreamerhelpers.cpp
|
||||
HEADERS += host/backend/ffmpegbackendhandler.h \
|
||||
host/backend/gstreamerbackendhandler.h \
|
||||
- host/backend/gstreamer/sinkselector.h \\
|
||||
- host/backend/gstreamer/queueconfigurator.h \\
|
||||
- host/backend/gstreamer/videooverlaymanager.h \\
|
||||
- host/backend/gstreamer/pipelinebuilder.h
|
||||
+ host/backend/gstreamer/pipelinefactory.h \
|
||||
+ host/backend/gstreamer/externalgstrunner.h \
|
||||
+ host/backend/gstreamer/inprocessgstrunner.h \
|
||||
+ host/backend/gstreamer/sinkselector.h \
|
||||
+ host/backend/gstreamer/queueconfigurator.h \
|
||||
+ host/backend/gstreamer/videooverlaymanager.h \
|
||||
+ host/backend/gstreamer/pipelinebuilder.h \
|
||||
+ host/backend/gstreamer/recordingmanager.h \
|
||||
+ host/backend/gstreamer/gstreamerhelpers.h
|
||||
}
|
||||
|
||||
|
||||
@@ -263,4 +273,4 @@ TRANSLATIONS += config/languages/openterface_en.ts \
|
||||
config/languages/openterface_se.ts \
|
||||
config/languages/openterface_de.ts \
|
||||
config/languages/openterface_zh.ts
|
||||
- # Add more languages here
|
||||
\ No newline at end of file
|
||||
+ # Add more languages here
|
||||
|
||||
From ccd8f51fe510684439edf0d5f8083e4dd1423836 Mon Sep 17 00:00:00 2001
|
||||
From: John Lane <1786613+johnlane@users.noreply.github.com>
|
||||
Date: Wed, 3 Dec 2025 21:26:20 +0000
|
||||
Subject: [PATCH 2/2] De-duplicate logging categories
|
||||
|
||||
---
|
||||
host/backend/gstreamer/gstreamerhelpers.cpp | 22 ++--
|
||||
host/backend/gstreamer/queueconfigurator.cpp | 8 +-
|
||||
.../backend/gstreamer/videooverlaymanager.cpp | 118 +++++++++---------
|
||||
3 files changed, 74 insertions(+), 74 deletions(-)
|
||||
|
||||
diff --git a/host/backend/gstreamer/gstreamerhelpers.cpp b/host/backend/gstreamer/gstreamerhelpers.cpp
|
||||
index 6fc1dd6e..4739da17 100644
|
||||
--- a/host/backend/gstreamer/gstreamerhelpers.cpp
|
||||
+++ b/host/backend/gstreamer/gstreamerhelpers.cpp
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <QDebug>
|
||||
#include <QLoggingCategory>
|
||||
|
||||
-Q_LOGGING_CATEGORY(log_gstreamer_backend, "opf.backend.gstreamer")
|
||||
+Q_LOGGING_CATEGORY(log_gstreamer_gstreamerhelpers, "opf.backend.gstreamerhelpers")
|
||||
|
||||
using namespace Openterface::GStreamer::GstHelpers;
|
||||
|
||||
@@ -16,7 +16,7 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme
|
||||
{
|
||||
if (!elementPtr) {
|
||||
if (outError) *outError = QStringLiteral("Element pointer is null");
|
||||
- qCWarning(log_gstreamer_backend) << "setPipelineStateWithTimeout: element pointer is null";
|
||||
+ qCWarning(log_gstreamer_gstreamerhelpers) << "setPipelineStateWithTimeout: element pointer is null";
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme
|
||||
|
||||
GstStateChangeReturn ret = gst_element_set_state(element, static_cast<GstState>(targetState));
|
||||
if (ret == GST_STATE_CHANGE_FAILURE) {
|
||||
- qCCritical(log_gstreamer_backend) << "Failed to set element state to" << targetState;
|
||||
+ qCCritical(log_gstreamer_gstreamerhelpers) << "Failed to set element state to" << targetState;
|
||||
// Try to pull any error from the bus for diagnostics
|
||||
// Caller may pass a bus to parseAndLogGstErrorMessage, but we don't have it here.
|
||||
if (outError) *outError = QStringLiteral("Failed to set state (GST_STATE_CHANGE_FAILURE)");
|
||||
@@ -35,13 +35,13 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme
|
||||
ret = gst_element_get_state(element, &state, &pending, static_cast<GstClockTime>(timeoutMs) * GST_MSECOND);
|
||||
if (ret == GST_STATE_CHANGE_FAILURE) {
|
||||
if (outError) *outError = QStringLiteral("State change failure");
|
||||
- qCCritical(log_gstreamer_backend) << "State change failure waiting for target state";
|
||||
+ qCCritical(log_gstreamer_gstreamerhelpers) << "State change failure waiting for target state";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (state != static_cast<GstState>(targetState)) {
|
||||
if (outError) *outError = QStringLiteral("Element did not reach target state in timeout");
|
||||
- qCCritical(log_gstreamer_backend) << "Element failed to reach state" << targetState << "(current:" << state << ", pending:" << pending << ")";
|
||||
+ qCCritical(log_gstreamer_gstreamerhelpers) << "Element failed to reach state" << targetState << "(current:" << state << ", pending:" << pending << ")";
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -51,14 +51,14 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme
|
||||
void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* busPtr, const char* context)
|
||||
{
|
||||
if (!busPtr) {
|
||||
- qCWarning(log_gstreamer_backend) << "Bus not available for error details" << (context ? context : "");
|
||||
+ qCWarning(log_gstreamer_gstreamerhelpers) << "Bus not available for error details" << (context ? context : "");
|
||||
return;
|
||||
}
|
||||
|
||||
GstBus* bus = static_cast<GstBus*>(busPtr);
|
||||
GstMessage* msg = gst_bus_pop_filtered(bus, GST_MESSAGE_ERROR);
|
||||
if (!msg) {
|
||||
- qCDebug(log_gstreamer_backend) << "No error message available on bus" << (context ? context : "");
|
||||
+ qCDebug(log_gstreamer_gstreamerhelpers) << "No error message available on bus" << (context ? context : "");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@ void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* busPtr
|
||||
gchar* debug_info = nullptr;
|
||||
gst_message_parse_error(msg, &error, &debug_info);
|
||||
|
||||
- qCCritical(log_gstreamer_backend) << "GStreamer Error:" << (error ? error->message : "Unknown") << (context ? context : "");
|
||||
- qCCritical(log_gstreamer_backend) << "Debug info:" << (debug_info ? debug_info : "None");
|
||||
+ qCCritical(log_gstreamer_gstreamerhelpers) << "GStreamer Error:" << (error ? error->message : "Unknown") << (context ? context : "");
|
||||
+ qCCritical(log_gstreamer_gstreamerhelpers) << "Debug info:" << (debug_info ? debug_info : "None");
|
||||
|
||||
if (error) g_error_free(error);
|
||||
if (debug_info) g_free(debug_info);
|
||||
@@ -79,13 +79,13 @@ void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* busPtr
|
||||
bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* /*elementPtr*/, int /*targetState*/, int /*timeoutMs*/, QString* outError)
|
||||
{
|
||||
if (outError) *outError = QStringLiteral("GStreamer not available in this build");
|
||||
- qCWarning(log_gstreamer_backend) << "setPipelineStateWithTimeout called but GStreamer is not compiled in";
|
||||
+ qCWarning(log_gstreamer_gstreamerhelpers) << "setPipelineStateWithTimeout called but GStreamer is not compiled in";
|
||||
return false;
|
||||
}
|
||||
|
||||
void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* /*busPtr*/, const char* context)
|
||||
{
|
||||
- qCDebug(log_gstreamer_backend) << "GStreamer not compiled in - no bus to parse" << (context ? context : "");
|
||||
+ qCDebug(log_gstreamer_gstreamerhelpers) << "GStreamer not compiled in - no bus to parse" << (context ? context : "");
|
||||
}
|
||||
|
||||
#endif // HAVE_GSTREAMER
|
||||
diff --git a/host/backend/gstreamer/queueconfigurator.cpp b/host/backend/gstreamer/queueconfigurator.cpp
|
||||
index b7bea42e..12290193 100644
|
||||
--- a/host/backend/gstreamer/queueconfigurator.cpp
|
||||
+++ b/host/backend/gstreamer/queueconfigurator.cpp
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <gst/gst.h>
|
||||
#endif
|
||||
|
||||
-Q_LOGGING_CATEGORY(log_gstreamer_backend, "opf.backend.gstreamer")
|
||||
+Q_LOGGING_CATEGORY(log_gstreamer_queueconfigurator, "opf.backend.queueconfigurator")
|
||||
|
||||
using namespace Openterface::GStreamer;
|
||||
|
||||
@@ -26,10 +26,10 @@ void QueueConfigurator::configureDisplayQueue(void* pipeline)
|
||||
"max-size-time", G_GUINT64_CONSTANT(100000000), // 100ms
|
||||
"leaky", 2, // GST_QUEUE_LEAK_DOWNSTREAM
|
||||
NULL);
|
||||
- qCDebug(log_gstreamer_backend) << "✓ Configured display queue with higher priority for qtsink";
|
||||
+ qCDebug(log_gstreamer_queueconfigurator) << "✓ Configured display queue with higher priority for qtsink";
|
||||
gst_object_unref(displayQueue);
|
||||
} else {
|
||||
- qCDebug(log_gstreamer_backend) << "Display queue element not found (no named display-queue)";
|
||||
+ qCDebug(log_gstreamer_queueconfigurator) << "Display queue element not found (no named display-queue)";
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(pipeline);
|
||||
@@ -50,7 +50,7 @@ void QueueConfigurator::configureRecordingQueue(void* pipeline)
|
||||
"max-size-time", G_GUINT64_CONSTANT(500000000), // 500ms
|
||||
"leaky", 1, // GST_QUEUE_LEAK_UPSTREAM
|
||||
NULL);
|
||||
- qCDebug(log_gstreamer_backend) << "✓ Configured recording queue with lower priority relative to display";
|
||||
+ qCDebug(log_gstreamer_queueconfigurator) << "✓ Configured recording queue with lower priority relative to display";
|
||||
gst_object_unref(recordingQueue);
|
||||
}
|
||||
#else
|
||||
diff --git a/host/backend/gstreamer/videooverlaymanager.cpp b/host/backend/gstreamer/videooverlaymanager.cpp
|
||||
index d8bf42f3..2dbe3bbf 100644
|
||||
--- a/host/backend/gstreamer/videooverlaymanager.cpp
|
||||
+++ b/host/backend/gstreamer/videooverlaymanager.cpp
|
||||
@@ -22,7 +22,7 @@ static int x11_overlay_error_handler_local(Display* display, XErrorEvent* error)
|
||||
}
|
||||
#endif
|
||||
|
||||
-Q_LOGGING_CATEGORY(log_gstreamer_backend, "opf.backend.gstreamer")
|
||||
+Q_LOGGING_CATEGORY(log_gstreamer_videooverlaymanager, "opf.backend.videooverlaymanager")
|
||||
|
||||
using namespace Openterface::GStreamer;
|
||||
|
||||
@@ -30,36 +30,36 @@ bool VideoOverlayManager::embedVideoInWidget(void* pipeline, QWidget* widget)
|
||||
{
|
||||
#ifdef HAVE_GSTREAMER
|
||||
if (!widget || !pipeline) {
|
||||
- qCWarning(log_gstreamer_backend) << "Cannot embed video: widget or pipeline is null";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Cannot embed video: widget or pipeline is null";
|
||||
return false;
|
||||
}
|
||||
|
||||
GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink");
|
||||
if (!videoSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "No video sink element named 'videosink' found in pipeline";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink element named 'videosink' found in pipeline";
|
||||
videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);
|
||||
if (!videoSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "No video overlay interface found in pipeline either";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video overlay interface found in pipeline either";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
WId winId = widget->winId();
|
||||
if (winId) {
|
||||
- qCDebug(log_gstreamer_backend) << "Embedding video in widget with window ID:" << winId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Embedding video in widget with window ID:" << winId;
|
||||
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), winId);
|
||||
gst_object_unref(videoSink);
|
||||
- qCDebug(log_gstreamer_backend) << "Video embedded in widget successfully";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Video embedded in widget successfully";
|
||||
return true;
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Widget window ID is null, cannot embed video";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Widget window ID is null, cannot embed video";
|
||||
gst_object_unref(videoSink);
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(pipeline)
|
||||
Q_UNUSED(widget)
|
||||
- qCDebug(log_gstreamer_backend) << "Using autovideosink for video output (no in-process GStreamer)";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Using autovideosink for video output (no in-process GStreamer)";
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
@@ -68,36 +68,36 @@ bool VideoOverlayManager::embedVideoInGraphicsView(void* pipeline, QGraphicsView
|
||||
{
|
||||
#ifdef HAVE_GSTREAMER
|
||||
if (!view || !pipeline) {
|
||||
- qCWarning(log_gstreamer_backend) << "Cannot embed video: graphics view or pipeline is null";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Cannot embed video: graphics view or pipeline is null";
|
||||
return false;
|
||||
}
|
||||
|
||||
GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink");
|
||||
if (!videoSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "No video sink element named 'videosink' found in pipeline";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink element named 'videosink' found in pipeline";
|
||||
videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);
|
||||
if (!videoSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "No video overlay interface found in pipeline either";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video overlay interface found in pipeline either";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
WId winId = view->winId();
|
||||
if (winId) {
|
||||
- qCDebug(log_gstreamer_backend) << "Embedding video in graphics view with window ID:" << winId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Embedding video in graphics view with window ID:" << winId;
|
||||
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), winId);
|
||||
gst_object_unref(videoSink);
|
||||
- qCDebug(log_gstreamer_backend) << "Video embedded in graphics view successfully";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Video embedded in graphics view successfully";
|
||||
return true;
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Graphics view window ID is null, cannot embed video";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Graphics view window ID is null, cannot embed video";
|
||||
gst_object_unref(videoSink);
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(pipeline)
|
||||
Q_UNUSED(view)
|
||||
- qCDebug(log_gstreamer_backend) << "Using autovideosink for video output (no in-process GStreamer)";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Using autovideosink for video output (no in-process GStreamer)";
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
@@ -106,36 +106,36 @@ bool VideoOverlayManager::embedVideoInVideoPane(void* pipeline, ::VideoPane* vid
|
||||
{
|
||||
#ifdef HAVE_GSTREAMER
|
||||
if (!videoPane || !pipeline) {
|
||||
- qCWarning(log_gstreamer_backend) << "Cannot embed video: VideoPane or pipeline is null";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Cannot embed video: VideoPane or pipeline is null";
|
||||
return false;
|
||||
}
|
||||
|
||||
GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink");
|
||||
if (!videoSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "No video sink element named 'videosink' found in pipeline";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink element named 'videosink' found in pipeline";
|
||||
videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);
|
||||
if (!videoSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "No video overlay interface found in pipeline either";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video overlay interface found in pipeline either";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
WId winId = videoPane->getVideoOverlayWindowId();
|
||||
if (winId) {
|
||||
- qCDebug(log_gstreamer_backend) << "Embedding video in VideoPane overlay with window ID:" << winId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Embedding video in VideoPane overlay with window ID:" << winId;
|
||||
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), winId);
|
||||
gst_object_unref(videoSink);
|
||||
- qCDebug(log_gstreamer_backend) << "Video embedded in VideoPane overlay successfully";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Video embedded in VideoPane overlay successfully";
|
||||
return true;
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "VideoPane overlay window ID is null, cannot embed video";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "VideoPane overlay window ID is null, cannot embed video";
|
||||
gst_object_unref(videoSink);
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(pipeline)
|
||||
Q_UNUSED(videoPane)
|
||||
- qCDebug(log_gstreamer_backend) << "Using autovideosink for video output (no in-process GStreamer)";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Using autovideosink for video output (no in-process GStreamer)";
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
@@ -144,7 +144,7 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
{
|
||||
#ifdef HAVE_GSTREAMER
|
||||
if (!videoSinkPtr || windowId == 0) {
|
||||
- qCWarning(log_gstreamer_backend) << "Invalid parameters for overlay setup: sink=" << videoSinkPtr << "windowId=" << windowId;
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Invalid parameters for overlay setup: sink=" << videoSinkPtr << "windowId=" << windowId;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
|
||||
// Check if the sink supports video overlay interface
|
||||
if (GST_IS_VIDEO_OVERLAY(videoSink)) {
|
||||
- qCDebug(log_gstreamer_backend) << "Sink supports video overlay - setting up overlay with window ID:" << windowId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Sink supports video overlay - setting up overlay with window ID:" << windowId;
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
// Add X11 error handling to prevent segmentation fault
|
||||
@@ -175,12 +175,12 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
if (g_object_class_find_property(G_OBJECT_GET_CLASS(videoSink), "force-aspect-ratio")) {
|
||||
// Allow the sink to stretch to the configured render rectangle so overlay scales to widget size
|
||||
g_object_set(videoSink, "force-aspect-ratio", FALSE, NULL);
|
||||
- qCDebug(log_gstreamer_backend) << "Disabled force-aspect-ratio on video sink to allow fill scaling";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Disabled force-aspect-ratio on video sink to allow fill scaling";
|
||||
}
|
||||
|
||||
if (g_object_class_find_property(G_OBJECT_GET_CLASS(videoSink), "pixel-aspect-ratio")) {
|
||||
g_object_set(videoSink, "pixel-aspect-ratio", "1/1", NULL);
|
||||
- qCDebug(log_gstreamer_backend) << "Set pixel-aspect-ratio to 1:1 on video sink";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Set pixel-aspect-ratio to 1:1 on video sink";
|
||||
}
|
||||
|
||||
// Configure render rectangle based on provided targets
|
||||
@@ -188,13 +188,13 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
QSize widgetSize = videoWidget->size();
|
||||
if (widgetSize.width() > 0 && widgetSize.height() > 0) {
|
||||
gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(videoSink), 0, 0, widgetSize.width(), widgetSize.height());
|
||||
- qCDebug(log_gstreamer_backend) << "Set render rectangle to widget size:" << widgetSize;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Set render rectangle to widget size:" << widgetSize;
|
||||
}
|
||||
} else if (graphicsVideoItem) {
|
||||
QRectF itemRect = graphicsVideoItem->boundingRect();
|
||||
if (itemRect.width() > 0 && itemRect.height() > 0) {
|
||||
gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(videoSink), 0, 0, (gint)itemRect.width(), (gint)itemRect.height());
|
||||
- qCDebug(log_gstreamer_backend) << "Set render rectangle to video item size:" << itemRect.size();
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Set render rectangle to video item size:" << itemRect.size();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,18 +205,18 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
XCloseDisplay(display);
|
||||
|
||||
if (x11_overlay_error_occurred_local) {
|
||||
- qCWarning(log_gstreamer_backend) << "X11 error occurred during overlay setup - continuing without embedding";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "X11 error occurred during overlay setup - continuing without embedding";
|
||||
} else {
|
||||
- qCDebug(log_gstreamer_backend) << "Video overlay setup completed successfully";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Video overlay setup completed successfully";
|
||||
}
|
||||
} else if (!old_handler) {
|
||||
- qCDebug(log_gstreamer_backend) << "Video overlay setup completed (no X11 error handling)";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Video overlay setup completed (no X11 error handling)";
|
||||
}
|
||||
#endif
|
||||
|
||||
- qCDebug(log_gstreamer_backend) << "Overlay setup completed";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Overlay setup completed";
|
||||
} catch (...) {
|
||||
- qCCritical(log_gstreamer_backend) << "Exception during video overlay setup - continuing without embedding";
|
||||
+ qCCritical(log_gstreamer_videooverlaymanager) << "Exception during video overlay setup - continuing without embedding";
|
||||
#ifdef Q_OS_LINUX
|
||||
if (display && old_handler) {
|
||||
XSetErrorHandler(old_handler);
|
||||
@@ -242,17 +242,17 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
if (gst_iterator_next(iter, &item) == GST_ITERATOR_OK) {
|
||||
actualSink = GST_ELEMENT(g_value_get_object(&item));
|
||||
if (actualSink && GST_IS_VIDEO_OVERLAY(actualSink)) {
|
||||
- qCDebug(log_gstreamer_backend) << "Found overlay-capable sink inside autovideosink";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Found overlay-capable sink inside autovideosink";
|
||||
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(actualSink), windowId);
|
||||
// Use target widget size if available to set explicit render rectangle so scaling works
|
||||
if (videoWidget) {
|
||||
QSize widgetSize = videoWidget->size();
|
||||
if (widgetSize.width() > 0 && widgetSize.height() > 0) {
|
||||
gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(actualSink), 0, 0, widgetSize.width(), widgetSize.height());
|
||||
- qCDebug(log_gstreamer_backend) << "Set render rectangle to widget size for autovideosink child sink:" << widgetSize;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Set render rectangle to widget size for autovideosink child sink:" << widgetSize;
|
||||
if (g_object_class_find_property(G_OBJECT_GET_CLASS(actualSink), "force-aspect-ratio")) {
|
||||
g_object_set(actualSink, "force-aspect-ratio", FALSE, NULL);
|
||||
- qCDebug(log_gstreamer_backend) << "Disabled force-aspect-ratio on autovideosink child sink";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Disabled force-aspect-ratio on autovideosink child sink";
|
||||
}
|
||||
} else {
|
||||
gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(actualSink), 0, 0, -1, -1);
|
||||
@@ -269,18 +269,18 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW
|
||||
}
|
||||
gst_iterator_free(iter);
|
||||
}
|
||||
- qCDebug(log_gstreamer_backend) << "autovideosink selected sink doesn't support overlay - video will display in separate window";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "autovideosink selected sink doesn't support overlay - video will display in separate window";
|
||||
return false;
|
||||
}
|
||||
|
||||
- qCWarning(log_gstreamer_backend) << "Sink does not support video overlay:" << sinkName;
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Sink does not support video overlay:" << sinkName;
|
||||
return false;
|
||||
#else
|
||||
Q_UNUSED(videoSinkPtr)
|
||||
Q_UNUSED(windowId)
|
||||
Q_UNUSED(videoWidget)
|
||||
Q_UNUSED(graphicsVideoItem)
|
||||
- qCDebug(log_gstreamer_backend) << "No in-process GStreamer - overlay unavailable";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "No in-process GStreamer - overlay unavailable";
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@@ -300,7 +300,7 @@ bool VideoOverlayManager::setupVideoOverlayForPipeline(void* pipeline, WId windo
|
||||
gst_object_unref(videoSink);
|
||||
return ok;
|
||||
}
|
||||
- qCWarning(log_gstreamer_backend) << "No video sink found in pipeline";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink found in pipeline";
|
||||
return false;
|
||||
#else
|
||||
Q_UNUSED(pipeline)
|
||||
@@ -315,10 +315,10 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
::VideoPane* videoPane,
|
||||
bool &pendingFlag)
|
||||
{
|
||||
- qCDebug(log_gstreamer_backend) << "VideoOverlayManager: Completing pending overlay setup...";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "VideoOverlayManager: Completing pending overlay setup...";
|
||||
|
||||
if (!pendingFlag || !pipeline) {
|
||||
- qCDebug(log_gstreamer_backend) << "No pending setup or no pipeline";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "No pending setup or no pipeline";
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
const bool isXcb = platform.contains("xcb", Qt::CaseInsensitive);
|
||||
const bool hasXDisplay = !qgetenv("DISPLAY").isEmpty();
|
||||
if (!isXcb || !hasXDisplay) {
|
||||
- qCWarning(log_gstreamer_backend) << "Skipping deferred overlay setup: platform is" << platform << "(DISPLAY set:" << hasXDisplay << ")";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Skipping deferred overlay setup: platform is" << platform << "(DISPLAY set:" << hasXDisplay << ")";
|
||||
pendingFlag = false;
|
||||
return false;
|
||||
}
|
||||
@@ -335,7 +335,7 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
|
||||
if (videoPane) {
|
||||
windowId = videoPane->getVideoOverlayWindowId();
|
||||
- qCDebug(log_gstreamer_backend) << "Completing overlay setup with VideoPane window ID:" << windowId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Completing overlay setup with VideoPane window ID:" << windowId;
|
||||
} else if (graphicsVideoItem) {
|
||||
if (graphicsVideoItem->scene()) {
|
||||
QList<QGraphicsView*> views = graphicsVideoItem->scene()->views();
|
||||
@@ -344,21 +344,21 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
if (auto pane = qobject_cast<VideoPane*>(view)) {
|
||||
if (pane->isDirectGStreamerModeEnabled() && pane->getOverlayWidget()) {
|
||||
windowId = pane->getVideoOverlayWindowId();
|
||||
- qCDebug(log_gstreamer_backend) << "Completing overlay setup with VideoPane overlay widget window ID:" << windowId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Completing overlay setup with VideoPane overlay widget window ID:" << windowId;
|
||||
} else {
|
||||
- qCDebug(log_gstreamer_backend) << "VideoPane overlay widget still not ready";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "VideoPane overlay widget still not ready";
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
windowId = view->winId();
|
||||
- qCDebug(log_gstreamer_backend) << "Completing overlay setup with graphics view window ID:" << windowId;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Completing overlay setup with graphics view window ID:" << windowId;
|
||||
}
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Graphics video item has no associated view";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Graphics video item has no associated view";
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Graphics video item has no scene";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Graphics video item has no scene";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -367,7 +367,7 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink");
|
||||
if (!videoSink) {
|
||||
videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);
|
||||
- if (videoSink) qCDebug(log_gstreamer_backend) << "Deferred path: found sink by overlay interface";
|
||||
+ if (videoSink) qCDebug(log_gstreamer_videooverlaymanager) << "Deferred path: found sink by overlay interface";
|
||||
}
|
||||
|
||||
if (videoSink) {
|
||||
@@ -384,14 +384,14 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
targetWidget = videoWidget;
|
||||
}
|
||||
if (targetWidget) {
|
||||
- qCDebug(log_gstreamer_backend) << "Deferred: binding qt6videosink to QWidget" << targetWidget;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Deferred: binding qt6videosink to QWidget" << targetWidget;
|
||||
g_object_set(G_OBJECT(videoSink), "widget", (gpointer)targetWidget, nullptr);
|
||||
gst_object_unref(videoSink);
|
||||
pendingFlag = false;
|
||||
- qCDebug(log_gstreamer_backend) << "Deferred qt6videosink binding completed";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Deferred qt6videosink binding completed";
|
||||
return true;
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Deferred: no target QWidget available to bind qt6videosink";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Deferred: no target QWidget available to bind qt6videosink";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,30 +399,30 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline,
|
||||
const bool looksLikeXSink = sinkNameBA.contains("xvimage") || sinkNameBA.contains("ximage");
|
||||
|
||||
if (!supportsOverlay) {
|
||||
- qCWarning(log_gstreamer_backend) << "Deferred overlay skipped: sink does not support overlay interface (" << sinkName << ")";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Deferred overlay skipped: sink does not support overlay interface (" << sinkName << ")";
|
||||
gst_object_unref(videoSink);
|
||||
pendingFlag = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!looksLikeXSink) {
|
||||
- qCWarning(log_gstreamer_backend) << "Deferred overlay skipped: sink is not an X sink (" << sinkName << ") on platform" << QGuiApplication::platformName();
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Deferred overlay skipped: sink is not an X sink (" << sinkName << ") on platform" << QGuiApplication::platformName();
|
||||
gst_object_unref(videoSink);
|
||||
pendingFlag = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
- qCDebug(log_gstreamer_backend) << "Setting up deferred video overlay with window ID:" << windowId << "using sink" << sinkName;
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Setting up deferred video overlay with window ID:" << windowId << "using sink" << sinkName;
|
||||
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), windowId);
|
||||
gst_object_unref(videoSink);
|
||||
pendingFlag = false;
|
||||
- qCDebug(log_gstreamer_backend) << "Deferred overlay setup completed successfully";
|
||||
+ qCDebug(log_gstreamer_videooverlaymanager) << "Deferred overlay setup completed successfully";
|
||||
return true;
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Could not find video sink for deferred overlay setup";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Could not find video sink for deferred overlay setup";
|
||||
}
|
||||
} else {
|
||||
- qCWarning(log_gstreamer_backend) << "Still no valid window ID available for deferred overlay setup";
|
||||
+ qCWarning(log_gstreamer_videooverlaymanager) << "Still no valid window ID available for deferred overlay setup";
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
SUBSYSTEM=="usb", ATTRS{idVendor}=="534d", ATTRS{idProduct}=="2109", MODE="0660", GROUP="plugdev"
|
||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0660", GROUP="plugdev"
|
||||
73
backports/openterface-qt/APKBUILD
Normal file
73
backports/openterface-qt/APKBUILD
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
pkgname=openterface-qt
|
||||
pkgver=0.5.7
|
||||
pkgrel=0
|
||||
pkgdesc="Openterface Mini-KVM Host Application"
|
||||
# armhf: missing qt6-qtmultimedia
|
||||
# riscv64: missing libgtk-3
|
||||
arch="all !armhf !riscv64"
|
||||
url="https://openterface.com/"
|
||||
license="AGPL-3.0-only"
|
||||
depends="
|
||||
gst-plugins-good-qt
|
||||
hicolor-icon-theme
|
||||
qt6-qtmultimedia-ffmpeg
|
||||
"
|
||||
makedepends="
|
||||
cmake
|
||||
ffmpeg-dev
|
||||
libgudev-dev
|
||||
libjpeg-turbo-dev
|
||||
libusb-dev
|
||||
libx11-dev
|
||||
libxv-dev
|
||||
patchelf
|
||||
qt6-qtbase-dev
|
||||
qt6-qtmultimedia-dev
|
||||
qt6-qtserialport-dev
|
||||
samurai
|
||||
v4l-utils-dev
|
||||
"
|
||||
install="$pkgname.post-install"
|
||||
builddir="$srcdir"/Openterface_QT-$pkgver
|
||||
options="!check" # No testsuite
|
||||
source="
|
||||
$pkgname-$pkgver.tar.gz::https://github.com/TechxArtisanStudio/Openterface_QT/archive/$pkgver.tar.gz
|
||||
openterfaceQT.desktop
|
||||
51-openterface-permissions.rules
|
||||
348_address-use-of-deleted-function.patch
|
||||
423_deduplicate-logging-categories-and-remove-backslashes.patch
|
||||
use-system-libs.patch
|
||||
"
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
mkdir build && cd build
|
||||
# OPENTERFACE_BUILD_STATIC: do not build vendored dependencies
|
||||
cmake -DOPENTERFACE_BUILD_STATIC=OFF ..
|
||||
}
|
||||
|
||||
build() {
|
||||
ninja -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
install -Dm755 "$builddir"/build/openterfaceQT "$pkgdir"/usr/bin/openterfaceQT
|
||||
install -Dm644 "$srcdir"/51-openterface-permissions.rules "$pkgdir"/etc/udev/rules.d/51-openterface-permissions.rules
|
||||
install -Dm644 "$srcdir"/openterfaceQT.desktop "$pkgdir"/usr/share/applications/openterfaceQT.desktop
|
||||
install -Dm644 "$builddir"/images/icon_32.png "$pkgdir"/usr/share/icons/hicolor/32x32/apps/openterfaceQT.png
|
||||
install -Dm644 "$builddir"/images/icon_64.png "$pkgdir"/usr/share/icons/hicolor/64x64/apps/openterfaceQT.png
|
||||
install -Dm644 "$builddir"/images/icon_128.png "$pkgdir"/usr/share/icons/hicolor/128x128/apps/openterfaceQT.png
|
||||
|
||||
# vanilla build does not set rpath, since it usually wants to use vendored libs
|
||||
patchelf --set-rpath '/usr/lib' "$pkgdir"/usr/bin/openterfaceQT
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
996415d6f7d3ed950901c380a0520ddab8c31e8d3c2e2bb3a5f631a5600cace6bcf6bf89871e4e4ef818009eeb08c448fd793e1e4758ecccf1e1a21ff04fd560 openterface-qt-0.5.7.tar.gz
|
||||
e39cfa04cbcb59e8ba54110a28eff41854f73fa7c4baeeed5433907c79781946f12bd3a731763caa1d591e664eab0650bdbd2a844954baa12bb96a76a17c6e4f openterfaceQT.desktop
|
||||
f50d721a6a2d1e0183c81e99230e91e127ee6c6f3243af1cff3e3cb78e2913ebab3346ec8b461a4710220d1ce2e12a7cc960ded6e0dc2def539375c6e737b647 51-openterface-permissions.rules
|
||||
69b5556ec9e56792e848ea1ff9374e12e6901da821ecd9d6f2f521ea30f48e564c2cd0631fc1360acd6c8c6249cfa718d5baf7ed6929e1e92f63eeaea578bcb3 348_address-use-of-deleted-function.patch
|
||||
47580d07a2d971ad2010e78373d1abbcbc05b3fbd3a7e466faed50dc9a0d632db30c0a7622e7324aeb0eb38d49e3241cb6cebc835f7adeed977b1dd7b48ea5f6 423_deduplicate-logging-categories-and-remove-backslashes.patch
|
||||
22ecac74fe0923f39f538a5d587f8c100d9709631a1584bd20646e09dcf777cd3042670d08195626220f0494e5efa9549a299c5e1fd8c42f991ec5746b42cc86 use-system-libs.patch
|
||||
"
|
||||
3
backports/openterface-qt/openterface-qt.post-install
Executable file
3
backports/openterface-qt/openterface-qt.post-install
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
echo "Setup the dialout permission for Serial port."
|
||||
echo "Run: sudo usermod -a -G video,plugdev \$USER"
|
||||
8
backports/openterface-qt/openterfaceQT.desktop
Normal file
8
backports/openterface-qt/openterfaceQT.desktop
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=OpenterfaceQT
|
||||
Exec=/usr/bin/openterfaceQT
|
||||
Icon=openterfaceQT
|
||||
Comment=OpenterfaceQT Application
|
||||
Categories=Utility;
|
||||
72
backports/openterface-qt/use-system-libs.patch
Normal file
72
backports/openterface-qt/use-system-libs.patch
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index e0e8ea1..c861725 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -244,7 +244,7 @@ endif()
|
||||
# Add XCB cursor library for static linking (Linux only) - Legacy support
|
||||
if(UNIX AND NOT APPLE AND XCB_CURSOR_FOUND)
|
||||
# This is redundant now but keeping for compatibility
|
||||
- message(STATUS "XCB cursor already linked via static approach above")
|
||||
+ target_link_libraries(openterfaceQT PRIVATE X11)
|
||||
endif()
|
||||
|
||||
# Add TurboJPEG if available
|
||||
@@ -307,4 +307,4 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-# Qt components already found above
|
||||
\ No newline at end of file
|
||||
+# Qt components already found above
|
||||
diff --git a/cmake/FFmpeg.cmake b/cmake/FFmpeg.cmake
|
||||
index ef0699e..660e765 100644
|
||||
--- a/cmake/FFmpeg.cmake
|
||||
+++ b/cmake/FFmpeg.cmake
|
||||
@@ -19,7 +19,7 @@ if(NOT DEFINED FFMPEG_PREFIX)
|
||||
if(WIN32)
|
||||
set(FFMPEG_PREFIX "C:/ffmpeg-static" CACHE PATH "FFmpeg installation directory")
|
||||
else()
|
||||
- set(FFMPEG_PREFIX "/opt/ffmpeg" CACHE PATH "FFmpeg installation directory")
|
||||
+ set(FFMPEG_PREFIX "/usr" CACHE PATH "FFmpeg installation directory")
|
||||
endif()
|
||||
message(STATUS "Using default FFMPEG_PREFIX: ${FFMPEG_PREFIX}")
|
||||
endif()
|
||||
@@ -116,7 +116,7 @@ if(NOT FFMPEG_FOUND)
|
||||
message(STATUS "FFmpeg search paths: ${FFMPEG_SEARCH_PATHS}")
|
||||
foreach(SEARCH_PATH ${FFMPEG_SEARCH_PATHS})
|
||||
# For static builds, prefer .a files; check common lib directories
|
||||
- set(LIB_EXTENSIONS ".a")
|
||||
+ set(LIB_EXTENSIONS ".so")
|
||||
|
||||
# Platform-specific library paths
|
||||
if(WIN32)
|
||||
diff --git a/cmake/GStreamer.cmake b/cmake/GStreamer.cmake
|
||||
index 220e9f5..576535f 100644
|
||||
--- a/cmake/GStreamer.cmake
|
||||
+++ b/cmake/GStreamer.cmake
|
||||
@@ -316,10 +316,11 @@ else()
|
||||
# Check for Qt6 plugin availability in system
|
||||
message(STATUS "Checking for Qt6 GStreamer plugin in system...")
|
||||
find_file(GSTREAMER_QT6_PLUGIN
|
||||
- NAMES libgstqt6.so
|
||||
+ NAMES libgstqml6.so
|
||||
PATHS
|
||||
/usr/lib/x86_64-linux-gnu/gstreamer-1.0
|
||||
/usr/lib/aarch64-linux-gnu/gstreamer-1.0
|
||||
+ /usr/lib/gstreamer-1.0
|
||||
/usr/local/lib/gstreamer-1.0
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
diff --git a/cmake/Resources.cmake b/cmake/Resources.cmake
|
||||
index 2d28b89..e2009e3 100644
|
||||
--- a/cmake/Resources.cmake
|
||||
+++ b/cmake/Resources.cmake
|
||||
@@ -336,7 +336,7 @@ install(FILES ${CMAKE_SOURCE_DIR}/com.openterface.openterfaceQT.metainfo.xml
|
||||
if(COMMAND qt_generate_deploy_app_script)
|
||||
qt_generate_deploy_app_script(
|
||||
TARGET openterfaceQT
|
||||
- FILENAME_VARIABLE deploy_script
|
||||
+ OUTPUT_SCRIPT deploy_script
|
||||
NO_UNSUPPORTED_PLATFORM_ERROR
|
||||
)
|
||||
install(SCRIPT ${deploy_script})
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
# Automatically generated by apkbuild-cpan, template 4
|
||||
# Contributor: Timo Teräs <timo.teras@iki.fi>
|
||||
# Maintainer: Celeste <cielesti@protonmail.com>
|
||||
maintainer="Celeste <cielesti@protonmail.com>"
|
||||
pkgname=perl-math-random-isaac-xs
|
||||
pkgver=1.004
|
||||
pkgrel=8
|
||||
#_pkgreal is used by apkbuild-cpan to find modules at MetaCpan
|
||||
_pkgreal=Math-Random-ISAAC-XS
|
||||
pkgdesc="C implementation of the ISAAC PRNG algorithm"
|
||||
url="https://metacpan.org/release/Math-Random-ISAAC-XS/"
|
||||
arch="all"
|
||||
license="Public-Domain"
|
||||
depends="perl"
|
||||
makedepends="perl-dev perl-module-build"
|
||||
checkdepends="perl-test-nowarnings"
|
||||
subpackages="$pkgname-doc"
|
||||
source="https://cpan.metacpan.org/authors/id/J/JA/JAWNSY/Math-Random-ISAAC-XS-$pkgver.tar.gz"
|
||||
builddir="$srcdir/$_pkgreal-$pkgver"
|
||||
|
||||
build() {
|
||||
export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}')
|
||||
perl Build.PL \
|
||||
--installdirs=vendor \
|
||||
--create_packlist=0
|
||||
./Build
|
||||
}
|
||||
|
||||
check() {
|
||||
./Build test
|
||||
}
|
||||
|
||||
package() {
|
||||
./Build install --destdir="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
40c46b5f247f585a407ef9f36b5874d9cf03ec05963a9d92d988ebd63daf1e37b1b51308845d4596f47b5ad7203953bcb7fbb421c905b526dbe99b246ccb4d87 Math-Random-ISAAC-XS-1.004.tar.gz
|
||||
"
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
|
||||
pkgname=py3-apsw
|
||||
_pkgname=apsw
|
||||
pkgver=3.46.1.0
|
||||
pkgver=3.50.4.0
|
||||
pkgrel=0
|
||||
pkgdesc="Another Python SQLite Wrapper"
|
||||
url="https://github.com/rogerbinns/apsw"
|
||||
|
|
@ -41,6 +41,6 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
8d24825c8346b05a99b8959ce1fd45ae5162c95b020ecc63bd3491bfd1579370a0e6b1a962f7f64a7e7e415846007e64d90b28e2065ae047e228d60b12b9cb02 py3-apsw-3.46.1.0.zip
|
||||
71db63b0a7f550c9a5d3f112d47c24953472cc6555f0b57198428997d5cf5acf73629f2da8d5d53a2473067ba19d4b655cce467a5e2267e5bd6e8cf0d9883579 py3-apsw-3.50.4.0.zip
|
||||
8f3957bd6fecb5660a7cab367043e4ccdacd87d8963bbe41cc3d525265de28f08aa207099658d785be29c5c90b818c1418f766995cd780d02b8e36252a389758 detect-sqlite-config.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,42 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=py3-arcus
|
||||
# Needs to be upgraded in sync with libarcus
|
||||
pkgver=5.3.0
|
||||
pkgrel=1
|
||||
pkgdesc="Python bindings for libarcus"
|
||||
url="https://github.com/Ultimaker/pyArcus"
|
||||
arch="all"
|
||||
license="LGPL-3.0-only"
|
||||
makedepends="
|
||||
cmake
|
||||
libarcus-dev
|
||||
protobuf-dev
|
||||
py3-sip
|
||||
python3-dev
|
||||
samurai
|
||||
"
|
||||
options="!check" # package doesn't provide any tests
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/Ultimaker/pyArcus/archive/refs/tags/$pkgver.tar.gz
|
||||
cmake.patch
|
||||
cmake-helpers.patch
|
||||
pyproject.patch"
|
||||
builddir="$srcdir/pyArcus-$pkgver"
|
||||
|
||||
build() {
|
||||
cmake -G Ninja -B build \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
d4a114994fa3e3156eae95dde58df13237b8bb0571a1219d6dee6b6338fd65f911f27887d6ab32b7a3cb32bc45ca6c25147e7c2d246cb0707326b88246abfbcd py3-arcus-5.3.0.tar.gz
|
||||
f14e55cd31c13051981f26364e34da8c94e8eb5227b1cfd6fe44b9f97b5a4dcf6142a1751fa62eb0514a47583e6ec2d51dc253f23cf72c3fe6a1cb5dca136f21 cmake.patch
|
||||
de75b985607feae0a9c511742915814e9c3d4bc467183f010ccc334ce4d0d952b6ff86020360b78558c4738cc03cf62c386b44ed76bcec12075c4a93dd03eeb7 cmake-helpers.patch
|
||||
ef593230d5c78da8ba0fc6ea83225c4543857de1837d3151c45e59ffd7c98063b8f97f25d01c15b6a8f90c26c919206f9f7fa26c9650117f4ce7be49ebca876f pyproject.patch
|
||||
"
|
||||
|
|
@ -1,254 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./cmake/CMakeBuilder.py
|
||||
@@ -0,0 +1,13 @@
|
||||
+from sipbuild import SetuptoolsBuilder
|
||||
+
|
||||
+
|
||||
+class CMakeBuilder(SetuptoolsBuilder):
|
||||
+ def __init__(self, project, **kwargs):
|
||||
+ print("Using the CMake builder")
|
||||
+ super().__init__(project, **kwargs)
|
||||
+
|
||||
+ def build(self):
|
||||
+ """ Only Generate the source files """
|
||||
+ print("Generating the source files")
|
||||
+ self._generate_bindings()
|
||||
+ self._generate_scripts()
|
||||
--- /dev/null
|
||||
+++ ./cmake/FindSIP.cmake
|
||||
@@ -0,0 +1,65 @@
|
||||
+# Find SIP
|
||||
+# ~~~~~~~~
|
||||
+#
|
||||
+# SIP website: http://www.riverbankcomputing.co.uk/sip/index.php
|
||||
+#
|
||||
+# Find the installed version of SIP. FindSIP should be called after Python
|
||||
+# has been found.
|
||||
+#
|
||||
+# This file defines the following variables:
|
||||
+#
|
||||
+# SIP_VERSION - The version of SIP found expressed as a 6 digit hex number
|
||||
+# suitable for comparison as a string.
|
||||
+#
|
||||
+# SIP_VERSION_STR - The version of SIP found as a human readable string.
|
||||
+#
|
||||
+# SIP_BINARY_PATH - Path and filename of the SIP command line executable.
|
||||
+#
|
||||
+# SIP_INCLUDE_DIR - Directory holding the SIP C++ header file.
|
||||
+#
|
||||
+# SIP_DEFAULT_SIP_DIR - Default directory where .sip files should be installed
|
||||
+# into.
|
||||
+
|
||||
+# Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
|
||||
+# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
+
|
||||
+
|
||||
+
|
||||
+IF(SIP_VERSION OR SIP_BUILD_EXECUTABLE)
|
||||
+ # Already in cache, be silent
|
||||
+ SET(SIP_FOUND TRUE)
|
||||
+ELSE()
|
||||
+
|
||||
+ FIND_FILE(_find_sip_py FindSIP.py PATHS ${CMAKE_MODULE_PATH} NO_CMAKE_FIND_ROOT_PATH)
|
||||
+
|
||||
+ EXECUTE_PROCESS(COMMAND ${Python_EXECUTABLE} ${_find_sip_py} OUTPUT_VARIABLE sip_config)
|
||||
+ IF(sip_config)
|
||||
+ STRING(REGEX REPLACE "^sip_version:([^\n]+).*$" "\\1" SIP_VERSION ${sip_config})
|
||||
+ STRING(REGEX REPLACE ".*\nsip_version_num:([^\n]+).*$" "\\1" SIP_VERSION_NUM ${sip_config})
|
||||
+ STRING(REGEX REPLACE ".*\nsip_version_str:([^\n]+).*$" "\\1" SIP_VERSION_STR ${sip_config})
|
||||
+ STRING(REGEX REPLACE ".*\ndefault_sip_dir:([^\n]+).*$" "\\1" SIP_DEFAULT_SIP_DIR ${sip_config})
|
||||
+ IF(${SIP_VERSION_STR} VERSION_LESS 5)
|
||||
+ STRING(REGEX REPLACE ".*\nsip_bin:([^\n]+).*$" "\\1" SIP_BINARY_PATH ${sip_config})
|
||||
+ STRING(REGEX REPLACE ".*\nsip_inc_dir:([^\n]+).*$" "\\1" SIP_INCLUDE_DIR ${sip_config})
|
||||
+ STRING(REGEX REPLACE ".*\nsip_module_dir:([^\n]+).*$" "\\1" SIP_MODULE_DIR ${sip_config})
|
||||
+ ELSE(${SIP_VERSION_STR} VERSION_LESS 5)
|
||||
+ FIND_PROGRAM(SIP_BUILD_EXECUTABLE sip-build)
|
||||
+ ENDIF(${SIP_VERSION_STR} VERSION_LESS 5)
|
||||
+ SET(SIP_FOUND TRUE)
|
||||
+ ENDIF(sip_config)
|
||||
+
|
||||
+ IF(SIP_FOUND)
|
||||
+ IF(NOT SIP_FIND_QUIETLY)
|
||||
+ MESSAGE(STATUS "Found SIP version: ${SIP_VERSION_STR}")
|
||||
+ ENDIF(NOT SIP_FIND_QUIETLY)
|
||||
+ ELSE(SIP_FOUND)
|
||||
+ IF(SIP_FIND_REQUIRED)
|
||||
+ MESSAGE(FATAL_ERROR "Could not find SIP")
|
||||
+ ENDIF(SIP_FIND_REQUIRED)
|
||||
+ ENDIF(SIP_FOUND)
|
||||
+
|
||||
+ENDIF()
|
||||
+
|
||||
+include(${CMAKE_SOURCE_DIR}/cmake/SIPMacros.cmake)
|
||||
+ADD_DEFINITIONS(-DSIP_VERSION=0x${SIP_VERSION})
|
||||
--- /dev/null
|
||||
+++ ./cmake/FindSIP.py
|
||||
@@ -0,0 +1,57 @@
|
||||
+# -*- coding: utf-8 -*-
|
||||
+#
|
||||
+# Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
|
||||
+# All rights reserved.
|
||||
+#
|
||||
+# Redistribution and use in source and binary forms, with or without
|
||||
+# modification, are permitted provided that the following conditions are met:
|
||||
+# * Redistributions of source code must retain the above copyright
|
||||
+# notice, this list of conditions and the following disclaimer.
|
||||
+# * Redistributions in binary form must reproduce the above copyright
|
||||
+# notice, this list of conditions and the following disclaimer in the
|
||||
+# documentation and/or other materials provided with the distribution.
|
||||
+# * Neither the name of the Simon Edwards <simon@simonzone.com> nor the
|
||||
+# names of its contributors may be used to endorse or promote products
|
||||
+# derived from this software without specific prior written permission.
|
||||
+#
|
||||
+# THIS SOFTWARE IS PROVIDED BY Simon Edwards <simon@simonzone.com> ''AS IS'' AND ANY
|
||||
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
+# DISCLAIMED. IN NO EVENT SHALL Simon Edwards <simon@simonzone.com> BE LIABLE FOR ANY
|
||||
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+#
|
||||
+# FindSIP.py
|
||||
+# Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
|
||||
+# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
+
|
||||
+try:
|
||||
+ import sipbuild
|
||||
+
|
||||
+ print("sip_version:%06.0x" % sipbuild.version.SIP_VERSION)
|
||||
+ print("sip_version_num:%d" % sipbuild.version.SIP_VERSION)
|
||||
+ print("sip_version_str:%s" % sipbuild.version.SIP_VERSION_STR)
|
||||
+
|
||||
+ from distutils.sysconfig import get_python_lib
|
||||
+ python_modules_dir = get_python_lib(plat_specific=1)
|
||||
+ print("default_sip_dir:%s" % python_modules_dir)
|
||||
+except ImportError: # Code for SIP v4
|
||||
+ import sipconfig
|
||||
+
|
||||
+ sipcfg = sipconfig.Configuration()
|
||||
+ print("sip_version:%06.0x" % sipcfg.sip_version)
|
||||
+ print("sip_version_num:%d" % sipcfg.sip_version)
|
||||
+ print("sip_version_str:%s" % sipcfg.sip_version_str)
|
||||
+ print("sip_bin:%s" % sipcfg.sip_bin)
|
||||
+ print("default_sip_dir:%s" % sipcfg.default_sip_dir)
|
||||
+ print("sip_inc_dir:%s" % sipcfg.sip_inc_dir)
|
||||
+ # SIP 4.19.10+ has new sipcfg.sip_module_dir
|
||||
+ if hasattr(sipcfg, "sip_module_dir"):
|
||||
+ print("sip_module_dir:%s" % sipcfg.sip_module_dir)
|
||||
+ else:
|
||||
+ print("sip_module_dir:%s" % sipcfg.sip_mod_dir)
|
||||
--- /dev/null
|
||||
+++ ./cmake/SIPMacros.cmake
|
||||
@@ -0,0 +1,107 @@
|
||||
+
|
||||
+
|
||||
+# Macros for SIP
|
||||
+# ~~~~~~~~~~~~~~
|
||||
+
|
||||
+set(SIP_ARGS --pep484-pyi --no-protected-is-public)
|
||||
+
|
||||
+function(add_sip_module MODULE_TARGET)
|
||||
+ if(NOT SIP_BUILD_EXECUTABLE)
|
||||
+ set(SIP_BUILD_EXECUTABLE ${CMAKE_PREFIX_PATH}/Scripts/sip-build)
|
||||
+ endif()
|
||||
+
|
||||
+ message(STATUS "SIP: Generating pyproject.toml")
|
||||
+ configure_file(${CMAKE_SOURCE_DIR}/pyproject.toml.in ${CMAKE_CURRENT_BINARY_DIR}/pyproject.toml)
|
||||
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/CMakeBuilder.py ${CMAKE_CURRENT_BINARY_DIR}/CMakeBuilder.py)
|
||||
+ if(WIN32)
|
||||
+ set(ext .pyd)
|
||||
+ set(env_path_sep ";")
|
||||
+ else()
|
||||
+ set(ext .so)
|
||||
+ set(env_path_sep ":")
|
||||
+ endif()
|
||||
+
|
||||
+ message(STATUS "SIP: Generating source files")
|
||||
+ execute_process(
|
||||
+ COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${PYTHONPATH}${env_path_sep}$ENV{PYTHONPATH}${env_path_sep}${CMAKE_CURRENT_BINARY_DIR}" ${SIP_BUILD_EXECUTABLE} ${SIP_ARGS}
|
||||
+ COMMAND_ECHO STDOUT
|
||||
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/
|
||||
+ )
|
||||
+ # This will generate the source-files during the configuration step in CMake. Needed to obtain the sources
|
||||
+
|
||||
+ # Touch the generated files (8 in total) to make them dirty and force them to rebuild
|
||||
+ message(STATUS "SIP: Touching the source files")
|
||||
+ set(_sip_output_files)
|
||||
+ list(LENGTH SIP_FILES _no_outputfiles)
|
||||
+ foreach(_concat_file_nr RANGE 0 ${_no_outputfiles})
|
||||
+ if(${_concat_file_nr} LESS 8)
|
||||
+ list(APPEND _sip_output_files "${CMAKE_CURRENT_BINARY_DIR}/${MODULE_TARGET}/${MODULE_TARGET}/sip${MODULE_TARGET}part${_concat_file_nr}.cpp")
|
||||
+ endif()
|
||||
+ endforeach()
|
||||
+
|
||||
+ # Find the generated source files
|
||||
+ message(STATUS "SIP: Collecting the generated source files")
|
||||
+ file(GLOB sip_c "${CMAKE_CURRENT_BINARY_DIR}/${MODULE_TARGET}/${MODULE_TARGET}/*.c")
|
||||
+ file(GLOB sip_cpp "${CMAKE_CURRENT_BINARY_DIR}/${MODULE_TARGET}/${MODULE_TARGET}/*.cpp")
|
||||
+ file(GLOB sip_hdr "${CMAKE_CURRENT_BINARY_DIR}/${MODULE_TARGET}/${MODULE_TARGET}/*.h")
|
||||
+
|
||||
+ # Add the user specified source files
|
||||
+ message(STATUS "SIP: Collecting the user specified source files")
|
||||
+ get_target_property(usr_src ${MODULE_TARGET} SOURCES)
|
||||
+
|
||||
+ # create the target library and link all the files (generated and user specified
|
||||
+ message(STATUS "SIP: Linking the interface target against the shared library")
|
||||
+ set(sip_sources "${sip_c}" "${sip_cpp}" "${usr_src}")
|
||||
+
|
||||
+ if (BUILD_SHARED_LIBS)
|
||||
+ add_library("sip_${MODULE_TARGET}" SHARED ${sip_sources})
|
||||
+ else()
|
||||
+ add_library("sip_${MODULE_TARGET}" STATIC ${sip_sources})
|
||||
+ endif()
|
||||
+
|
||||
+ # Make sure that the library name of the target is the same as the MODULE_TARGET with the appropriate extension
|
||||
+ target_link_libraries("sip_${MODULE_TARGET}" PRIVATE "${MODULE_TARGET}")
|
||||
+ set_target_properties("sip_${MODULE_TARGET}" PROPERTIES PREFIX "")
|
||||
+ set_target_properties("sip_${MODULE_TARGET}" PROPERTIES SUFFIX ${ext})
|
||||
+ set_target_properties("sip_${MODULE_TARGET}" PROPERTIES OUTPUT_NAME "${MODULE_TARGET}")
|
||||
+
|
||||
+ # Add the custom command to (re-)generate the files and mark them as dirty. This allows the user to actually work
|
||||
+ # on the sip definition files without having to reconfigure the complete project.
|
||||
+ if (NOT DEFINED PYTHONPATH)
|
||||
+ set(PYTHONPATH "")
|
||||
+ endif ()
|
||||
+ add_custom_command(
|
||||
+ TARGET "sip_${MODULE_TARGET}"
|
||||
+ COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${PYTHONPATH}${env_path_sep}$ENV{PYTHONPATH}${env_path_sep}${CMAKE_CURRENT_BINARY_DIR}" ${SIP_BUILD_EXECUTABLE} ${SIP_ARGS}
|
||||
+ COMMAND ${CMAKE_COMMAND} -E touch ${_sip_output_files}
|
||||
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/
|
||||
+ MAIN_DEPENDENCY ${MODULE_SIP}
|
||||
+ DEPENDS ${sip_sources}
|
||||
+ VERBATIM
|
||||
+ )
|
||||
+
|
||||
+ set_target_properties("sip_${MODULE_TARGET}"
|
||||
+ PROPERTIES
|
||||
+ RESOURCE "${CMAKE_CURRENT_BINARY_DIR}/${MODULE_TARGET}/${MODULE_TARGET}/${MODULE_TARGET}.pyi")
|
||||
+endfunction()
|
||||
+
|
||||
+function(install_sip_module MODULE_TARGET)
|
||||
+ if(DEFINED ARGV1)
|
||||
+ set(_install_path ${ARGV1})
|
||||
+ else()
|
||||
+ if(DEFINED Python_SITEARCH)
|
||||
+ set(_install_path ${Python_SITEARCH})
|
||||
+ elseif(DEFINED Python_SITELIB)
|
||||
+ set(_install_path ${Python_SITELIB})
|
||||
+ else()
|
||||
+ message(FATAL_ERROR "SIP: Specify the site-packages location")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ message(STATUS "SIP: Installing Python module and PEP 484 file in ${_install_path}")
|
||||
+ install(TARGETS "sip_${MODULE_TARGET}"
|
||||
+ ARCHIVE DESTINATION ${_install_path}
|
||||
+ LIBRARY DESTINATION ${_install_path}
|
||||
+ RUNTIME DESTINATION ${_install_path}
|
||||
+ RESOURCE DESTINATION ${_install_path}
|
||||
+ )
|
||||
+endfunction()
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
--- ./CMakeLists.txt.orig
|
||||
+++ ./CMakeLists.txt
|
||||
@@ -2,22 +2,22 @@
|
||||
project(pyarcus)
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
-find_package(protobuf REQUIRED)
|
||||
-find_package(cpython REQUIRED)
|
||||
-find_package(arcus REQUIRED)
|
||||
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
-find_package(standardprojectsettings REQUIRED)
|
||||
-find_package(sipbuildtool REQUIRED)
|
||||
+find_package(Protobuf REQUIRED)
|
||||
+find_package(Python REQUIRED COMPONENTS Interpreter Development)
|
||||
+find_package(Arcus REQUIRED)
|
||||
|
||||
+find_package(SIP 6.5.0 REQUIRED)
|
||||
+
|
||||
add_library(pyArcus INTERFACE src/PythonMessage.cpp)
|
||||
-use_threads(pyArcus)
|
||||
|
||||
target_include_directories(pyArcus
|
||||
INTERFACE
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
|
||||
)
|
||||
-target_link_libraries(pyArcus INTERFACE arcus::arcus protobuf::libprotobuf cpython::cpython)
|
||||
+target_link_libraries(pyArcus INTERFACE Arcus protobuf::libprotobuf Python::Python)
|
||||
add_sip_module(pyArcus)
|
||||
install_sip_module(pyArcus)
|
||||
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./pyproject.toml.in
|
||||
@@ -0,0 +1,17 @@
|
||||
+[build-system]
|
||||
+requires = ["sip >=6, <7"]
|
||||
+build-backend = "sipbuild.api"
|
||||
+
|
||||
+[tool.sip.metadata]
|
||||
+name = "pyArcus"
|
||||
+
|
||||
+[tool.sip.project]
|
||||
+builder-factory = "CMakeBuilder"
|
||||
+sip-files-dir = "${CMAKE_CURRENT_SOURCE_DIR}/python/"
|
||||
+sip-include-dirs = ["CMAKE_CURRENT_SOURCE_DIR/python/"]
|
||||
+build-dir = "${CMAKE_CURRENT_BINARY_DIR}/pyArcus/"
|
||||
+
|
||||
+[tool.sip.bindings.pyArcus]
|
||||
+exceptions = true
|
||||
+release-gil = true
|
||||
+concatenate = 8
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
# Maintainer: Hoang Nguyen <folliekazetani@protonmail.com>
|
||||
pkgname=py3-colored
|
||||
_pyname=${pkgname/py3-/}
|
||||
pkgver=1.4.4
|
||||
pkgrel=3
|
||||
pkgdesc="Simple Python library for color and formatting in terminal"
|
||||
url="https://gitlab.com/dslackw/colored"
|
||||
arch="noarch"
|
||||
license="MIT"
|
||||
depends="python3"
|
||||
makedepends="py3-setuptools py3-gpep517"
|
||||
checkdepends="py3-pytest"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="https://gitlab.com/dslackw/colored/-/archive/$pkgver/colored-$pkgver.tar.gz"
|
||||
builddir="$srcdir/$_pyname-$pkgver"
|
||||
options="!check" # No testsuite
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
package() {
|
||||
gpep517 install-wheel --destdir "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
d49075f97bcc220802a8a64780b4c3910acd420e7e0e82ee71659132e7a294a638b098e4e46ae54f531739f8a43cd35979e521c02bb359205a13d96e37cfe8ed colored-1.4.4.tar.gz
|
||||
"
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
maintainer="Hoang Nguyen <folliekazetani@protonmail.com>"
|
||||
pkgname=py3-dateparser
|
||||
_pyname=${pkgname#py3-}
|
||||
pkgver=1.2.0
|
||||
pkgrel=0
|
||||
pkgdesc="Python parser for human readable dates"
|
||||
url="https://github.com/scrapinghub/dateparser"
|
||||
arch="noarch"
|
||||
license="BSD-3-Clause"
|
||||
depends="
|
||||
python3
|
||||
py3-dateutil
|
||||
py3-regex
|
||||
py3-tz
|
||||
py3-tzlocal
|
||||
"
|
||||
makedepends="
|
||||
py3-gpep517
|
||||
py3-setuptools
|
||||
py3-wheel
|
||||
"
|
||||
checkdepends="
|
||||
py3-fasttext
|
||||
py3-gitpython
|
||||
py3-langdetect
|
||||
py3-parameterized
|
||||
py3-parsel
|
||||
py3-pytest
|
||||
py3-requests
|
||||
py3-ruamel.yaml
|
||||
"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/scrapinghub/dateparser/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/$_pyname-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
# test_relative_base_setting_2_en fails due to tzinfo mismatch
|
||||
# test_custom_language_detect_fast_text fails due to wrong file format
|
||||
_test_filter="not test_parsing_date_should_fail_using_datetime_strptime_if_locale_is_non_english \
|
||||
and not test_relative_base_setting_2_en and not test_custom_language_detect_fast_text"
|
||||
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
|
||||
# test_hijri.py: needs hijri_converter, test_jalali.py: convertdate
|
||||
.testenv/bin/python3 -m pytest tests \
|
||||
-k "$_test_filter" \
|
||||
--ignore tests/test_hijri.py \
|
||||
--ignore tests/test_jalali.py
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
2d37115f25c2076c4521b77b89ef1cff3cd0a5233c45beb00d78a5c9b1a384dcd993ff7cdd1f77db95a53ce566cf7d709d46ffa2e63eb468ac954fda178a5b6e py3-dateparser-1.2.0.tar.gz
|
||||
"
|
||||
39
backports/py3-flask-httpauth/APKBUILD
Normal file
39
backports/py3-flask-httpauth/APKBUILD
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
|
||||
# Maintainer: Fabian Affolter <fabian@affolter-engineering.ch>
|
||||
pkgname=py3-flask-httpauth
|
||||
pkgver=4.8.0
|
||||
pkgrel=3
|
||||
pkgdesc="Basic and Digest HTTP authentication for Flask routes"
|
||||
url="https://pypi.org/project/Flask-HTTPAuth"
|
||||
arch="noarch"
|
||||
license="MIT"
|
||||
depends="py3-flask python3"
|
||||
makedepends="py3-gpep517 py3-setuptools py3-wheel"
|
||||
checkdepends="py3-pytest py3-pytest-asyncio py3-asgiref"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="https://files.pythonhosted.org/packages/source/F/Flask-HTTPAuth/Flask-HTTPAuth-$pkgver.tar.gz"
|
||||
builddir="$srcdir"/Flask-HTTPAuth-$pkgver
|
||||
|
||||
replaces="py-flask-httpauth" # Backwards compatibility
|
||||
provides="py-flask-httpauth=$pkgver-r$pkgrel" # Backwards compatibility
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" \
|
||||
.dist/flask_httpauth*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
15878f45faf6bdde43d7b588539b044d621ba1ba590880e3d0a3bccf4e9bd04b898b3372775e99577b7e7955c4b6d2d7cc80df19ba30415c6b7c1d3183b7e5f4 Flask-HTTPAuth-4.8.0.tar.gz
|
||||
"
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
maintainer="lauren n. liberda <lauren@selfisekai.rocks>"
|
||||
pkgname=py3-flask-limiter
|
||||
pkgver=3.9.2
|
||||
pkgver=3.10.1
|
||||
pkgrel=0
|
||||
pkgdesc="Rate Limiting extension for Flask"
|
||||
url="https://github.com/alisaifee/flask-limiter"
|
||||
|
|
@ -50,6 +50,6 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
69e488a641ab39c088185fabcde19ebb4cbe1683e9143efdf146163bb0254e0c4f8b4b72df407542d540394e7e3b2d7498b9c93c25ae8a8128e05e319f342318 flask-limiter-3.9.2.tar.gz
|
||||
a0d3af6f93d4283309d6df46ddb7fed4c358bbc712c2bd9e6897362c6d086c395cb9587c3d9da283ad757b574fd8c09d909f3c4b76d02ae8aade3e61dbea6aa0 flask-limiter-3.10.1.tar.gz
|
||||
1b90e9134076cda249695d5ea741db9d205a2ae452c7d6edfe01eb37a221ce6f64b0e8ddcdbbee9b0e0fb16a28e5eabf14f1c1e41e965c7e3b93ea4f42caf553 our-std-is-good-enough.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
# Contributor: Galen Abell <galen@galenabell.com>
|
||||
# Maintainer: Galen Abell <galen@galenabell.com>
|
||||
pkgname=py3-fuzzywuzzy
|
||||
_pyname=fuzzywuzzy
|
||||
pkgver=0.18.0
|
||||
pkgrel=7
|
||||
pkgdesc="Fuzzy string matching in python"
|
||||
url="https://github.com/seatgeek/fuzzywuzzy"
|
||||
arch="noarch"
|
||||
license="GPL-2.0-only"
|
||||
depends="python3 py3-levenshtein"
|
||||
makedepends="py3-setuptools py3-gpep517"
|
||||
checkdepends="py3-pytest py3-pycodestyle py3-hypothesis"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="https://files.pythonhosted.org/packages/source/${_pyname%${_pyname#?}}/$_pyname/$_pyname-$pkgver.tar.gz"
|
||||
builddir="$srcdir/$_pyname-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
gpep517 install-wheel --destdir .testenv --prefix '' .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
gpep517 install-wheel --destdir "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
4a21ea67278fa525842d48fed8db666d00eae6d13254e8844d11f63b47c3a305b3cac760f28c24c6347aebcf73e96180e0a7cfba29c75f01ece2f7751e0398c5 fuzzywuzzy-0.18.0.tar.gz
|
||||
"
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
# Contributor: Galen Abell <galen@galenabell.com>
|
||||
# Maintainer: Galen Abell <galen@galenabell.com>
|
||||
pkgname=py3-levenshtein
|
||||
pkgver=0.25.1
|
||||
pkgrel=2
|
||||
pkgdesc="Python extension for computing string edit distances and similarities"
|
||||
url="https://github.com/maxbachmann/Levenshtein"
|
||||
arch="all"
|
||||
license="GPL-2.0-only"
|
||||
depends="py3-rapidfuzz"
|
||||
makedepends="
|
||||
cmake
|
||||
cython
|
||||
py3-gpep517
|
||||
py3-scikit-build
|
||||
python3-dev
|
||||
rapidfuzz
|
||||
samurai
|
||||
"
|
||||
checkdepends="py3-pytest"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/maxbachmann/Levenshtein/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/Levenshtein-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer \
|
||||
.dist/Levenshtein*.whl
|
||||
.testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" \
|
||||
.dist/Levenshtein*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
936dab36b15df6f2ee5425efb1fdb1490fb8f618ba453f464a6dd615bcc427e55ceee7474f06b34392871d9f38470b853602a11d8f9776eee66ec34156511ca4 py3-levenshtein-0.25.1.tar.gz
|
||||
"
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
pkgname=py3-limits
|
||||
pkgver=3.13.0
|
||||
pkgrel=1
|
||||
pkgver=3.14.1
|
||||
pkgrel=0
|
||||
pkgdesc="Rate limiting using various strategies and storage backends such as redis & memcached"
|
||||
url="https://github.com/alisaifee/limits"
|
||||
arch="noarch"
|
||||
|
|
@ -19,14 +19,16 @@ checkdepends="
|
|||
py3-pytest-asyncio
|
||||
py3-pytest-benchmark
|
||||
py3-pytest-cov
|
||||
py3-pytest-lazy-fixtures
|
||||
py3-pymemcache
|
||||
py3-redis
|
||||
"
|
||||
subpackages="$pkgname-pyc"
|
||||
options="!check" # most tests are integration with db connections, assume all connectors installed
|
||||
source="
|
||||
https://github.com/alisaifee/limits/archive/refs/tags/$pkgver/limits-$pkgver.tar.gz
|
||||
|
||||
our-std-is-good-enough.patch
|
||||
tests-drop-etcd3-and-k-argument.patch
|
||||
"
|
||||
builddir="$srcdir/limits-$pkgver"
|
||||
|
||||
|
|
@ -39,7 +41,7 @@ build() {
|
|||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
gpep517 install-wheel --destdir .testenv --prefix '' .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest \
|
||||
.testenv/bin/python3 -m pytest -W ignore::DeprecationWarning \
|
||||
-m 'not benchmark and not etcd and not integration and not memcached' \
|
||||
-k 'not aio and not Storage and not strategy' -v
|
||||
}
|
||||
|
|
@ -50,6 +52,7 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
0a13d08001c2f95e559ac1be35fa8cc178ad2d41bd5bf7b7e85781a428f550c350c21b92942b5b7e45f0f4c0604e96e579c8a26b5e9ca1196e6605608721030a limits-3.13.0.tar.gz
|
||||
0364d51f9f879b95c6a4a3c9e9fd3d7d1e15ea214c50ae98cd36826b8c0b2d903cf1128741ac83738e305a207dae8955a0b2c8679484d2d6643e334595bdb1d7 our-std-is-good-enough.patch
|
||||
f30c7ec19c2d1edad9ed77dc590ae35717efa3956a4d97e465793e1923a4af08dc9921d90ee95d3c54ce3364b867ca67a9de62c61d627e07a3f50da20bdabd0f limits-3.14.1.tar.gz
|
||||
271e3b0501f9f144eda8d2e96c93b285714e339b9217385e38cdbce1f4dec88f9c949e9419f8be94885092e7977f7dca29b86b5499e9fead678b42a686c337db our-std-is-good-enough.patch
|
||||
e84f4db49349a6feba0f701b9d4357c5f66d64c4a23f8ce512528b0f44b5bbef55041c02d92aae3a4cc8d5340846f9e909217beb869a5aeb49df166dd29ae9e3 tests-drop-etcd3-and-k-argument.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,3 @@
|
|||
--- ./limits/util.py.orig
|
||||
+++ ./limits/util.py
|
||||
@@ -8,7 +8,7 @@
|
||||
from types import ModuleType
|
||||
from typing import TYPE_CHECKING, cast
|
||||
|
||||
-import importlib_resources
|
||||
+from importlib import resources as importlib_resources
|
||||
from packaging.version import Version
|
||||
|
||||
from limits.typing import Dict, List, NamedTuple, Optional, Tuple, Type, Union
|
||||
--- ./limits/typing.py.orig
|
||||
+++ ./limits/typing.py
|
||||
@@ -13,7 +13,7 @@
|
||||
|
|
@ -19,4 +8,4 @@
|
|||
+from typing import ClassVar, Counter, ParamSpec, Protocol, TypeAlias
|
||||
|
||||
Serializable = Union[int, str, float]
|
||||
|
||||
|
||||
|
|
|
|||
24
backports/py3-limits/tests-drop-etcd3-and-k-argument.patch
Normal file
24
backports/py3-limits/tests-drop-etcd3-and-k-argument.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
diff --git a/tests/conftest.py.orig b/tests/conftest.py
|
||||
index 2aeb758dda6..a9b2b8b2bd1 100644
|
||||
--- a/tests/conftest.py.orig
|
||||
+++ b/tests/conftest.py
|
||||
@@ -3,7 +3,6 @@ import platform
|
||||
import socket
|
||||
import time
|
||||
|
||||
-import etcd3
|
||||
import pymemcache
|
||||
import pymemcache.client
|
||||
import pymongo
|
||||
diff --git a/pytest.ini.orig b/pytest.ini
|
||||
index 38c40a713d0..8c6659e21c2 100644
|
||||
--- a/pytest.ini.orig
|
||||
+++ b/pytest.ini
|
||||
@@ -17,7 +17,6 @@ addopts =
|
||||
-rfEsxX
|
||||
--cov=limits
|
||||
-m "not benchmark"
|
||||
- -K
|
||||
filterwarnings =
|
||||
error
|
||||
module::ResourceWarning
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=py3-mapbox-earcut
|
||||
pkgver=1.0.1
|
||||
pkgrel=2
|
||||
pkgdesc="Python bindings for the mapbox earcut c++ library"
|
||||
url="https://github.com/skogler/mapbox_earcut_python"
|
||||
arch="all"
|
||||
license="ISC"
|
||||
depends="py3-numpy"
|
||||
makedepends="py3-setuptools py3-pybind11-dev python3-dev py3-gpep517"
|
||||
checkdepends="py3-pytest"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/skogler/mapbox_earcut_python/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/mapbox_earcut_python-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
gpep517 install-wheel --destdir .testenv --prefix '' .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
gpep517 install-wheel --destdir "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
cdb32585cbaf74c15e59af0ae70d983dd2f9bc9cfe1b59b3eadc4d442f7d962241854b589a035deae67cacd9334833b911d0981f0d417fe587348fc7d24f0c0a py3-mapbox-earcut-1.0.1.tar.gz
|
||||
"
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=py3-numpy-stl
|
||||
pkgver=3.2.0
|
||||
pkgrel=0
|
||||
pkgdesc="Library for working with STLs"
|
||||
url="https://github.com/WoLpH/numpy-stl"
|
||||
# s390x: no py3-utils
|
||||
arch="noarch !s390x"
|
||||
license="BSD-3-Clause"
|
||||
depends="python3 py3-utils py3-numpy"
|
||||
makedepends="py3-setuptools py3-gpep517"
|
||||
checkdepends="py3-pytest py3-pytest-cov py3-pygments"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/wolph/numpy-stl/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/numpy-stl-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
gpep517 install-wheel --destdir .testenv --prefix '' .dist/*.whl
|
||||
# deselected test needs xvfb-run and fails
|
||||
.testenv/bin/python3 -m pytest \
|
||||
--deselect tests/test_ascii.py::test_use_with_qt_with_custom_locale_decimal_delimeter
|
||||
}
|
||||
|
||||
package() {
|
||||
gpep517 install-wheel --destdir "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
a08053ed264dbfd629229af3db9c38deed2932b28feced56e2d4c20476f1ba85ddc80881fb82330ea3f4fff9a3f91da20db7447050da5c75f1c04455a67538dc py3-numpy-stl-3.2.0.tar.gz
|
||||
"
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
pkgname=py3-pathvalidate
|
||||
pkgver=3.2.1
|
||||
pkgrel=0
|
||||
pkgdesc="Python library to sanitize/validate a string such as filenames/file-paths/etc"
|
||||
url="https://github.com/thombashi/pathvalidate"
|
||||
arch="noarch"
|
||||
license="MIT"
|
||||
depends="python3"
|
||||
makedepends="
|
||||
py3-gpep517
|
||||
py3-setuptools
|
||||
py3-setuptools_scm
|
||||
py3-wheel
|
||||
"
|
||||
checkdepends="py3-pytest py3-click py3-faker"
|
||||
options="!check" # tests require unpackaged unmaintained dependencies
|
||||
subpackages="$pkgname-pyc"
|
||||
source="https://github.com/thombashi/pathvalidate/archive/refs/tags/v$pkgver/pathvalidate-$pkgver.tar.gz"
|
||||
builddir="$srcdir/pathvalidate-$pkgver"
|
||||
|
||||
build() {
|
||||
export SETUPTOOLS_SCM_PRETEND_VERSION="$pkgver"
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
094bb442258ba58fff11691f5b60976513924443247e808effbc26b9dd6c336f5f84d8e4563643b7def19d9f82170eb9ec6cd89491f9115df8d1634d2aa12206 pathvalidate-3.2.1.tar.gz
|
||||
"
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=py3-pivy
|
||||
pkgver=0.6.9
|
||||
pkgrel=2
|
||||
pkgdesc="Python3 bindings for coin"
|
||||
url="https://github.com/coin3d/pivy"
|
||||
# riscv64: blocked by py3-pyside6
|
||||
arch="all !riscv64"
|
||||
license="ISC"
|
||||
depends="py3-pyside6"
|
||||
makedepends="swig soqt-dev qt6-qtbase-dev python3-dev glu-dev cmake samurai"
|
||||
checkdepends="py3-pytest"
|
||||
options="!check" # test suite is interactive and requires full installation
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/coin3d/pivy/archive/refs/tags/${pkgver//_alpha/.a}.tar.gz"
|
||||
builddir="$srcdir/pivy-${pkgver//_alpha/.a}"
|
||||
|
||||
build() {
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
||||
fi
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DBUILD_SHARED_LIBS=True \
|
||||
-DCMAKE_BUILD_TYPE=None \
|
||||
$CMAKE_CROSSOPTS
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
fd9587c69ad7468b771fbae59e68620f67a3c20850edadd65bf7994c1789d3444feb419e65dce34c6ee897c98eaca9f2f29f0bbfb4d1f0bbde26e4db56f74f78 py3-pivy-0.6.9.tar.gz
|
||||
"
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer: Celeste <cielesti@protonmail.com>
|
||||
maintainer="Celeste <cielesti@protonmail.com>"
|
||||
pkgname=py3-pyinstrument
|
||||
pkgver=4.7.3
|
||||
pkgrel=0
|
||||
pkgdesc="Call stack profiler for Python"
|
||||
url="https://github.com/joerick/pyinstrument"
|
||||
arch="all"
|
||||
license="BSD-3-Clause"
|
||||
makedepends="
|
||||
py3-gpep517
|
||||
py3-setuptools
|
||||
py3-wheel
|
||||
python3-dev
|
||||
"
|
||||
checkdepends="
|
||||
py3-flaky
|
||||
py3-greenlet
|
||||
py3-pytest
|
||||
py3-pytest-asyncio
|
||||
py3-trio
|
||||
"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/joerick/pyinstrument/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/pyinstrument-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
[ -d "pyinstrument" ] && mv -v pyinstrument pyinstrument.src
|
||||
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
|
||||
# test_cmdline.py tries to run "pyinstrument" executable
|
||||
PATH="$builddir/.testenv/bin:$PATH" .testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" .dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
24feac08a9726379b749f391bdb6ddbca6d3631cf3515d3ead85ace7a96f213bf60e2cd4d4f3c7cade68b5e481b4bfd562482817befe6322579101a8d91add66 py3-pyinstrument-4.7.3.tar.gz
|
||||
"
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue