Compare commits

..

28 commits

Author SHA1 Message Date
d773cab1ea
backports/electron: test
Some checks failed
/ deploy-x86_64 (pull_request) Has been cancelled
/ build-x86_64 (pull_request) Has been cancelled
/ lint (pull_request) Successful in 31s
/ deploy-aarch64 (pull_request) Has been skipped
/ build-aarch64 (pull_request) Failing after 1h34m59s
2025-10-28 20:37:22 -04:00
6f83ba28d0
backports/electron: upgrade to 38.4.0
All checks were successful
/ lint (pull_request) Successful in 53s
/ build-x86_64 (pull_request) Successful in 6h2m17s
/ deploy-x86_64 (pull_request) Successful in 41s
/ build-aarch64 (pull_request) Successful in 41s
/ deploy-aarch64 (pull_request) Successful in 35s
2025-10-22 12:52:30 -04:00
cb9bb05724 backports/freetube: upgrade to 0.23.12 2025-10-21 22:38:47 +00:00
eb53b37dce
backports/electron: upgrade to 38.3.0
All checks were successful
/ lint (pull_request) Successful in 36s
/ deploy-aarch64 (pull_request) Successful in 34s
/ build-aarch64 (pull_request) Successful in 1h45m0s
/ deploy-x86_64 (pull_request) Successful in 31s
/ build-x86_64 (pull_request) Successful in 6h27m42s
2025-10-16 08:20:15 -04:00
1d71eb9ab5 backports/freetube: upgrade to 0.23.11 2025-10-15 00:31:58 +00:00
0e189159fc
backports/electron: upgrade to 38.2.2
All checks were successful
/ lint (pull_request) Successful in 33s
/ build-aarch64 (pull_request) Successful in 1h43m46s
/ deploy-aarch64 (pull_request) Successful in 33s
/ deploy-x86_64 (pull_request) Successful in 29s
/ build-x86_64 (pull_request) Successful in 6h31m17s
2025-10-14 08:36:08 -04:00
ea7d833521
backports/electron: upgrade to 38.1.2
Some checks failed
/ lint (pull_request) Failing after 32s
/ build-aarch64 (pull_request) Successful in 2h6m49s
/ deploy-aarch64 (pull_request) Successful in 40s
/ deploy-x86_64 (pull_request) Successful in 34s
/ build-x86_64 (pull_request) Successful in 6h55m51s
2025-09-22 08:47:32 -04:00
466899665e
backports/*: rebuild against electron 38.1.2 2025-09-22 08:47:27 -04:00
8cedcc1790 backports/electron: upgrade to 37.5.1 2025-09-19 17:21:57 +00:00
74ff29cd63
backports/signal-desktop: upgrade to 7.71.0
Some checks failed
/ lint (pull_request) Failing after 46s
/ deploy-aarch64 (pull_request) Successful in 40s
/ build-aarch64 (pull_request) Successful in 24m33s
/ build-x86_64 (pull_request) Successful in 30m40s
/ deploy-x86_64 (pull_request) Successful in 45s
2025-09-18 11:04:14 -04:00
74990b55aa
backports/*: rebuild against electron 37.5.0
Some checks failed
/ lint (pull_request) Failing after 57s
/ build-aarch64 (pull_request) Successful in 2h8m57s
/ deploy-aarch64 (pull_request) Successful in 36s
/ deploy-x86_64 (pull_request) Successful in 35s
/ build-x86_64 (pull_request) Successful in 5h44m32s
2025-09-13 10:43:53 -04:00
e48050e78b
backports/electron: upgrade to 37.5.0 2025-09-13 10:43:48 -04:00
d7290381bd backports/electron: upgrade to 36.9.0 2025-09-13 02:30:13 +00:00
e24a62da6c
backports/signal-desktop: upgrade to 7.70.0
All checks were successful
/ lint (pull_request) Successful in 1m16s
/ build-aarch64 (pull_request) Successful in 23m35s
/ deploy-aarch64 (pull_request) Successful in 43s
/ build-x86_64 (pull_request) Successful in 30m58s
/ deploy-x86_64 (pull_request) Successful in 45s
2025-09-12 15:01:25 -04:00
6ade8c6b70
ci: use actions namespace for {upload,download}-artifact action
All checks were successful
/ lint (pull_request) Successful in 46s
/ build-aarch64 (pull_request) Successful in 14m26s
/ deploy-aarch64 (pull_request) Successful in 26s
/ build-x86_64 (pull_request) Successful in 44m7s
/ deploy-x86_64 (pull_request) Successful in 31s
2025-09-06 21:15:17 -04:00
9cf8931cb8
backports/signal-desktop: upgrade to 7.69.0 2025-09-06 21:15:12 -04:00
dae4200b92
backports/llhttp: add llhttp 9.3.0 for electron 36
Some checks failed
/ lint (pull_request) Failing after 53s
/ build-aarch64 (pull_request) Successful in 2h5m27s
/ deploy-aarch64 (pull_request) Successful in 48s
/ deploy-x86_64 (pull_request) Has been skipped
/ build-x86_64 (pull_request) Failing after 4m3s
2025-09-05 17:30:21 -04:00
d9afb2ff02
backports/*: rebuild against electron 36.8.1
Some checks failed
/ lint (pull_request) Failing after 35s
/ deploy-aarch64 (pull_request) Has been skipped
/ build-aarch64 (pull_request) Failing after 50m9s
/ build-x86_64 (pull_request) Has been cancelled
/ deploy-x86_64 (pull_request) Has been cancelled
2025-09-05 16:14:39 -04:00
21de505ee5
backports/electron: upgrade to 36.8.1 2025-09-05 16:14:09 -04:00
cd0cb9fdc2 backports/electron: upgrade to 35.6.0 2025-07-07 23:42:56 +00:00
12d2c58029 backports/rkdeveloptool: new aport 2025-06-22 17:18:55 +00:00
31739f426c backports/git-extras: new aport 2025-06-12 12:44:47 +00:00
8272443d1d
backports/py3-{dateparser,flask-limiter,limits,pathvalidate}: drop to unneeded 2025-06-12 08:35:33 -04:00
9c90ca5177
backports/{coin,libmedc,py3-pivy,soqt,freecad}: drop due to in community 2025-06-12 08:35:31 -04:00
bd5adbd57c
backports/signal-desktop: upgrade to 7.56.1
Some checks failed
/ deploy-x86_64 (pull_request) Has been cancelled
/ build-x86_64 (pull_request) Has been cancelled
/ deploy-aarch64 (pull_request) Has been cancelled
/ build-aarch64 (pull_request) Has been cancelled
/ lint (pull_request) Successful in 28s
2025-06-09 11:27:16 -04:00
c73c8be7ac backports/electron: security upgrade to 35.5.1 2025-06-09 13:26:50 +00:00
b381ae74d2 backports/signal-desktop: upgrade to 7.56.0 2025-05-30 14:01:10 +00:00
4cc3b914c8
backports/electron: upgrade to 35.5.0 2025-05-29 09:09:20 -04:00
103 changed files with 10454 additions and 9411 deletions

View file

@ -10,28 +10,21 @@
# 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
# skip_package: array of packages to skip
#
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
is_semantic() {
local downstream_version_dot=${1//[^.]}
@ -41,9 +34,8 @@ is_semantic() {
return 1
}
echo "Checking $downstream for out of date packages"
curl --silent $downstream/$arch/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX
curl --silent $downstream/x86_64/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)
@ -53,9 +45,6 @@ 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
@ -63,44 +52,13 @@ for pkg in $owned_by_you; do
downstream_version=${downstream_version/-*}
# skip package if in $skip_package array
if [[ "$skip_package" == *all* || "$skip_package" == *$pkg* ]] && [[ "$skip_package" != *-$pkg* ]]; then
if [[ "$skip_package" == *$pkg* ]]; then
echo "$pkg skipped"
continue
fi
# special cases where package is not semantic
case $pkg in
# 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}}')
@ -111,11 +69,8 @@ for pkg in $owned_by_you; do
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' )
@ -126,54 +81,19 @@ for pkg in $owned_by_you; do
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|-.*||';;
arm-trusted-firmware) 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" | head -n1);;
*)
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
# continues when package version scheme is not semantic, but minor_only or fix_only is set
if [ -n "${minor_only}" ] || [ -n "${fix_only}" ]; then
if ! is_semantic $downstream_version; then
echo "$pkg is not semantic, and minor_only is set"
echo "$pkg is not semantic, and fix_only or minor_only is set"
continue
fi
fi
if [ "${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)
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
elif [ "${fix_only}" == "all" ] || [[ "${fix_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.[]' | head -n1)
@ -188,7 +108,7 @@ for pkg in $owned_by_you; do
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 $upstream_version"
echo "$pkg higher downstream"
continue
elif [ "$upstream_version" != "$downstream_version" ]; then
echo "$pkg upstream version $upstream_version does not match downstream version $downstream_version in $release"

View file

@ -16,17 +16,10 @@ does_it_exist() {
release=$5
query="$repo/$name: upgrade to $upstream_version"
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')"
if [ "$release" != "edge" ]; then query="[$release] $query"; fi
query="%22$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' | sed 's|\[|%5B|g' | sed 's|\]|%5D|g')%22"
result="$(curl -L --silent -X 'GET' \
result="$(curl --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: token $ISSUE_TOKEN"
@ -45,17 +38,10 @@ is_it_old() {
release=$5
query="$repo/$name: upgrade to"
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')"
if [ "$release" != "edge" ]; then query="[$release] $query"; fi
query="%22$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' | sed 's|\[|%5B|g' | sed 's|\]|%5D|g')%22"
result="$(curl -L --silent -X 'GET' \
result="$(curl --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: token $ISSUE_TOKEN"
@ -80,15 +66,14 @@ update_title() {
release=$5
id=$6
title="$repo/$name: upgrade to $upstream_version"
if [ "$release" != "edge" ]; then title="[$release] $title"; fi
result=$(curl -L --silent -X 'PATCH' \
result=$(curl --silent -X 'PATCH' \
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$id" \
-H 'accept: application/json' \
-H "authorization: token $ISSUE_TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"title\": \"$title\"}"
-d "{
\"title\": \"$repo/$name: upgrade to $upstream_version\"
}"
)
return 0
@ -104,7 +89,7 @@ create_issue() {
title="$repo/$name: upgrade to $upstream_version"
if [ "$release" != "edge" ]; then title="[$release] $title"; fi
result=$(curl -L --silent -X 'POST' \
result=$(curl --silent -X 'POST' \
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \
-H 'accept: application/json' \
-H "authorization: token $ISSUE_TOKEN" \
@ -153,7 +138,7 @@ if [ -f not_in_anitya ]; then
query="Add missing $repo packages to anitya"
query="%22$(echo $query | sed 's| |%20|g')%22"
result="$(curl -L --silent -X 'GET' \
result="$(curl --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: token $ISSUE_TOKEN"
@ -161,7 +146,7 @@ if [ -f not_in_anitya ]; then
if [ "$result" == "[]" ]; then
echo "Creating anitya issue"
result=$(curl -L --silent -X 'POST' \
result=$(curl --silent -X 'POST' \
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \
-H 'accept: application/json' \
-H "authorization: token $ISSUE_TOKEN" \
@ -177,7 +162,7 @@ if [ -f not_in_anitya ]; then
else
echo "Updating anitya issue"
result_id="$(echo $result | jq -r '.[].number' )"
result=$(curl -L --silent -X 'PATCH' \
result=$(curl --silent -X 'PATCH' \
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$result_id" \
-H 'accept: application/json' \
-H "authorization: token $ISSUE_TOKEN" \

View file

@ -1,54 +0,0 @@
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

View file

@ -7,11 +7,11 @@ on:
jobs:
check-backports:
name: Check backports repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:
downstream: https://ayakael.net/api/packages/forge/alpine/v3.23/backports
downstream: https://ayakael.net/api/packages/forge/alpine/v3.22/backports
ISSUE_TOKEN: ${{ secrets.issue_token }}
LABEL_NUMBER: 1
ALL_PACKAGES: true

View file

@ -7,7 +7,7 @@ on:
jobs:
check-community-edge:
name: Check community(edge) repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:
@ -25,39 +25,17 @@ 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
runs-on: x86_64
container:
image: alpine:latest
env:
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.22/community
downstream: https://dl-cdn.alpinelinux.org/alpine/3.22/community
ISSUE_TOKEN: ${{ secrets.issue_token }}
LABEL_NUMBER: 13
skip_package: 'all -dotnet8-runtime -dotnet9-runtime'
fix_only: all
skip_package: dotnet9-stage0 dotnet8-stage0
steps:
- name: Environment setup
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
@ -69,48 +47,3 @@ jobs:
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

View file

@ -7,7 +7,7 @@ on:
jobs:
check-main-edge:
name: Check main(edge) repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:
@ -25,30 +25,9 @@ jobs:
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
runs-on: x86_64
container:
image: alpine:latest
env:
@ -69,7 +48,7 @@ jobs:
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
check-main-3.21:
name: Check main(3.21) repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:
@ -90,7 +69,7 @@ jobs:
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
check-main-3.20:
name: Check main(3.20) repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:
@ -109,4 +88,24 @@ jobs:
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
- name: Create issues
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
check-main-3.19:
name: Check main(3.19) repo
runs-on: x86_64
container:
image: alpine:latest
env:
downstream: https://dl-cdn.alpinelinux.org/alpine/v3.19/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

View file

@ -1,50 +0,0 @@
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

View file

@ -5,16 +5,16 @@ on:
- cron: '0 5 * * *'
jobs:
check-testing:
check-community:
name: Check testing repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:
downstream: https://dl-cdn.alpinelinux.org/alpine/edge/testing
ISSUE_TOKEN: ${{ secrets.issue_token }}
LABEL_NUMBER: 4
skip_package: dotnet6-stage0 dotnet6-build
skip_package: dotnet6-stage dotnet6-build
steps:
- name: Environment setup
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed

View file

@ -7,7 +7,7 @@ on:
jobs:
check-user:
name: Check user repo
runs-on: aarch64
runs-on: x86_64
container:
image: alpine:latest
env:

View file

@ -1,13 +0,0 @@
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')):

View file

@ -1,46 +0,0 @@
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

View file

@ -1,6 +1,6 @@
# Maintainer: Cowington Post <cowingtonpost@gmail.com>
pkgname=calibre
pkgver=8.14.0
pkgver=8.4.0
pkgrel=0
pkgdesc="Ebook management application"
# qt6-webengine
@ -47,7 +47,6 @@ depends="
makedepends="
cmake
curl
ffmpeg-dev
hunspell-dev
hyphen-dev
libmtp-dev
@ -56,12 +55,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
@ -71,15 +70,13 @@ 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
musl-pread.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
@ -116,8 +113,7 @@ package() {
}
sha512sums="
edb32e47b083e10fbf53088e485737f3b61bb642ce6c4dd444e58a6618979c3b05b77ceffc4b8cb42e35eee7dcc2b94145abc22030ffd8b5de63e45b321fbf72 calibre-8.14.0.tar.xz
df998fa31b9e581739872a649669fccf29f34d3ac1b4d0a96c37e08a0b049b1357b56a2af25f2733936e78901dd61b38a24e536e107e7094ada7e60a5c2c56ab calibre-8.4.0.tar.xz
eb8e7ce40ff8b8daf6e7e55a5dff8ec4dff06c45744266bb48b3194e92ab1196bc91468203e3c2ca1e5144166a7d6be90e6cf0253513e761b56a4c85be4c2c76 0001-calibre-no-update.patch
bbb7253257073ae14840b3b4697943fe129d862b49cabd9388ea24cbd0259e68a1d359870334772164897f0c781db121de55fcdf5bccc841e36c021abe56f1ec 0002-calibre-use-make.patch
0efcf35944cd0f42d6f3572839647fc5c8336562db3f71655211d3de682e155b6d6fee4d281f9576201156e0bc828b6a579a8708a27791e4e4d604d456416954 0003-calibre-disable-piper.patch
d27d29c434a3d2df1b18125225a4d3762bf6fdba77385b377b18a7f325f29ae0b698974a39263f4f7aed8a368c87d0dc4446f488505b8e38664f8e9ee5b9bd12 musl-pread.patch
"

View file

@ -0,0 +1,11 @@
--- a/src/calibre/utils/speedup.c
+++ b/src/calibre/utils/speedup.c
@@ -748,7 +748,7 @@
break;
}
#else
-#ifdef __linux__
+#ifdef __GLIBC__
ssize_t nr = pread64(fd, buf + pos, n - pos, offset);
#else
ssize_t nr = pread(fd, buf + pos, n - pos, offset);

View file

@ -2,7 +2,7 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=caprine
pkgver=2.60.3
pkgrel=6
pkgrel=5
pkgdesc="Elegant Facebook Messenger desktop app"
arch="x86_64 aarch64" # blocked by electron
url="https://github.com/sindresorhus/caprine"

View file

@ -1,11 +1,11 @@
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=electron
pkgver=39.2.7
pkgver=38.4.0
_gittag=v"${pkgver/_beta/-beta.}"
pkgrel=0
_chromium=142.0.7444.235
_copium_tag=142.0
pkgrel=1
_chromium=140.0.7339.240
_copium_tag=140.2
_depot_tools=495b23b39aaba2ca3b55dd27cadc523f1cb17ee6
pkgdesc="Electron cross-platform desktop toolkit"
url="https://github.com/electron/electron"
@ -13,7 +13,7 @@ url="https://github.com/electron/electron"
arch="aarch64 x86_64" # same as chromium
license="MIT"
depends="gtk+3.0 so:libudev.so.1 xdg-utils"
_llvmver=21
_llvmver=20
makedepends="
ada-dev
alsa-lib-dev
@ -45,7 +45,6 @@ makedepends="
gn
gzip
harfbuzz-dev
highway-dev
hdrhistogram-c-dev
hunspell-dev
http-parser-dev
@ -109,7 +108,7 @@ makedepends="
sqlite-dev
woff2-dev
xcb-proto
yarn-berry
yarn
zlib-dev
zstd-dev
"
@ -146,8 +145,6 @@ source="
electron_unbundle-node.patch
electron_system-zlib-headers.patch
electron_do-not-strip-binaries.patch
electron_shell-file-dialog-drop-glibc.patch
electron_use-system-yarn.patch
default.conf
electron.desktop
@ -157,9 +154,10 @@ _copium_patches="
cr131-v8-non4k-pages.patch
cr133-ffmpeg-no-noh264parse.patch
cr133-is-musl-libcxx.patch
cr135-mv2-still-not-dead.patch
cr138-node-version-check.patch
cr140-musl-prctl.patch
cr142-autofill-incomplete-formfielddata.patch
cr140-rust-pre1.89.patch
"
# Avoid conflicting providers
sonameprefix="$pkgname:"
@ -179,7 +177,7 @@ export LD="/usr/lib/llvm$_llvmver/bin/clang++"
export CFLAGS="${CFLAGS/-g/} -O2 -Wno-builtin-macro-redefined -Wno-deprecated-declarations -Wno-shift-count-overflow -Wno-ignored-attributes"
export CXXFLAGS="${CXXFLAGS/-g/} -O2 -Wno-builtin-macro-redefined -Wno-deprecated-declarations -Wno-invalid-constexpr"
# _LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE is set by project
export CXXFLAGS="${CXXFLAGS/-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST/}"
export CXXFLAGS="${CXXFLAGS/-D_LIBCPP_ENABLE_HARDENED_MODE=1/}"
export CPPFLAGS="${CPPFLAGS/-g/} -D__DATE__= -D__TIME__= -D__TIMESTAMP__="
case "$CARCH" in
aarch64|arm*|riscv64)
@ -236,8 +234,8 @@ snapshot() {
--nohooks
python3 src/build/landmines.py
python3 src/build/util/lastchange.py -m DAWN_COMMIT_HASH -s src/third_party/dawn \
--revision src/gpu/webgpu/DAWN_VERSION --header src/gpu/webgpu/dawn_commit_hash.h
python3 src/build/util/lastchange.py -o src/build/util/LASTCHANGE \
--revision src/gpu/webgpu/DAWN_VERSION
python3 src/build/util/lastchange.py -m GPU_LISTS_VERSION \
--revision-id-only --header src/gpu/config/gpu_lists_version.h
python3 src/build/util/lastchange.py -m SKIA_COMMIT_HASH \
@ -311,7 +309,7 @@ prepare() {
git commit -m "init"
git tag "$_gittag"
git pack-refs
yarn install --immutable --mode=skip-build
yarn install --frozen-lockfile --ignore-scripts
)
(
@ -319,14 +317,9 @@ prepare() {
./update_npm_deps
)
# generate dawn_commit_hash
# TODO: remove on next update as it'll be generated after
# https://ayakael.net/mirrors/electron/commit/7623f4a14ab44fa4f4343e47d9d681c9b4aa984c
python3 build/util/lastchange.py -m DAWN_COMMIT_HASH -s third_party/dawn \
--revision gpu/webgpu/DAWN_VERSION --header gpu/webgpu/dawn_commit_hash.h
# reusable system library settings
# flatbuffers - tensorflow has a few static_asserts for a specific patch version
# highway - requires highway>=1.1.0 (arm failures)
# libavif - https://github.com/AOMediaCodec/libavif/commit/50a541469c98009016af8dcc9f83a1be79f3a7d9
# libaom - https://aomedia.googlesource.com/aom/+/706ee36dcc82%5E%21/
# but watch this space: https://aomedia-review.googlesource.com/c/aom/+/188606
@ -342,7 +335,6 @@ prepare() {
fontconfig
freetype
harfbuzz-ng
highway
libdrm
libjpeg
libsecret
@ -491,7 +483,6 @@ _configure() {
safe_browsing_use_unrar=false
symbol_level=$symbol_level
treat_warnings_as_errors=false
use_clang_modules=false
use_custom_libcxx=true
use_lld=true
use_pulseaudio=true
@ -565,13 +556,13 @@ lang() {
}
sha512sums="
6dc7161f6df396e2b7569b0a607e264b43a2d7215de65164dc2ca04c019df93ea0a67dec2490071c09c8a03f90605faaf3880f2d843f838bb5d841bba204c298 electron-v39.2.7-142.0.7444.235.tar.zst
30b298549804e7753b0b639b72417ba081e964676862b6c7d73ad73cdf806883f20e4a4b36e67a6c375eaf2dd97686cf21b90b062400d3b61fba86da4d239bfa copium-142.0.tar.gz
127017c1b96dd3cfb438bd079e3f14338e38c646fa26d8bc0b4dabc31a615b22a88d742cb7ef8dc9c28eaeb9c38198b78b176edaec8ae81287ba3f04388377be electron-v38.4.0-140.0.7339.240.tar.zst
472d7879560c4d62cda34b72288a2dda4917e9b5854a02eda22686a5e5cb3aeae0787f0d4e17c2b72c201178b0864a549226af57db79ad70902f3e85289a8ab6 copium-140.2.tar.gz
69b45005451ccd69c354b4c2910e92371cb801665f5e300dbecd36f8bc4ce68e77a431b5dac07c0937787debb4e93b7aadefa0a1e76c4ae334d2547ca3ca14ff 0001-hotfix-ignore-a-new-warning-in-rust-1.89.patch
dc254dd79e135aeac3e9c03eb055e3bc17980fc213f8c4d8d7921a575be7f9c26b91f110a6dcb01c0a824a7d9375c09f8a61c8858c20c11d79c03f873e2cb3f9 compiler.patch
b3eb30c66e80e8273ce180ee40ad746d819e11a18ab17dd88554ae9bd0734bfd7a9b1df2d6bac3b9d143803a3a18fe75bad4526ef8c225e29630a29827d544f0 compiler.patch
1bee1448e409fedff635388ee6f1efa6d23c29ae3e6b6fd31452c56974adb40fcd0088c82d1e643d549154663e402942cbab9807dff5aff2d8997a09de6f5655 disable-dns_config_service.patch
0ef9168b8b1a4779bc4c8df718735e06d29e459dcfd00f8cbf9a4edaf9fade8089225219e46dead7de81de716bddc8d745dc2069db0ee7f7e5d2f64c5236e2ab disable-failing-tests.patch
0050857a9a9553c10fd502fe70606bce48269c9b48fa82ce9e111575637a0c03578e923c82fc639fcb574fc3337aeef50d8a0aea5e512ae4eab83b8c3d732cf6 fc-cache-version.patch
872bea229ce2442bfd15eae89ac2559e3b3e0f72d8d6435c941774fa052706362f0d4e524a167136a970a5a8009bcf406ab2bd4d6d2b4b5098f6a7a6368caa45 fc-cache-version.patch
87f63d83139562e058f3f649eb1f62bf100dd92c2bb6ee393fdce0c8f7d7c188a7062394647aafe4e82c0a8fbbffeb613edc5c8dd9415dd9dda777827ea371c5 fix-ffmpeg-codec-list.patch
c63dee5044353eb306a39ca1526158c0f003ab310ecb03d1c368dc2a979454590c84b8d3c15484517d5e66bb8add9b231da9abbadf2e50850abd72ac1345c4ab fstatat-32bit.patch
33ee60863cc438ef57ffef92ba4cf67a856a5ffc16138bce241bcf87e47b15154aa86918e793c26f7ec4dc62a445257ad5673ed7001daf22c4043cf6cc57da7f gdbinit.patch
@ -594,8 +585,6 @@ e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e
c7f57929943a86f9e5f333da9d5691da88038770eeb46dd0a0719962c934deb2879f0e7a1ed714e9383e38ee4d68eb754501f362c4d7cdee76cfc2e980b21272 electron_unbundle-node.patch
4d9287d4cdfe27fbfb7be3d4b26c0c40edbd6a0c3ff926d60f2093ca09c15bcb58e20c2ccc8c0606aafd66c6d25a54225bc329cb056d8c5b297db4c6d0e768e6 electron_system-zlib-headers.patch
7031ddb61a858e95d83366185a53b5a2e4be9abe0aa4957543e0621cad57175ffef31bd87b8be25255184bb4cb30ec4fbced055407c6c8c7940c9e240b25d498 electron_do-not-strip-binaries.patch
0f8f36c21cc50c80e378691265845ff10fa53953d6cd5352fe71efcba489f956e50d374d8f634dadc3569c4901a81a1f308a3e69140c0f9136e0777022b9520f electron_shell-file-dialog-drop-glibc.patch
3fd20144ed171cf9706899a1481141c7fa3e98b17d600cdc5a3a68ba39059cebd9e5ccb5534af3e262f689df381bc3cb630ac24e46dd6f6c72eac4f4b6b14b35 electron_use-system-yarn.patch
e8ea87c547546011c4c8fc2de30e4f443b85cd4cfcff92808e2521d2f9ada03feefb8e1b0cf0f6b460919c146e56ef8d5ad4bb5e2461cc5247c30d92eb4d068e default.conf
191559fc7aa1ea0353c6fb0cc321ee1d5803a0e44848c8be941cfab96277b0de6a59962d373e2a2a1686c8f9be2bcf2d2f33706759a339a959e297d3f7fda463 electron.desktop
5f7ba5ad005f196facec1c0f26108356b64cafb1e5cfa462ff714a33b8a4c757ac00bfcb080da09eb5b65032f8eb245d9676a61ec554515d125ed63912708648 electron-launcher.sh

View file

@ -1,12 +1,14 @@
--- ./build/config/compiler/BUILD.gn.orig
+++ ./build/config/compiler/BUILD.gn
@@ -658,22 +658,6 @@
@@ -662,24 +662,6 @@
}
}
- # TODO(crbug.com/40283598): This causes binary size growth and potentially
- # other problems.
- if (default_toolchain != "//build/toolchain/cros:target") {
- # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version.
- if (default_toolchain != "//build/toolchain/cros:target" &&
- !llvm_android_mainline) {
- cflags += [
- "-mllvm",
- "-split-threshold-for-reg-with-hint=0",
@ -23,7 +25,7 @@
# TODO(crbug.com/40192287): Investigate why/if this should be needed.
if (is_win) {
cflags += [ "/clang:-ffp-contract=off" ]
@@ -1273,8 +1257,8 @@
@@ -1282,8 +1264,8 @@
# simplicity we always explicitly set the architecture.
if (current_cpu == "x64") {
if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) {
@ -34,7 +36,7 @@
} else {
cflags += [ "-m64" ]
ldflags += [ "-m64" ]
@@ -1282,8 +1266,8 @@
@@ -1291,8 +1273,8 @@
cflags += [ "-msse3" ]
} else if (current_cpu == "x86") {
if (is_clang && !is_android && !is_chromeos_device) {
@ -45,7 +47,7 @@
} else {
cflags += [ "-m32" ]
ldflags += [ "-m32" ]
@@ -1294,8 +1278,8 @@
@@ -1303,8 +1285,8 @@
]
} else if (current_cpu == "arm") {
if (is_clang && !is_android && !is_chromeos_device) {
@ -56,7 +58,7 @@
}
cflags += [
"-march=$arm_arch",
@@ -1306,8 +1290,8 @@
@@ -1315,8 +1297,8 @@
}
} else if (current_cpu == "arm64") {
if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) {
@ -67,7 +69,7 @@
}
} else if (current_cpu == "mipsel") {
ldflags += [ "-Wl,--hash-style=sysv" ]
@@ -1551,22 +1535,22 @@
@@ -1560,22 +1542,22 @@
ldflags += [ "-maix64" ]
}
} else if (is_clang) {
@ -96,7 +98,7 @@
}
cflags += [
"-mabi=lp64d",
@@ -1574,8 +1558,8 @@
@@ -1583,8 +1565,8 @@
]
} else if (current_cpu == "s390x") {
if (is_clang) {
@ -107,7 +109,7 @@
}
cflags += [ "-m64" ]
ldflags += [ "-m64" ]
@@ -2274,7 +2258,7 @@
@@ -2290,7 +2272,7 @@
defines = [ "_HAS_NODISCARD" ]
}
} else {
@ -118,22 +120,24 @@
cflags += [ "-Wextra" ]
--- ./build/config/rust.gni.orig
+++ ./build/config/rust.gni
@@ -178,11 +178,11 @@
@@ -188,13 +188,13 @@
rust_abi_target = ""
if (is_linux || is_chromeos) {
if (current_cpu == "arm64") {
- rust_abi_target = "aarch64-unknown-linux-gnu"
+ rust_abi_target = "aarch64-alpine-linux-musl"
cargo_target_abi = ""
} else if (current_cpu == "x86") {
- rust_abi_target = "i686-unknown-linux-gnu"
+ rust_abi_target = "i586-alpine-linux-musl"
cargo_target_abi = ""
} else if (current_cpu == "x64") {
- rust_abi_target = "x86_64-unknown-linux-gnu"
+ rust_abi_target = "x86_64-alpine-linux-musl"
cargo_target_abi = ""
} else if (current_cpu == "arm") {
if (arm_float_abi == "hard") {
float_suffix = "hf"
@@ -200,25 +200,21 @@
@@ -213,31 +213,27 @@
# 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
@ -143,29 +147,35 @@
- rust_abi_target = "armv7-unknown-linux-gnueabi" + float_suffix
- }
+ rust_abi_target = "armv7-alpine-linux-musleabi" + float_suffix
cargo_target_abi = "eabi" + float_suffix
} else {
- rust_abi_target = "arm-unknown-linux-gnueabi" + float_suffix
+ rust_abi_target = "armv6-alpine-linux-musleabi" + float_suffix
cargo_target_abi = "eabi" + float_suffix
}
} else if (current_cpu == "riscv64") {
- rust_abi_target = "riscv64gc-unknown-linux-gnu"
+ rust_abi_target = "riscv64-alpine-linux-musl"
cargo_target_abi = ""
} else if (current_cpu == "ppc64") {
- rust_abi_target = "powerpc64le-unknown-linux-gnu"
+ rust_abi_target = "powerpc64le-alpine-linux-musl"
cargo_target_abi = ""
} else if (current_cpu == "s390x") {
- rust_abi_target = "s390x-unknown-linux-gnu"
+ rust_abi_target = "s390x-alpine-linux-musl"
cargo_target_abi = ""
} else if (current_cpu == "loong64") {
- rust_abi_target = "loongarch64-unknown-linux-gnu"
+ rust_abi_target = "loongarch64-alpine-linux-musl"
cargo_target_abi = ""
} else {
# Best guess for other future platforms.
- rust_abi_target = current_cpu + "-unknown-linux-gnu"
+ rust_abi_target = current_cpu + "-alpine-linux-musl"
+ rust_abi_target = current_cpu + "-unknown-linux-musl"
cargo_target_abi = ""
}
} else if (is_android) {
import("//build/config/android/abi.gni")
--- ./build/config/clang/BUILD.gn.orig
+++ ./build/config/clang/BUILD.gn
@@ -207,22 +207,23 @@

View file

@ -1,16 +0,0 @@
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;
}

View file

@ -1,17 +0,0 @@
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

View file

@ -4,7 +4,7 @@
FcFini();
// Check existence of intended fontconfig cache file.
- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-11";
- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-reindex1-10";
+ auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-" + FC_CACHE_VERSION;
bool cache_exists = access(cache.c_str(), F_OK) == 0;
return !cache_exists;

View file

@ -0,0 +1,29 @@
diff --git a/third_party/blink/renderer/build/scripts/gperf.py.orig b/third_party/blink/renderer/build/scripts/gperf.py
index 42630d3..d909aee 100644
--- a/third_party/blink/renderer/build/scripts/gperf.py.orig
+++ b/third_party/blink/renderer/build/scripts/gperf.py
@@ -28,24 +28,6 @@ def generate_gperf(gperf_path, gperf_input, gperf_args):
stdout=subprocess.PIPE,
universal_newlines=True)
gperf_output = gperf.communicate(gperf_input)[0]
- # Massage gperf output to be more palatable for modern compilers.
- # TODO(thakis): Upstream these to gperf so we don't need massaging.
- # `register` is deprecated in C++11 and removed in C++17, so remove
- # it from gperf's output.
- # https://savannah.gnu.org/bugs/index.php?53028
- gperf_output = re.sub(r'\bregister ', '', gperf_output)
- # -Wimplicit-fallthrough needs an explicit fallthrough statement,
- # so replace gperf's /*FALLTHROUGH*/ comment with the statement.
- # https://savannah.gnu.org/bugs/index.php?53029
- gperf_output = gperf_output.replace('/*FALLTHROUGH*/',
- ' [[fallthrough]];')
- # -Wpointer-to-int-cast warns about casting pointers to smaller ints
- # Replace {(int)(long)&(foo), bar} with
- # {static_cast<int>(reinterpret_cast<uintptr_t>(&(foo)), bar}
- gperf_output = re.sub(
- r'\(int\)\(long\)(.*?),',
- r'static_cast<int>(reinterpret_cast<uintptr_t>(\1)),',
- gperf_output)
script = 'third_party/blink/renderer/build/scripts/gperf.py'
return '// Generated by %s\n' % script + gperf_output
except OSError:

View file

@ -0,0 +1,17 @@
diff --git a/build/rust/allocator/lib.rs b/build/rust/allocator/lib.rs
index c49d424..142c6e60 100644
--- a/build/rust/allocator/lib.rs
+++ b/build/rust/allocator/lib.rs
@@ -86,6 +86,12 @@
/// As part of rustc's contract for using `#[global_allocator]` without
/// rustc-generated shims we must define this symbol, since we are opting in
/// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015
+ #[rustc_std_internal_symbol]
+ #[linkage = "weak"]
+ fn __rust_no_alloc_shim_is_unstable_v2() {}
+
+ // TODO(crbug.com/422538133) Remove after rolling past
+ // https://github.com/rust-lang/rust/pull/141061
#[no_mangle]
#[linkage = "weak"]
static __rust_no_alloc_shim_is_unstable: u8 = 0;

View file

@ -1,13 +1,13 @@
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
maintainer="lauren n. liberda <lauren@selfisekai.rocks>"
pkgname=element-desktop
pkgver=1.12.3
pkgrel=1
pkgver=1.11.100
pkgrel=4
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
_electronver=35
depends="
electron~$_electronver
font-inconsolata
@ -36,15 +36,14 @@ source="
add-alpine-targets.patch
use-system-headers.patch
tasje-fixes.patch
tasje-one-hak.patch
tasje-no-fuses.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:
@ -95,7 +94,6 @@ prepare() {
msg "Fetch element-desktop dependencies"
yarn install --frozen-lockfile --ignore-scripts
patch -p1 -i patches/@types+auto-launch+5.0.5.patch
}
build() {
@ -150,7 +148,7 @@ package() {
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 -Dm644 $resources/img/element.png "$pkgdir"/usr/lib/element-desktop/img/element.png
install -Dm755 "$srcdir"/$pkgname "$pkgdir"/usr/bin/$pkgname
@ -161,11 +159,12 @@ package() {
}
sha512sums="
f302907165a35f4a4f069f5aec6bc28edeba3d09c75f483c818e3930ceb4e838e5bb91ad9d42019a11a661d6e656da3c1ff25507cbb281c69183aac7d499e882 element-desktop-1.12.3.tar.gz
b845ff71ca39d7ae4dca9bb55e821bfdf911b12de5d012ba55d598f3287046fb2b525bce608925a9fa8fa7d39a4ceed9b4213d5d1c1d0c9e6b9b72154c9a35a5 element-web-1.12.3.tar.gz
a8ac5180df3b204fb1947ecaa4786c9c5fdd53ffe705f4dfe97a0b051fa371fd9102c41a898e8783cf25f732674da2d987ef315f2facc7b18b20ef214ea0f81d element-desktop-1.11.100.tar.gz
e3e50fd867f9b7388eb22778ccb97d6504a480ab4e2aa9eba10fd0f4d0324a1525c2afe6c80181567d8e554f03086a9e0994a6221cfcb0ca29700754c8f31cac element-web-1.11.100.tar.gz
4747893ed3e43d3074e9afe1cdd668a6be0de073d439205fe8c38c5e0f4091cc76e3cd15d98818bea5139add29501d8d07e83c58e9da230a4ce5bb538d388f80 add-alpine-targets.patch
755b17f7b828eb6920c06a6950ad4e14c32c99d22e9c05fcef7a081b5d2034adb03db3958aa5209c99fb7201f4d888c2383fc9864c5e743dd33f8b5c4925acd7 use-system-headers.patch
a5d90dd1ec7aec0dc18b73eb3a6fd51ac1223e381c492d24e7dc0fd2ade955ac727cebbaff6ffa27c7e18d9acf712c709de3f886ee2ddf87ab3b028d3eb461c6 tasje-fixes.patch
92e69817fdc71f60c5c7dcbd3c7b13428cc18141cf5f27720326390f6817bec85fb1c60f8016b3a8fa275f601b16f646cda12b5e379a349368eef2f801b4de7a tasje-one-hak.patch
a1399662bdbe5e7256d31f7bdc05070e7009d70113699856b025a1d5ab1d9b8bf1020072a08255d4eddab0874044131dec296f98a91ba5c12ca61948b1d18dbe tasje-no-fuses.patch
ec635fde026f7fce8e8cc57960b5b9dcec4418416d4867ed47711422d48f068bb58a3c9ceb7715efc9c177beca3788da6b0babc9b689ea8c0724a0395f2b85f8 no-source-maps.patch.web
aaf46476bac403aa5204aa265fcf0654fad4c149fd74d0ec4273c051a5549943384cae3cdd62c5b78fdedfed55c11ecceb898b886e44165cbe7e30953a095cf9 use-system-fonts.patch.web
afc588311dc3b566a754e3e7fe6b37b99a06d47b8bbce0ed9acca8ef308fdab0bd1d41b406199e5cbdd86bdce695ff847cd8668857a235cbdc292ad8b899c063 element-desktop

View file

@ -0,0 +1,52 @@
we can't do fuses because we ship one binary in the electron package.
and we can't import them here, since they are in devDependencies, which are uninstalled at this stage.
--- ./electron-builder.ts.orig
+++ ./electron-builder.ts
@@ -2,8 +2,7 @@
import * as fs from "node:fs";
import * as path from "node:path";
import * as plist from "plist";
-import { AfterPackContext, Arch, Configuration as BaseConfiguration, Platform } from "electron-builder";
-import { computeData } from "app-builder-lib/out/asar/integrity";
+import { Configuration as BaseConfiguration } from "electron-builder";
import { readFile, writeFile } from "node:fs/promises";
/**
@@ -46,26 +45,6 @@
} & BaseConfiguration["deb"];
}
-async function injectAsarIntegrity(context: AfterPackContext) {
- const packager = context.packager;
-
- // We only need to re-generate asar on universal Mac builds, due to https://github.com/electron/universal/issues/116
- if (packager.platform !== Platform.MAC || context.arch !== Arch.universal) return;
-
- const resourcesPath = packager.getResourcesDir(context.appOutDir);
- const asarIntegrity = await computeData({
- resourcesPath,
- resourcesRelativePath: "Resources",
- resourcesDestinationPath: resourcesPath,
- extraResourceMatchers: [],
- });
-
- const plistPath = path.join(resourcesPath, "..", "Info.plist");
- const data = plist.parse(await readFile(plistPath, "utf8")) as unknown as Writable<plist.PlistObject>;
- data["ElectronAsarIntegrity"] = asarIntegrity as unknown as Writable<plist.PlistValue>;
- await writeFile(plistPath, plist.build(data));
-}
-
/**
* @type {import('electron-builder').Configuration}
* @see https://www.electron.build/configuration/configuration
@@ -89,9 +68,6 @@
loadBrowserProcessSpecificV8Snapshot: false,
enableEmbeddedAsarIntegrityValidation: true,
- },
- afterPack: async (context: AfterPackContext) => {
- await injectAsarIntegrity(context);
},
files: [
"package.json",

View file

@ -5,22 +5,9 @@ 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 @@
@@ -74,10 +74,6 @@
},
files: [
"package.json",
@ -30,4 +17,4 @@ console.log interferes with tasje, which reads config from node stdout
- },
"lib/**",
],
extraResources: ["build/icon.*", "webapp.asar"],
extraResources: [

View file

@ -1,8 +1,8 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=freetube
pkgver=0.23.12
pkgrel=1
pkgrel=0
pkgdesc="An open source desktop YouTube player built with privacy in mind."
arch="x86_64 aarch64" # blocked by electron
license="AGPL-3.0-only"

View file

@ -0,0 +1,33 @@
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=git-extras
pkgver=7.3.0
pkgrel=0
pkgdesc="Little git extras"
url="https://github.com/tj/git-extras"
arch="noarch"
license="MIT"
depends="bash cmd:column git"
subpackages="$pkgname-bash-completion $pkgname-doc"
source="https://github.com/tj/git-extras/archive/$pkgver/git-extras-$pkgver.tar.gz"
package() {
# Avoid annoying interactive prompts if an alias is in your gitconfig.
GIT_CONFIG=/dev/null \
make install DESTDIR="$pkgdir" PREFIX=/usr SYSCONFDIR=/etc install
rm -Rf "$pkgdir"/etc/bash-completion
install -D -m644 etc/bash_completion.sh \
"$pkgdir"/usr/share/bash-completion/completions/$pkgname
# ZSH and Fish completions don't work when autoloaded.
install -D -m644 etc/git-extras-completion.zsh \
"$pkgdir"/usr/share/$pkgname/completions.zsh
install -D -m644 etc/git-extras.fish \
"$pkgdir"/usr/share/$pkgname/completions.fish
}
sha512sums="
14cb5cef986a4aeb12c8c1db332aafed14bc68cf830b17a00eef617dff9f120c3c68244d56300715d8d3ce61420399d5411f23a40ffec44d60332118fe36eb22 git-extras-7.3.0.tar.gz
"

45
backports/llhttp/APKBUILD Normal file
View file

@ -0,0 +1,45 @@
maintainer="Michał Polański <michal@polanski.me>"
pkgname=llhttp
pkgver=9.3.0
pkgrel=0
pkgdesc="Port of http_parser to llparse"
url="https://llhttp.org/"
license="MIT"
arch="all"
makedepends="cmake clang samurai npm"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/nodejs/llhttp/archive/v$pkgver/llhttp-$pkgver.tar.gz"
# secfixes:
# 9.2.1-r0:
# - CVE-2024-27982
prepare() {
default_prepare
npm ci
}
build() {
make release RELEASE="$pkgver"
cmake -S release -B releasebuild -G Ninja \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=ON
cmake --build releasebuild
}
check() {
npm test
}
package() {
DESTDIR="$pkgdir" cmake --install releasebuild
install -Dm644 LICENSE -t "$pkgdir"/usr/share/doc/$pkgname
}
sha512sums="
ff4166f842f933cbb419221ab401e684c1314072abef2cda455812cc20c28ce4b467ed5f44079b6844eaa627c975247f640a8449b5f512e1a76d6df81790dec5 llhttp-9.3.0.tar.gz
"

View file

@ -1,23 +0,0 @@
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
+}

View file

@ -1,586 +0,0 @@
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;

View file

@ -1,72 +0,0 @@
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})

View file

@ -2,7 +2,7 @@
# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
pkgname=py3-apsw
_pkgname=apsw
pkgver=3.50.4.0
pkgver=3.49.1.0
pkgrel=0
pkgdesc="Another Python SQLite Wrapper"
url="https://github.com/rogerbinns/apsw"
@ -41,6 +41,6 @@ package() {
}
sha512sums="
71db63b0a7f550c9a5d3f112d47c24953472cc6555f0b57198428997d5cf5acf73629f2da8d5d53a2473067ba19d4b655cce467a5e2267e5bd6e8cf0d9883579 py3-apsw-3.50.4.0.zip
faae9cceb462428345fd2815a970dfc80574848f87bade7cceb09aed17127d020fd16402b3d36afe0fbc6bf707a408feea0ce038486c2a68a2ab1077a9b68d0a py3-apsw-3.49.1.0.zip
8f3957bd6fecb5660a7cab367043e4ccdacd87d8963bbe41cc3d525265de28f08aa207099658d785be29c5c90b818c1418f766995cd780d02b8e36252a389758 detect-sqlite-config.patch
"

View file

@ -1,39 +0,0 @@
# 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
"

View file

@ -1,55 +0,0 @@
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
maintainer="lauren n. liberda <lauren@selfisekai.rocks>"
pkgname=py3-flask-limiter
pkgver=3.10.1
pkgrel=0
pkgdesc="Rate Limiting extension for Flask"
url="https://github.com/alisaifee/flask-limiter"
arch="noarch"
license="MIT"
depends="
py3-flask
py3-limits
py3-ordered-set
py3-rich
python3
"
makedepends="py3-setuptools py3-gpep517"
checkdepends="
py3-flask-restful
py3-flask-restx
py3-limits-mongodb
py3-limits-redis
py3-pytest
py3-pytest-cov
"
subpackages="$pkgname-pyc"
source="
https://github.com/alisaifee/flask-limiter/archive/refs/tags/$pkgver/flask-limiter-$pkgver.tar.gz
our-std-is-good-enough.patch
"
builddir="$srcdir/flask-limiter-$pkgver"
options="!check" # tests depend on unpackaged modules
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="
a0d3af6f93d4283309d6df46ddb7fed4c358bbc712c2bd9e6897362c6d086c395cb9587c3d9da283ad757b574fd8c09d909f3c4b76d02ae8aade3e61dbea6aa0 flask-limiter-3.10.1.tar.gz
1b90e9134076cda249695d5ea741db9d205a2ae452c7d6edfe01eb37a221ce6f64b0e8ddcdbbee9b0e0fb16a28e5eabf14f1c1e41e965c7e3b93ea4f42caf553 our-std-is-good-enough.patch
"

View file

@ -1,22 +0,0 @@
--- ./flask_limiter/typing.py.orig
+++ ./flask_limiter/typing.py
@@ -11,7 +11,7 @@
cast,
)
-from typing_extensions import ParamSpec
+from typing import ParamSpec
R = TypeVar("R")
P = ParamSpec("P")
--- ./flask_limiter/commands.py.orig
+++ ./flask_limiter/commands.py
@@ -14,7 +14,7 @@
from rich.table import Table
from rich.theme import Theme
from rich.tree import Tree
-from typing_extensions import TypedDict
+from typing import TypedDict
from werkzeug.exceptions import MethodNotAllowed, NotFound
from werkzeug.routing import Rule

View file

@ -1,58 +0,0 @@
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
# Maintainer: lauren n. liberda <lauren@selfisekai.rocks>
pkgname=py3-limits
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"
license="MIT"
depends="
py3-deprecated
python3
"
makedepends="py3-setuptools py3-gpep517"
checkdepends="
py3-flaky
py3-mongo
py3-pytest
py3-pytest-asyncio
py3-pytest-benchmark
py3-pytest-cov
py3-pytest-lazy-fixtures
py3-pymemcache
py3-redis
"
subpackages="$pkgname-pyc"
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"
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 -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
}
package() {
gpep517 install-wheel --destdir "$pkgdir" \
.dist/*.whl
}
sha512sums="
f30c7ec19c2d1edad9ed77dc590ae35717efa3956a4d97e465793e1923a4af08dc9921d90ee95d3c54ce3364b867ca67a9de62c61d627e07a3f50da20bdabd0f limits-3.14.1.tar.gz
271e3b0501f9f144eda8d2e96c93b285714e339b9217385e38cdbce1f4dec88f9c949e9419f8be94885092e7977f7dca29b86b5499e9fead678b42a686c337db our-std-is-good-enough.patch
e84f4db49349a6feba0f701b9d4357c5f66d64c4a23f8ce512528b0f44b5bbef55041c02d92aae3a4cc8d5340846f9e909217beb869a5aeb49df166dd29ae9e3 tests-drop-etcd3-and-k-argument.patch
"

View file

@ -1,11 +0,0 @@
--- ./limits/typing.py.orig
+++ ./limits/typing.py
@@ -13,7 +13,7 @@
Union,
)
-from typing_extensions import ClassVar, Counter, ParamSpec, Protocol, TypeAlias
+from typing import ClassVar, Counter, ParamSpec, Protocol, TypeAlias
Serializable = Union[int, str, float]

View file

@ -1,24 +0,0 @@
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

View file

@ -0,0 +1,25 @@
# Maintainer: Martijn Braam <martijn@brixit.nl>
pkgname=rkdeveloptool
pkgver=1.1.0
pkgdesc="opensource client for rockusb devices"
pkgrel=1
url="https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool"
arch="all"
license="GPL-2.0-only"
source="https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool/-/archive/$pkgver/rkdeveloptool-$pkgver.tar.gz"
makedepends="meson libusb-dev eudev-dev scdoc"
subpackages="$pkgname-doc"
options="!check" # There is no testsuite
build() {
abuild-meson . output
meson compile -C output
}
package() {
DESTDIR="$pkgdir" meson install --no-rebuild -C output
}
sha512sums="
ff32906924c6bd7027e864d1e417c6e94119a379db2dd6ffdf0c04af666fbb1be787e0a4fad298f87b6ab51696c74ccc51ed9d5a22a59079bbadcc00c0ea4ff1 rkdeveloptool-1.1.0.tar.gz
"

View file

@ -2,7 +2,7 @@
# Maintainer: Jean-Louis Fuchs <safe.pen2857@rhizoome.ch>
pkgname=shntool
pkgver=3.0.10
pkgrel=6
pkgrel=5
pkgdesc="A multi-purpose WAVE data processing and reporting utility"
url="http://shnutils.freeshell.org/shntool/"
arch="all"
@ -13,7 +13,6 @@ source="http://shnutils.freeshell.org/shntool/dist/src/shntool-$pkgver.tar.gz
shntool-3.0.10-large-size.patch
shntool-3.0.10-large-times.patch
24bit.patch
no-cdquality-check.patch
"
build() {
@ -25,8 +24,7 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--localstatedir=/var \
CFLAGS="--std=gnu17"
--localstatedir=/var
make
}
@ -65,5 +63,4 @@ sha512sums="
fc44bca63d79b279db6d275caaacdb73cbebd6b902276a9052f005146fa125f4674e3cf559d46405637a337192f4a38f9bec4836af46e7ae52e4f220352c1ba7 shntool-3.0.10-large-size.patch
9780f22d93e20dd01d18067978bdf6cbb0b460bb80f41c4f4752b3322c3d70182b3acf35b789e30fc36ca52af6127e24c00599fb49b916f01448613721a94ebe shntool-3.0.10-large-times.patch
3c9cdd7936a6572a3c9dfc7575f5ff9a0981dd557add8e1113454487091c7b161040d25d3266937449295a1bb5317ee3515a84c3d7168360bf84643ed828e202 24bit.patch
e5b5fe4894eea92e026eec666900bde2b10ea33d4b0ffbf74a231e443c476e11b50eebc21bc2ff2b844ca48af0a41a7b6af77fdc524d0b1bd33d03f133d99992 no-cdquality-check.patch
"

View file

@ -1,21 +0,0 @@
Last-Update: 2014-11-15
Forwarded: yes
Author: Dmitry Smirnov <onlyjob@member.fsf.org>
Bug-Debian: http://bugs.debian.org/769585
Description: disable CD-quality check, needed to process 24bit 96kHz files.
--- a/src/core_mode.c
+++ b/src/core_mode.c
@@ -344,10 +344,10 @@
*colon = 0;
*dot = 0;
- if (PROB_NOT_CD(info))
- st_error("m:ss.ff format can only be used with CD-quality files");
+// if (PROB_NOT_CD(info))
+// st_error("m:ss.ff format can only be used with CD-quality files");
min = atoi((const char *)buf);
sec = atoi((const char *)(colon+1));
frames = atoi((const char *)(dot+1));

View file

@ -2,14 +2,14 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=signal-desktop
pkgver=7.76.0
pkgver=7.71.0
pkgrel=1
pkgdesc="A messaging app for simple private communication with friends"
url="https://github.com/signalapp/Signal-Desktop/"
# same as electron
arch="aarch64 x86_64"
license="AGPL-3.0-only"
_llvmver=21
_llvmver=20
depends="
electron
font-barlow
@ -29,6 +29,7 @@ makedepends="
cmake
crc32c-dev
dav1d-dev
double-conversion-dev
electron-dev
electron-tasje
ffmpeg-dev
@ -65,9 +66,9 @@ makedepends="
options="net !check"
# use _check_depends to validate this
_libsignalver=0.83.0
_ringrtcver=2.59.0
_webrtcver=7339c
_libsignalver=0.78.3
_ringrtcver=2.57.0
_webrtcver=7204c
_sqlcipherver=2.4.4
source="
@ -84,14 +85,15 @@ source="
signal-show-window-please.patch
signal-rollback-locale-changes.patch
signal-do-not-package-sqlcipher-deps.patch
signal-do-not-package-desktop-entry.patch
ringrtc-webrtc-renamed.patch
ringrtc-use-sh.patch
webrtc-shared-libs.patch
webrtc-compiler.patch
webrtc-gcc13.patch
webrtc-rollback-3rdparty-build-gn.patch
webrtc-add-cstdint-include-patch-event.patch
webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch
webrtc-fix-declaration-that-change-meaning-inside-class.patch
webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch
signal-desktop.sh
"
@ -216,6 +218,7 @@ prepare() {
brotli
crc32c
dav1d
double-conversion
ffmpeg
flatbuffers
fontconfig
@ -305,7 +308,7 @@ prepare() {
cd "$builddir"/libsignal/node
# fix target
sed -i 's/unknown-linux-gnu/alpine-linux-musl/g' build_node_bridge.py
sed -i 's/unknown-linux-gnu/alpine-linux-musl/g' binding.gyp
msg "Installing libsignal js dependencies"
yarn --ignore-scripts --frozen-lockfile
@ -385,7 +388,8 @@ build() {
cd "$builddir"/libsignal/node
msg "Building libsignal"
npm_config_nodedir=/usr/include/electron/node_headers python3 build_node_bridge.py
node-gyp configure --nodedir=/usr/include/electron/node_headers --build-from-source
node-gyp build --nodedir=/usr/include/electron/node_headers --build-from-source
mkdir -p prebuilds/linux-$chromium_arch
mv build/Release/libsignal_client_linux_$chromium_arch.node prebuilds/linux-$chromium_arch/node.napi.node
@ -481,25 +485,26 @@ package() {
}
sha512sums="
c847d3679df77ca137b4c3345b3b941a08639677efcd5eeea6613572fa90b8ad1b8d1d53e077902d4f47c05c480c408787024906d6917dcbf4a840838bf6d79d Signal-Desktop-7.76.0.tar.gz
43271a64f65a4cf0e7855fb84476ff811ef248665cb74fdaa9ce12b02d2039abdf8fca28554e7e884eabaa9bdd77e8f5383e6354e589436671675ddab7194d81 libsignal-0.83.0.tar.gz
ba4a1850bd096470a6370a0bf730550f64df4a2349cacca3b4864ef1a3a04713dd200307b9ad7ba47425322573148d6bd2ce85c11c2a49232d41e739ef5e788d ringrtc-2.59.0.tar.gz
da16a4759fc8ab55d8c480c4fe79bdee9f8a165ae2c4a9f8df250e8e0ef6aba234c07adeca8b202490a422e41c45b39c1dda0cb22a458583d0dfd488d5ea8c91 Signal-Desktop-7.71.0.tar.gz
fc2170bb029628efed5dbae795471026387e501bc2ca7075a5e210df6d81103608361c8163759c7d73f9e82b61e2a5e46d8bf32f40a0c5a19e5fc556a2ff1413 libsignal-0.78.3.tar.gz
205da87c64a000cc439b2c7bfddb923eac5ab70a0611dab9858eb2e0c0a71227722e6d13eaba2a458807cf27ff93641b8f549580f5e1fc3781ab3c7fb29d9edb ringrtc-2.57.0.tar.gz
79dd21548329b4ee409fa73b013c18ed4e85038aeef7a4cfe196fd6b5113279da8ad287a259fa6a6b546b52a5a6dd6ae2cb1050007043d25f76d7917dbbbc02d node-sqlcipher-2.4.4.tar.gz
06ffb4cdb82f818cc419d42ff2de03977d7e94c5f3eb8ac8a401bcb52ec38fa988c5d757f4bd79e5d9968fa83754fc9046180c950961c90a59eeb6130bf5552f webrtc-7339c.tar.zst
5dd61ebe525c592020a7246337dd837a8cd5de45b201afdc5b75cf3b25c5afcf6bbbae2bb677677807157697fdfb0be51681c0a8e68839e4f1eee30d3dbcad48 webrtc-7204c.tar.zst
8d2d2d82c8546c2dd1fef161b61df79918f8c22235a56a46adb375a0beb4acef12c5fe53e67242a4be97f77adc522ff79b47949c352956c742a70d50f4179f7f libsignal-auditable.patch
7ee747c8aaa9d6e9149fe0a031e3d4cc9e9c08f22c42076bd05e2acb86952f8170032613d13a53716010edfa3f26ad97b530e82460318eb46a42e28cf5faeb9d signal-use-system-sqlcipher.patch
ef3622da416a5bd2d4bea4f2a4fbb21a985f660d4acc17bbe66ce51ac1180ab92c0c843a5414ff56ea1deda87c2b0f611a299ca8ebe4d6a24df53626b36ceea8 signal-disable-updates.patch
853de84d636f730694f17bcec63463fa7bfbdd0a7f7a64618a8fc6bc523ce1a9854b4c651753735af735c18101295d3efbe54f83ae0bccbed83c8c1fee3e7049 signal-update-links.patch
882d6889b23a3ebc6449c8b6acec8c3853674a7e94f066d65b57bab674ba8c11d582ba2c760825cb67b9202716e6d8b7123001d1e9f9229e49a0b77e9d978265 signal-show-window-please.patch
3dd3bf2f6925e2672a20ef56bbac519099d54e912e5a434a0649ea152db5039dbe1bbade3430b485ae9a6085d747dd88602d4efc5198d5a4dbf1b8359de11f94 signal-rollback-locale-changes.patch
aca92e4de6cd005d660d7e8b99607de96ca2d7dc220e3465247d517e915e4d41a4b0eb519e85c5eca1c81cd8bac9821acd03ff57f1603918987829c6ea7757b4 signal-rollback-locale-changes.patch
961568777b86f8fbcc73360252123686c9d1e16b2650f23d8afbc6d7580d53024f81b62e9e9cbdcd0031b5cf99854bd47c6dd4580197f2b27b8b4cbb51c6c9c9 signal-do-not-package-sqlcipher-deps.patch
d8cafd4ae1f7438417f5c414d68a175c3d24b66a14b9f3b8ca9c9acae2b2eaa68985ee81c1df7d754a206ff1c9b02929803440fb0734db38b6ac9ab3e34205b0 signal-do-not-package-desktop-entry.patch
02a648bb8541a39c75fec2db39f024a27976afca41908eefa2fe1f2e30b05b5d59f980ccc930021c0b0c09ba8b0cbcae071e9f0dd530543c667adbc4272af552 ringrtc-webrtc-renamed.patch
19d2e07bdc0b160ec542fcb0a3d94ae1e37dcb1b3455e57b278cf074f8aac625341b47f4f06a1f7eb5a197cb0f11754de8785ffd10876852972cbfafdc2615db ringrtc-use-sh.patch
a9374040dcbc9203c8a3b4ad1cf97d58805cd4755f4f585a988b113697ea97d5900ad68f6a30aa0621f34ab54ae98984a8ce228a2d08186ee1bf3384abf3f364 webrtc-shared-libs.patch
8ba740f0552872ddf383545a6bb99bf7bcdd2610cee51c6e69dc667893006facd5d72f62274e25c1a58e1a58c8e8b0b5303b648e4c74a71925639cc9691c72c4 webrtc-compiler.patch
d44f62e4ccf2d9094d6ed217b24fa2cde276c7f64f4d6fd26e84dfc021ea667abcb21f9e4666cfd0d88d6ee0a6b1a20b6cc68c8720462711e3b5451e263f6c4a webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch
98a7e4df27c3ed56c5968ebc3ae8e08bfb54362d0c910f9af1d414079a6d5fe0f18aa570ae3c38042f4691af6a130cb3ff689625e26a3987720dd319a5f587b1 webrtc-shared-libs.patch
897174fa3b1eaa74a3b2d7d861863a9f60550ddb0d7be700cd590600efdc3bd962f52c21e371276eaf8d5657c98fe8ade9853b0197b61a68d5dce6fa03b5899b webrtc-compiler.patch
3f1095861a79862ab5a55c86d7e353d272974617afba39e4d4441024bede8d7b9b8e122da90d56a9c3c0965171803d6b9e29e91d78167a08c6bcc86b3eedab18 webrtc-gcc13.patch
f8bd574a0de077a643ced26e8a0e3f162e014bbf91c957bbefd113883a70e2b63e483bf400b7e2da8d09edfe76d4f6a257f194a14124f344f1625c5632d12acb webrtc-rollback-3rdparty-build-gn.patch
2a83171eae579a756edbf95c3ded80cbe0cd0fdb4f19b4c73612837f7ea6f573125dde013a17c8e7ce08f101568bb73bfb86a945dc2d10dd91ad45632c69a132 webrtc-add-cstdint-include-patch-event.patch
1520ca0993cd9df44401de001d1f49da924b8c9bd818c8f7fb47863af710cc2796306e786ad8522c9729dec6a1191d1f2d9e0e2ba2b678b9b8ea534b7bddc762 webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch
ace87a2be03c6965012a87a10918c5923b10d5e74a7169c1e1384c15b34a367d0c47e806764c368cc30dad01a3dce54b50587abea9831130178db3806619abc8 webrtc-fix-declaration-that-change-meaning-inside-class.patch
d17ecd89e867b24a21144d267e1bf7d09e3898018a0f9fcd87084b9de8091bc56f904a1cabdc487a8e46ab509c11ddd363c574d75d85a79e3c4d9424a13b2093 webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch
8e1de53ec1608fa05972af605213e8423b8f88cfd8d6a1989bdcaf77ed1420871c39efa15c56ffeccb6ff86677acc5bc436020f3554bee4f94930c7d9f4e16b6 signal-desktop.sh
87534e7b5ad7365509eab75629e6bd1a9ed61ee92f7e358405a0abaf0df57de14623fb3894eb082f8785422e5c087e1c50f9e2e5cafbb2529591fd7bf447f7f5 signal-desktop.sh
"

View file

@ -3,4 +3,4 @@
# app chooses config (including used endpoints) based on this
export NODE_ENV=production
exec electron /usr/lib/signal-desktop/app.asar "$@"
exec electron /usr/lib/signal-desktop/app.asar

View file

@ -1,16 +0,0 @@
diff --git a/Signal-Desktop/package.json.orig b/Signal-Desktop/package.json
index 832035e..e6ac14c 100644
--- a/Signal-Desktop/package.json.orig
+++ b/Signal-Desktop/package.json
@@ -519,11 +519,6 @@
},
"linux": {
"category": "Network;InstantMessaging;Chat",
- "desktop": {
- "entry": {
- "StartupWMClass": "signal"
- }
- },
"target": [
"deb"
],

View file

@ -42,7 +42,7 @@ index a63eef4079d..2a959da4d0d 100644
-import { app } from 'electron';
+import { join } from 'path';
+import { readFileSync } from 'fs';
import lodash from 'lodash';
import { merge } from 'lodash';
import * as LocaleMatcher from '@formatjs/intl-localematcher';
import { z } from 'zod';
@@ -16,9 +15,6 @@ import type { LocalizerType } from '../ts/types/Util';
@ -129,7 +129,7 @@ index 7187d287acc..9a17d638f44 100644
import { readdir, mkdir, readFile, writeFile } from 'node:fs/promises';
import { join, dirname } from 'node:path';
-import pMap from 'p-map';
-import { isLocaleMessageType } from '../util/setupI18nMain.js';
-import { isLocaleMessageType } from '../util/setupI18nMain';
-
-async function compact({
- sourceDir,

View file

@ -0,0 +1,12 @@
diff --git a/webrtc/rtc_base/trace_event.h b/webrtc/rtc_base/trace_event.h
index 3329abd..9ec7088 100644
--- a/webrtc/rtc_base/trace_event.h
+++ b/webrtc/rtc_base/trace_event.h
@@ -11,6 +11,7 @@
#ifndef RTC_BASE_TRACE_EVENT_H_
#define RTC_BASE_TRACE_EVENT_H_
+#include <cstdint>
#if defined(RTC_DISABLE_TRACE_EVENTS)
#define RTC_TRACE_EVENTS_ENABLED 0
#else

View file

@ -29,27 +29,27 @@ index 88109264ea9..192a3f3119e 100644
}
if (!optimize_for_size) {
@@ -1303,8 +1303,8 @@ config("compiler_cpu_abi") {
]
@@ -1241,8 +1241,8 @@ config("compiler_cpu_abi") {
}
} else if (current_cpu == "arm") {
if (is_clang && !is_android && !is_chromeos_device) {
if (is_clang && !is_android && !is_nacl && !is_chromeos_device) {
- cflags += [ "--target=arm-linux-gnueabihf" ]
- ldflags += [ "--target=arm-linux-gnueabihf" ]
+ cflags += [ "--target=arm-alpine-linux-gnueabihf" ]
+ ldflags += [ "--target=arm-alpine-linux-gnueabihf" ]
}
cflags += [
"-march=$arm_arch",
@@ -1315,8 +1315,8 @@ config("compiler_cpu_abi") {
}
if (!is_nacl) {
cflags += [
@@ -1256,8 +1256,8 @@ config("compiler_cpu_abi") {
} else if (current_cpu == "arm64") {
if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) {
if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
!is_chromeos_device) {
- cflags += [ "--target=aarch64-linux-gnu" ]
- ldflags += [ "--target=aarch64-linux-gnu" ]
+ cflags += [ "--target=aarch64-alpine-linux-gnu" ]
+ ldflags += [ "--target=aarch64-alpine-linux-gnu" ]
}
} else if (current_cpu == "mipsel") {
} else if (current_cpu == "mipsel" && !is_nacl) {
ldflags += [ "-Wl,--hash-style=sysv" ]
@@ -1267,8 +1267,8 @@ config("compiler_cpu_abi") {
cflags += [ "--target=mipsel-linux-android" ]

View file

@ -0,0 +1,31 @@
--- ./webrtc/rtc_base/system/file_wrapper.h.orig
+++ ./webrtc/rtc_base/system/file_wrapper.h
@@ -13,6 +13,7 @@
#include <stddef.h>
#include <stdio.h>
+#include <stdint.h>
#include <string>
--- ./webrtc/modules/audio_coding/neteq/reorder_optimizer.cc.orig
+++ ./webrtc/modules/audio_coding/neteq/reorder_optimizer.cc
@@ -11,6 +11,7 @@
#include "modules/audio_coding/neteq/reorder_optimizer.h"
#include <algorithm>
+#include <cstdint>
#include <limits>
#include <vector>
--- ./webrtc/rtc_base/ssl_stream_adapter.h.orig
+++ ./webrtc/rtc_base/ssl_stream_adapter.h
@@ -24,6 +24,7 @@
#include "rtc_base/ssl_certificate.h"
#include "rtc_base/ssl_identity.h"
#include "rtc_base/stream.h"
+#include <optional>
namespace rtc {

View file

@ -0,0 +1,23 @@
Patch-Source: https://webrtc-review.googlesource.com/c/src/+/380500
---
--- a/webrtc/modules/video_capture/linux/pipewire_session.cc
+++ b/webrtc/modules/video_capture/linux/pipewire_session.cc
@@ -87,7 +87,7 @@
.param = OnNodeParam,
};
- pw_node_add_listener(proxy_, &node_listener_, &node_events, this);
+ pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, &node_events, this);
}
// static
@@ -119,7 +119,7 @@
uint32_t id = info->params[i].id;
if (id == SPA_PARAM_EnumFormat &&
info->params[i].flags & SPA_PARAM_INFO_READ) {
- pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr);
+ pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, UINT32_MAX, nullptr);
break;
}
}

View file

@ -0,0 +1,31 @@
diff --git a/webrtc/third_party/BUILD.gn b/webrtc/third_party/BUILD.gn
index 256fd092e2e..4ce797ebad7 100644
--- a/webrtc/third_party/BUILD.gn
+++ b/webrtc/third_party/BUILD.gn
@@ -55,12 +55,10 @@ group("jpeg_includes") {
component("freetype_harfbuzz") {
public_configs = []
public_deps = []
- if (enable_freetype) {
- if (use_system_freetype) {
- public_configs += [ "//build/linux:freetype_from_pkgconfig" ]
- } else {
- public_deps += [ "//third_party/freetype:freetype_source" ]
- }
+ if (use_system_freetype) {
+ public_configs += [ "//build/linux:freetype_from_pkgconfig" ]
+ } else {
+ public_deps += [ "//third_party/freetype:freetype_source" ]
}
if (use_system_harfbuzz) {
public_configs += [ "//third_party/harfbuzz-ng:harfbuzz_from_pkgconfig" ]
@@ -71,8 +69,5 @@ component("freetype_harfbuzz") {
buildflag_header("freetype_buildflags") {
header = "freetype_buildflags.h"
- flags = [
- "USE_SYSTEM_FREETYPE=$use_system_freetype",
- "ENABLE_FREETYPE=$enable_freetype",
- ]
+ flags = [ "USE_SYSTEM_FREETYPE=$use_system_freetype" ]
}

View file

@ -0,0 +1,136 @@
diff --git a/webrtc/ringrtc/rffi/src/sdp_observer.cc b/webrtc/ringrtc/rffi/src/sdp_observer.cc
index d60f3d5e7ba..d561dedd1d0 100644
--- a/webrtc/ringrtc/rffi/src/sdp_observer.cc
+++ b/webrtc/ringrtc/rffi/src/sdp_observer.cc
@@ -6,7 +6,7 @@
#include "rffi/api/sdp_observer_intf.h"
#include "rffi/src/ptr.h"
#include "rffi/src/sdp_observer.h"
-#include "third_party/re2/src/re2/re2.h"
+#include <regex>
namespace webrtc {
namespace rffi {
@@ -29,8 +29,8 @@ void CreateSessionDescriptionObserverRffi::OnSuccess(SessionDescriptionInterface
// TODO tweak the response a little
std::string sdp;
if (session_description->ToString(&sdp)) {
- static LazyRE2 ssrc_re = {".+urn:ietf:params:rtp-hdrext:ssrc-audio-level.*\r?\n"};
- RE2::Replace(&sdp, *ssrc_re, "");
+ sdp = std::regex_replace(sdp, std::regex("(a=fmtp:111 ((?!cbr=).)*)\r?\n"), "$1;cbr=1\r\n");
+ sdp = std::regex_replace(sdp, std::regex(".+urn:ietf:params:rtp-hdrext:ssrc-audio-level.*\r?\n"), "");
std::unique_ptr<SessionDescriptionInterface> session_description2 = CreateSessionDescription(session_description->GetType(), sdp);
delete session_description;
diff --git a/webrtc/ringrtc/rffi/BUILD.gn b/webrtc/ringrtc/rffi/BUILD.gn
index 4564e734e63..341535b0fc7 100644
--- a/webrtc/ringrtc/rffi/BUILD.gn
+++ b/webrtc/ringrtc/rffi/BUILD.gn
@@ -58,7 +58,6 @@ if (is_android) {
"${android_sdk}:libjingle_peerconnection_jni",
"${android_sdk}:libjingle_peerconnection_metrics_default_jni",
"//pc:libjingle_peerconnection",
- "//third_party/re2",
]
output_extension = "so"
}
@@ -78,7 +77,6 @@ if (is_ios) {
deps = [
"//third_party/libyuv",
- "//third_party/re2",
]
}
}
@@ -94,7 +92,6 @@ if (is_linux || is_mac || is_win) {
deps = [
"//sdk:media_constraints",
"//media:rtc_simulcast_encoder_adapter",
- "//third_party/re2",
]
}
}
diff --git a/webrtc/ringrtc/rffi/api/peer_connection_intf.h b/webrtc/ringrtc/rffi/api/peer_connection_intf.h
index 66958254fed..4cd223beb93 100644
--- a/webrtc/ringrtc/rffi/api/peer_connection_intf.h
+++ b/webrtc/ringrtc/rffi/api/peer_connection_intf.h
@@ -105,6 +105,7 @@ RUSTEXPORT webrtc::SessionDescriptionInterface*
Rust_sessionDescriptionFromV4(bool offer,
const RffiConnectionParametersV4* v4_borrowed,
bool enable_tcc_audio,
+ bool enable_red_audio,
bool enable_vp9);
RUSTEXPORT void
diff --git a/webrtc/ringrtc/rffi/src/peer_connection.cc b/webrtc/ringrtc/rffi/src/peer_connection.cc
index 9db5ed8219d..0714b3589e3 100644
--- a/webrtc/ringrtc/rffi/src/peer_connection.cc
+++ b/webrtc/ringrtc/rffi/src/peer_connection.cc
@@ -42,6 +42,7 @@ int VIDEO_LAYERS_ALLOCATION_EXT_ID = 14;
// 101 used by connection.rs
int DATA_PT = 101;
int OPUS_PT = 102;
+int OPUS_RED_PT = 105;
int VP8_PT = 108;
int VP8_RTX_PT = 118;
int VP9_PT = 109;
@@ -317,12 +318,14 @@ RUSTEXPORT webrtc::SessionDescriptionInterface*
Rust_sessionDescriptionFromV4(bool offer,
const RffiConnectionParametersV4* v4_borrowed,
bool enable_tcc_audio,
+ bool enable_red_audio,
bool enable_vp9) {
// Major changes from the default WebRTC behavior:
// 1. We remove all codecs except Opus, VP8, and VP9
// 2. We remove all header extensions except for transport-cc, video orientation,
// and abs send time.
// 3. Opus CBR and DTX is enabled.
+ // 4. RED is enabled for audio.
// For some reason, WebRTC insists that the video SSRCs for one side don't
// overlap with SSRCs from the other side. To avoid potential problems, we'll give the
@@ -361,6 +364,15 @@ Rust_sessionDescriptionFromV4(bool offer,
auto video = std::make_unique<cricket::VideoContentDescription>();
set_rtp_params(video.get());
+ // Turn on the RED "meta codec" for Opus redundancy.
+ auto opus_red = cricket::CreateAudioCodec(OPUS_RED_PT, cricket::kRedCodecName, 48000, 2);
+ opus_red.SetParam("", std::to_string(OPUS_PT) + "/" + std::to_string(OPUS_PT));
+
+ if (enable_red_audio) {
+ // Add RED before Opus to use it by default when sending.
+ audio->AddCodec(opus_red);
+ }
+
auto opus = cricket::CreateAudioCodec(OPUS_PT, cricket::kOpusCodecName, 48000, 2);
// These are the current defaults for WebRTC
// We set them explicitly to avoid having the defaults change on us.
@@ -378,6 +390,11 @@ Rust_sessionDescriptionFromV4(bool offer,
opus.AddFeedbackParam(cricket::FeedbackParam(cricket::kRtcpFbParamTransportCc, cricket::kParamValueEmpty));
audio->AddCodec(opus);
+ if (!enable_red_audio) {
+ // Add RED after Opus so that RED packets can at least be decoded properly if received.
+ audio->AddCodec(opus_red);
+ }
+
auto add_video_feedback_params = [] (cricket::Codec* video_codec) {
video_codec->AddFeedbackParam(cricket::FeedbackParam(cricket::kRtcpFbParamTransportCc, cricket::kParamValueEmpty));
video_codec->AddFeedbackParam(cricket::FeedbackParam(cricket::kRtcpFbParamCcm, cricket::kRtcpFbCcmParamFir));
@@ -589,9 +606,16 @@ CreateSessionDescriptionForGroupCall(bool local,
opus.SetParam("cbr", "1");
opus.AddFeedbackParam(cricket::FeedbackParam(cricket::kRtcpFbParamTransportCc, cricket::kParamValueEmpty));
+ // Turn on the RED "meta codec" for Opus redundancy.
+ auto opus_red = cricket::CreateAudioCodec(OPUS_RED_PT, cricket::kRedCodecName, 48000, 2);
+ opus_red.SetParam("", std::to_string(OPUS_PT) + "/" + std::to_string(OPUS_PT));
+
+ // Add RED after Opus so that RED packets can at least be decoded properly if received.
local_audio->AddCodec(opus);
+ local_audio->AddCodec(opus_red);
for (auto& remote_audio : remote_audios) {
remote_audio->AddCodec(opus);
+ remote_audio->AddCodec(opus_red);
}
auto add_video_feedback_params = [] (cricket::Codec* video_codec) {

View file

@ -1,12 +0,0 @@
diff --git a/webrtc/rtc_base/platform_thread_types.cc.orig b/webrtc/rtc_base/platform_thread_types.cc
index 20bf4af..482b15f 100644
--- a/webrtc/rtc_base/platform_thread_types.cc.orig
+++ b/webrtc/rtc_base/platform_thread_types.cc
@@ -12,7 +12,6 @@
// IWYU pragma: begin_keep
#if defined(WEBRTC_LINUX)
-#include <linux/prctl.h>
#include <sys/prctl.h>
#include <sys/syscall.h>

View file

@ -18,10 +18,10 @@
# Only the root target and the test should depend on this.
visibility = [
"//:default",
@@ -530,7 +530,6 @@ if (!build_with_chromium) {
@@ -472,7 +472,6 @@
]
sources = []
- complete_static_lib = true
suppressed_configs += [ "//build/config/compiler:thin_archive" ]
defines = []
@ -42,12 +42,12 @@ diff --git a/webrtc/third_party/googletest/BUILD.gn.orig b/webrtc/third_party/go
index b7dc621..367f929 100644
--- a/webrtc/third_party/googletest/BUILD.gn.orig
+++ b/webrtc/third_party/googletest/BUILD.gn
@@ -129,7 +128,6 @@ source_set("gtest") {
@@ -133,7 +133,6 @@ source_set("gtest") {
# googletest only needs `absl`, but this makes gn check happier.
deps = [ "//third_party/abseil-cpp:absl_full" ]
- public_deps = [ "//third_party/re2" ]
if (!build_with_chromium) {
if (is_nacl || !build_with_chromium) {
defines += [ "GTEST_DISABLE_PRINT_STACK_TRACE" ]
sources -= [
diff --git a/webrtc/third_party/fuzztest/BUILD.gn.orig b/webrtc/third_party/fuzztest/BUILD.gn
@ -62,17 +62,3 @@ index 57ee790..ba1d297 100644
# For protobuf mutators
"$protobuf_target_prefix:protobuf_lite",
diff --git a/webrtc/third_party/BUILD.gn b/webrtc/third_party/BUILD.gn
index 256fd092e2e..4ce797ebad7 100644
--- a/webrtc/third_party/BUILD.gn
+++ b/webrtc/third_party/BUILD.gn
@@ -71,8 +69,5 @@ component("freetype_harfbuzz") {
buildflag_header("freetype_buildflags") {
header = "freetype_buildflags.h"
- flags = [
- "USE_SYSTEM_FREETYPE=$use_system_freetype",
- "ENABLE_FREETYPE=$enable_freetype",
- ]
+ flags = [ "USE_SYSTEM_FREETYPE=$use_system_freetype" ]
}

View file

@ -407,14 +407,16 @@ diff --git a/webrtc/pc/used_ids.h b/webrtc/pc/used_ids.h
index fe80531..f9d825c 100644
--- a/webrtc/pc/used_ids.h
+++ b/webrtc/pc/used_ids.h
@@ -14,7 +14,6 @@
@@ -14,9 +14,7 @@
#include <vector>
#include "api/rtp_parameters.h"
-#include "media/base/codec.h"
#include "rtc_base/checks.h"
-#include "rtc_base/logging.h"
namespace webrtc {
template <typename IdStruct>
@@ -88,41 +86,6 @@
std::set<int> id_set_;
};
@ -457,3 +459,11 @@ index fe80531..f9d825c 100644
// Helper class used for finding duplicate RTP Header extension ids among
// audio and video extensions.
class UsedRtpHeaderExtensionIds : public UsedIds<RtpExtension> {
@@ -190,7 +153,6 @@
#ifdef WEBRTC_ALLOW_DEPRECATED_NAMESPACES
namespace cricket {
using ::webrtc::UsedIds;
-using ::webrtc::UsedPayloadTypes;
using ::webrtc::UsedRtpHeaderExtensionIds;
} // namespace cricket
#endif // WEBRTC_ALLOW_DEPRECATED_NAMESPACES

View file

@ -3,11 +3,10 @@
# Maintainer: Fabricio Silva <hi@fabricio.dev>
pkgname=thelounge
pkgver=4.4.3
pkgrel=0
pkgrel=1
pkgdesc="Modern, responsive, cross-platform, self-hosted web IRC client"
url="https://thelounge.chat"
# build broken against node 24
#arch="all !riscv64" # riscv64 gets SIGILL
arch="all !riscv64" # riscv64 gets SIGILL
license="MIT"
depends="nodejs"
makedepends="yarn py3-setuptools"
@ -18,7 +17,7 @@ source="
thelounge.initd
thelounge.confd
"
options="net" # net for npm
options="!check net" # net for npm
case $CARCH in
# loongarch64: 2 tests failed on the builder

View file

@ -0,0 +1,13 @@
diff --git a/server/server.ts b/server/server.ts.orig
index 7a1514e..5ecdea9 100644
--- a/server/server.ts
+++ b/server/server.ts.orig
@@ -377,7 +377,7 @@ function addSecurityHeaders(req: Request, res: Response, next: NextFunction) {
"default-src 'none'", // default to nothing
"base-uri 'none'", // disallow <base>, has no fallback to default-src
"form-action 'self'", // 'self' to fix saving passwords in Firefox, even though login is handled in javascript
- "connect-src 'self' ws: wss:", // allow self for polling; websockets
+ "connect-src 'self' ws: wss: https:", // allow self for polling; websockets
"style-src 'self' https: 'unsafe-inline'", // allow inline due to use in irc hex colors
"script-src 'self'", // javascript
"worker-src 'self'", // service worker

View file

@ -0,0 +1,19 @@
diff --git a/test/src/helperTest.ts b/test/src/helperTest.ts
index 2a8ddc8..22f0532 100644
--- a/test/src/helperTest.ts
+++ b/test/src/helperTest.ts
@@ -40,14 +40,6 @@ describe("Helper", function () {
describe("#getVersion()", function () {
const version = Helper.getVersion();
- it("should mention it is served from source code", function () {
- expect(version).to.include("source");
- });
-
- it("should include a short Git SHA", function () {
- expect(version).to.match(/\([0-9a-f]{7,11} /);
- });
-
it("should include a valid semver version", function () {
expect(version).to.match(/v[0-9]+\.[0-9]+\.[0-9]+/);
});

View file

@ -1,33 +0,0 @@
maintainer="Fabricio Silva <hi@fabricio.dev>"
pkgname=yarn-berry
pkgver=4.9.1
pkgrel=0
pkgdesc="Fast, reliable, and secure dependency management for Node.js - Active development version"
url="https://yarnpkg.com/"
license="BSD-2-Clause"
arch="noarch"
depends="!yarn nodejs" # not backward compatible with yarn classic (v1)
source="$pkgname-$pkgver.tgz::https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-$pkgver.tgz"
builddir="$srcdir/package"
replaces="yarn"
check() {
./bin/yarn.js --version
./bin/yarn.js --help
}
package() {
local destdir="usr/share/node_modules/@yarnpkg/cli-dist"
mkdir -p "$pkgdir"/$destdir/bin
install -Dm0644 package.json -t "$pkgdir"/$destdir
install -Dm0755 bin/yarn.js -t "$pkgdir"/$destdir/bin
mkdir -p "$pkgdir"/usr/bin
ln -s ../share/node_modules/@yarnpkg/cli-dist/bin/yarn.js "$pkgdir"/usr/bin/yarn
ln -s yarn "$pkgdir"/usr/bin/yarnpkg
}
sha512sums="
cae0bcb10349af010b472ef7fa1023c33c0afd60a54dc29d18797e6bb771bd6c0d3d06aefa801c56363bcc6ecf6133988d1f943543293e7335ede60618fb28e8 yarn-berry-4.9.1.tgz
"

View file

@ -0,0 +1,11 @@
Section "InputClass"
Identifier "evdev touchscreen"
MatchProduct "tt21000"
MatchIsTouchscreen "on"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "RotateTouch"
MatchProduct "w9013"
Option "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"
EndSection

View file

@ -0,0 +1,9 @@
ACTION=="remove", GOTO="libinput_device_group_end"
KERNEL!="event[0-9]*", GOTO="libinput_device_group_end"
ATTRS{phys}=="?*", ATTRS{name}=="cyttsp5", ENV{LIBINPUT_DEVICE_GROUP}="pinenotetouch"
ATTRS{phys}=="?*", ATTRS{name}=="w9013 2D1F:0095 Stylus", ENV{LIBINPUT_DEVICE_GROUP}="pinenotetouch"
ATTRS{phys}=="?*", ATTRS{name}=="cyttsp5", ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1"
LABEL="libinput_device_group_end"

View file

@ -0,0 +1,2 @@
SUBSYSTEM=="module", KERNEL=="rockchip_ebc", RUN+="/bin/chgrp video /sys/module/%k/parameters/dclk_select /sys/module/%k/parameters/auto_refresh /sys/module/%k/parameters/bw_dither_invert /sys/module/%k/parameters/bw_threshold /sys/module/%k/parameters/bw_mode /sys/module/%k/parameters/diff_mode /sys/module/%k/parameters/direct_mode /sys/module/%k/parameters/limit_fb_blits /sys/module/%k/parameters/panel_reflection /sys/module/%k/parameters/refresh_threshold /sys/module/%k/parameters/refresh_waveform /sys/module/%k/parameters/skip_reset /sys/module/%k/parameters/split_area_limit /sys/module/%k/parameters/default_waveform", RUN+="/bin/chmod g+w /sys/module/%k/parameters/bw_threshold /sys/module/%k/parameters/bw_mode /sys/module/%k/parameters/default_waveform /sys/module/%k/parameters/diff_mode /sys/module/%k/parameters/direct_mode /sys/module/%k/parameters/limit_fb_blits /sys/module/%k/parameters/panel_reflection /sys/module/%k/parameters/refresh_threshold /sys/module/%k/parameters/refresh_waveform /sys/module/%k/parameters/skip_reset /sys/module/%k/parameters/auto_refresh /sys/module/%k/parameters/bw_dither_invert /sys/module/%k/parameters/split_area_limit"
DRIVER=="rockchip-ebc", RUN+="/bin/chgrp video /sys/%p/power/control", RUN+="/bin/chmod g+w /sys/%p/power/control"

View file

@ -0,0 +1,77 @@
# Maintainer: Petr Hodina <phodina@protonmail.com>
pkgname=device-pine64-pinenote
pkgdesc="Pine64 PineNote"
pkgver=2
pkgrel=9
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="
u-boot-pine64-pinenote
linux-pine64-pinenote
postmarketos-base
"
makedepends="devicepkg-dev"
source="
deviceinfo
modules-initfs
phoc.ini
local-overrides.quirks
50-touchscreen.conf
81-libinput-pinenote.rules
82-ebc-rockchip.rules
panfrost.conf
rockchip_ebc.conf
"
subpackages="
$pkgname-nonfree-firmware:nonfree_firmware
$pkgname-phosh
"
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
install -Dm644 "$srcdir"/local-overrides.quirks \
-t "$pkgdir"/etc/libinput/
install -Dm644 "$srcdir"/50-touchscreen.conf \
-t "$pkgdir"/etc/X11/xorg.conf.d
install -Dm644 "$srcdir"/81-libinput-pinenote.rules \
-t "$pkgdir"/usr/lib/udev/rules.d
install -Dm644 "$srcdir"/82-ebc-rockchip.rules \
"$pkgdir"/usr/lib/udev/rules.d
install -Dm644 "$srcdir"/panfrost.conf \
-t "$pkgdir"/etc/modprobe.d
install -Dm644 "$srcdir"/rockchip_ebc.conf \
"$pkgdir"/etc/modprobe.d
}
phosh() {
install_if="$pkgname=$pkgver-r$pkgrel phosh"
depends="postmarketos-theme"
install -Dm644 "$srcdir"/phoc.ini \
-t "$subpkgdir"/etc/phosh
}
nonfree_firmware() {
pkgdesc="WiFi, Bluetooth and display firmware"
depends="firmware-pine64-pinenote linux-firmware"
mkdir "$subpkgdir"
}
sha512sums="
5829b9b52206a7520066e4bb3c08c2535d98002a3940664a0239344f5e7522fe7b6a9cb0c0074f9846c7e42c40746f2991f6aeeefeba8efa9140c16630b2893e deviceinfo
473accb3497244742dd9fd15f8a02957a13e08fa4d4393fec185ecbb27f1f17726e4b5ece22da861151f9d358d3266206c647def8aa75adb672b6f1f1904c66f modules-initfs
4bf5158fbd53274a7429e825bb66225001f2403a4851e2d6803323b77d9095738ee3e5340ac85baf3e86bb4f47d38af8cbd78d8a5055c59a62f5b06e722e19cb phoc.ini
1123720962c9c8fec3c50302ca6a3dd56e2907dc9eea361a7b8eb4201b042476633d41a0ee4f6ab61d9c60eeccc894f83491ba9fa309a9bce2f1db0b0341d79d local-overrides.quirks
ac433eebbc35a48561837495997aee4e55510b979bc0d8e3bafb761bc1be5b4bdeed2f456369dcbc582688aefd07c63966b0d72b6ffa99e84cfd868e677f02c8 50-touchscreen.conf
2bc51f200baefc37abfaaad368a911244999e906bdca4b728ac233f49a8fb3ae7206ee3c95cdb20d7dceae2a31d25a57f4e1da4fd67057fd64724b8232e42aed 81-libinput-pinenote.rules
19e922eec89dba419798c4e1dc9b39c040db33986d0969a39a8220c642fa081763f15ff2418115d5a748af4054a1be0784927d1712ea79942c2b237ebab47728 82-ebc-rockchip.rules
6ba6638754e00908243de2f73ed6898dac03638a200dcf7b7cd9684757355ee1eb0ac874af0f971ad2e054c1a8c471867bdaea4d9aaf7eea6d3cf81ac7dd73a2 panfrost.conf
b52d2e7f0c62d7c313b6db9aeb706cdb2596b6aa637aeddb862abf1e256103377fb6267e38cd4285e25d32112acf8d03bbf32ecff7be3dfbb9176209ea7ae283 rockchip_ebc.conf
"

View file

@ -0,0 +1,37 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell
# scripts.
deviceinfo_format_version="0"
deviceinfo_name="Pine64 PineNote"
deviceinfo_manufacturer="Pine64"
deviceinfo_codename="pine64-pinenote"
deviceinfo_year="2021"
deviceinfo_dtb="rockchip/rk3566-pinenote-v1.2"
deviceinfo_arch="aarch64"
deviceinfo_gpu_accelerated="true"
# Device related
deviceinfo_chassis="tablet"
deviceinfo_keyboard="false"
deviceinfo_external_storage="false"
deviceinfo_screen_width="1404"
deviceinfo_screen_height="1872"
deviceinfo_getty="ttyS2;1500000"
# initfs
# Bootloader related
deviceinfo_flash_method="rkdeveloptool"
deviceinfo_flash_sparse="true"
deviceinfo_boot_part_start="65536"
deviceinfo_sd_embed_firmware="u-boot/pine64-pinenote/u-boot-rockchip.bin:1"
deviceinfo_sd_embed_firmware_step_size="32768"
deviceinfo_flash_rk_partition_kernel="boot"
deviceinfo_flash_rk_partition_rootfs="os1"
deviceinfo_generate_extlinux_config="true"
deviceinfo_kernel_cmdline="drm.debug=0x0 vt.color=0xf earlycon console=tty0 console=ttyS2,1500000n8 PMOS_FORCE_PARTITION_RESIZE"

View file

@ -0,0 +1,5 @@
[PineNote]
MatchName=cyttsp5
AttrPalmPressureThreshold=28
AttrThumbPressureThreshold=27
AttrSizeHint=210x157

View file

@ -0,0 +1,5 @@
tps65185-regulator
rockchip_ebc
drm_kms_helper
drm_shmem_helper
pvi_waveform

View file

@ -0,0 +1,2 @@
softdep panfrost pre: rockchip_ebc
# blacklist rockchip_ebc

View file

@ -0,0 +1,6 @@
# /etc/phosh/phoc.ini
# Overwrites values set in /usr/share/phosh/phoc.ini
# e-ink is an "Unknown" display type for now in mainline
[output:Unknown-1]
scale = 2.0

View file

@ -0,0 +1,5 @@
# rockchip-rga will crash the kernel on unload at the moment
blacklist rockchip-rga
blacklist ws8100_pen
options rockchip_ebc direct_mode=0 auto_refresh=1 refresh_threshold=60 split_area_limit=0 panel_reflection=1 prepare_prev_before_a2=0 dclk_select=0

View file

@ -0,0 +1,59 @@
# Reference: <https://postmarketos.org/vendorkernel>
# Kernel config based on: arch/arm64/configs/(CHANGEME!)
pkgname=linux-pine64-pinenote
pkgver=6.12.0
pkgrel=0
pkgdesc="Pine64 PineNote kernel fork"
arch="aarch64"
_carch="arm64"
_flavor="pine64-pinenote"
url="https://kernel.org"
license="GPL-2.0-only"
options="!strip !check !tracedeps pmb:cross-native"
makedepends="
bash
bc
bison
devicepkg-dev
findutils
flex
openssl-dev
perl
"
# Source
_repository="linux"
_commit="9d066a65f5cbaa8cd3bfc73a1b54fbac2d0f76ac"
_config="config-$_flavor.$arch"
source="
$pkgname-$_commit.tar.gz::https://github.com/m-weigand/linux/archive/$_commit.tar.gz
$_config
"
builddir="$srcdir/$_repository-$_commit"
prepare() {
default_prepare
REPLACE_GCCH=0 \
. downstreamkernel_prepare
}
build() {
unset LDFLAGS
make ARCH="$_carch" CC="${CC:-gcc}" \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
}
package() {
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" "$_flavor"
make modules_install dtbs_install \
ARCH="$_carch" \
INSTALL_MOD_PATH="$pkgdir" \
INSTALL_DTBS_PATH="$pkgdir/boot/dtbs"
}
sha512sums="
d3c2510f9f835a0570fbb812cec2f9e12e402878c1f9f214364ae1918bc4c00f69a1fc5e005cf6b85c0690e6fd5f6ce9e61efd88145a83725ed12b6b8c07b97e linux-pine64-pinenote-9d066a65f5cbaa8cd3bfc73a1b54fbac2d0f76ac.tar.gz
99294bd6c53b1cf3832addbc80ea23b9089bb03463e2a9ebe93ab5feb1b2ff9ee38f158032705429230765bae2df23bb3401ec14902134c80d9dd6e58e188be5 config-pine64-pinenote.aarch64
"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,34 @@
# Maintainer: Petr Hodina <phodina@protonmail.com>
pkgname=pinenote-dbus-service
pkgver=0.2.2_pre5
_gittag=0.2.2-dev5
pkgrel=1
pkgdesc="Dbus daemon for controlling driver aspects on Pine64 Pinenote"
url="https://github.com/m-weigand/pinenote_dbus_service"
arch="aarch64"
license="MIT"
makedepends="cargo"
depends="dbus-dev"
source="
pinenote-dbus-service-$_gittag.tar.gz::https://github.com/m-weigand/pinenote_dbus_service/archive/refs/tags/v$_gittag.tar.gz
pinenote.initd
"
builddir="$srcdir/pinenote_dbus_service-$_gittag"
build() {
cargo build --release --locked
}
package() {
cargo install --path . --root="$pkgdir/usr"
install -Dm644 dbus_security_configuration/pinenote.conf -t "$pkgdir"/usr/share/dbus-1/system.d/
install -Dm755 "$srcdir"/pinenote.initd $pkgdir/etc/init.d/pinenote
rm "$pkgdir"/usr/.crates.toml
rm "$pkgdir"/usr/.crates2.json
}
sha512sums="
10cf05f9e1e8affec97b532611a9bffb86928cabe4eb9bd321b66e8dba340e6a7916fa0c8286f81300bfa655d5596bba09f0316abcafa6c55128823c78acb807 pinenote-dbus-service-0.2.2-dev5.tar.gz
362c20218610e7a5349eef40d54463a05906e258157e590ad1635591a548ddc60050142cfab41a0423797182e5ae392a7fe6476fc71b9c01cece384351e6f148 pinenote.initd
"

View file

@ -0,0 +1,10 @@
#!/sbin/openrc-run
description="Launch DBus service for driver aspects"
command="/usr/bin/pinenote_dbus_service"
command_background=yes
pidfile="/run/${RC_SVCNAME}.pid"
depend() {
need dbus
}

View file

@ -1,8 +1,8 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=calibre-web
pkgver=0.6.25
pkgrel=0
pkgver=0.6.21
pkgrel=1
pkgdesc="Web app for browsing, reading and downloading eBooks stored in a Calibre database"
arch='noarch'
url="https://github.com/janeczku/calibre-web"
@ -10,27 +10,26 @@ license='GPL-3.0-only'
depends="
py3-apscheduler
py3-babel
py3-bleach
py3-backports_abc
py3-blinker
py3-chardet
py3-cryptography
py3-flask-babel
py3-flask-login
py3-flask-limiter
py3-flask-principal
py3-flask-wtf
py3-flask-httpauth
py3-goodreads
py3-levenshtein
py3-iso639
py3-lxml
py3-magic
py3-netifaces
py3-pypdf
py3-pycountry
py3-regex
py3-pypdf2
py3-requests
py3-sqlalchemy
py3-tornado
py3-tz
py3-unidecode
py3-urllib3
py3-wand
py3-werkzeug
"
source="
$pkgname-$pkgver.tar.gz::https://github.com/janeczku/calibre-web/archive/$pkgver.tar.gz
@ -57,7 +56,7 @@ package() {
install -D -m 644 "$srcdir"/calibre-web.conf "$pkgdir"/etc/conf.d/calibre-web
}
sha512sums="
878d057613b7f89e57ad536c415bb4dc346d5f8c4ca2660517b68c70c4eefa5358317fe0e917738d468cb003358a0341411155289d952b1aa6cd4a022a84c8f0 calibre-web-0.6.25.tar.gz
d2f07eec0b6c9f65e68ae0b72fddd14444eb8be8b0fee997ec7caaa1feebb8a26603844752347547becde501669af5bce69e9eab466a28fd4b10624b65c9afcf calibre-web-0.6.21.tar.gz
4aba825eb12f44eb0912cc6981b46bec9b77ad114627564c9c7585862a099c7d1ff8deec5f15d047319805e2b9a3e2d128b2d1292dd92293a7e72359009a480f calibre-web.conf
62859a8a304216dc0dbfb7f2e8144a50d348c6621f5b292c08aa97a872ada67b52d36b567546fd0f4c439dbefe0bbe0e4fb1e1affbe507278b4a8d36ed3fa2a9 calibre-web.initd
"

View file

@ -1,53 +0,0 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=filebrowser
pkgver=1.0.3
_gittag="v$pkgver-stable"
pkgrel=0
pkgdesc="Standalone web file manager"
arch="all"
url="https://github.com/gtsteffaniak/filebrowser"
license="Apache-2.0"
depends="libcap-setcap"
makedepends="go nodejs npm"
source="
$pkgname-$_gittag.tar.gz::https://github.com/gtsteffaniak/filebrowser/archive/refs/tags/$_gittag.tar.gz
frontend-package-lock.json
filebrowser.openrc
"
builddir="$srcdir"/$pkgname-${_gittag/v}
options="!check" # TODO: setup test suite
subpackages="$pkgname-openrc"
install="$pkgname.pre-install $pkgname.post-upgrade"
prepare() {
default_prepare
(
cd "$builddir"/frontend
cp "$srcdir"/frontend-package-lock.json package-lock.json
npm ci
)
}
build() {
(
cd "$builddir"/frontend
npm run build
)
(
cd "$builddir"/backend
go build -o filebrowser \
--ldflags="-w -s -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.CommitSHA=production' \
-X 'github.com/gtsteffaniak/filebrowser/backend/common/version.Version=$pkgver'"
)
}
package() {
install -Dm755 "$builddir"/backend/filebrowser "$pkgdir"/usr/bin/filebrowser
install -Dm755 "$srcdir"/filebrowser.openrc "$pkgdir"/etc/init.d/filebrowser
install -Dm644 "$builddir"/frontend/public/config.generated.yaml "$pkgdir"/etc/filebrowser/filebrowser.yaml
}
sha512sums="
7919d391e45c7a88bcbff61f6d63963fe559afe21170c2940ae7895e6b794ce68af0742d4ce81584437b14e603a4ff8b95fb1fb16d72a032a40b76986ed8981b filebrowser-v1.0.3-stable.tar.gz
4ffe0c2ae7d6d972950fb38c9c777c20e3f507da6b4562231e09843b3ae618362ffdfbaf6dbb60959b3811c1856eb326d608e9d32e236bac405c65974e6e1e50 frontend-package-lock.json
06319bc67b088b5ffdad01a575691d82c5319730b4e46975bfc09ebb7466d6913eaca73e93f8db7b8c8bc374e6b9e35634ff1a69e701d24a5d2eae444de6bdf7 filebrowser.openrc
"

View file

@ -1,30 +0,0 @@
#!/sbin/openrc-run
description="File browser for ${RC_SVCNAME/*.}"
supervisor=supervise-daemon
respawn_max=0
respawn_delay=10
# Change $directory to path to middleware scripts
directory=${directory:-/var/lib/${RC_SVCNAME/.*}/${RC_SVCNAME/*.}}
pidfile=${pidfile:-/run/$RC_SVCNAME.pid}
log_dir="/var/log/${RC_SVCNAME/.*}/"
logfile=${logfile:-$log_dir/${RC_SVCNAME/*.}.log}
output_log="${output_log:-$logfile}"
error_log="${error_log:-$logfile}"
command=${command:-/usr/bin/filebrowser}
command_args="-c /etc/filebrowser/${RC_SVCNAME/*.}.yaml"
command_user=${command_user:-filebrowser:filebrowser}
command_background=true
depend() {
need net
}
start_pre() {
checkpath --owner=$command_user --directory $log_dir /var/lib/filebrowser $directory
cd $directory
}

View file

@ -1 +0,0 @@
filebrowser.pre-install

View file

@ -1,47 +0,0 @@
#!/bin/sh
setcap 'cap_net_bind_service=+ep' /usr/bin/filebrowser
if [ "${0##*.}" = 'pre-install' ]; then
cat >&2 <<-EOF
1. Generate filebrowser config file
cd /etc/filebrowser
filebrowser setup
2. Rename config.yaml to $service.yaml (i.e. movies.yaml) and adjust as desired (see https://filebrowserquantum.com/en/docs/configuration/configuration-overview/ for more information)
3. Create symbolic link for service file, enable, and start
ln -s /etc/init.d/filebrowser /etc/init.d/filebrowser.$service
rc-update add filebrowser.$service
service filebrowser.$service
You should now be able to go to http://ip-address:port (default 80)
For more documentation, go to https://filebrowserquantum.com/en/docs
EOF
if ! getent group filebrowser 1>/dev/null; then
echo 'Creating group filebrowser' 1>&2
addgroup -S filebrowser
fi
if ! id filebrowser 2>/dev/null 1>&2; then
echo 'Creating user filebrowser' 1>&2
adduser -DHS -G filebrowser -h "$DATADIR" -s /bin/sh \
-g "added by apk for filebrowser" filebrowser
passwd -u filebrowser 1>/dev/null # unlock
fi
if ! id -Gn filebrowser | grep -Fq www-data; then
echo 'Adding user filebrowser to group www-data' 1>&2
addgroup filebrowser www-data
fi
exit 0
fi

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,9 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=kb
pkgver=0.1.8
pkgrel=0
_pkgreal=kb-manager
pkgver=0.1.7
pkgrel=2
pkgdesc="A command line minimalist knowledge base manager"
arch="noarch"
url="https://github.com/gnebbia/kb"
@ -10,8 +11,9 @@ license="GPL-3.0-only"
depends="py3-attrs py3-colored py3-gitpython py3-toml"
makedepends="py3-setuptools py3-gpep517 py3-wheel"
checkdepends="py3-pytest-cov"
source="$pkgname-$pkgver.tar.gz::https://github.com/gnebbia/kb/archive/refs/tags/v$pkgver.tar.gz"
source="https://files.pythonhosted.org/packages/source/k/kb-manager/kb-manager-$pkgver.tar.gz"
subpackages="$pkgname-pyc"
builddir="$srcdir"/$_pkgreal-$pkgver
build() {
gpep517 build-wheel \
@ -28,5 +30,5 @@ package() {
.dist/*.whl
}
sha512sums="
95fab9b5baa728795a6ce1e126fe90dd599528bc13f2274c5484dc43bdbca8fd5807e8ed4ec4e9ffa8382c5ec71662022d792e8ae941bd1629ed47c72d87d7a2 kb-0.1.8.tar.gz
f0dff69a5e95339ea22d0a9d1260473f7b0b6ace184936896e164172aecb77672e9e0a228159abc95e50f30de2ec9ca5185ffbd825dce87edfec267bc56c75dc kb-manager-0.1.7.tar.gz
"

View file

@ -1,82 +0,0 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=koreader
pkgver=2025.10
pkgrel=0
pkgdesc="An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats"
# s390x|riscv64|ppc64le|loongarch64: FTBFS
# armhf|armv7|x86: Tests fail, segmentation fault
arch="x86_64 aarch64"
url="https://github.com/koreader/koreader/"
license="AGPL-3.0-only"
depends="
bash
sdl2
procps-ng
"
makedepends="
autoconf
automake
cmake
coreutils
curl
diffutils
findutils
gettext
grep
libtool
linux-headers
meson
nasm
ninja-build
perl
pkgconf
wget
"
source="
https://ayakael.net/api/packages/mirrors/generic/koreader/v$pkgver/koreader-v$pkgver.tar.gz
reader-lua-use-absolute-path-to-luajit.patch
"
subpackages="$pkgname-doc"
builddir="$srcdir"/$pkgname-v$pkgver
# has vendored copies of system libraries
sonameprefix="$pkgname:"
prepare() {
default_prepare
# no need to test manually set version
rm "$builddir"/spec/unit/version_spec.lua
}
build() {
# add ninja bin to path
export PATH="$PATH":/usr/lib/ninja-build/bin
# default target is emulator build
make TARGET= KODEBUG= VERBOSE=
}
check() {
KODEBUG= TARGET= VERBOSE= ./base/utils/fake_tty.py make --assume-old=base testfront
}
package() {
install -Dm755 "$builddir"/platform/linux/koreader.sh "$pkgdir"/usr/bin/koreader
install -Dm644 "$builddir"/platform/linux/koreader.desktop -t "$pkgdir"/usr/share/applications/
install -Dm644 "$builddir"/resources/koreader.png -t "$pkgdir"/usr/share/pixmaps/
install -Dm644 "$builddir"/platform/linux/koreader.1 -t "$pkgdir"/usr/share/man/man1/
mkdir -p "$pkgdir"/usr/lib
cp -RL "$builddir"/koreader-emulator-*/koreader "$pkgdir"/usr/lib/koreader
# delete debug files
find "$pkgdir" -name '*.dbg' -delete
# version information
echo "v$pkgver" > "$pkgdir"/usr/lib/koreader/git-rev
}
sha512sums="
3fbbe49ae6134abd810d9932cfb650d031100c95570c8eaa6d6e5d4c6a9a86916961b989696a7d97c149920d63853108905eea34f75f987e58f89e3a49d63948 koreader-v2025.10.tar.gz
76dd6f2ea6416b135b76d95f3c8150378f577ddd68d48312eabd6e12adaa111253dc83fc02add3ded07d3e6174fd5f4bd6c9f7b635ef27e3d760d5acced9e6fe reader-lua-use-absolute-path-to-luajit.patch
"

View file

@ -1,10 +0,0 @@
diff --git a/reader.lua.orig b/reader.lua
index 6fe9489..c4cbb2b 100755
--- a/reader.lua.orig
+++ b/reader.lua
@@ -1,4 +1,4 @@
-#!./luajit
+#!/usr/lib/koreader/luajit
-- Enforce line-buffering for stdout (this is the default if it points to a tty, but we redirect to a file on most platforms).
io.stdout:setvbuf("line")

View file

@ -1,54 +1,29 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=openterface-qt
pkgver=0.5.7
pkgver=0.3.13
pkgrel=0
pkgdesc="Openterface Mini-KVM Host Application"
# armhf: missing qt6-qtmultimedia
# riscv64: missing libgtk-3
arch="all !armhf !riscv64"
arch="all !armhf" # missing qt6-qtmultimedia
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
"
depends="qt6-qtmultimedia-ffmpeg hicolor-icon-theme"
makedepends="qt6-qtbase-dev qt6-qtmultimedia-dev qt6-qtserialport-dev qt6-qtsvg-dev qt6-qtmultimedia-dev libusb-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 ..
qmake6 ..
}
build() {
ninja -C build
make -C build
}
package() {
@ -58,16 +33,9 @@ package() {
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
7261ce2875b1617d27945de591c72779d2305889b7f53bb6758cb5e1d4dc01c969fef1638726d868f75e995c44a8e2c453cac45c90cfb3d140b8120523c4038d openterface-qt-0.3.13.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
"

View file

@ -5,9 +5,7 @@ pkgver=2.21.1
_gittag=$pkgver
pkgrel=0
pkgdesc="EssentialsX is the essential plugin suite for Minecraft servers, with over 130 commands for servers of all size and scale."
# blocked by luckperms
# armv7: blocked my openjdk21-jdk
#arch='noarch !armv7'
arch='noarch'
url="https://essentialsx.net/"
license="GPL-3.0"
depends="

View file

@ -5,9 +5,7 @@ pkgver=5.4.151
_gittag=0fef481d480737528491fc0b3b8487eb1612f955
pkgrel=0
pkgdesc="An advanced permissions plugin for Bukkit/Spigot, BungeeCord and Sponge."
# dependency not available upstream anymore
# armv7: blocked by openjdk21-jdk
#arch='noarch !armv7'
arch='noarch'
url="https://github.com/lucko/LuckPerms"
license="MIT"
depends="papermc>=1.8.8"

View file

@ -4,8 +4,7 @@ pkgname=papermc-plugin-vault
pkgver=1.7.3
pkgrel=0
pkgdesc="Vault of common APIs for Bukkit Plugins"
# armv7: blocked by openjdk21-jdk
arch='noarch !armv7'
arch='noarch'
url="https://github.com/MilkBowl/Vault"
license="MIT"
depends="papermc>=1.8.8"

View file

@ -5,9 +5,7 @@ pkgver=7.3.13
_pkgver=$pkgver
pkgrel=0
pkgdesc="WorldEdit is an easy-to-use in-game Minecraft map editor"
# missingupstream dependencies
# armv7: blocked by openjdk21-jdk
#arch='noarch !armv7'
arch='noarch !aarch64'
url="https://github.com/EngineHub/WorldEdit"
license="GPL-3.0"
depends="papermc>=1.13.2"

View file

@ -5,8 +5,7 @@ pkgver=7.0.13_beta1
_gittag=2f13ae0444409376feb6c7674591142fe854e12e
pkgrel=0
pkgdesc="WorldGuard lets you and players guard areas of land against griefers and undesirables"
# armv7: blocked by openjdk21-jdk
arch='noarch !armv7'
arch='noarch'
url="https://github.com/EngineHub/WorldGuard"
license="GPL-3.0"
depends="papermc>=1.17.0"

View file

@ -1,12 +1,11 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=papermc
pkgver=1.21.7
pkgver=1.21.4
_gittag=${pkgver/.0}
pkgrel=0
pkgdesc="Next generation of Minecraft server, compatible with Spigot plugins and offering uncompromising performance"
# armv7: blocked by openjdk21-jdk
arch='noarch !armv7'
arch='noarch'
url="https://papermc.io/"
license='custom'
depends='openjdk21-jdk screen sudo bash gawk sed netcat-openbsd'
@ -44,7 +43,7 @@ package() {
chmod g+ws "$pkgdir"/var/lib/$pkgname
}
sha512sums="
90c3017f7e4031816f6d4e30612a88d7b15d9e99cfb4e887b868e3d0d55ec5db0e9e71dc433dd399959da9b099e7fc4fd3768635ccabcce84d1adfc48837309a papermc-1.21.7.tar.zst
5e815c4ee4f9d99ecb173d2b81131d0531359f1d2d48dee429476a7b39c37140fe2085d9a657435e347ca1bc5930402bac1a533692cd8387811b2577384c827b papermc-1.21.4.tar.zst
c5d1bf85ceb74162aaaf2bcd2d06dc2e3dd2e37c39f0cee2be7c8dbff9970a6aff1e48a43e6d1e83e6a0ac610bd89f62b1279bf27b64afa88d9831a36aebbd3e papermc.initd
9b8e267428731ee9255f82a93f1e8674d7e917a0f154bd395cd2280a49aa248a4b8427520b08dbb4b3a74a5471dac0e439eedc8ab94bf2e53bb8d411d2d8a789 papermc.conf
943ba0d4c10173246bdc6497dcedd54da0788f966841c8d3381398711d79f8d5eb07a24ce28f519b6f24f59d99fa9e74bc6bb882059f343df4eeda5de3660ac7 papermc.sh

View file

@ -2,13 +2,12 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=rmfakecloud
pkgver=0.0.27
pkgver=0.0.24
_gittag=v$pkgver
pkgrel=0
pkgdesc="A selfhosted cloud for the Remarkable Tablet"
url="https://github.com/ddvk/rmfakecloud"
# armv7: oom
arch="all !armv7"
arch="all"
license="AGPL-3.0-only"
makedepends="go yarn"
options="chmod-clean net"
@ -38,7 +37,7 @@ package() {
install -Dm755 "$srcdir"/rmfakecloud.openrc "$pkgdir"/etc/init.d/rmfakecloud
}
sha512sums="
b215295c8779f9820e9751e5cbfb8804d6cdeb0d71ffaa60d46fd803760e63227352f55a8b5a2e75d990b20a6a19c43a4ffaa03a1857e6fb37990a8b191a3ea2 rmfakecloud-0.0.27.tar.gz
c0c96cb9168b8152da3842fac095a6bd33e74b5f7a5cefe72e44853f4059c966336e98cd4c62235f7a2fe625acdd93452f718c19a1bf65f5dd7dbd8bb5cd1f8c rmfakecloud-0.0.24.tar.gz
d5677cef282085cd6642a034dd258ffa294862aeb0ce81d6485a524a15564849bc4eb90a9d1fa4dbcf4eab69dcd893302aa06493fc8fad74d69200c2bdf246c0 rmfakecloud.conf
891d0945886796132f951293e081046334857563b4ebae28a3aa5b6bc37768767c49ce102de645ed8340af2518de606be8bf6ecafeb6d189dd937970aa3e6498 rmfakecloud.openrc
"

View file

@ -1,7 +1,8 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=scanservjs
pkgver=3.0.4
pkgver=3.0.3
pkgrel=0
pkgdesc="SANE scanner nodejs web ui"
arch="noarch"
@ -62,7 +63,7 @@ package() {
install -Dm 644 "$srcdir"/scanservjs.conf "$pkgdir"/etc/conf.d/scanservjs
}
sha512sums="
f19b1bd5acb01f82fa98bc79f9d401f1b6c19aa9e4319d75efd4b82a6db44a348784953ae1542d362d3b8e328a1a469e9320fd7c937e6aa102a19a36cd8ce9e8 scanservjs-3.0.4.tar.gz
e3746cfab118b08b75fe5a862e1b06d35bce3fafe7b5cf482ddfd28aad8ac9879981eef5bdadc35a783607aac49eef95b966ff1d2ddf431eaf6e2d7e335623fb scanservjs-3.0.3.tar.gz
f58dd5e1c4936d7e25065a295f5d01e64189cdefe92ba54fc875348a59a30b2055c93464d510a52820e66b42a69d0626d3513c93ab60b0768e1e8d5b3538bb13 scanservjs.initd
9d4fdab3803a598c729bf703369d8594b383163b05045f31e516f184a87d8deef8c8b40942d324e04bdf751ac9d63f7de25b13364f9f30888eba2af873369b36 scanservjs.conf
"

View file

@ -1,7 +1,8 @@
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=scantopl
pkgver=1.0.1
pkgver=1.0.0
pkgrel=0
pkgdesc="Automatically send scanservjs scanned document to paperless-ng"
_gittag="v$pkgver"
@ -30,7 +31,7 @@ package() {
install -Dm644 "$srcdir"/scantopl.conf "$pkgdir"/etc/conf.d/scantopl
}
sha512sums="
e5238c4f8e727e80c5c66441e8de5eeb775fdfe05ee85509c942c2516e8996243cd1b72c7c87c8bbee2e0475cc0075244aa28164a746f6e7eded253bcb707ba7 scantopl-1.0.1.tar.gz
d4eca1adc326f1e730ae195bd44f1cf05d404488ce20fd612467c572ea7fa718034bb7b16d3e007976349f6852e83569aa17727dcc61f9e7ab1934995b3bc3e6 scantopl-1.0.0.tar.gz
8238411fe8881be6690a583a6bfc71e52f3131320f5d92bb36f8af61802980265a8cf5250eb699d9214f7c6c168d14c39867a09587fb07841a8504a6a28db74b scantopl.initd
ee2e631901b1d88c0dede6587318e44884255a7c82e090371f017dbb91563c16f0567c0d45b3183d0a8abb3ee4b71a33f3d79258ad2b2f6d8930a5bc7625070a scantopl.conf
"

View file

@ -4,8 +4,7 @@ pkgname=tandoor-recipes
pkgver=1.5.12
pkgrel=1
pkgdesc="Application for managing recipes, planning meals, building shopping lists, etc."
# armv7: oom
arch="noarch !armv7"
arch="noarch"
url="https://github.com/TandoorRecipes/recipes"
license="AGPL-3.0-only"
depends="

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more