Compare commits
2 commits
edge
...
firefox-es
Author | SHA1 | Date | |
---|---|---|---|
45067e03b0 | |||
04ab8b4b08 |
629 changed files with 28929 additions and 12052 deletions
|
@ -1,41 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# expects the following env variables:
|
||||
# downstream: downstream repo
|
||||
|
||||
repo=${downstream/*\/}
|
||||
|
||||
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)
|
||||
echo "Found $(printf '%s\n' $owned_by_you | wc -l ) packages"
|
||||
else
|
||||
owned_by_you=$(awk -v RS= -v ORS="\n\n" '/m:Antoine Martin \(ayakael\) <dev@ayakael.net>/' APKINDEX | awk -F ':' '{if($1=="o"){print $2}}' | sort | uniq)
|
||||
echo "Found $(printf '%s\n' $owned_by_you | wc -l ) packages owned by you"
|
||||
fi
|
||||
|
||||
rm -f out_of_date not_in_anitya
|
||||
|
||||
for pkg in $owned_by_you; do
|
||||
upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version')
|
||||
downstream_version=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}' | sort -V | tail -n 1)
|
||||
downstream_version=${downstream_version/-*}
|
||||
|
||||
# special cases
|
||||
case $pkg in
|
||||
freetube) upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].version' | sed "s|-beta||");;
|
||||
dotnet9-sdk|dotnet9-stage0) upstream_version=${upstream_version/-*};;
|
||||
esac
|
||||
|
||||
if [ -z "$upstream_version" ]; then
|
||||
echo "$pkg not in anitya"
|
||||
echo "$pkg" >> not_in_anitya
|
||||
elif [ "$downstream_version" != "$(printf '%s\n' $upstream_version $downstream_version | sort -V | head -n 1)" ]; then
|
||||
echo "$pkg higher downstream"
|
||||
continue
|
||||
elif [ "$upstream_version" != "$downstream_version" ]; then
|
||||
echo "$pkg upstream version $upstream_version does not match downstream version $downstream_version"
|
||||
echo "$pkg $downstream_version $upstream_version $repo" >> out_of_date
|
||||
fi
|
||||
done
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
TARGET_REPO=$1
|
||||
ARCH=$2
|
||||
|
||||
|
||||
curl --silent $TARGET_REPO/$ARCH/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX
|
||||
|
||||
pkgs=$(awk -F ':' '{if($1=="o"){print $2}}' APKINDEX | sort | uniq)
|
||||
|
||||
for pkg in $pkgs; do
|
||||
pkgvers=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}')
|
||||
for pkgver in $pkgvers; do
|
||||
echo "Deleting $pkg-$pkgver of arch $ARCH from $TARGET_REPO"
|
||||
curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN -X DELETE $TARGET_REPO/$ARCH/$pkg-$pkgver.apk
|
||||
done
|
||||
done
|
|
@ -1,165 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# expects:
|
||||
# env variable FORGEJO_TOKEN
|
||||
# file out_of_date
|
||||
|
||||
IFS='
|
||||
'
|
||||
repo=${downstream/*\/}
|
||||
|
||||
does_it_exist() {
|
||||
name=$1
|
||||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
|
||||
query="$repo/$name: upgrade to $upstream_version"
|
||||
query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' )"
|
||||
|
||||
result="$(curl --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN"
|
||||
)"
|
||||
|
||||
if [ "$result" == "[]" ]; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
is_it_old() {
|
||||
name=$1
|
||||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
|
||||
query="$repo/$name: upgrade to"
|
||||
query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' )"
|
||||
|
||||
result="$(curl --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN"
|
||||
)"
|
||||
|
||||
result_title="$(echo $result | jq -r '.[].title' )"
|
||||
result_id="$(echo $result | jq -r '.[].number' )"
|
||||
result_upstream_version="$(echo $result_title | awk '{print $4}')"
|
||||
|
||||
if [ "$upstream_version" != "$result_upstream_version" ]; then
|
||||
echo $result_id
|
||||
else
|
||||
echo 0
|
||||
fi
|
||||
}
|
||||
|
||||
update_title() {
|
||||
name=$1
|
||||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
id=$5
|
||||
|
||||
result=$(curl --silent -X 'PATCH' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$id" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"title\": \"$repo/$name: upgrade to $upstream_version\"
|
||||
}"
|
||||
)
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
create_issue() {
|
||||
name=$1
|
||||
downstream_version=$2
|
||||
upstream_version=$3
|
||||
repo=$4
|
||||
|
||||
result=$(curl --silent -X 'POST' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"title\": \"$repo/$name: upgrade to $upstream_version\",
|
||||
\"labels\": [
|
||||
$LABEL_NUMBER
|
||||
]
|
||||
}")
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
if [ -f out_of_date ]; then
|
||||
out_of_date="$(cat out_of_date)"
|
||||
|
||||
echo "Detected $(wc -l out_of_date) out-of-date packages, creating issues"
|
||||
|
||||
for pkg in $out_of_date; do
|
||||
name="$(echo $pkg | awk '{print $1}')"
|
||||
downstream_version="$(echo $pkg | awk '{print $2}')"
|
||||
upstream_version="$(echo $pkg | awk '{print $3}')"
|
||||
repo="$(echo $pkg | awk '{print $4}')"
|
||||
|
||||
if does_it_exist $name $downstream_version $upstream_version $repo; then
|
||||
echo "Issue for $repo/$name already exists"
|
||||
continue
|
||||
fi
|
||||
|
||||
id=$(is_it_old $name $downstream_version $upstream_version $repo)
|
||||
|
||||
if [ "$id" != "0" ] && [ -n "$id" ]; then
|
||||
echo "Issue for $repo/$name needs updating"
|
||||
update_title $name $downstream_version $upstream_version $repo $id
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Creating issue for $repo/$name"
|
||||
create_issue $name $downstream_version $upstream_version $repo
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -f not_in_anitya ]; then
|
||||
query="Add missing $repo packages to anitya"
|
||||
query="$(echo $query | sed 's| |%20|g')"
|
||||
|
||||
result="$(curl --silent -X 'GET' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN"
|
||||
)"
|
||||
|
||||
if [ "$result" == "[]" ]; then
|
||||
echo "Creating anitya issue"
|
||||
result=$(curl --silent -X 'POST' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"title\": \"Add missing $repo packages to anitya\",
|
||||
\"body\": \"- [ ] $(sed '{:q;N;s/\n/\\n- [ ] /g;t q}' not_in_anitya)\",
|
||||
\"labels\": [
|
||||
$LABEL_NUMBER
|
||||
]
|
||||
}")
|
||||
|
||||
else
|
||||
echo "Updating anitya issue"
|
||||
result_id="$(echo $result | jq -r '.[].number' )"
|
||||
result=$(curl --silent -X 'PATCH' \
|
||||
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$result_id" \
|
||||
-H 'accept: application/json' \
|
||||
-H "authorization: Basic $FORGEJO_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"body\": \"- [ ] $(sed '{:q;N;s/\n/\\n- [ ] /g;t q}' not_in_anitya)\"
|
||||
}"
|
||||
)
|
||||
fi
|
||||
fi
|
|
@ -1,26 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# shellcheck disable=SC3040
|
||||
set -eu -o pipefail
|
||||
|
||||
readonly REPOS="backports user"
|
||||
readonly BASEBRANCH=$GITHUB_BASE_REF
|
||||
readonly TARGET_REPO=$CI_ALPINE_REPO
|
||||
|
||||
apkgs=$(find package -type f -name "*.apk")
|
||||
|
||||
for apk in $apkgs; do
|
||||
branch=$(echo $apk | awk -F '/' '{print $2}')
|
||||
arch=$(echo $apk | awk -F '/' '{print $3}')
|
||||
name=$(echo $apk | awk -F '/' '{print $4}')
|
||||
|
||||
echo "Sending $name of arch $arch to $TARGET_REPO/$BASEBRANCH/$branch"
|
||||
return=$(curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN --upload-file $apk $TARGET_REPO/$BASEBRANCH/$branch 2>&1)
|
||||
echo $return
|
||||
if [ "$return" == "package file already exists" ]; then
|
||||
echo "Package already exists, refreshing..."
|
||||
curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN -X DELETE $TARGET_REPO/$BASEBRANCH/$branch/$arch/$name
|
||||
curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN --upload-file $apk $TARGET_REPO/$BASEBRANCH/$branch
|
||||
fi
|
||||
done
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
on:
|
||||
pull_request:
|
||||
types: [ assigned, opened, synchronize, reopened ]
|
||||
|
||||
jobs:
|
||||
build-aarch64:
|
||||
runs-on: aarch64
|
||||
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 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: forgejo/upload-artifact@v3
|
||||
with:
|
||||
name: package
|
||||
path: packages
|
||||
|
||||
deploy-aarch64:
|
||||
needs: [build-aarch64]
|
||||
runs-on: aarch64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine'
|
||||
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: forgejo/download-artifact@v3
|
||||
- name: Package deployment
|
||||
run: ${{ github.workspace }}/.forgejo/bin/deploy.sh
|
|
@ -1,52 +0,0 @@
|
|||
on:
|
||||
pull_request:
|
||||
types: [ assigned, opened, synchronize, reopened ]
|
||||
|
||||
jobs:
|
||||
build-x86_64:
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpinelinux/alpine-gitlab-ci:latest
|
||||
env:
|
||||
CI_PROJECT_DIR: ${{ github.workspace }}
|
||||
CI_DEBUG_BUILD: ${{ runner.debug }}
|
||||
CI_MERGE_REQUEST_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }}
|
||||
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }}
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: |
|
||||
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: forgejo/upload-artifact@v3
|
||||
with:
|
||||
name: package
|
||||
path: packages
|
||||
|
||||
deploy-x86_64:
|
||||
needs: [build-x86_64]
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine'
|
||||
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: forgejo/download-artifact@v3
|
||||
- name: Package deployment
|
||||
run: ${{ github.workspace }}/.forgejo/bin/deploy.sh
|
|
@ -1,28 +0,0 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-backports:
|
||||
name: Check backports repo
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://ayakael.net/api/packages/forge/alpine/v3.21/backports
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
LABEL_NUMBER: 1
|
||||
ALL_PACKAGES: true
|
||||
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
|
|
@ -1,27 +0,0 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-community:
|
||||
name: Check community repo
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
LABEL_NUMBER: 4
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
|
@ -1,27 +0,0 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-community:
|
||||
name: Check testing repo
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://dl-cdn.alpinelinux.org/alpine/edge/testing
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
LABEL_NUMBER: 4
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
|
@ -1,27 +0,0 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
|
||||
jobs:
|
||||
check-user:
|
||||
name: Check user repo
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpine:latest
|
||||
env:
|
||||
downstream: https://ayakael.net/api/packages/forge/alpine/edge/user
|
||||
FORGEJO_TOKEN: ${{ secrets.forgejo_token }}
|
||||
LABEL_NUMBER: 4
|
||||
steps:
|
||||
- name: Environment setup
|
||||
run: apk add grep coreutils gawk curl wget bash nodejs git jq sed
|
||||
- name: Get scripts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check out-of-date packages
|
||||
run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh
|
||||
- name: Create issues
|
||||
run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh
|
|
@ -1,21 +0,0 @@
|
|||
on:
|
||||
pull_request:
|
||||
types: [ assigned, opened, synchronize, reopened ]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
run-name: lint
|
||||
runs-on: x86_64
|
||||
container:
|
||||
image: alpinelinux/apkbuild-lint-tools: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:
|
||||
- run: doas apk add nodejs git
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 500
|
||||
- run: lint
|
60
.gitlab-ci.yml
Normal file
60
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,60 @@
|
|||
stages:
|
||||
- verify
|
||||
- build
|
||||
- deploy
|
||||
|
||||
variables:
|
||||
GIT_STRATEGY: clone
|
||||
GIT_DEPTH: "500"
|
||||
|
||||
lint:
|
||||
stage: verify
|
||||
interruptible: true
|
||||
script:
|
||||
- |
|
||||
sudo apk add shellcheck atools doas abuild
|
||||
export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
|
||||
lint
|
||||
allow_failure: true
|
||||
only:
|
||||
- merge_requests
|
||||
tags:
|
||||
- apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
|
||||
build:
|
||||
stage: build
|
||||
interruptible: true
|
||||
script:
|
||||
- |
|
||||
sudo apk add alpine-sdk lua-aports doas
|
||||
doas addgroup $USER abuild
|
||||
export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
|
||||
sudo -Eu $USER build.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- packages/
|
||||
- keys/
|
||||
- logs/
|
||||
expire_in: 7 days
|
||||
when: always
|
||||
only:
|
||||
- merge_requests
|
||||
tags:
|
||||
- apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
|
||||
push:
|
||||
interruptible: true
|
||||
stage: deploy
|
||||
needs:
|
||||
- job: build
|
||||
artifacts: true
|
||||
script:
|
||||
- |
|
||||
sudo apk add abuild git-lfs
|
||||
export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
|
||||
push.sh
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
when: manual
|
||||
tags:
|
||||
- apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
111
.gitlab/bin/APKBUILD_SHIM
Executable file
111
.gitlab/bin/APKBUILD_SHIM
Executable file
|
@ -0,0 +1,111 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
arch=
|
||||
builddir=
|
||||
checkdepends=
|
||||
depends=
|
||||
depends_dev=
|
||||
depends_doc=
|
||||
depends_libs=
|
||||
depends_openrc=
|
||||
depends_static=
|
||||
install=
|
||||
install_if=
|
||||
langdir=
|
||||
ldpath=
|
||||
license=
|
||||
makedepends=
|
||||
makedepends_build=
|
||||
makedepends_host=
|
||||
md5sums=
|
||||
options=
|
||||
patch_args=
|
||||
pkgbasedir=
|
||||
pkgdesc=
|
||||
pkgdir=
|
||||
pkgname=
|
||||
pkgrel=
|
||||
pkgver=
|
||||
pkggroups=
|
||||
pkgusers=
|
||||
provides=
|
||||
provider_priority=
|
||||
replaces=
|
||||
sha256sums=
|
||||
sha512sums=
|
||||
sonameprefix=
|
||||
source=
|
||||
srcdir=
|
||||
startdir=
|
||||
subpackages=
|
||||
subpkgdir=
|
||||
subpkgname=
|
||||
triggers=
|
||||
url=
|
||||
|
||||
# abuild.conf
|
||||
|
||||
CFLAGS=
|
||||
CXXFLAGS=
|
||||
CPPFLAGS=
|
||||
LDFLAGS=
|
||||
JOBS=
|
||||
MAKEFLAGS=
|
||||
CMAKE_CROSSOPTS=
|
||||
|
||||
. ./APKBUILD
|
||||
|
||||
: "$arch"
|
||||
: "$builddir"
|
||||
: "$checkdepends"
|
||||
: "$depends"
|
||||
: "$depends_dev"
|
||||
: "$depends_doc"
|
||||
: "$depends_libs"
|
||||
: "$depends_openrc"
|
||||
: "$depends_static"
|
||||
: "$install"
|
||||
: "$install_if"
|
||||
: "$langdir"
|
||||
: "$ldpath"
|
||||
: "$license"
|
||||
: "$makedepends"
|
||||
: "$makedepends_build"
|
||||
: "$makedepends_host"
|
||||
: "$md5sums"
|
||||
: "$options"
|
||||
: "$patch_args"
|
||||
: "$pkgbasedir"
|
||||
: "$pkgdesc"
|
||||
: "$pkgdir"
|
||||
: "$pkgname"
|
||||
: "$pkgrel"
|
||||
: "$pkgver"
|
||||
: "$pkggroups"
|
||||
: "$pkgusers"
|
||||
: "$provides"
|
||||
: "$provider_priority"
|
||||
: "$replaces"
|
||||
: "$sha256sums"
|
||||
: "$sha512sums"
|
||||
: "$sonameprefix"
|
||||
: "$source"
|
||||
: "$srcdir"
|
||||
: "$startdir"
|
||||
: "$subpackages"
|
||||
: "$subpkgdir"
|
||||
: "$subpkgname"
|
||||
: "$triggers"
|
||||
: "$url"
|
||||
|
||||
# abuild.conf
|
||||
|
||||
: "$CFLAGS"
|
||||
: "$CXXFLAGS"
|
||||
: "$CPPFLAGS"
|
||||
: "$LDFLAGS"
|
||||
: "$JOBS"
|
||||
: "$MAKEFLAGS"
|
||||
: "$CMAKE_CROSSOPTS"
|
16
.gitlab/bin/apkbuild-shellcheck
Executable file
16
.gitlab/bin/apkbuild-shellcheck
Executable file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
|
||||
shellcheck -s ash \
|
||||
-e SC3043 \
|
||||
-e SC3057 \
|
||||
-e SC3060 \
|
||||
-e SC2016 \
|
||||
-e SC2086 \
|
||||
-e SC2169 \
|
||||
-e SC2155 \
|
||||
-e SC2100 \
|
||||
-e SC2209 \
|
||||
-e SC2030 \
|
||||
-e SC2031 \
|
||||
-e SC1090 \
|
||||
-xa $CI_PROJECT_DIR/.gitlab/bin/APKBUILD_SHIM
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# shellcheck disable=SC3043
|
||||
|
||||
. /usr/local/lib/functions.sh
|
||||
. $CI_PROJECT_DIR/.gitlab/bin/functions.sh
|
||||
|
||||
# shellcheck disable=SC3040
|
||||
set -eu -o pipefail
|
||||
|
@ -14,7 +14,7 @@ readonly ARCH=$(apk --print-arch)
|
|||
readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
|
||||
: "${REPODEST:=$HOME/packages}"
|
||||
: "${MIRROR:=https://ayakael.net/api/packages/forge/alpine}"
|
||||
: "${MIRROR:=https://lab.ilot.io/ayakael/repo-apk/-/raw}"
|
||||
: "${ALPINE_MIRROR:=http://dl-cdn.alpinelinux.org/alpine}"
|
||||
: "${MAX_ARTIFACT_SIZE:=300000000}" #300M
|
||||
: "${CI_DEBUG_BUILD:=}"
|
||||
|
@ -70,7 +70,7 @@ report() {
|
|||
|
||||
get_release() {
|
||||
case $BASEBRANCH in
|
||||
v*) echo "$BASEBRANCH";;
|
||||
v*) echo "${BASEBRANCH%-*}";;
|
||||
edge) echo edge;;
|
||||
*) die "Branch \"$BASEBRANCH\" not supported!"
|
||||
esac
|
||||
|
@ -80,7 +80,7 @@ build_aport() {
|
|||
local repo="$1" aport="$2"
|
||||
cd "$APORTSDIR/$repo/$aport"
|
||||
if abuild -r 2>&1 | report "build-$aport"; then
|
||||
checkapk 2>&1 | report "checkapk-$aport" || true
|
||||
checkapk | report "checkapk-$aport" || true
|
||||
aport_ok="$aport_ok $repo/$aport"
|
||||
else
|
||||
aport_ng="$aport_ng $repo/$aport"
|
||||
|
@ -102,8 +102,6 @@ set_repositories_for() {
|
|||
|
||||
release=$(get_release)
|
||||
for repo in $REPOS; do
|
||||
[ "$repo" = "non-free" ] && continue
|
||||
[ "$release" == "edge" ] && [ "$repo" == "backports" ] && continue
|
||||
repos="$repos $MIRROR/$release/$repo $REPODEST/$repo"
|
||||
[ "$repo" = "$target_repo" ] && break
|
||||
done
|
||||
|
@ -129,8 +127,13 @@ setup_system() {
|
|||
repos="$repos $ALPINE_MIRROR/$release/$repo"
|
||||
done
|
||||
doas sh -c "printf '%s\n' $repos > /etc/apk/repositories"
|
||||
doas apk -U upgrade -a || apk fix || die "Failed to up/downgrade system"
|
||||
abuild-keygen -ain
|
||||
doas apk -U upgrade -a || doas apk fix || die "Failed to up/downgrade system"
|
||||
gitlab_key_to_rsa $ABUILD_KEY rsa-private $HOME/.abuild/$ABUILD_KEY_NAME.rsa
|
||||
gitlab_key_to_rsa $ABUILD_KEY_PUB rsa-public $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub
|
||||
chmod 700 $HOME/.abuild/$ABUILD_KEY_NAME.rsa
|
||||
echo "PACKAGER_PRIVKEY=$HOME/.abuild/$ABUILD_KEY_NAME.rsa" >> $HOME/.abuild/abuild.conf
|
||||
doas cp $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub /etc/apk/keys/$ABUILD_KEY_NAME.rsa.pub
|
||||
|
||||
doas sed -i -E 's/export JOBS=[0-9]+$/export JOBS=$(nproc)/' /etc/abuild.conf
|
||||
( . /etc/abuild.conf && echo "Building with $JOBS jobs" )
|
||||
mkdir -p "$REPODEST"
|
||||
|
@ -180,7 +183,7 @@ sysinfo || true
|
|||
setup_system || die "Failed to setup system"
|
||||
|
||||
# git no longer allows to execute in repositories owned by different users
|
||||
doas chown -R buildozer: .
|
||||
doas chown -R $USER: .
|
||||
|
||||
fetch_flags="-qn"
|
||||
debugging && fetch_flags="-v"
|
||||
|
@ -203,6 +206,7 @@ build_start=$CI_ALPINE_BUILD_OFFSET
|
|||
build_limit=$CI_ALPINE_BUILD_LIMIT
|
||||
|
||||
for repo in $(changed_repos); do
|
||||
mkdir -p "$APORTSDIR"/logs "$APORTSDIR"/packages "$APORTSDIR"/keys
|
||||
set_repositories_for "$repo"
|
||||
built_aports=0
|
||||
changed_aports_in_repo=$(changed_aports "$repo")
|
||||
|
@ -257,4 +261,3 @@ if [ "$failed" = true ]; then
|
|||
elif [ -z "$aport_ok" ]; then
|
||||
msg "No packages found to be built." yellow
|
||||
fi
|
||||
|
20
.gitlab/bin/changed-aports
Executable file
20
.gitlab/bin/changed-aports
Executable file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <basebranch>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||
echo "Fatal: not inside a git repository"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
basebranch=$1
|
||||
|
||||
if ! git rev-parse --verify --quiet $basebranch >/dev/null; then
|
||||
# The base branch does not eixst, probably due to a shallow clone
|
||||
git fetch -v $CI_MERGE_REQUEST_PROJECT_URL.git +refs/heads/$basebranch:refs/heads/$basebranch
|
||||
fi
|
||||
|
||||
git --no-pager diff --diff-filter=ACMR --name-only $basebranch...HEAD -- "*/APKBUILD" | xargs -r -n1 dirname
|
74
.gitlab/bin/functions.sh
Executable file
74
.gitlab/bin/functions.sh
Executable file
|
@ -0,0 +1,74 @@
|
|||
# shellcheck disable=SC3043
|
||||
|
||||
:
|
||||
|
||||
# shellcheck disable=SC3040
|
||||
set -eu -o pipefail
|
||||
|
||||
changed_repos() {
|
||||
: "${APORTSDIR?APORTSDIR missing}"
|
||||
: "${BASEBRANCH?BASEBRANCH missing}"
|
||||
|
||||
cd "$APORTSDIR"
|
||||
for repo in $REPOS; do
|
||||
git diff --diff-filter=ACMR --exit-code "$BASEBRANCH"...HEAD -- "$repo" >/dev/null \
|
||||
|| echo "$repo"
|
||||
done
|
||||
}
|
||||
|
||||
changed_aports() {
|
||||
: "${APORTSDIR?APORTSDIR missing}"
|
||||
: "${BASEBRANCH?BASEBRANCH missing}"
|
||||
|
||||
cd "$APORTSDIR"
|
||||
local repo="$1"
|
||||
local aports
|
||||
|
||||
aports=$(git diff --name-only --diff-filter=ACMR --relative="$repo" \
|
||||
"$BASEBRANCH"...HEAD -- "*/APKBUILD" | xargs -rn1 dirname)
|
||||
|
||||
# shellcheck disable=2086
|
||||
ap builddirs -d "$APORTSDIR/$repo" $aports 2>/dev/null | xargs -rn1 basename
|
||||
}
|
||||
|
||||
section_start() {
|
||||
name=${1?arg 1 name missing}
|
||||
header=${2?arg 2 header missing}
|
||||
collapsed=$2
|
||||
timestamp=$(date +%s)
|
||||
|
||||
options=""
|
||||
case $collapsed in
|
||||
yes|on|collapsed|true) options="[collapsed=true]";;
|
||||
esac
|
||||
|
||||
printf "\e[0Ksection_start:%d:%s%s\r\e[0K%s\n" "$timestamp" "$name" "$options" "$header"
|
||||
}
|
||||
|
||||
section_end() {
|
||||
name=$1
|
||||
timestamp=$(date +%s)
|
||||
|
||||
printf "\e[0Ksection_end:%d:%s\r\e[0K" "$timestamp" "$name"
|
||||
}
|
||||
|
||||
gitlab_key_to_rsa() {
|
||||
KEY=$1
|
||||
TYPE=$2
|
||||
TGT=$3
|
||||
TGT_DIR=${TGT%/*}
|
||||
if [ "$TGT" == "$TGT_DIR" ]; then
|
||||
TGT_DIR="./"
|
||||
fi
|
||||
if [ ! -d "$TGT_DIR" ]; then
|
||||
mkdir -p "$TGT_DIR"
|
||||
fi
|
||||
case $TYPE in
|
||||
rsa-public) local type="PUBLIC";;
|
||||
rsa-private) local type="RSA PRIVATE";;
|
||||
esac
|
||||
echo "-----BEGIN $type KEY-----" > "$TGT"
|
||||
echo $1 | sed 's/.\{64\}/&\
|
||||
/g' >> "$TGT"
|
||||
echo "-----END $type KEY-----" >> "$TGT"
|
||||
}
|
96
.gitlab/bin/lint
Executable file
96
.gitlab/bin/lint
Executable file
|
@ -0,0 +1,96 @@
|
|||
#!/bin/sh
|
||||
|
||||
BLUE="\e[34m"
|
||||
MAGENTA="\e[35m"
|
||||
RESET="\e[0m"
|
||||
|
||||
readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
|
||||
verbose() {
|
||||
echo "> " "$@"
|
||||
# shellcheck disable=SC2068
|
||||
$@
|
||||
}
|
||||
|
||||
debugging() {
|
||||
[ -n "$CI_DEBUG_BUILD" ]
|
||||
}
|
||||
|
||||
debug() {
|
||||
if debugging; then
|
||||
verbose "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# git no longer allows to execute in repositories owned by different users
|
||||
doas chown -R gitlab-runner: .
|
||||
|
||||
fetch_flags="-qn"
|
||||
debugging && fetch_flags="-v"
|
||||
|
||||
git fetch $fetch_flags "$CI_MERGE_REQUEST_PROJECT_URL" \
|
||||
"+refs/heads/$BASEBRANCH:refs/heads/$BASEBRANCH"
|
||||
|
||||
if debugging; then
|
||||
merge_base=$(git merge-base "$BASEBRANCH" HEAD)
|
||||
echo "$merge_base"
|
||||
git --version
|
||||
git config -l
|
||||
git tag merge-base "$merge_base" || { echo "Could not determine merge-base"; exit 50; }
|
||||
git log --oneline --graph --decorate --all
|
||||
fi
|
||||
|
||||
has_problems=0
|
||||
|
||||
for PKG in $(changed-aports "$BASEBRANCH"); do
|
||||
printf "$BLUE==>$RESET Linting $PKG\n"
|
||||
|
||||
(
|
||||
cd "$PKG"
|
||||
|
||||
repo=$(basename $(dirname $PKG));
|
||||
|
||||
if [ "$repo" = "main" ]; then
|
||||
export SKIP_AL1=1
|
||||
export SKIP_AL13=1
|
||||
fi
|
||||
|
||||
printf "\n\n"
|
||||
printf "$BLUE"
|
||||
printf '======================================================\n'
|
||||
printf " parse APKBUILD:\n"
|
||||
printf '======================================================'
|
||||
printf "$RESET\n\n"
|
||||
( . ./APKBUILD ) || has_problems=1
|
||||
|
||||
printf "\n\n"
|
||||
printf "$BLUE"
|
||||
printf '======================================================\n'
|
||||
printf " abuild sanitycheck:\n"
|
||||
printf '======================================================'
|
||||
printf "$RESET\n\n"
|
||||
abuild sanitycheck || has_problems=1
|
||||
|
||||
printf "\n\n"
|
||||
printf "$BLUE"
|
||||
printf '======================================================\n'
|
||||
printf " apkbuild-shellcheck:\n"
|
||||
printf '======================================================'
|
||||
printf "$RESET\n"
|
||||
apkbuild-shellcheck || has_problems=1
|
||||
|
||||
printf "\n\n"
|
||||
printf "$BLUE"
|
||||
printf '======================================================\n'
|
||||
printf " apkbuild-lint:\n"
|
||||
printf '======================================================'
|
||||
printf "$RESET\n\n"
|
||||
apkbuild-lint APKBUILD || has_problems=1
|
||||
|
||||
return $has_problems
|
||||
) || has_problems=1
|
||||
|
||||
echo
|
||||
done
|
||||
|
||||
exit $has_problems
|
47
.gitlab/bin/push.sh
Executable file
47
.gitlab/bin/push.sh
Executable file
|
@ -0,0 +1,47 @@
|
|||
#!/bin/sh
|
||||
|
||||
# shellcheck disable=SC3043
|
||||
|
||||
. $CI_PROJECT_DIR/.gitlab/bin/functions.sh
|
||||
|
||||
# shellcheck disable=SC3040
|
||||
set -eu -o pipefail
|
||||
|
||||
readonly APORTSDIR=$CI_PROJECT_DIR
|
||||
readonly REPOS="backports user"
|
||||
readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
|
||||
export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
|
||||
|
||||
gitlab_key_to_rsa $ABUILD_KEY rsa-private $HOME/.abuild/$ABUILD_KEY_NAME.rsa
|
||||
gitlab_key_to_rsa $ABUILD_KEY_PUB rsa-public $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub
|
||||
gitlab_key_to_rsa $SSH_KEY rsa-private $HOME/.ssh/id_rsa
|
||||
chmod 700 "$HOME"/.ssh/id_rsa
|
||||
chmod 700 "$HOME"/.abuild/$ABUILD_KEY_NAME.rsa
|
||||
|
||||
echo "PACKAGER_PRIVKEY=$HOME/.abuild/$ABUILD_KEY_NAME.rsa" >> $HOME/.abuild/abuild.conf
|
||||
echo "REPODEST=$CI_PROJECT_DIR/repo-apk" >> $HOME/.abuild/abuild.conf
|
||||
doas cp $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub /etc/apk/keys/.
|
||||
|
||||
git clone git@lab.ilot.io:ayakael/repo-apk -b $BASEBRANCH
|
||||
for i in $(find packages -type f -name "*.apk"); do
|
||||
cp $i ${i/packages/repo-apk}
|
||||
done
|
||||
|
||||
fetch_flags="-qn"
|
||||
git fetch $fetch_flags "$CI_MERGE_REQUEST_PROJECT_URL" \
|
||||
"+refs/heads/$BASEBRANCH:refs/heads/$BASEBRANCH"
|
||||
|
||||
for repo in $(changed_repos); do
|
||||
rm $CI_PROJECT_DIR/repo-apk/$repo/x86_64/APKINDEX.tar.gz
|
||||
mkdir -p $repo/DUMMY
|
||||
echo "pkgname=DUMMY" > $repo/DUMMY/APKBUILD
|
||||
cd $repo/DUMMY
|
||||
abuild index
|
||||
cd "$CI_PROJECT_DIR"
|
||||
rm -R $repo/DUMMY
|
||||
done
|
||||
|
||||
git -C repo-apk add .
|
||||
git -C repo-apk commit -m "Update from $CI_MERGE_REQUEST_IID - $CI_MERGE_REQUEST_TITLE"
|
||||
git -C repo-apk push
|
64
README.md
64
README.md
|
@ -1,63 +1,5 @@
|
|||
# ayaports
|
||||
Upstream: https://ayakael.net/forge/ayaports
|
||||
Repository with various custom APKBUILDs.
|
||||
|
||||
## Description
|
||||
Use at your own risk. While they will likely work, as I built them for my own use, I cannot guarantee that they'll stay up to date or that they won't burn your house down.
|
||||
|
||||
This repository contains aports that are not yet merged in the official Alpine
|
||||
Linux repository or don’t adhere to Alpine polices. Packages are automatically
|
||||
built using CI. Once built, they are deployed to a git-lfs repository, making
|
||||
them available to apk.
|
||||
|
||||
Branches are matched to Alpine releases.
|
||||
|
||||
## Repositories
|
||||
|
||||
You can browse all the repositories at https://codeberg.org/ayakael/ayaports
|
||||
Affixed to each repository description is the appropriate link for use in
|
||||
`/etc/apk/repositories`.
|
||||
|
||||
#### Backports
|
||||
```
|
||||
https://ayakael.net/api/packages/forge/alpine/v3.21/backports
|
||||
```
|
||||
|
||||
Aports from the official Alpine repositories backported from edge. This is only
|
||||
available and kept up-to-date on latest stable release.
|
||||
|
||||
#### User
|
||||
```
|
||||
https://ayakael.net/api/packages/forge/alpine/edge/user
|
||||
```
|
||||
|
||||
Aports that have yet to be (or may never be) upstreamed to the official
|
||||
aports.
|
||||
|
||||
|
||||
## How to use
|
||||
Add security key of the apk repository to your /etc/apk/keys:
|
||||
|
||||
```shell
|
||||
cd /etc/apk/keys
|
||||
curl -JO https://ayakael.net/api/packages/forge/alpine/key
|
||||
```
|
||||
Add repositories that you want to use (see above) to `/etc/apk/repositories`.
|
||||
|
||||
## Support
|
||||
Generally, only the latest branch is kept up-to-date. That said, if an aport
|
||||
is broken on the latest release due to a dependency incompatibility, it will be
|
||||
kept up-to-date on the release it last works on.
|
||||
|
||||
As these aports are built for my own application, I make no guarantees that
|
||||
they will work for you.
|
||||
|
||||
## Contribution & bug reports
|
||||
If you wish to contribute to this aports collection, or wish to report a bug,
|
||||
you can do so on Codeberg here:
|
||||
https://codeberg.org/ayakael/ayaports/issues
|
||||
|
||||
For packages that are in backports, bug reports and merge requests
|
||||
should be done on Alpine's aports repo instance:
|
||||
https://gitlab.alpinelinux.org/alpine/aports
|
||||
|
||||
## License
|
||||
This readme, abuilds and support scripts are licensed under MIT License.
|
||||
One of these days I'll PR them to Alpine's package repository.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# Contributor: Kay Thomas <kaythomas@pm.me>
|
||||
# Maintainer: Kay Thomas <kaythomas@pm.me>
|
||||
pkgname=airsonic-advanced
|
||||
_sha=1397446f979b1cdea283eec89ce4f0eae7d63450
|
||||
pkgver=11.0.0_git20230217
|
||||
pkgrel=0
|
||||
_sha=89e6fe9aec80daf8224c6696f8f86bfcf22c6e0a
|
||||
pkgver=11.0.0_git20220624
|
||||
pkgrel=1
|
||||
pkgdesc="Modern implementation of the Airsonic fork with several key performance and feature enhancements"
|
||||
url="https://github.com/airsonic-advanced/airsonic-advanced"
|
||||
# inconsistent test and build failures on other arches
|
||||
|
@ -16,7 +16,6 @@ pkgusers="airsonic-advanced"
|
|||
pkggroups="airsonic-advanced"
|
||||
install="$pkgname.pre-install"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/airsonic-advanced/airsonic-advanced/archive/$_sha.tar.gz
|
||||
maven.patch
|
||||
airsonic-advanced.initd
|
||||
"
|
||||
builddir="$srcdir/$pkgname-$_sha"
|
||||
|
@ -42,7 +41,6 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
f415620bdbed9fb3874afbf30d9362e68b1e9e8e90dbbed4ca3206b643cad97ca0558e64ec5b4440382f0ec908c3325e321ea3631c38ff9a2109163c8f0cfe0b airsonic-advanced-11.0.0_git20230217.tar.gz
|
||||
6cb52fee19815fcdf2596e55d97d3e750321b1df7a4fec36fc9bc2a57d4be979a3905a42d3aa9dbeb2bf0d4f56edbf344f13551219b8e4d2ca583abd4bb5c8f9 maven.patch
|
||||
b794e6e6264613423fc2c7dec383d9a14a74a45a13efe7347c02b51a46e8debdd92fae35a6711540f04fa624ded77b9f377d54c3468c8c419380f1b133d4e3cd airsonic-advanced-11.0.0_git20220624.tar.gz
|
||||
ca87e6a7199950e6ac52aeb076a03f831d60ee9d4ceed47366bbd78443765d205796d895ebb244051d8033e5b2e9ccd648d20434039c854b8b50e766cc5cd10d airsonic-advanced.initd
|
||||
"
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
fixes maven 3.9 breaking change
|
||||
https://maven.apache.org/docs/3.9.0/release-notes.html#potentially-breaking-core-changes
|
||||
--- airsonic-advanced-1397446f979b1cdea283eec89ce4f0eae7d63450/.mvn/maven.config
|
||||
+++ airsonic-advanced-1397446f979b1cdea283eec89ce4f0eae7d63450/.mvn/maven.config
|
||||
@@ -1 +1,2 @@
|
||||
---settings ./.mvn/settings.xml
|
||||
+--settings
|
||||
+./.mvn/settings.xml
|
|
@ -1,25 +0,0 @@
|
|||
diff --color -Nur calibre-6.17.0.orig/src/calibre/gui2/update.py calibre-6.17.0/src/calibre/gui2/update.py
|
||||
--- calibre-6.17.0.orig/src/calibre/gui2/update.py 2023-05-06 11:36:35.678461036 -0700
|
||||
+++ calibre-6.17.0/src/calibre/gui2/update.py 2023-05-06 11:39:10.365134930 -0700
|
||||
@@ -82,20 +82,6 @@
|
||||
while not self.shutdown_event.is_set():
|
||||
calibre_update_version = NO_CALIBRE_UPDATE
|
||||
plugins_update_found = 0
|
||||
- try:
|
||||
- version = get_newest_version()
|
||||
- if version[:2] > numeric_version[:2]:
|
||||
- calibre_update_version = version
|
||||
- except Exception as e:
|
||||
- prints('Failed to check for calibre update:', as_unicode(e))
|
||||
- try:
|
||||
- update_plugins = get_plugin_updates_available(raise_error=True)
|
||||
- if update_plugins is not None:
|
||||
- plugins_update_found = len(update_plugins)
|
||||
- except Exception as e:
|
||||
- prints('Failed to check for plugin update:', as_unicode(e))
|
||||
- if calibre_update_version != NO_CALIBRE_UPDATE or plugins_update_found > 0:
|
||||
- self.signal.update_found.emit(calibre_update_version, plugins_update_found)
|
||||
self.shutdown_event.wait(self.INTERVAL)
|
||||
|
||||
def shutdown(self):
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
# Maintainer: Cowington Post <cowingtonpost@gmail.com>
|
||||
pkgname=calibre
|
||||
pkgver=7.21.0
|
||||
pkgrel=0
|
||||
pkgdesc="Ebook management application"
|
||||
# qt6-webengine
|
||||
arch="x86_64 aarch64"
|
||||
url="https://calibre-ebook.com"
|
||||
license="GPL-3.0-or-later"
|
||||
depends="
|
||||
font-liberation
|
||||
libwmf
|
||||
mtdev
|
||||
optipng
|
||||
poppler
|
||||
py3-apsw
|
||||
py3-beautifulsoup4
|
||||
py3-css-parser
|
||||
py3-cssselect
|
||||
py3-dateutil
|
||||
py3-dnspython
|
||||
py3-feedparser
|
||||
py3-fonttools
|
||||
py3-html2text
|
||||
py3-html5-parser
|
||||
py3-html5lib
|
||||
py3-jeepney
|
||||
py3-lxml
|
||||
py3-markdown
|
||||
py3-mechanize
|
||||
py3-msgpack
|
||||
py3-netifaces
|
||||
py3-pillow
|
||||
py3-psutil
|
||||
py3-pycryptodome
|
||||
py3-pygments
|
||||
py3-pyqt6-webengine
|
||||
py3-regex
|
||||
py3-xxhash
|
||||
py3-zeroconf
|
||||
qt6-qtimageformats
|
||||
qt6-qtsvg
|
||||
qt6-qtwebengine
|
||||
udisks2
|
||||
"
|
||||
makedepends="
|
||||
cmake
|
||||
curl
|
||||
hunspell-dev
|
||||
hyphen-dev
|
||||
libmtp-dev
|
||||
libstemmer-dev
|
||||
libusb-dev
|
||||
podofo-dev
|
||||
py3-pyqt-builder
|
||||
py3-pyqt6-sip
|
||||
py3-sip
|
||||
python3-dev
|
||||
qt6-qtbase-dev
|
||||
uchardet-dev
|
||||
xdg-utils
|
||||
ffmpeg-dev
|
||||
"
|
||||
subpackages="
|
||||
$pkgname-pyc
|
||||
$pkgname-doc
|
||||
$pkgname-bash-completion
|
||||
$pkgname-zsh-completion
|
||||
"
|
||||
source="https://download.calibre-ebook.com/$pkgver/calibre-$pkgver.tar.xz
|
||||
0001-$pkgname-no-update.patch
|
||||
"
|
||||
# net: downloads iso-codes
|
||||
# !check: no tests ran
|
||||
options="net !check"
|
||||
|
||||
export LANG="en_US.UTF-8"
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
rm -f resources/calibre-portable.*
|
||||
}
|
||||
|
||||
build() {
|
||||
python3 setup.py build
|
||||
python3 setup.py iso639
|
||||
python3 setup.py iso3166
|
||||
python3 setup.py liberation_fonts --system-liberation_fonts --path-to-liberation_fonts /usr/share/fonts/liberation
|
||||
python3 setup.py mathjax
|
||||
python3 setup.py gui
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m unittest discover
|
||||
}
|
||||
|
||||
package() {
|
||||
# needed for zsh
|
||||
mkdir -p "$pkgdir"/usr/share/zsh/site-functions
|
||||
|
||||
python3 setup.py install \
|
||||
--staging-root="$pkgdir"/usr \
|
||||
--system-plugins-location=/usr/share/calibre/system-plugins
|
||||
|
||||
cp -a man-pages/ "$pkgdir"/usr/share/man
|
||||
|
||||
rm -r "$pkgdir"/usr/share/calibre/rapydscript/
|
||||
|
||||
python3 -m compileall -fq "$pkgdir"/usr
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
0c2ee610833df83219c0c33b09e1374a8262f1630ccd48e3c4725c92922a3ac5d102ad83fc213457fb9de3efa4f5a2c98ff6dff039828e1661085a1054d7f631 calibre-7.21.0.tar.xz
|
||||
eb8e7ce40ff8b8daf6e7e55a5dff8ec4dff06c45744266bb48b3194e92ab1196bc91468203e3c2ca1e5144166a7d6be90e6cf0253513e761b56a4c85be4c2c76 0001-calibre-no-update.patch
|
||||
"
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/sh
|
||||
/usr/bin/electron "/usr/lib/caprine"
|
48
backports/celery/APKBUILD
Normal file
48
backports/celery/APKBUILD
Normal file
|
@ -0,0 +1,48 @@
|
|||
# Maintainer: Drew DeVault <sir@cmpwn.com>
|
||||
pkgname=celery
|
||||
pkgver=5.2.7
|
||||
pkgrel=0
|
||||
pkgdesc="An asynchronous task queue/job queue based on distributed message passing"
|
||||
url="http://www.celeryproject.org/"
|
||||
arch="noarch !s390x" # lmited by py3-kombu
|
||||
license="Apache-2.0"
|
||||
depends="py3-urllib3 py3-redis py3-vine py3-kombu py3-billiard py3-tz"
|
||||
makedepends="python3-dev py3-setuptools"
|
||||
install="$pkgname.pre-install"
|
||||
source="https://files.pythonhosted.org/packages/source/c/celery/celery-$pkgver.tar.gz
|
||||
celery.confd
|
||||
celery.initd"
|
||||
pkgusers="celery"
|
||||
pkggroups="celery"
|
||||
subpackages="$pkgname-openrc"
|
||||
provides="py3-celery=$pkgver-r$pkgrel"
|
||||
|
||||
# TODO: requires many many many dependencies
|
||||
options="!check"
|
||||
|
||||
build() {
|
||||
python3 setup.py build
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm755 "$pkgdir/$confdir"
|
||||
install -dm755 "$pkgdir/$confdir/conf.d"
|
||||
|
||||
# install scripts
|
||||
install -m755 -D "$srcdir"/$pkgname.initd \
|
||||
"$pkgdir"/etc/init.d/$pkgname
|
||||
install -m644 -D "$srcdir"/$pkgname.confd \
|
||||
"$pkgdir"/etc/conf.d/$pkgname
|
||||
|
||||
python3 setup.py install --prefix=/usr --root="$pkgdir"
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 setup.py test
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
68e3bb082f97ebe20391293cc8fa96c41c8f5ac5e8c24b2b7bd66eb104ec459bdfa49741e47486676e5daa88d7a71e3eb0d9432851aeafc74b0d4352e567e853 celery-5.2.7.tar.gz
|
||||
f9458bce0d8990de646df564bec96baa0e45867f44e41380d38520905e00c941b1ce261314bb78edaa14c591e0aa9386d24c58a61f69fb0fecc616c34a24dea1 celery.confd
|
||||
ff8c0451efa7157fd61f2335f4187bef6cbdd51856c7cfad4de02244c6c5ca7c584f9108731b52f020fee866365d9f092ded266c90d13cb34e92a7ffb63fed57 celery.initd
|
||||
"
|
4
backports/celery/celery.confd
Normal file
4
backports/celery/celery.confd
Normal file
|
@ -0,0 +1,4 @@
|
|||
CELERY_USER=celery
|
||||
CELERY_LOG=/var/log/celery.log
|
||||
CELERY_REDIR="1>/dev/null 2>> ${CELERY_LOG}"
|
||||
CELERY_OPTS="-A celeryapp -B --loglevel=info $CELERY_REDIR"
|
16
backports/celery/celery.initd
Normal file
16
backports/celery/celery.initd
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/sbin/openrc-run
|
||||
supervisor=supervise-daemon
|
||||
|
||||
description="celery queue worker"
|
||||
|
||||
: ${CELERY_USER:="celery"}
|
||||
: ${CELERY_GROUP:="$(id -gn $LS_USER)"}
|
||||
|
||||
pidfile="/run/$RC_SVCNAME.sd.pid"
|
||||
supervise_daemon_args="-u $CELERY_USER -g $CELERY_GROUP -p $pidfile"
|
||||
command=/usr/bin/celery
|
||||
command_args="${CELERY_OPTS}"
|
||||
|
||||
depends() {
|
||||
use net
|
||||
}
|
7
backports/celery/celery.pre-install
Normal file
7
backports/celery/celery.pre-install
Normal file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
addgroup -S celery 2>/dev/null
|
||||
adduser -S -D -H -h /usr/share/celery -s /sbin/nologin -G celery -g celery celery 2>/dev/null
|
||||
|
||||
exit 0
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=coin
|
||||
pkgver=4.0.0
|
||||
pkgrel=7
|
||||
pkgdesc="OpenGL OpenInventor compatible graphics library"
|
||||
url="https://github.com/coin3d/coin"
|
||||
license="BSD-3-Clause"
|
||||
arch="all"
|
||||
makedepends="boost-dev cmake glu-dev graphviz samurai"
|
||||
subpackages="$pkgname-dev"
|
||||
source="https://github.com/coin3d/coin/releases/download/Coin-$pkgver/coin-$pkgver-src.tar.gz
|
||||
TestSuitePatch.patch
|
||||
"
|
||||
builddir="$srcdir/coin"
|
||||
|
||||
build() {
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCOIN_BUILD_TESTS=ON
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cmake --build build --target test
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
e036276a243bfe252569cee1b67d38b8633fcf35bdf4e366a92ca67e23799d54d91fe272c23b383c451d330cee284809f28f237857493948149e0da1ebd64fae coin-4.0.0-src.tar.gz
|
||||
aab464244b13371badf0878e5bfbcce859a42756cf8c7657d1480318aa291d296eac2741219c346bae056f761c5f46857f8fd1ec1c4129f86bc10236d3869deb TestSuitePatch.patch
|
||||
"
|
|
@ -1,11 +0,0 @@
|
|||
--- ./testsuite/TestSuiteUtils.cpp
|
||||
+++ ./testsuite/TestSuiteUtils.cpp
|
||||
@@ -39,7 +39,7 @@
|
||||
#elif defined(_WIN32)
|
||||
#define USE_WIN32
|
||||
#else //_WIN32
|
||||
-#error Unknown system
|
||||
+#define USE_POSIX
|
||||
#endif //POSIX
|
||||
|
||||
#include <Inventor/errors/SoDebugError.h>
|
|
@ -1,76 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=cura
|
||||
# uranium and curaengine packages must be updated in sync with this verion number
|
||||
# py3-pynest2d and fdm-materials should be checked as well, but their versions are not always in sync
|
||||
pkgver=5.2.2
|
||||
pkgrel=1
|
||||
pkgdesc="3D printer / slicing GUI built on top of the Uranium framework"
|
||||
url="https://ultimaker.com/software/ultimaker-cura"
|
||||
# ppc64le: no py3-keyring
|
||||
# x86: no curaengine
|
||||
# armhf: no uranium, qt5-qtquickcontrols, qt5-qtquickcontrols2, qt5-qtgraphicaleffects
|
||||
# riscv64: no uranium
|
||||
# s390x: no py3-trimesh, no py3-numpy-stl
|
||||
# armv7: no py3-trimesh
|
||||
arch="noarch !ppc64le !x86 !armhf !riscv64 !s390x !armv7"
|
||||
license="LGPL-3.0-or-later"
|
||||
# add cura-binary-data to depends when packaged
|
||||
depends="
|
||||
curaengine
|
||||
fdm-materials
|
||||
uranium
|
||||
py3-arcus
|
||||
py3-keyring
|
||||
py3-numpy-stl
|
||||
py3-pyclipper
|
||||
py3-pynest2d
|
||||
py3-pyserial
|
||||
py3-qt6
|
||||
py3-requests
|
||||
py3-trimesh
|
||||
py3-zeroconf
|
||||
"
|
||||
makedepends="samurai cmake gettext gettext-dev" # needs msginit from gettext
|
||||
checkdepends="py3-pytest"
|
||||
subpackages="$pkgname-lang"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/Ultimaker/Cura/archive/refs/tags/$pkgver.tar.gz
|
||||
AppDesktopData.patch
|
||||
CuraVersion.patch
|
||||
cmake-helpers.patch
|
||||
cmake.patch"
|
||||
builddir="$srcdir/Cura-$pkgver"
|
||||
options="!check" # tests broken after v5.x
|
||||
|
||||
build() {
|
||||
local pyver="$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
|
||||
cmake -B build -G Ninja \
|
||||
-DCURA_VERSION=$pkgver \
|
||||
-DPython_VERSION=$pyver \
|
||||
-DURANIUM_DIR=/usr/share/uranium \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DGETTEXT_MSGINIT_EXECUTABLE=msginit \
|
||||
-DCURA_BINARY_DATA_DIRECTORY=/usr/share/cura \
|
||||
-DCMAKE_BUILD_TYPE=minsizerel
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
mv $pkgdir/usr/bin/cura_app.py $pkgdir/usr/bin/cura
|
||||
|
||||
# don't ever send any user or print info through the internet to Ultimaker
|
||||
rm -rf "$pkgdir/usr/lib/cura/plugins/SliceInfoPlugin"
|
||||
|
||||
install -d "$pkgdir"/usr/share/locale
|
||||
mv "$pkgdir"/usr/share/cura/resources/i18n/* "$pkgdir"/usr/share/locale/
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
5d4e0fdc740d0c048905e2b87cc8c73eedea59b54766b74760505902007b365582d22b46b1cfdcd6914828840865c10a3beb0ef6a1f04ea181c81d44f42434bc cura-5.2.2.tar.gz
|
||||
214e373f6cab7e3ccac12c96d1b5ca636d8d1e9ecdadaae84fc28fb429969c7c2d6055ce2a01b6db3ad85ab6cbc8d135cf2c26c77d7cfe13a73eb81aa5e85f11 AppDesktopData.patch
|
||||
e3bb302db70ca195b2ce9831e71302c8ee2a51955fecc7264a495d7d4fc9c107cfd48811aa5865f16671e7b1ae126f95d3d7bbb6a70f367f7f91a2b32bce377b CuraVersion.patch
|
||||
0db4ff97e7f82ae1a9dbc9c330d08c3e46249feeb3fb630f7c4e2de73749327337ec041680c39a07e0b5034c1b3f3656d75614ab4dc2f39861c8e27bdb2a58ef cmake-helpers.patch
|
||||
05a73f892700ff6279230385b04180873a62b7413fa7f7d55ae150f1bcee57ef05eda0bd7fe444fe660ab66a044c958f42badd33b743fca81033ae8f19dd3805 cmake.patch
|
||||
"
|
|
@ -1,58 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./com.ultimaker.cura.appdata.xml
|
||||
@@ -0,0 +1,33 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<!-- Copyright 2016 Richard Hughes <richard@hughsie.com> -->
|
||||
+<component type="desktop">
|
||||
+ <id>com.ultimaker.cura.desktop</id>
|
||||
+ <metadata_license>CC0-1.0</metadata_license>
|
||||
+ <project_license>LGPL-3.0 and CC-BY-SA-4.0</project_license>
|
||||
+ <name>Cura</name>
|
||||
+ <summary>The world's most advanced 3d printer software</summary>
|
||||
+ <description>
|
||||
+ <p>
|
||||
+ Cura creates a seamless integration between hardware, software and
|
||||
+ materials for the best 3D printing experience around.
|
||||
+ Cura supports the 3MF, OBJ and STL file formats and is available on
|
||||
+ Windows, Mac and Linux.
|
||||
+ </p>
|
||||
+ <ul>
|
||||
+ <li>Novices can start printing right away</li>
|
||||
+ <li>Experts are able to customize 300 settings to achieve the best results</li>
|
||||
+ <li>Optimized profiles for Ultimaker materials</li>
|
||||
+ <li>Supported by a global network of Ultimaker certified service partners</li>
|
||||
+ <li>Print multiple objects at once with different settings for each object</li>
|
||||
+ <li>Cura supports STL, 3MF and OBJ file formats</li>
|
||||
+ <li>Open source and completely free</li>
|
||||
+ </ul>
|
||||
+ </description>
|
||||
+ <screenshots>
|
||||
+ <screenshot type="default">
|
||||
+ <image>https://raw.githubusercontent.com/Ultimaker/Cura/master/screenshot.png</image>
|
||||
+ </screenshot>
|
||||
+ </screenshots>
|
||||
+ <url type="homepage">https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux</url>
|
||||
+ <translation type="gettext">Cura</translation>
|
||||
+</component>
|
||||
--- /dev/null
|
||||
+++ ./com.ultimaker.cura.desktop.in
|
||||
@@ -0,0 +1,19 @@
|
||||
+[Desktop Entry]
|
||||
+Name=Ultimaker Cura
|
||||
+Name[de]=Ultimaker Cura
|
||||
+Name[nl]=Ultimaker Cura
|
||||
+GenericName=3D Printing Software
|
||||
+GenericName[de]=3D-Druck-Software
|
||||
+GenericName[nl]=3D-printsoftware
|
||||
+Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
|
||||
+Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird.
|
||||
+Comment[nl]=Cura converteert 3D-modellen naar paden voor een 3D printer. Het bereidt je print voor om zeer precies, snel en betrouwbaar te kunnen printen, met veel extra functionaliteit om je print er goed uit te laten komen.
|
||||
+Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F
|
||||
+TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura
|
||||
+Icon=cura-icon
|
||||
+Terminal=false
|
||||
+Type=Application
|
||||
+MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip;
|
||||
+Categories=Graphics;
|
||||
+Keywords=3D;Printing;Slicer;
|
||||
+StartupWMClass=cura.real
|
|
@ -1,16 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./cura/CuraVersion.py.in
|
||||
@@ -0,0 +1,13 @@
|
||||
+# Copyright (c) 2020 Ultimaker B.V.
|
||||
+# Cura is released under the terms of the LGPLv3 or higher.
|
||||
+
|
||||
+CuraAppName = "@CURA_APP_NAME@"
|
||||
+CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@"
|
||||
+CuraVersion = "@CURA_VERSION@"
|
||||
+CuraBuildType = "@CURA_BUILDTYPE@"
|
||||
+CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False
|
||||
+CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@"
|
||||
+CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@"
|
||||
+CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@"
|
||||
+CuraMarketplaceRoot = "@CURA_MARKETPLACE_ROOT@"
|
||||
+CuraDigitalFactoryURL = "@CURA_DIGITAL_FACTORY_URL@"
|
|
@ -1,95 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ ./cmake/CuraPluginInstall.cmake
|
||||
@@ -0,0 +1,92 @@
|
||||
+# Copyright (c) 2022 Ultimaker B.V.
|
||||
+# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher.
|
||||
+
|
||||
+#
|
||||
+# This module detects all plugins that need to be installed and adds them using the CMake install() command.
|
||||
+# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it.
|
||||
+#
|
||||
+# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the
|
||||
+# form of "a;b;c" or "a,b,c". By default all plugins will be installed.
|
||||
+#
|
||||
+
|
||||
+option(PRINT_PLUGIN_LIST "Should the list of plugins that are installed be printed?" ON)
|
||||
+
|
||||
+# Options or configuration variables
|
||||
+set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.")
|
||||
+
|
||||
+file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json)
|
||||
+list(LENGTH _plugin_json_list _plugin_json_list_len)
|
||||
+
|
||||
+# Sort the lists alphabetically so we can handle cases like this:
|
||||
+# - plugins/my_plugin/plugin.json
|
||||
+# - plugins/my_plugin/my_module/plugin.json
|
||||
+# In this case, only "plugins/my_plugin" should be added via install().
|
||||
+set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS})
|
||||
+# Sanitize the string so the comparison will be case-insensitive.
|
||||
+string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list)
|
||||
+string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list)
|
||||
+
|
||||
+# WORKAROUND counterpart of what's in cura-build.
|
||||
+string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}")
|
||||
+
|
||||
+list(LENGTH _no_install_plugin_list _no_install_plugin_list_len)
|
||||
+
|
||||
+if(_no_install_plugin_list_len GREATER 0)
|
||||
+ list(SORT _no_install_plugin_list)
|
||||
+endif()
|
||||
+if(_plugin_json_list_len GREATER 0)
|
||||
+ list(SORT _plugin_json_list)
|
||||
+endif()
|
||||
+
|
||||
+# Check all plugin directories and add them via install() if needed.
|
||||
+set(_install_plugin_list "")
|
||||
+foreach(_plugin_json_path ${_plugin_json_list})
|
||||
+ get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY)
|
||||
+ file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir})
|
||||
+ get_filename_component(_plugin_dir_name ${_plugin_dir} NAME)
|
||||
+
|
||||
+ # Make plugin name comparison case-insensitive
|
||||
+ string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase)
|
||||
+
|
||||
+ # Check if this plugin needs to be skipped for installation
|
||||
+ set(_add_plugin ON) # Indicates if this plugin should be added to the build or not.
|
||||
+ set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is
|
||||
+ # specified in the NO_INSTALL_PLUGINS list.
|
||||
+ if(_no_install_plugin_list)
|
||||
+ if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list)
|
||||
+ set(_add_plugin OFF)
|
||||
+ set(_is_no_install_plugin ON)
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
+ # Make sure this is not a subdirectory in a plugin that's already in the install list
|
||||
+ if(_add_plugin)
|
||||
+ foreach(_known_install_plugin_dir ${_install_plugin_list})
|
||||
+ if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+")
|
||||
+ set(_add_plugin OFF)
|
||||
+ break()
|
||||
+ endif()
|
||||
+ endforeach()
|
||||
+ endif()
|
||||
+
|
||||
+ if(_add_plugin)
|
||||
+ if(${PRINT_PLUGIN_LIST})
|
||||
+ message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}")
|
||||
+ endif()
|
||||
+ get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY)
|
||||
+ install(DIRECTORY ${_rel_plugin_dir}
|
||||
+ DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir}
|
||||
+ PATTERN "__pycache__" EXCLUDE
|
||||
+ PATTERN "*.qmlc" EXCLUDE
|
||||
+ )
|
||||
+ list(APPEND _install_plugin_list ${_plugin_dir})
|
||||
+ elseif(_is_no_install_plugin)
|
||||
+ if(${PRINT_PLUGIN_LIST})
|
||||
+ message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}")
|
||||
+ endif()
|
||||
+ execute_process(COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py
|
||||
+ -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages
|
||||
+ ${_plugin_dir_name}
|
||||
+ RESULT_VARIABLE _mod_json_result)
|
||||
+ endif()
|
||||
+endforeach()
|
|
@ -1,85 +0,0 @@
|
|||
--- ./CMakeLists.txt.orig
|
||||
+++ ./CMakeLists.txt
|
||||
@@ -1,10 +1,6 @@
|
||||
# Copyright (c) 2022 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
-# NOTE: This is only being used for translation scripts.
|
||||
-
|
||||
-# For MSVC flags, will be ignored on non-Windows OS's and this project in general. Only needed for cura-build-environment.
|
||||
-cmake_policy(SET CMP0091 NEW)
|
||||
project(cura)
|
||||
cmake_minimum_required(VERSION 3.18)
|
||||
|
||||
@@ -15,8 +11,44 @@
|
||||
set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository")
|
||||
set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository")
|
||||
|
||||
+option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF)
|
||||
+if(CURA_DEBUGMODE)
|
||||
+ set(_cura_debugmode "ON")
|
||||
+endif()
|
||||
+
|
||||
option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON)
|
||||
|
||||
+set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder")
|
||||
+set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura")
|
||||
+set(CURA_VERSION "master" CACHE STRING "Version name of Cura")
|
||||
+set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'")
|
||||
+set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root")
|
||||
+set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version")
|
||||
+set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version")
|
||||
+set(CURA_MARKETPLACE_ROOT "" CACHE STRING "Alternative Marketplace location")
|
||||
+set(CURA_DIGITAL_FACTORY_URL "" CACHE STRING "Alternative Digital Factory location")
|
||||
+
|
||||
+configure_file(${CMAKE_SOURCE_DIR}/com.ultimaker.cura.desktop.in ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop @ONLY)
|
||||
+
|
||||
+configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY)
|
||||
+
|
||||
+if(NOT DEFINED Python_VERSION)
|
||||
+ set(Python_VERSION
|
||||
+ 3.11
|
||||
+ CACHE STRING "Python Version" FORCE)
|
||||
+ message(STATUS "Setting Python version to ${Python_VERSION}. Set Python_VERSION if you want to compile against an other version.")
|
||||
+endif()
|
||||
+if(APPLE)
|
||||
+ set(Python_FIND_FRAMEWORK NEVER)
|
||||
+endif()
|
||||
+find_package(Python ${Python_VERSION} EXACT REQUIRED COMPONENTS Interpreter)
|
||||
+message(STATUS "Linking and building ${project_name} against Python ${Python_VERSION}")
|
||||
+if(NOT DEFINED Python_SITELIB_LOCAL)
|
||||
+ set(Python_SITELIB_LOCAL
|
||||
+ "${Python_SITELIB}"
|
||||
+ CACHE PATH "Local alternative site-package location to install Cura" FORCE)
|
||||
+endif()
|
||||
+
|
||||
if(NOT ${URANIUM_DIR} STREQUAL "")
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake")
|
||||
endif()
|
||||
@@ -29,4 +61,24 @@
|
||||
if(${GENERATE_TRANSLATIONS})
|
||||
CREATE_TRANSLATION_TARGETS()
|
||||
endif()
|
||||
-endif()
|
||||
\ No newline at end of file
|
||||
+endif()
|
||||
+
|
||||
+install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||
+
|
||||
+include(CuraPluginInstall)
|
||||
+
|
||||
+install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
+install(DIRECTORY cura DESTINATION "${Python_SITELIB_LOCAL}")
|
||||
+install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION "${Python_SITELIB_LOCAL}/cura/")
|
||||
+if(NOT APPLE AND NOT WIN32)
|
||||
+ install(FILES ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
+ install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/)
|
||||
+ install(FILES com.ultimaker.cura.appdata.xml
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
||||
+ install(FILES cura.sharedmimeinfo
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
|
||||
+ RENAME cura.xml )
|
||||
+endif()
|
|
@ -1,26 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=dex
|
||||
pkgver=0.9.0
|
||||
pkgrel=1
|
||||
pkgdesc="program to generate and execute DesktopEntry files of the Application type"
|
||||
url="https://github.com/jceb/dex"
|
||||
arch="all"
|
||||
license="GPL-3.0-or-later"
|
||||
depends="python3"
|
||||
makedepends="py3-sphinx"
|
||||
subpackages="$pkgname-doc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/jceb/dex/archive/refs/tags/v$pkgver.tar.gz"
|
||||
options="!check" # no testsuite
|
||||
|
||||
build() {
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
make install PREFIX=/usr MANPREFIX=/usr/share/man DESTDIR="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
d68f5482cb0948f27a724437ddfc6de9a0f502bfd0d5c60c76fb85dda3c30e4c432013e530f6a91138c9ac9ff36b3824cd5e382e9d29bb9fb2ec2b9de4133094 dex-0.9.0.tar.gz
|
||||
"
|
|
@ -1,35 +0,0 @@
|
|||
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
pkgname=electron-tasje
|
||||
pkgver=0.7.3
|
||||
pkgrel=0
|
||||
pkgdesc="Tiny replacement for electron-builder"
|
||||
url="https://codeberg.org/selfisekai/electron_tasje/"
|
||||
arch="aarch64 x86_64" # only useful on platforms with electron
|
||||
license="Apache-2.0 OR MIT"
|
||||
makedepends="cargo cargo-auditable"
|
||||
source="electron_tasje-${_rev:-"$pkgver"}.tar.gz::https://codeberg.org/selfisekai/electron_tasje/archive/${_rev:-"v$pkgver"}.tar.gz"
|
||||
builddir="$srcdir/electron_tasje"
|
||||
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
cargo fetch --target="$CTARGET" --locked
|
||||
}
|
||||
|
||||
build() {
|
||||
cargo auditable build --frozen --release
|
||||
}
|
||||
|
||||
check() {
|
||||
cargo test
|
||||
}
|
||||
|
||||
package() {
|
||||
install -Dm755 target/release/tasje "$pkgdir"/usr/bin/tasje
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
251b7eabe74acdb5c7394f9d4d735b736acf555352785a9896ddaeed37632b238e823e1bb639e1f5a44a50455957ec41e1a585a3b2a9919b5818bb40843bd877 electron_tasje-0.7.3.tar.gz
|
||||
"
|
|
@ -1,43 +1,34 @@
|
|||
# Contributor: lauren n. liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Maintainer: psykose <alice@ayaya.dev>
|
||||
pkgname=electron
|
||||
pkgver=33.2.1
|
||||
_gittag=v"${pkgver/_beta/-beta.}"
|
||||
pkgrel=0
|
||||
_chromium=130.0.6723.127
|
||||
_copium_tag=129.1
|
||||
_depot_tools=495b23b39aaba2ca3b55dd27cadc523f1cb17ee6
|
||||
pkgver=21.4.2
|
||||
pkgrel=1
|
||||
_chromium=106.0.5249.199
|
||||
_depot_tools=d85c5bc6ff0dee8171007d947aabc3dfa6dd433b
|
||||
pkgdesc="Electron cross-platform desktop toolkit"
|
||||
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=19
|
||||
makedepends="
|
||||
ada-dev
|
||||
alsa-lib-dev
|
||||
aom-dev
|
||||
base64-dev
|
||||
bash
|
||||
brotli-dev
|
||||
bsd-compat-headers
|
||||
bzip2-dev
|
||||
c-ares-dev
|
||||
cairo-dev
|
||||
clang$_llvmver-dev
|
||||
clang-dev
|
||||
clang-extra-tools
|
||||
compiler-rt
|
||||
crc32c-dev
|
||||
cups-dev
|
||||
curl-dev
|
||||
dav1d-dev
|
||||
dbus-glib-dev
|
||||
double-conversion-dev
|
||||
eudev-dev
|
||||
ffmpeg-dev
|
||||
findutils
|
||||
flac-dev
|
||||
flatbuffers-dev
|
||||
flex
|
||||
freetype-dev
|
||||
gperf
|
||||
|
@ -45,10 +36,9 @@ makedepends="
|
|||
gn
|
||||
gzip
|
||||
harfbuzz-dev
|
||||
hdrhistogram-c-dev
|
||||
hunspell-dev
|
||||
http-parser-dev
|
||||
hwdata-dev
|
||||
hwids-usb
|
||||
java-jdk
|
||||
jpeg-dev
|
||||
jsoncpp-dev
|
||||
|
@ -58,13 +48,11 @@ makedepends="
|
|||
libavif-dev
|
||||
libbsd-dev
|
||||
libcap-dev
|
||||
libdrm-dev
|
||||
libevent-dev
|
||||
libexif-dev
|
||||
libgcrypt-dev
|
||||
libjpeg-turbo-dev
|
||||
libnotify-dev
|
||||
libsecret-dev
|
||||
libusb-dev
|
||||
libva-dev
|
||||
libwebp-dev
|
||||
|
@ -77,209 +65,183 @@ makedepends="
|
|||
libxslt-dev
|
||||
linux-headers
|
||||
lld
|
||||
llvm$_llvmver
|
||||
llvm
|
||||
mesa-dev
|
||||
minizip-dev
|
||||
nghttp2-dev
|
||||
nodejs
|
||||
npm
|
||||
nss-dev
|
||||
openh264-dev
|
||||
opus-dev
|
||||
pciutils-dev
|
||||
perl
|
||||
pipewire-dev
|
||||
pulseaudio-dev
|
||||
py3-httplib2
|
||||
py3-jinja2
|
||||
py3-parsing
|
||||
py3-setuptools
|
||||
py3-six
|
||||
python3
|
||||
qt5-qtbase-dev
|
||||
re2-dev
|
||||
rsync
|
||||
rust
|
||||
rust-bindgen
|
||||
samurai
|
||||
snappy-dev
|
||||
speex-dev
|
||||
spirv-tools-dev
|
||||
sqlite-dev
|
||||
woff2-dev
|
||||
xcb-proto
|
||||
yarn
|
||||
zlib-dev
|
||||
zstd-dev
|
||||
"
|
||||
subpackages="$pkgname-lang $pkgname-dev"
|
||||
# the lower patches are specific to electron, the top ones are from the equivalent chromium version
|
||||
source="
|
||||
https://ayakael.net/api/packages/mirrors/generic/electron/$_gittag/electron-$_gittag-$_chromium.tar.zst
|
||||
copium-$_copium_tag.tar.gz::https://codeberg.org/selfisekai/copium/archive/$_copium_tag.tar.gz
|
||||
source="https://dev.alpinelinux.org/archive/electron/electron-$pkgver.tar.xz
|
||||
angle-wayland-include.patch
|
||||
canonicalize-file-name.patch
|
||||
chromium-VirtualCursor-standard-layout.patch
|
||||
chromium-revert-drop-of-system-java.patch
|
||||
compiler.patch
|
||||
disable-dns_config_service.patch
|
||||
disable-failing-tests.patch
|
||||
fc-cache-version.patch
|
||||
fix-opus.patch
|
||||
fstatat-32bit.patch
|
||||
chromium-use-alpine-target.patch
|
||||
credentials-sys-types-header.patch
|
||||
default-pthread-stacksize.patch
|
||||
dns-resolver.patch
|
||||
fix-crashpad.patch
|
||||
fix-missing-cstdint-include-musl.patch
|
||||
fix-narrowing-cast.patch
|
||||
gdbinit.patch
|
||||
generic-sensor-include.patch
|
||||
musl-auxv.patch
|
||||
jsoncpp.patch
|
||||
memory-tagging-arm64.patch
|
||||
musl-sandbox.patch
|
||||
musl-tid-caching.patch
|
||||
musl-v8-monotonic-pthread-cont_timedwait.patch
|
||||
no-execinfo.patch
|
||||
no-glibc-version.patch
|
||||
no-mallinfo.patch
|
||||
no-res-ninit-nclose.patch
|
||||
no-sandbox-settls.patch
|
||||
partalloc-no-tagging-arm64.patch
|
||||
pvalloc.patch
|
||||
no-stat-redefine.patch
|
||||
nullptr-t.patch
|
||||
partition-atfork.patch
|
||||
py3.11.patch
|
||||
quiche-arena-size.patch
|
||||
scoped-file-no-close.patch
|
||||
temp-failure-retry.patch
|
||||
yes-musl.patch
|
||||
wtf-stacksize.patch
|
||||
|
||||
electron_icon.patch
|
||||
electron_python-jinja-3.10.patch
|
||||
electron_webpack-hash.patch
|
||||
electron_unbundle-node.patch
|
||||
electron_system-zlib-headers.patch
|
||||
icon.patch
|
||||
python-jinja-3.10.patch
|
||||
system-node.patch
|
||||
vector-const.patch
|
||||
webpack-hash.patch
|
||||
|
||||
default.conf
|
||||
electron.desktop
|
||||
electron-launcher.sh
|
||||
"
|
||||
_copium_patches="
|
||||
cr124-iwyu-sys-select-dawn-terminal.patch
|
||||
cr126-aarch64-musl-unsupported-relocation.patch
|
||||
cr129-ffmpeg-no-noh264parse.patch
|
||||
cr129-musl-metricts-imports.patch
|
||||
"
|
||||
# tests are todo for some base checks
|
||||
options="!check net suid"
|
||||
builddir="$srcdir/electron-$_gittag-$_chromium"
|
||||
options="!check suid"
|
||||
|
||||
export PATH="$PATH:/usr/lib/qt5/bin"
|
||||
|
||||
export CC=clang-$_llvmver
|
||||
export CXX=clang++-$_llvmver
|
||||
# clang uses much less memory (and this doesn't support gcc)
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
|
||||
# required to find the tools
|
||||
export AR=llvm-ar
|
||||
export NM=llvm-nm
|
||||
export LD=clang++-$_llvmver
|
||||
export LD=clang++
|
||||
|
||||
# less log spam, reproducible
|
||||
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"
|
||||
export CPPFLAGS="${CPPFLAGS/-g/} -D__DATE__= -D__TIME__= -D__TIMESTAMP__="
|
||||
case "$CARCH" in
|
||||
aarch64|arm*|riscv64)
|
||||
# not supported by clang here
|
||||
export CFLAGS="${CFLAGS/-fstack-clash-protection}"
|
||||
export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection}"
|
||||
;;
|
||||
esac
|
||||
export CFLAGS="${CFLAGS/-g/} -O2 -Wno-unknown-warning-option -Wno-builtin-macro-redefined"
|
||||
export CXXFLAGS="${CXXFLAGS/-g/} -O2 -Wno-unknown-warning-option -Wno-builtin-macro-redefined"
|
||||
export CPPFLAGS="$CPPFLAGS -D__DATE__= -D__TIME__= -D__TIMESTAMP__="
|
||||
|
||||
# breaks chromium-based stuff
|
||||
export CXXFLAGS="${CXXFLAGS/-D_GLIBCXX_ASSERTIONS=1}"
|
||||
_gn_flags() {
|
||||
echo "$@"
|
||||
}
|
||||
|
||||
# creates a dist tarball that does not need to git clone everything at build time.
|
||||
_distbucket="sakamoto/lnl-aports-snapshots/"
|
||||
snapshot() {
|
||||
deps
|
||||
# vpython3 execs system python3 with this set
|
||||
export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
|
||||
export CHROMIUM_BUILDTOOLS_PATH="$srcdir/src/buildtools"
|
||||
export DEPOT_TOOLS_UPDATE=0
|
||||
mkdir -p "$srcdir"
|
||||
cd "$srcdir"
|
||||
git clone --branch=$_chromium --depth=1 \
|
||||
https://chromium.googlesource.com/chromium/src.git
|
||||
|
||||
if ! [ -d depot_tools ]; then
|
||||
(
|
||||
git clone --depth 1 -b main https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||
cd depot_tools
|
||||
git fetch --depth 1 origin $_depot_tools
|
||||
git checkout $_depot_tools
|
||||
)
|
||||
fi
|
||||
git clone https://github.com/electron/electron.git
|
||||
|
||||
(
|
||||
git clone --depth 1 -b main https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||
cd depot_tools
|
||||
git fetch --depth 1 origin $_depot_tools
|
||||
git checkout $_depot_tools
|
||||
)
|
||||
|
||||
export PATH="$PATH:$srcdir/depot_tools"
|
||||
|
||||
echo "solutions = [
|
||||
{
|
||||
\"name\": \"src/electron\",
|
||||
\"url\": \"https://github.com/electron/electron.git@$_gittag\",
|
||||
\"url\": \"file://$srcdir/electron@v$pkgver\",
|
||||
\"deps_file\": \"DEPS\",
|
||||
\"managed\": False,
|
||||
\"custom_deps\": {
|
||||
\"src\": \"https://chromium.googlesource.com/chromium/src.git@$_chromium\",
|
||||
\"src\": None,
|
||||
},
|
||||
\"custom_vars\": {},
|
||||
},
|
||||
]" > .gclient
|
||||
|
||||
python3 depot_tools/gclient.py sync \
|
||||
--no-history \
|
||||
--with_branch_heads \
|
||||
--with_tags \
|
||||
--nohooks
|
||||
|
||||
python3 src/build/landmines.py
|
||||
python3 src/build/util/lastchange.py -o src/build/util/LASTCHANGE \
|
||||
python3 src/build/util/lastchange.py -o src/build/util/LASTCHANGE
|
||||
python3 src/build/util/lastchange.py -s src/third_party/dawn \
|
||||
--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 \
|
||||
-s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
|
||||
|
||||
# rolled newer chromium with it included
|
||||
sed -i '/reland_mojom_ts_generator_handle_empty_module_path_identically_to.patch/d' src/electron/patches/chromium/.patches
|
||||
# why?
|
||||
cp -r electron/patches/ffmpeg src/electron/patches/
|
||||
|
||||
python3 src/electron/script/apply_all_patches.py \
|
||||
src/electron/patches/config.json
|
||||
python3 electron/script/apply_all_patches.py \
|
||||
electron/patches/config.json
|
||||
|
||||
mv src $pkgname-$_gittag-$_chromium
|
||||
python3 src/tools/update_pgo_profiles.py \
|
||||
--target=linux \
|
||||
update \
|
||||
--gs-url-base=chromium-optimization-profiles/pgo_profiles
|
||||
|
||||
python3 src/tools/download_optimization_profile.py \
|
||||
--newest_state=src/chrome/android/profiles/newest.txt \
|
||||
--local_state=src/chrome/android/profiles/local.txt \
|
||||
--output_name=src/chrome/android/profiles/afdo.prof \
|
||||
--gs_url_base=chromeos-prebuilt/afdo-job/llvm
|
||||
|
||||
mv src $pkgname-$pkgver
|
||||
|
||||
# extra binaries are most likely things we don't want, so nuke them all
|
||||
for elf in $(scanelf -RA -F "%F" $pkgname-$_gittag-$_chromium); do
|
||||
for elf in $(scanelf -RA -F "%F" $pkgname-$pkgver); do
|
||||
rm -f "$elf"
|
||||
done
|
||||
|
||||
msg "generating tarball.. (this takes a while)"
|
||||
tar -cf $pkgname-$_gittag-$_chromium.tar \
|
||||
tar -cf $pkgname-$pkgver.tar \
|
||||
--exclude="ChangeLog*" \
|
||||
--exclude="testdata/*" \
|
||||
--exclude="test_data/*" \
|
||||
--exclude="android_rust_toolchain/*" \
|
||||
--exclude="third_party/instrumented_libs/binaries" \
|
||||
--exclude="testdata/" \
|
||||
--exclude="test_data/" \
|
||||
--exclude="android_rust_toolchain/toolchain/" \
|
||||
--exclude-backups \
|
||||
--exclude-caches-all \
|
||||
--exclude-vcs \
|
||||
$pkgname-$_gittag-$_chromium
|
||||
$pkgname-$pkgver
|
||||
|
||||
zstd --auto-threads=logical --ultra --long -22 -T"${ZSTD_LIMIT:-0}" -vv $pkgname-$_gittag-$_chromium.tar -o "$SRCDEST"/$pkgname-$_gittag-$_chromium.tar.zst
|
||||
mcli cp "$SRCDEST"/$pkgname-$_gittag-$_chromium.tar.zst "$_distbucket"
|
||||
xz --memlimit=60GB -T0 -e -9 -vv -k $pkgname-$pkgver.tar
|
||||
}
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
for i in $_copium_patches; do
|
||||
case "$i" in
|
||||
*.patch)
|
||||
msg "${i%::*}"
|
||||
patch -p1 -i "$srcdir/copium/$i" || failed="$failed $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ -n "$failed" ]; then
|
||||
error "The following patches failed to apply:"
|
||||
for i in $failed; do
|
||||
printf " %s\n" "$i" >&2
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git init -q .
|
||||
git init .
|
||||
|
||||
# link to system tools
|
||||
ln -sfv /usr/bin/clang-format buildtools/linux64/clang-format
|
||||
|
@ -289,57 +251,49 @@ prepare() {
|
|||
|
||||
(
|
||||
cd electron
|
||||
git init -q .
|
||||
git init .
|
||||
git config user.email "example@example.com"
|
||||
git config user.name "example"
|
||||
git config commit.gpgsign false
|
||||
git add LICENSE
|
||||
git commit -m "init"
|
||||
git tag "$_gittag"
|
||||
git pack-refs
|
||||
yarn install --frozen-lockfile --ignore-scripts
|
||||
git tag "v$pkgver"
|
||||
# jesus christ what the fuck is wrong with you?
|
||||
touch .git/packed-refs
|
||||
yarn install --frozen-lockfile
|
||||
)
|
||||
|
||||
(
|
||||
cd third_party/node
|
||||
./update_npm_deps
|
||||
npm ci
|
||||
)
|
||||
|
||||
# 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
|
||||
# jsoncpp, re2, snappy, swiftshader-*, woff2 - requires use_custom_libcxx=false
|
||||
local chromium_use_system="
|
||||
local use_system="
|
||||
brotli
|
||||
crc32c
|
||||
dav1d
|
||||
double-conversion
|
||||
ffmpeg
|
||||
flac
|
||||
fontconfig
|
||||
freetype
|
||||
harfbuzz-ng
|
||||
icu
|
||||
jsoncpp
|
||||
libaom
|
||||
libavif
|
||||
libdrm
|
||||
libevent
|
||||
libjpeg
|
||||
libsecret
|
||||
libusb
|
||||
libwebp
|
||||
libxml
|
||||
libxslt
|
||||
openh264
|
||||
opus
|
||||
re2
|
||||
snappy
|
||||
woff2
|
||||
zlib
|
||||
zstd
|
||||
"
|
||||
|
||||
for _lib in $chromium_use_system jinja2 libjpeg_turbo unrar; do
|
||||
for _lib in $use_system libjpeg_turbo; do
|
||||
msg "Removing buildscripts for system provided $_lib"
|
||||
_lib="${_lib/swiftshader-/swiftshader/third_party/}"
|
||||
find . -type f -path "*third_party/$_lib/*" \
|
||||
\! -path "*third_party/$_lib/chromium/*" \
|
||||
\! -path "*third_party/$_lib/google/*" \
|
||||
|
@ -348,56 +302,20 @@ prepare() {
|
|||
\! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
|
||||
\! -path './third_party/harfbuzz-ng/utils/hb_scoped.h' \
|
||||
\! -path './third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h' \
|
||||
\! -regex '.*\.\(gn\|gni\|gyp\|gypi\|isolate\|py\)' \
|
||||
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
|
||||
-delete
|
||||
done
|
||||
|
||||
# llhttp - 9.x needed, 8.x in repo (2023-12-17)
|
||||
# ada - needs use_custom_libcxx=false
|
||||
local node_use_system="
|
||||
base64
|
||||
brotli
|
||||
cares
|
||||
corepack
|
||||
histogram
|
||||
nghttp2
|
||||
nghttp3
|
||||
ngtcp2
|
||||
zlib
|
||||
"
|
||||
# some of these are provided by system, e.g. brotli. some are from chromium,
|
||||
# e.g. boringssl (as openssl). some are not in use at all (corepack)
|
||||
for _lib in $node_use_system openssl; do
|
||||
msg "Removing buildscripts for $_lib"
|
||||
find . -type f -path "*third_party/electron_node/deps/$_lib/*" \
|
||||
\! -path "*third_party/electron_node/deps/$_lib/chromium/*" \
|
||||
\! -path "*third_party/electron_node/deps/$_lib/google/*" \
|
||||
\! -regex '.*\.\(gn\|gni\|gyp\|gypi\|isolate\|py\)' \
|
||||
-delete
|
||||
done
|
||||
# XXX: hack. unbundle-node.patch uses this list to switch things
|
||||
# in config.gypi. https://github.com/electron/electron/issues/40836
|
||||
echo $node_use_system > third_party/electron_node/use_system.txt
|
||||
|
||||
rm -rf third_party/electron_node/tools/inspector_protocol/jinja2
|
||||
|
||||
# https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion
|
||||
touch chrome/test/data/webui/i18n_process_css_test.html
|
||||
# Use the file at run time instead of effectively compiling it in
|
||||
sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \
|
||||
-i services/device/public/cpp/usb/BUILD.gn
|
||||
|
||||
msg "Running debundle script"
|
||||
python3 build/linux/unbundle/replace_gn_files.py --system-libraries \
|
||||
$chromium_use_system
|
||||
$use_system
|
||||
python3 third_party/libaddressinput/chromium/tools/update-strings.py
|
||||
|
||||
# flatc is used in build workflows since https://crrev.com/c/5595037,
|
||||
# but the pre-generated files are still checked-in. remove to make sure
|
||||
# they're not used. (if used, they will break builds on version mismatch.)
|
||||
# https://github.com/tensorflow/tensorflow/issues/62298
|
||||
# find third_party/tflite/ -name '*_generated.h' -delete
|
||||
|
||||
# prevent annoying errors when regenerating gni
|
||||
sed -i 's,^update_readme$,#update_readme,' \
|
||||
third_party/libvpx/generate_gni.sh
|
||||
|
@ -410,101 +328,79 @@ prepare() {
|
|||
sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
|
||||
third_party/blink/renderer/core/xml/*.cc \
|
||||
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
|
||||
third_party/libxml/chromium/*.cc
|
||||
third_party/libxml/chromium/*.cc \
|
||||
third_party/maldoca/src/maldoca/ole/oss_utils.h
|
||||
|
||||
_configure
|
||||
}
|
||||
|
||||
_configure() {
|
||||
cd "$builddir"
|
||||
msg "Configuring build"
|
||||
|
||||
case "$USE_CCACHE" in
|
||||
1)
|
||||
local cc_wrapper="ccache"
|
||||
;;
|
||||
*)
|
||||
local cc_wrapper=""
|
||||
;;
|
||||
esac
|
||||
|
||||
local maglev=true
|
||||
local symbol_level=0
|
||||
local vaapi=true
|
||||
|
||||
# shellcheck disable=2089
|
||||
local gn_config="
|
||||
clang_base_path=\"/usr\"
|
||||
custom_toolchain=\"//build/toolchain/linux/unbundle:default\"
|
||||
host_toolchain=\"//build/toolchain/linux/unbundle:default\"
|
||||
import(\"//electron/build/args/release.gn\")
|
||||
|
||||
blink_enable_generated_code_formatting=false
|
||||
cc_wrapper=\"$cc_wrapper\"
|
||||
chrome_pgo_phase=0
|
||||
clang_base_path=\"/usr\"
|
||||
clang_use_chrome_plugins=false
|
||||
clang_version=\"$_llvmver\"
|
||||
custom_toolchain=\"//build/toolchain/linux/unbundle:default\"
|
||||
disable_fieldtrial_testing_config=true
|
||||
enable_hangout_services_extension=true
|
||||
enable_nacl=false
|
||||
enable_nocompile_tests=false
|
||||
enable_stripping=false
|
||||
enable_rust=true
|
||||
enable_vr=false
|
||||
fatal_linker_warnings=false
|
||||
ffmpeg_branding=\"Chrome\"
|
||||
host_toolchain=\"//build/toolchain/linux/unbundle:default\"
|
||||
icu_use_data_file=false
|
||||
icu_use_data_file=true
|
||||
is_cfi=false
|
||||
is_clang=true
|
||||
is_component_ffmpeg=true
|
||||
is_debug=false
|
||||
is_official_build=true
|
||||
symbol_level=0
|
||||
treat_warnings_as_errors=false
|
||||
|
||||
angle_enable_gl_null=false
|
||||
build_tflite_with_xnnpack=false
|
||||
build_with_tflite_lib=false
|
||||
disable_fieldtrial_testing_config=true
|
||||
enable_hangout_services_extension=true
|
||||
enable_library_cdms=false
|
||||
enable_media_remoting=false
|
||||
enable_nacl=false
|
||||
enable_paint_preview=false
|
||||
enable_reading_list=false
|
||||
enable_remoting=false
|
||||
enable_reporting=false
|
||||
enable_screen_ai_service=false
|
||||
enable_service_discovery=false
|
||||
enable_stripping=false
|
||||
enable_vr=false
|
||||
enable_xz_extractor=false
|
||||
ozone_platform_headless=false
|
||||
|
||||
link_pulseaudio=true
|
||||
proprietary_codecs=true
|
||||
rtc_link_pipewire=true
|
||||
rtc_use_pipewire=true
|
||||
rustc_version=\"yes\"
|
||||
rust_bindgen_root=\"/usr\"
|
||||
rust_sysroot_absolute=\"/usr\"
|
||||
safe_browsing_use_unrar=false
|
||||
symbol_level=$symbol_level
|
||||
treat_warnings_as_errors=false
|
||||
use_custom_libcxx=true
|
||||
use_lld=true
|
||||
use_pulseaudio=true
|
||||
use_safe_libstdcxx=false
|
||||
use_system_libffi=true
|
||||
use_sysroot=false
|
||||
use_thin_lto=false
|
||||
use_vaapi=$vaapi
|
||||
v8_enable_maglev=$maglev
|
||||
|
||||
skia_use_dawn=false
|
||||
use_custom_libcxx=false
|
||||
use_dawn=false
|
||||
use_system_ada=false
|
||||
use_system_base64=true
|
||||
use_system_cares=true
|
||||
use_system_histogram=true
|
||||
use_gnome_keyring=false
|
||||
use_pulseaudio=true
|
||||
use_sysroot=false
|
||||
use_system_freetype=true
|
||||
use_system_harfbuzz=true
|
||||
use_system_lcms2=true
|
||||
use_system_libffi=true
|
||||
use_system_llhttp=false
|
||||
use_system_nghttp2=true
|
||||
use_system_libdrm=true
|
||||
use_system_libjpeg=true
|
||||
use_system_libwayland=true
|
||||
use_system_wayland_scanner=true
|
||||
use_system_zlib=true
|
||||
use_vaapi=true
|
||||
"
|
||||
|
||||
# shellcheck disable=2086,2090,2116
|
||||
gn gen out/Release --args="$(echo $gn_config)" \
|
||||
gn gen out/Release \
|
||||
--args="$(echo $gn_config)" \
|
||||
--export-compile-commands
|
||||
}
|
||||
|
||||
build() {
|
||||
export PATH="$PATH:/usr/lib/qt5/bin"
|
||||
|
||||
ninja -C out/Release \
|
||||
copy_node_headers \
|
||||
electron_dist_zip \
|
||||
node_gypi_headers \
|
||||
node_version_header
|
||||
|
||||
node_version_header \
|
||||
tar_headers
|
||||
}
|
||||
|
||||
package() {
|
||||
|
@ -518,7 +414,8 @@ package() {
|
|||
install -Dm755 "$srcdir"/default.conf "$pkgdir"/etc/electron/default.conf
|
||||
|
||||
mkdir -p "$pkgdir"/usr/include/electron
|
||||
cp -rv "$builddir"/out/Release/gen/node_headers "$pkgdir"/usr/include/electron
|
||||
|
||||
mv -v "$builddir"/out/Release/gen/node_headers "$pkgdir"/usr/include/electron
|
||||
ln -sv /usr/include/electron/node_headers/include/node "$pkgdir"/usr/include/electron/node
|
||||
|
||||
mkdir -p "$pkgdir"/usr/include/electron/node_headers/include/nan
|
||||
|
@ -544,35 +441,42 @@ lang() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
e2df4454f4178af859c13aadee4ea04a5b6aa202972cad625e54bc68f5b8c25e098e50d428ec9c1886c37ccf49aaaedb4c5f02fc8bdd498314ba216901932185 electron-v33.2.1-130.0.6723.127.tar.zst
|
||||
6138b3dbf3903c78f4ca1ed5a6c3c3c485471ded31976010484ce8893d03953df2b8f066a4fe84bbde5ae7ef9bbff664ef917e247b2e95dd471de40f2774d7d0 copium-129.1.tar.gz
|
||||
29bb685e03356a77df5fd347cdf55194cc8b3265c421cc76e54d64edefc329dbcb052deb26b22e8f587ce68456876c071de1b7d258dd0fcc6ee66c875ec4a020 chromium-revert-drop-of-system-java.patch
|
||||
53b7cdee8f7bfb4c9371cb385c473e34ed3d8ac7efaa43c0af061107560be30d8747b07fb0b16c01079b8c770f2c721bb5a8081313b7c126856ea4078a74da2a compiler.patch
|
||||
4057cc78f10bfd64092bc35a373869abb1d68b880cdbca70422f39ffd78a929c19c7728d4d4c40709aaba25581148a93ae5343e724849fd35323062ed68753fa disable-dns_config_service.patch
|
||||
2470904846e3adde2c9506f9e78220daca0932320b628dd3d427bf2b7c17a8f7880cb97e787b046c28de7aca642e1a8d30824d6049905976da77e7473baa64da disable-failing-tests.patch
|
||||
5fc5c012c1db6cf1ba82f38c6f3f4f5ca3a209e47ac708a74de379b018e0649b7694877c9571ef79002dde875ffc07b458a3355425f1c01867f362c66c2bc1bf fc-cache-version.patch
|
||||
b24563e9a738c00fce7ff2fbdee3d7c024d9125d7c74d9ab90af6bdb16f7ec8419f2c8aa78c0640f6d5d81c17dc2c673a194401d354f466749672729b48ed068 fix-opus.patch
|
||||
c63dee5044353eb306a39ca1526158c0f003ab310ecb03d1c368dc2a979454590c84b8d3c15484517d5e66bb8add9b231da9abbadf2e50850abd72ac1345c4ab fstatat-32bit.patch
|
||||
33ee60863cc438ef57ffef92ba4cf67a856a5ffc16138bce241bcf87e47b15154aa86918e793c26f7ec4dc62a445257ad5673ed7001daf22c4043cf6cc57da7f gdbinit.patch
|
||||
36a764fa73443b47d38050b52dbe6ad2fa8d67201ff4ccdbad13b52308ef165ca046aac6f9609fe35890a6485f0f3e672e78cc41e3e44f3cdc7f145e540524e8 generic-sensor-include.patch
|
||||
99bcc7dd485b404a90c606a96addab1d900852128d44fb8cea8acc7303189ef87c89a7b0e749fd0e10c5ef5f6bf1fadeb5c16a34503cab6a59938ce2653d887e musl-auxv.patch
|
||||
51f1959bd622af26a1c3a1f4b0ad9a5bfa461057aa4cf9960c568dddf8ac47d55989c277f5d5ab5db040a04c54925a531af7a1cc767559218b408eaa6bdd7577 musl-sandbox.patch
|
||||
e7163ac5810ac85366cef2447412287c856e3d67c6b77f219a6e5a418b1965b98e449c409424ad0704a5bded9355dd0aec3dc4585918ce5a2ab36c079707afe2 musl-tid-caching.patch
|
||||
92eb002718026611f5542362ad69b67f0a398ff71b3fca5c05d55cb5c6f9f29334e5e127bb4860cfaa3fba0f0d4c901e2b98808217e7dc02e254a64a5c9521aa musl-v8-monotonic-pthread-cont_timedwait.patch
|
||||
a250cff50d282b02ce0f28880d0a2b4fb8e7df51bc072bfeeddc561c29a7c76453dbcbc7b17b82966a7b30a31409d2555720d1dcf963e1b3fb8a2a06a6abcf46 no-execinfo.patch
|
||||
0b41aeb6b212f9c3f61aa0a8d3085c9e865a2e68f3270ceec2376aab67f337ac46eaea7da36d3fd7219e2a1cb731b7aa2d3fb619a374d2b7653976b9f4f384bb no-mallinfo.patch
|
||||
e4c4e5bc6f828f9c883dd418c0ba01887949c29c311f76206a1ec29f620b0c0ba0452949dc2778a9c46ea066405857536964a36436a68eecf7da7952736333cf no-res-ninit-nclose.patch
|
||||
6dc4d8dc92e685dace62265a1ddb3aebc558aed54d20ff6d36b030be0c48d7e84662326c31363612492574d9a03c62653cdc21a60995b97dee1d75cae86a9f9b no-sandbox-settls.patch
|
||||
f2b08538ff57c50b3772a07ca91845f9d45f4a5112f608b6192d4fb5d7be48f478c0c36194d95ab7bbf933e0278e5c6d578619d8643895cdc40386eebc5b975f partalloc-no-tagging-arm64.patch
|
||||
03f829a2da633533ef3fd0f287f5ec602d936a97a98b53cd2415553c2537ae9d571f35397ca7c9fb3f4b0806c300e3b189569f8d979ca132e1a2a4dae7206396 pvalloc.patch
|
||||
e48693e6b7aeebf69a5acbf80d9a35defe4c23835121dfeb58b051ac7c527e758a41004f4d193274fe1b01c0bfb1dbc77b09cb6a404a3fdee507a2918afb0edb temp-failure-retry.patch
|
||||
914ccf649d7771f19f209ab97f99c481aebc6f66174d68e8b539f6ad4a70bc8cb0fae2df6dadbf0415958ffb3574c420fe029079dcce45f5e5add4db2e903566 yes-musl.patch
|
||||
465107da7818b237e3c144a318ab80c3c9343b51ed38b8971ef204692d13346929becbe94cefad4c153788d3a200642143584d5ca070f6304e768ba2139c19ec electron_icon.patch
|
||||
e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e1005b644550331f6b8500177aa7e79bcb3750d3c1ceb76c3 electron_python-jinja-3.10.patch
|
||||
2aa340854316f1284217c0ca17cbf44953684ad6c7da90815117df30928612eb9fb9ffb734b948dfc309cd25d1a67cd57f77aac2d052a3dd9aca07a3a58cbb30 electron_webpack-hash.patch
|
||||
57aa81d46b9cc931092d9d9b3cb4a9859f86c183a236bc5cca6abbaeca86b82bf1b537dd9cb3412114fa4e86087c0022ee3f7e88de974d29b309e9d1714df7a5 electron_unbundle-node.patch
|
||||
1b35edcf0b41e39e20c4d64dbb978bcaab8036f2fe839930709b269c50cb1321458a15b4d0013246f9e03f58f250a1e3a57ea910db1aa0adbd602a6a11ad33b9 electron_system-zlib-headers.patch
|
||||
e8ea87c547546011c4c8fc2de30e4f443b85cd4cfcff92808e2521d2f9ada03feefb8e1b0cf0f6b460919c146e56ef8d5ad4bb5e2461cc5247c30d92eb4d068e default.conf
|
||||
d2a6de4bc851de81d9f19fdb46b023abd77e27acc33bff8fc7cec7b84d0aeda3008e00289444f4f2423b20efcc72e4c3036f809fb6ce1ad9828983bee4721ff2 electron-21.4.2.tar.xz
|
||||
f19ba0c0f542115e6f53019659df256471e811a23d2f37569c9d4dfa265c0c1ace3e62c74d7507f82e6b7b4152c704e651810a00616f8f531592b14bb2af01d9 angle-wayland-include.patch
|
||||
252b37a2ecc5e7a25385943045f426dc2e30991b28d206ceaff1be7fd8ffeeb024310a8fca6b3e69a4b1c57db535d51c570935351053525f393682d5ecd0f9a9 canonicalize-file-name.patch
|
||||
ac0a80174f95d733f33ddc06fc88cdcf7db0973378c28d8544dc9c19e2dabeac47f91c99b3e7384f650b3405554a9e222543f0860b6acc407c078a8c9180d727 chromium-VirtualCursor-standard-layout.patch
|
||||
c4654d5b23c6f5d9502507e534fe1951d6749c62251e49b6adfe10d1569431e7f7a5a6fa5ff09ec30984415ced27a5e20985df8c91295de34af3c84557fa5b91 chromium-revert-drop-of-system-java.patch
|
||||
d2b5b0396173367fcf1804aaee8e7fbefce9c63ac2a91c3a1ede759cb85e567317a57e4d4f82d3ca021682fb7856e15c074276a03eda946d9b28e1cb706b07ad chromium-use-alpine-target.patch
|
||||
ec04bf43278a19d4bb090eddd636ad7093c7e757cb2ffa1875971e0709761174790e109b9be03a8e299d4077a87fbd8dabd301b8754bb6fe53c055396e8af556 credentials-sys-types-header.patch
|
||||
4ab8261bf95547b10df44e4d528c06a64c33602c10a1e09d531190dc8947ba6ef9e69145405b801cd364707570f791fee6d93e3bf5d57831f5a85212ddf01729 default-pthread-stacksize.patch
|
||||
f011f66e5aae5a6f0d440492ee9400878b47b66214c1bc8dc1477fdd07ad0a508cdbb74415e55e27085c4e61e112e7c2ae2edfa217f2fb387e13097b24cb17b1 dns-resolver.patch
|
||||
9d1edb1e0624ee61825e3af23fbb8c5dbc09d2b92d7769d19f8ca618edae8de8a3e051fedf4ad92c230e1373dc8495922c46971aef93a580c04ad80bc33516c0 fix-crashpad.patch
|
||||
8bebf4a9d5225c6e47edc5b07c4b97be24a45cc221f49632836915ceeb4ecb69b7f79a31ea7f82171cde3443f45fec541f409892542cf1014e81aa6acd01566d fix-missing-cstdint-include-musl.patch
|
||||
efe97b9dd2ec5965fa0cdf1b2a3c01253835c2df710da7ea105c4ce008c11f9caaf8b4321736a2b91f06d8d61972c08e225b16509dc05176a2c39337688ad5b9 fix-narrowing-cast.patch
|
||||
cf73cbe5bf19d6a22157fb7aafb43f326885e852fc6292728f4ed1cd145d07ba5af51b6ec808095136cd406478aaa427ee1b9611c855fbd87976e1a91e1609bd gdbinit.patch
|
||||
fa2637f92f851614347e296fbab744af2c5d7edcbb444aeb4a5d3182a8ec2549593d75e717d7e78e9b2a7257e693b48fc88c149c1591052d7ae802f4fda0a775 jsoncpp.patch
|
||||
e0afb7066c2cb41aa461feb9e45e571517229deab9d06186490b527783a7ba826a4d67d3a14a33a164eea64fa561eb5b93a1d4dfd0acc2e7a9eb038e6ee273db memory-tagging-arm64.patch
|
||||
fdf8ba7badbd5b61d415ad9d49c66b6ef0a6a40ec95a47e13af48711fe1bd3a5574e987929a3c486cdd02c239863b8517e7f834cecd30f156479e43a9441a18e musl-sandbox.patch
|
||||
85c2842a251a3f8aa59c701ca5f2ce2f5d49b5c7e4773d5387dc597447fb47c9d876f5fb308576686c9a8abc7e35cfc172b6cdfb9f5f1dc1509329e3590b38d8 musl-tid-caching.patch
|
||||
d2825aa9525fcbb53791f0ef2502c0f444a9d668f09db6ae4987b94dc4d0e6f1cf58a6e9e772ab11c896a469ca32242feb3ad9c9dbb20df9316cd74151ab0ec9 musl-v8-monotonic-pthread-cont_timedwait.patch
|
||||
ebd5cf28277853dc5e984961c370ab4a6331488ae7cff45083fea0470262f56486664bc9bd7947fdd796c8635e479633c4d08cfd89270c0310f3ec21cc6642d2 no-execinfo.patch
|
||||
f0bf97a80e663041e33cb0468fd8c47c5f351d6de61059ce1f359a813c40db8e247eaef294c3f562c0a8204e4f1992a918f1d879b1da9891027500e21f482b79 no-glibc-version.patch
|
||||
10ae0f74a4c1db899b571508100af63e5af8d0f7c41a37fc9b7987cbf9f27f4c55894c02d6820957d7522a528929059f562f96c2f05fd6509f60c6c71d9d8256 no-mallinfo.patch
|
||||
a5aa82c30402773903db1d3876208132fdef175f56ebc0ce1ee4c104a98d498d709c5565c4381736c04c238203b3c8a9cd7a5b5e69876f6afb65d7fc48df23d0 no-res-ninit-nclose.patch
|
||||
2c0d7239728d98c0564ad7b81d6d243e58e56de58a21357fa30c39e333fc29c1aa98529c6e1b6fa7694169b513391ca27fa542f69b483bbde644cc2ed739bbdd no-stat-redefine.patch
|
||||
5e9f6279698195467e3b506cea9be0d97ec2d970672b1b12d3d7880eec4f6f53b8f92942dc3fc6738b02889382534ce0f4310a1f94b33e21f8fbc70b85640b81 nullptr-t.patch
|
||||
ad563e29ac7d83c203f5af966c4ed3ebdeb5c997835a45fb28ecde08dde5231d0a775fb413f44867af28724504c42316b27d5a6aaa602057642dcbdf7ec20a7a partition-atfork.patch
|
||||
65aa0c7c9909a803e59b88ecb6d79c4db491079f3324f7bd02ee485a7bb7a81674b8f0591dab766c97070a401116db7f629fee36af7416a0fefc38f4ae0ad13d py3.11.patch
|
||||
083ed731e0a3788f2cb04a3035022fbb3e4db99eba01516ea233ea3229f7d898943d8115463a48655ac83eb3cc7a48aceb8bf17c68930a5a1d83b1af95dfade8 quiche-arena-size.patch
|
||||
3cf36b269e9fcfa74975d267bbf31bef68b533a51672e5ed81ae511a70f28a45206168af370961a3dab5695ddaff41cb8839c8c2fa53f22a9f3c88d207cb2996 scoped-file-no-close.patch
|
||||
f2f7673f9e793dfbf4456ff8c2be785ea551c36bd512572245d04bf44da08b0133e98d85a1ffd51158009754c83121cad48d755cbc153735df2d2e73233856c0 temp-failure-retry.patch
|
||||
1d4e8c6e65205e6b72af47b9a2fa6f96aaada9b7d5a74f4e11a345a885df3078b523d02aaf8e9dac3aa30d72bbbd07cd6dc7edcf44fb9ae57a7f81251c398f65 wtf-stacksize.patch
|
||||
905565c10f5e5600e7d4db965c892cc45009a258e9995da958974d838ace469e1db1019195307e8807860d5b55ba6bfeea478b1f39a9b99e82c619b2816a1a22 icon.patch
|
||||
e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e1005b644550331f6b8500177aa7e79bcb3750d3c1ceb76c3 python-jinja-3.10.patch
|
||||
26a8e4040e69f335a7104f42d012b9d933a40985b33a7be02add27a801c097c5a2be4c6e69faf9175ce8945210ae4c5592ecad2123ccff2beee5473194a765e3 system-node.patch
|
||||
71571b15cf8bd6259b7fd22bea0e46b64890f3db776365de33fe539f26ce9ef99459e05c3dde9434c3657225bc67160abc915acd93033cb487c770c6a2a5975f vector-const.patch
|
||||
2aa340854316f1284217c0ca17cbf44953684ad6c7da90815117df30928612eb9fb9ffb734b948dfc309cd25d1a67cd57f77aac2d052a3dd9aca07a3a58cbb30 webpack-hash.patch
|
||||
08460b15037511a4e5469ceac6ae5dd4db4c8cb87c129aaaf40ba58b16c60b8a307ffdd85805efead235758abed09ec31db1ef4cf9159f7b9acdcee3031bc96c default.conf
|
||||
191559fc7aa1ea0353c6fb0cc321ee1d5803a0e44848c8be941cfab96277b0de6a59962d373e2a2a1686c8f9be2bcf2d2f33706759a339a959e297d3f7fda463 electron.desktop
|
||||
5f7ba5ad005f196facec1c0f26108356b64cafb1e5cfa462ff714a33b8a4c757ac00bfcb080da09eb5b65032f8eb245d9676a61ec554515d125ed63912708648 electron-launcher.sh
|
||||
03750694e5e0b66f084c6e43135e60be15abb059e23486346ee4352dcc236984f2f35467b47f2b2ad46c98c22091cc2b978de8e73680febadba169d960f13f9f electron-launcher.sh
|
||||
"
|
||||
|
|
39
backports/electron/angle-wayland-include.patch
Normal file
39
backports/electron/angle-wayland-include.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
Patch-Source: https://github.com/archlinux/svntogit-packages/blob/a353833a5a731abfaa465b658f61894a516aa49b/trunk/angle-wayland-include-protocol.patch
|
||||
diff -upr third_party/angle.orig/BUILD.gn third_party/angle/BUILD.gn
|
||||
--- a/third_party/angle.orig/BUILD.gn 2022-08-17 19:38:11.000000000 +0000
|
||||
+++ b/third_party/angle/BUILD.gn 2022-08-18 11:04:09.061751111 +0000
|
||||
@@ -489,6 +489,12 @@ config("angle_vulkan_wayland_config") {
|
||||
if (angle_enable_vulkan && angle_use_wayland &&
|
||||
defined(vulkan_wayland_include_dirs)) {
|
||||
include_dirs = vulkan_wayland_include_dirs
|
||||
+ } else if (angle_enable_vulkan && angle_use_wayland) {
|
||||
+ include_dirs = [
|
||||
+ "$wayland_gn_dir/src/src",
|
||||
+ "$wayland_gn_dir/include/src",
|
||||
+ "$wayland_gn_dir/include/protocol",
|
||||
+ ]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1073,6 +1079,7 @@ if (angle_use_wayland) {
|
||||
include_dirs = [
|
||||
"$wayland_dir/egl",
|
||||
"$wayland_dir/src",
|
||||
+ "$wayland_gn_dir/include/protocol",
|
||||
]
|
||||
}
|
||||
|
||||
diff -upr third_party/angle.orig/src/third_party/volk/BUILD.gn third_party/angle/src/third_party/volk/BUILD.gn
|
||||
--- a/third_party/angle.orig/src/third_party/volk/BUILD.gn 2022-08-17 19:38:12.000000000 +0000
|
||||
+++ b/third_party/angle/src/third_party/volk/BUILD.gn 2022-08-18 11:04:36.499828006 +0000
|
||||
@@ -21,6 +21,9 @@ source_set("volk") {
|
||||
configs += [ "$angle_root:angle_no_cfi_icall" ]
|
||||
public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ]
|
||||
if (angle_use_wayland) {
|
||||
- include_dirs = [ "$wayland_dir/src" ]
|
||||
+ include_dirs = [
|
||||
+ "$wayland_dir/src",
|
||||
+ "$wayland_gn_dir/include/protocol",
|
||||
+ ]
|
||||
}
|
||||
}
|
13
backports/electron/canonicalize-file-name.patch
Normal file
13
backports/electron/canonicalize-file-name.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
no canonicalize_file_name on musl. funnily, the file using this says this is
|
||||
not portable, but avoids the nonportability of realpath(path, NULL);
|
||||
--- a/third_party/nasm/config/config-linux.h
|
||||
+++ b/third_party/nasm/config/config-linux.h
|
||||
@@ -139,7 +139,7 @@
|
||||
#define HAVE_ACCESS 1
|
||||
|
||||
/* Define to 1 if you have the `canonicalize_file_name' function. */
|
||||
-#define HAVE_CANONICALIZE_FILE_NAME 1
|
||||
+/* #define HAVE_CANONICALIZE_FILE_NAME 1 */
|
||||
|
||||
/* Define to 1 if you have the `cpu_to_le16' intrinsic function. */
|
||||
/* #undef HAVE_CPU_TO_LE16 */
|
217
backports/electron/chromium-VirtualCursor-standard-layout.patch
Normal file
217
backports/electron/chromium-VirtualCursor-standard-layout.patch
Normal file
|
@ -0,0 +1,217 @@
|
|||
needed for libstdc++11 + clang only
|
||||
diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc
|
||||
index 9ecaafe..839318a 100644
|
||||
--- a/sql/recover_module/btree.cc
|
||||
+++ b/sql/recover_module/btree.cc
|
||||
@@ -135,16 +135,25 @@
|
||||
"Move the destructor to the .cc file if it's non-trival");
|
||||
#endif // !DCHECK_IS_ON()
|
||||
|
||||
-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept
|
||||
- : page_id_(db_reader->page_id()),
|
||||
- db_reader_(db_reader),
|
||||
- cell_count_(ComputeCellCount(db_reader)),
|
||||
- next_read_index_(0),
|
||||
- last_record_size_(0) {
|
||||
+void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) {
|
||||
+ DCHECK(db_reader);
|
||||
DCHECK(IsOnValidPage(db_reader));
|
||||
+ page_id_ = db_reader->page_id();
|
||||
+ db_reader_ = db_reader;
|
||||
+ cell_count_ = ComputeCellCount(db_reader);
|
||||
+ next_read_index_ = 0;
|
||||
+ last_record_size_ = 0;
|
||||
DCHECK(DatabasePageReader::IsValidPageId(page_id_));
|
||||
}
|
||||
|
||||
+void LeafPageDecoder::Reset() {
|
||||
+ db_reader_ = nullptr;
|
||||
+ page_id_ = 0;
|
||||
+ cell_count_ = 0;
|
||||
+ next_read_index_ = 0;
|
||||
+ last_record_size_ = 0;
|
||||
+}
|
||||
+
|
||||
bool LeafPageDecoder::TryAdvance() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
DCHECK(CanAdvance());
|
||||
diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h
|
||||
index d76d076..33114b0 100644
|
||||
--- a/sql/recover_module/btree.h
|
||||
+++ b/sql/recover_module/btree.h
|
||||
@@ -102,7 +102,7 @@
|
||||
//
|
||||
// |db_reader| must have been used to read an inner page of a table B-tree.
|
||||
// |db_reader| must outlive this instance.
|
||||
- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept;
|
||||
+ explicit LeafPageDecoder() noexcept = default;
|
||||
~LeafPageDecoder() noexcept = default;
|
||||
|
||||
LeafPageDecoder(const LeafPageDecoder&) = delete;
|
||||
@@ -150,6 +150,15 @@
|
||||
// read as long as CanAdvance() returns true.
|
||||
bool TryAdvance();
|
||||
|
||||
+ // Initialize with DatabasePageReader
|
||||
+ void Initialize(DatabasePageReader* db_reader);
|
||||
+
|
||||
+ // Reset internal DatabasePageReader
|
||||
+ void Reset();
|
||||
+
|
||||
+ // True if DatabasePageReader is valid
|
||||
+ bool IsValid() { return (db_reader_ != nullptr); }
|
||||
+
|
||||
// True if the given reader may point to an inner page in a table B-tree.
|
||||
//
|
||||
// The last ReadPage() call on |db_reader| must have succeeded.
|
||||
@@ -163,14 +172,14 @@
|
||||
static int ComputeCellCount(DatabasePageReader* db_reader);
|
||||
|
||||
// The number of the B-tree page this reader is reading.
|
||||
- const int64_t page_id_;
|
||||
+ int64_t page_id_;
|
||||
// Used to read the tree page.
|
||||
//
|
||||
// Raw pointer usage is acceptable because this instance's owner is expected
|
||||
// to ensure that the DatabasePageReader outlives this.
|
||||
- DatabasePageReader* const db_reader_;
|
||||
+ DatabasePageReader* db_reader_;
|
||||
// Caches the ComputeCellCount() value for this reader's page.
|
||||
- const int cell_count_ = ComputeCellCount(db_reader_);
|
||||
+ int cell_count_;
|
||||
|
||||
// The reader's cursor state.
|
||||
//
|
||||
diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc
|
||||
index 0029ff9..42548bc 100644
|
||||
--- a/sql/recover_module/cursor.cc
|
||||
+++ b/sql/recover_module/cursor.cc
|
||||
@@ -26,7 +26,7 @@
|
||||
int VirtualCursor::First() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
inner_decoders_.clear();
|
||||
- leaf_decoder_ = nullptr;
|
||||
+ leaf_decoder_.Reset();
|
||||
|
||||
AppendPageDecoder(table_->root_page_id());
|
||||
return Next();
|
||||
@@ -36,18 +36,18 @@
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
record_reader_.Reset();
|
||||
|
||||
- while (!inner_decoders_.empty() || leaf_decoder_.get()) {
|
||||
- if (leaf_decoder_.get()) {
|
||||
- if (!leaf_decoder_->CanAdvance()) {
|
||||
+ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) {
|
||||
+ if (leaf_decoder_.IsValid()) {
|
||||
+ if (!leaf_decoder_.CanAdvance()) {
|
||||
// The leaf has been exhausted. Remove it from the DFS stack.
|
||||
- leaf_decoder_ = nullptr;
|
||||
+ leaf_decoder_.Reset();
|
||||
continue;
|
||||
}
|
||||
- if (!leaf_decoder_->TryAdvance())
|
||||
+ if (!leaf_decoder_.TryAdvance())
|
||||
continue;
|
||||
|
||||
- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(),
|
||||
- leaf_decoder_->last_record_offset())) {
|
||||
+ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(),
|
||||
+ leaf_decoder_.last_record_offset())) {
|
||||
continue;
|
||||
}
|
||||
if (!record_reader_.Initialize())
|
||||
@@ -99,13 +99,13 @@
|
||||
int64_t VirtualCursor::RowId() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
DCHECK(record_reader_.IsInitialized());
|
||||
- DCHECK(leaf_decoder_.get());
|
||||
- return leaf_decoder_->last_record_rowid();
|
||||
+ DCHECK(leaf_decoder_.IsValid());
|
||||
+ return leaf_decoder_.last_record_rowid();
|
||||
}
|
||||
|
||||
void VirtualCursor::AppendPageDecoder(int page_id) {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
- DCHECK(leaf_decoder_.get() == nullptr)
|
||||
+ DCHECK(!leaf_decoder_.IsValid())
|
||||
<< __func__
|
||||
<< " must only be called when the current path has no leaf decoder";
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
return;
|
||||
|
||||
if (LeafPageDecoder::IsOnValidPage(&db_reader_)) {
|
||||
- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_);
|
||||
+ leaf_decoder_.Initialize(&db_reader_);
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h
|
||||
index afcd690..b15c31d 100644
|
||||
--- a/sql/recover_module/cursor.h
|
||||
+++ b/sql/recover_module/cursor.h
|
||||
@@ -129,7 +129,7 @@
|
||||
std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_;
|
||||
|
||||
// Decodes the leaf page containing records.
|
||||
- std::unique_ptr<LeafPageDecoder> leaf_decoder_;
|
||||
+ LeafPageDecoder leaf_decoder_;
|
||||
|
||||
SEQUENCE_CHECKER(sequence_checker_);
|
||||
};
|
||||
diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc
|
||||
index 58e75de..5fe9620 100644
|
||||
--- a/sql/recover_module/pager.cc
|
||||
+++ b/sql/recover_module/pager.cc
|
||||
@@ -23,8 +23,7 @@
|
||||
"ints are not appropriate for representing page IDs");
|
||||
|
||||
DatabasePageReader::DatabasePageReader(VirtualTable* table)
|
||||
- : page_data_(std::make_unique<uint8_t[]>(table->page_size())),
|
||||
- table_(table) {
|
||||
+ : page_data_(), table_(table) {
|
||||
DCHECK(table != nullptr);
|
||||
DCHECK(IsValidPageSize(table->page_size()));
|
||||
}
|
||||
@@ -57,8 +56,8 @@
|
||||
std::numeric_limits<int64_t>::max(),
|
||||
"The |read_offset| computation above may overflow");
|
||||
|
||||
- int sqlite_status =
|
||||
- RawRead(sqlite_file, read_size, read_offset, page_data_.get());
|
||||
+ int sqlite_status = RawRead(sqlite_file, read_size, read_offset,
|
||||
+ const_cast<uint8_t*>(page_data_.data()));
|
||||
|
||||
// |page_id_| needs to be set to kInvalidPageId if the read failed.
|
||||
// Otherwise, future ReadPage() calls with the previous |page_id_| value
|
||||
diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h
|
||||
index 0e388ddc..99314e3 100644
|
||||
--- a/sql/recover_module/pager.h
|
||||
+++ b/sql/recover_module/pager.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef SQL_RECOVER_MODULE_PAGER_H_
|
||||
#define SQL_RECOVER_MODULE_PAGER_H_
|
||||
|
||||
+#include <array>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
||||
@@ -70,7 +71,7 @@
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
DCHECK_NE(page_id_, kInvalidPageId)
|
||||
<< "Successful ReadPage() required before accessing pager state";
|
||||
- return page_data_.get();
|
||||
+ return page_data_.data();
|
||||
}
|
||||
|
||||
// The number of bytes in the page read by the last ReadPage() call.
|
||||
@@ -137,7 +138,7 @@
|
||||
int page_id_ = kInvalidPageId;
|
||||
// Stores the bytes of the last page successfully read by ReadPage().
|
||||
// The content is undefined if the last call to ReadPage() did not succeed.
|
||||
- const std::unique_ptr<uint8_t[]> page_data_;
|
||||
+ const std::array<uint8_t, kMaxPageSize> page_data_;
|
||||
// Raw pointer usage is acceptable because this instance's owner is expected
|
||||
// to ensure that the VirtualTable outlives this.
|
||||
VirtualTable* const table_;
|
|
@ -1,6 +1,4 @@
|
|||
This was dropped for some reason in 6951c37cecd05979b232a39e5c10e6346a0f74ef
|
||||
allows using /usr/bin/java instead of a downloaded one (that doesn't work on musl)
|
||||
--
|
||||
--- a/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200
|
||||
+++ b/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200
|
||||
@@ -13,8 +13,9 @@
|
||||
|
|
13
backports/electron/chromium-use-alpine-target.patch
Normal file
13
backports/electron/chromium-use-alpine-target.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
--- a/build/config/compiler/BUILD.gn
|
||||
+++ b/build/config/compiler/BUILD.gn
|
||||
@@ -917,8 +917,8 @@
|
||||
} else if (current_cpu == "arm64") {
|
||||
if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
|
||||
!(is_chromeos_lacros && is_chromeos_device)) {
|
||||
- cflags += [ "--target=aarch64-linux-gnu" ]
|
||||
- ldflags += [ "--target=aarch64-linux-gnu" ]
|
||||
+ cflags += [ "--target=aarch64-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=aarch64-alpine-linux-musl" ]
|
||||
}
|
||||
if (is_android) {
|
||||
# Outline atomics crash on Exynos 9810. http://crbug.com/1272795
|
|
@ -1,135 +0,0 @@
|
|||
--- ./build/config/compiler/BUILD.gn.orig
|
||||
+++ ./build/config/compiler/BUILD.gn
|
||||
@@ -568,24 +568,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- # TODO(crbug.com/40283598): This causes binary size growth and potentially
|
||||
- # other problems.
|
||||
- # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version.
|
||||
- if (default_toolchain != "//build/toolchain/cros:target" &&
|
||||
- !llvm_android_mainline) {
|
||||
- cflags += [
|
||||
- "-mllvm",
|
||||
- "-split-threshold-for-reg-with-hint=0",
|
||||
- ]
|
||||
- if (use_thin_lto && is_a_target_toolchain) {
|
||||
- if (is_win) {
|
||||
- ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ]
|
||||
- } else {
|
||||
- ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ]
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
# TODO(crbug.com/40192287): Investigate why/if this should be needed.
|
||||
if (is_win) {
|
||||
cflags += [ "/clang:-ffp-contract=off" ]
|
||||
@@ -998,17 +980,6 @@
|
||||
# `-nodefaultlibs` from the linker invocation from Rust, which would be used
|
||||
# to compile dylibs on Android, such as for constructing unit test APKs.
|
||||
"-Cdefault-linker-libraries",
|
||||
-
|
||||
- # To make Rust .d files compatible with ninja
|
||||
- "-Zdep-info-omit-d-target",
|
||||
-
|
||||
- # If a macro panics during compilation, show which macro and where it is
|
||||
- # defined.
|
||||
- "-Zmacro-backtrace",
|
||||
-
|
||||
- # For deterministic builds, keep the local machine's current working
|
||||
- # directory from appearing in build outputs.
|
||||
- "-Zremap-cwd-prefix=.",
|
||||
]
|
||||
|
||||
if (!is_win || force_rustc_color_output) {
|
||||
@@ -1175,8 +1146,8 @@
|
||||
} else if (current_cpu == "arm") {
|
||||
if (is_clang && !is_android && !is_nacl &&
|
||||
!(is_chromeos_lacros && is_chromeos_device)) {
|
||||
- cflags += [ "--target=arm-linux-gnueabihf" ]
|
||||
- ldflags += [ "--target=arm-linux-gnueabihf" ]
|
||||
+ cflags += [ "--target=armv7-alpine-linux-musleabihf" ]
|
||||
+ ldflags += [ "--target=armv7-alpine-linux-musleabihf" ]
|
||||
}
|
||||
if (!is_nacl) {
|
||||
cflags += [
|
||||
@@ -1190,8 +1161,8 @@
|
||||
} else if (current_cpu == "arm64") {
|
||||
if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
|
||||
!(is_chromeos_lacros && is_chromeos_device)) {
|
||||
- cflags += [ "--target=aarch64-linux-gnu" ]
|
||||
- ldflags += [ "--target=aarch64-linux-gnu" ]
|
||||
+ cflags += [ "--target=aarch64-alpine-linux-musl" ]
|
||||
+ ldflags += [ "--target=aarch64-alpine-linux-musl" ]
|
||||
}
|
||||
} else if (current_cpu == "mipsel" && !is_nacl) {
|
||||
ldflags += [ "-Wl,--hash-style=sysv" ]
|
||||
@@ -1982,7 +1953,7 @@
|
||||
defines = [ "_HAS_NODISCARD" ]
|
||||
}
|
||||
} else {
|
||||
- cflags = [ "-Wall" ]
|
||||
+ cflags = []
|
||||
if (is_clang) {
|
||||
# Enable extra warnings for chromium_code when we control the compiler.
|
||||
cflags += [ "-Wextra" ]
|
||||
--- ./build/config/rust.gni.orig
|
||||
+++ ./build/config/rust.gni
|
||||
@@ -185,11 +185,11 @@
|
||||
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"
|
||||
} else if (current_cpu == "x86") {
|
||||
- rust_abi_target = "i686-unknown-linux-gnu"
|
||||
+ rust_abi_target = "i586-alpine-linux-musl"
|
||||
} else if (current_cpu == "x64") {
|
||||
- rust_abi_target = "x86_64-unknown-linux-gnu"
|
||||
+ rust_abi_target = "x86_64-alpine-linux-musl"
|
||||
} else if (current_cpu == "arm") {
|
||||
if (arm_float_abi == "hard") {
|
||||
float_suffix = "hf"
|
||||
@@ -198,15 +198,15 @@
|
||||
}
|
||||
if (arm_arch == "armv7-a" || arm_arch == "armv7") {
|
||||
# No way to inform Rust about the -a suffix.
|
||||
- rust_abi_target = "armv7-unknown-linux-gnueabi" + float_suffix
|
||||
+ rust_abi_target = "armv7-alpine-linux-musleabi" + float_suffix
|
||||
} else {
|
||||
- rust_abi_target = "arm-unknown-linux-gnueabi" + float_suffix
|
||||
+ rust_abi_target = "armv6-alpine-linux-musleabi" + float_suffix
|
||||
}
|
||||
} else if (current_cpu == "riscv64") {
|
||||
- rust_abi_target = "riscv64gc-unknown-linux-gnu"
|
||||
+ rust_abi_target = "riscv64-alpine-linux-musl"
|
||||
} else {
|
||||
# Best guess for other future platforms.
|
||||
- rust_abi_target = current_cpu + "-unknown-linux-gnu"
|
||||
+ rust_abi_target = current_cpu + "-alpine-linux-musl"
|
||||
}
|
||||
} else if (is_android) {
|
||||
import("//build/config/android/abi.gni")
|
||||
--- ./build/config/clang/BUILD.gn.orig
|
||||
+++ ./build/config/clang/BUILD.gn
|
||||
@@ -128,14 +128,15 @@
|
||||
} else if (is_apple) {
|
||||
_dir = "darwin"
|
||||
} else if (is_linux || is_chromeos) {
|
||||
+ _dir = "linux"
|
||||
if (current_cpu == "x64") {
|
||||
- _dir = "x86_64-unknown-linux-gnu"
|
||||
+ _suffix = "-x86_64"
|
||||
} else if (current_cpu == "x86") {
|
||||
- _dir = "i386-unknown-linux-gnu"
|
||||
+ _suffix = "-i386"
|
||||
} else if (current_cpu == "arm") {
|
||||
- _dir = "armv7-unknown-linux-gnueabihf"
|
||||
+ _suffix = "-armhf"
|
||||
} else if (current_cpu == "arm64") {
|
||||
- _dir = "aarch64-unknown-linux-gnu"
|
||||
+ _suffix = "-aarch64"
|
||||
} else {
|
||||
assert(false) # Unhandled cpu type
|
||||
}
|
11
backports/electron/credentials-sys-types-header.patch
Normal file
11
backports/electron/credentials-sys-types-header.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/sandbox/linux/services/credentials.h
|
||||
+++ b/sandbox/linux/services/credentials.h
|
||||
@@ -14,6 +14,8 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
+#include <sys/types.h>
|
||||
+
|
||||
#include "sandbox/linux/system_headers/capability.h"
|
||||
#include "sandbox/sandbox_export.h"
|
||||
|
45
backports/electron/default-pthread-stacksize.patch
Normal file
45
backports/electron/default-pthread-stacksize.patch
Normal file
|
@ -0,0 +1,45 @@
|
|||
--- a/base/threading/platform_thread_linux.cc
|
||||
+++ b/base/threading/platform_thread_linux.cc
|
||||
@@ -186,7 +186,8 @@
|
||||
|
||||
size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) {
|
||||
#if !defined(THREAD_SANITIZER)
|
||||
- return 0;
|
||||
+ // use 2mb to avoid running out of space. This is what android uses
|
||||
+ return 2 * (1 << 20);
|
||||
#else
|
||||
// ThreadSanitizer bloats the stack heavily. Evidence has been that the
|
||||
// default stack size isn't enough for some browser tests.
|
||||
--- a/base/threading/platform_thread_unittest.cc
|
||||
+++ b/base/threading/platform_thread_unittest.cc
|
||||
@@ -420,7 +420,7 @@
|
||||
((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
|
||||
!defined(THREAD_SANITIZER)) || \
|
||||
(BUILDFLAG(IS_ANDROID) && !defined(ADDRESS_SANITIZER))
|
||||
- EXPECT_EQ(0u, stack_size);
|
||||
+ EXPECT_EQ(2u << 20, stack_size);
|
||||
#else
|
||||
EXPECT_GT(stack_size, 0u);
|
||||
EXPECT_LT(stack_size, 20u * (1 << 20));
|
||||
--- a/chrome/browser/shutdown_signal_handlers_posix.cc
|
||||
+++ b/chrome/browser/shutdown_signal_handlers_posix.cc
|
||||
@@ -187,11 +187,19 @@
|
||||
g_shutdown_pipe_read_fd = pipefd[0];
|
||||
g_shutdown_pipe_write_fd = pipefd[1];
|
||||
#if !defined(ADDRESS_SANITIZER)
|
||||
+# if defined(__GLIBC__)
|
||||
const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
|
||||
+# else
|
||||
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
|
||||
+# endif
|
||||
#else
|
||||
+# if defined(__GLIBC__)
|
||||
// ASan instrumentation bloats the stack frames, so we need to increase the
|
||||
// stack size to avoid hitting the guard page.
|
||||
const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
|
||||
+# else
|
||||
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
|
||||
+# endif
|
||||
#endif
|
||||
ShutdownDetector* detector = new ShutdownDetector(
|
||||
g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
|
|
@ -2,8 +2,4 @@
|
|||
# the electron launcher.
|
||||
|
||||
# Options to pass to electron.
|
||||
ELECTRON_FLAGS="--enable-features=WebRTCPipeWireCapturer"
|
||||
|
||||
# This can be 'x11', 'wayland', or 'auto'. Overriding default to 'auto',
|
||||
# but respecting the variable content if any
|
||||
ELECTRON_OZONE_PLATFORM_HINT="${ELECTRON_OZONE_PLATFORM_HINT:-auto}"
|
||||
ELECTRON_FLAGS="--ozone-platform-hint=auto"
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
diff --git a/net/dns/BUILD.gn b/net/dns/BUILD.gn
|
||||
index f36bf68..805d9a6 100644
|
||||
--- a/net/dns/BUILD.gn
|
||||
+++ b/net/dns/BUILD.gn
|
||||
@@ -130,8 +130,8 @@ source_set("dns") {
|
||||
]
|
||||
} else if (is_linux) {
|
||||
sources += [
|
||||
- "dns_config_service_linux.cc",
|
||||
- "dns_config_service_linux.h",
|
||||
+ "dns_config_service_fuchsia.cc",
|
||||
+ "dns_config_service_fuchsia.h",
|
||||
]
|
||||
} else if (is_posix) {
|
||||
sources += [
|
|
@ -1,343 +0,0 @@
|
|||
safesprintf emitnull:
|
||||
error: conversion from 'std::nullptr_t' to 'const internal::Arg' is ambiguous
|
||||
const internal::Arg arg_array[] = { args... };
|
||||
|
||||
flatmap incompletetype:
|
||||
error: static assertion failed due to requirement 'std::__is_complete_or_unbounded(std::__type_identity<std::pair<A, A>>{})': template argument must be a complete class or an unbounded array
|
||||
static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
|
||||
|
||||
i18n, time:
|
||||
various icu failures (new icu time formatting? internal api difference?)
|
||||
a ton of these fail:
|
||||
|
||||
Expected equality of these values:
|
||||
u"Monday 16 May – Saturday 28 May"
|
||||
Which is: u"Monday 16 May \x2013 Saturday 28 May"
|
||||
DateIntervalFormat(begin_time, end_time, DATE_FORMAT_MONTH_WEEKDAY_DAY)
|
||||
Which is: u"Monday 16\x2009\x2013\x2009Saturday 28 May"
|
||||
|
||||
../../base/i18n/time_formatting_unittest.cc:84: Failure
|
||||
Expected equality of these values:
|
||||
clock12h_pm
|
||||
Which is: u"3:42 PM"
|
||||
TimeFormatTimeOfDay(time)
|
||||
Which is: u"3:42\x202FPM"
|
||||
|
||||
.. and so on
|
||||
|
||||
fileutiltest filetofile:
|
||||
../../base/files/file_util_unittest.cc:2692: Failure
|
||||
Value of: stream
|
||||
Actual: true
|
||||
Expected: false
|
||||
|
||||
stacktracetest: crashes (this doesn't seem to use execinfo so probably relies on glibc internal layout for tracing here)
|
||||
|
||||
platformthreadtest canchangethreadtype:
|
||||
../../base/threading/platform_thread_unittest.cc:445: Failure
|
||||
Expected equality of these values:
|
||||
PlatformThread::CanChangeThreadType(ThreadType::kBackground, ThreadType::kResourceEfficient)
|
||||
Which is: true
|
||||
kCanIncreasePriority
|
||||
Which is: false
|
||||
|
||||
scopedfdownershiptrackingtest crashonunownedclose: fails due to scoped-file-no-close.patch
|
||||
|
||||
stackcontainer customallocator:
|
||||
../../base/containers/stack_container_unittest.cc:211: Failure
|
||||
Expected equality of these values:
|
||||
1
|
||||
Allocator::deallocated
|
||||
Which is: 0
|
||||
|
||||
nativelibrarytest loadlibrarypreferownsymbols: crashes (probably musl dlopen does not play nice here)
|
||||
|
||||
spantest empty: crashes (this looks fishy)
|
||||
|
||||
readelfbuildid: crashes (this looks like glibc dynamic linker semantics)
|
||||
|
||||
nss db unittest: various nss failures: e.g.:
|
||||
../../net/cert/nss_cert_database_unittest.cc:209: Failure
|
||||
Expected equality of these values:
|
||||
OK
|
||||
Which is: 0
|
||||
cert_db_->ImportFromPKCS12(GetPublicSlot(), pkcs12_data, u"12345", true, nullptr)
|
||||
Which is: -702
|
||||
|
||||
processutiltest cloneflags: fails in CI (ulimit? too many threads?)
|
||||
../../base/process/process_util_unittest.cc:1434: Failure
|
||||
Value of: process.IsValid()
|
||||
Actual: false
|
||||
Expected: true
|
||||
|
||||
addresstrackerlinuxnetlinktest:
|
||||
../../net/base/address_tracker_linux_unittest.cc:886: Failure
|
||||
Value of: child.process.IsValid()
|
||||
Actual: false
|
||||
Expected: true
|
||||
|
||||
ToAddressDoesNotDereference: ; Expected `get_for_extraction_cnt` to be 1 but got 0;
|
||||
|
||||
DataCapturedManyThreads: flaky
|
||||
|
||||
ProcessAlternativeServicesTest.Process*: crashed ?
|
||||
|
||||
--- a/base/strings/safe_sprintf_unittest.cc
|
||||
+++ b/base/strings/safe_sprintf_unittest.cc
|
||||
@@ -740,6 +740,7 @@
|
||||
#endif
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST(SafeSPrintfTest, EmitNULL) {
|
||||
char buf[40];
|
||||
#if defined(__GNUC__)
|
||||
@@ -756,6 +757,7 @@
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(SafeSPrintfTest, PointerSize) {
|
||||
// The internal data representation is a 64bit value, independent of the
|
||||
--- a/base/containers/flat_map_unittest.cc
|
||||
+++ b/base/containers/flat_map_unittest.cc
|
||||
@@ -52,6 +52,7 @@
|
||||
|
||||
} // namespace
|
||||
|
||||
+#if 0
|
||||
TEST(FlatMap, IncompleteType) {
|
||||
struct A {
|
||||
using Map = flat_map<A, A>;
|
||||
@@ -65,6 +66,7 @@
|
||||
|
||||
A a;
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(FlatMap, RangeConstructor) {
|
||||
flat_map<int, int>::value_type input_vals[] = {
|
||||
--- a/base/BUILD.gn
|
||||
+++ b/base/BUILD.gn
|
||||
@@ -3194,21 +3194,6 @@
|
||||
"hash/md5_constexpr_unittest.cc",
|
||||
"hash/md5_unittest.cc",
|
||||
"hash/sha1_unittest.cc",
|
||||
- "i18n/break_iterator_unittest.cc",
|
||||
- "i18n/case_conversion_unittest.cc",
|
||||
- "i18n/char_iterator_unittest.cc",
|
||||
- "i18n/character_encoding_unittest.cc",
|
||||
- "i18n/file_util_icu_unittest.cc",
|
||||
- "i18n/icu_string_conversions_unittest.cc",
|
||||
- "i18n/icu_util_unittest.cc",
|
||||
- "i18n/message_formatter_unittest.cc",
|
||||
- "i18n/number_formatting_unittest.cc",
|
||||
- "i18n/rtl_unittest.cc",
|
||||
- "i18n/streaming_utf8_validator_unittest.cc",
|
||||
- "i18n/string_search_unittest.cc",
|
||||
- "i18n/time_formatting_unittest.cc",
|
||||
- "i18n/timezone_unittest.cc",
|
||||
- "i18n/transliterator_unittest.cc",
|
||||
"immediate_crash_unittest.cc",
|
||||
"json/json_parser_unittest.cc",
|
||||
"json/json_reader_unittest.cc",
|
||||
--- a/base/files/file_util_unittest.cc
|
||||
+++ b/base/files/file_util_unittest.cc
|
||||
@@ -2686,6 +2686,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST_F(FileUtilTest, FileToFILE) {
|
||||
File file;
|
||||
FILE* stream = FileToFILE(std::move(file), "w");
|
||||
@@ -2700,6 +2701,7 @@
|
||||
EXPECT_FALSE(file.IsValid());
|
||||
EXPECT_TRUE(CloseFile(stream));
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST_F(FileUtilTest, FILEToFile) {
|
||||
ScopedFILE stream;
|
||||
--- a/base/threading/platform_thread_unittest.cc
|
||||
+++ b/base/threading/platform_thread_unittest.cc
|
||||
@@ -416,6 +416,7 @@
|
||||
// platforms for all priorities. This not being the case. This test documents
|
||||
// and hardcodes what we know. Please inform scheduler-dev@chromium.org if this
|
||||
// proprerty changes for a given platform.
|
||||
+#if 0
|
||||
TEST(PlatformThreadTest, CanChangeThreadType) {
|
||||
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
|
||||
// On Ubuntu, RLIMIT_NICE and RLIMIT_RTPRIO are 0 by default, so we won't be
|
||||
@@ -472,6 +473,7 @@
|
||||
ThreadType::kBackground));
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(PlatformThreadTest, SetCurrentThreadTypeTest) {
|
||||
TestPriorityResultingFromThreadType(ThreadType::kBackground,
|
||||
--- a/base/files/scoped_file_linux_unittest.cc
|
||||
+++ b/base/files/scoped_file_linux_unittest.cc
|
||||
@@ -42,11 +42,13 @@
|
||||
EXPECT_DEATH(ScopedFD(fd.get()), "");
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST_F(ScopedFDOwnershipTrackingTest, CrashOnUnownedClose) {
|
||||
ScopedFD fd = OpenFD();
|
||||
subtle::EnableFDOwnershipEnforcement(true);
|
||||
EXPECT_DEATH(close(fd.get()), "");
|
||||
}
|
||||
+#endif
|
||||
|
||||
#endif // defined(GTEST_HAS_DEATH_TEST)
|
||||
|
||||
--- a/base/native_library_unittest.cc
|
||||
+++ b/base/native_library_unittest.cc
|
||||
@@ -139,6 +139,7 @@
|
||||
// Verifies that the |prefer_own_symbols| option satisfies its guarantee that
|
||||
// a loaded library will always prefer local symbol resolution before
|
||||
// considering global symbols.
|
||||
+#if 0
|
||||
TEST(NativeLibraryTest, LoadLibraryPreferOwnSymbols) {
|
||||
NativeLibraryOptions options;
|
||||
options.prefer_own_symbols = true;
|
||||
@@ -171,6 +172,7 @@
|
||||
EXPECT_EQ(2, NativeLibraryTestIncrement());
|
||||
EXPECT_EQ(3, NativeLibraryTestIncrement());
|
||||
}
|
||||
+#endif
|
||||
|
||||
#endif // !BUILDFLAG(IS_ANDROID) && !defined(THREAD_SANITIZER) && \
|
||||
// !defined(MEMORY_SANITIZER)
|
||||
--- a/base/containers/span_unittest.cc
|
||||
+++ b/base/containers/span_unittest.cc
|
||||
@@ -995,6 +995,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST(SpanTest, Empty) {
|
||||
{
|
||||
span<int> span;
|
||||
@@ -1014,6 +1015,7 @@
|
||||
EXPECT_TRUE(span_of_checked_iterators.empty());
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST(SpanTest, OperatorAt) {
|
||||
static constexpr int kArray[] = {1, 6, 1, 8, 0};
|
||||
--- a/base/debug/elf_reader_unittest.cc
|
||||
+++ b/base/debug/elf_reader_unittest.cc
|
||||
@@ -194,6 +194,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if 0
|
||||
TEST(ElfReaderTestWithCurrentImage, ReadElfBuildId) {
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// On Android the library loader memory maps the full so file.
|
||||
@@ -229,6 +230,7 @@
|
||||
UnloadNativeLibrary(library);
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
} // namespace debug
|
||||
} // namespace base
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -4826,7 +4826,6 @@
|
||||
sources += [
|
||||
"cert/internal/system_trust_store_nss_unittest.cc",
|
||||
"cert/internal/trust_store_nss_unittest.cc",
|
||||
- "cert/nss_cert_database_unittest.cc",
|
||||
"cert/x509_util_nss_unittest.cc",
|
||||
]
|
||||
if (!is_castos) {
|
||||
--- a/base/process/process_util_unittest.cc
|
||||
+++ b/base/process/process_util_unittest.cc
|
||||
@@ -1419,7 +1419,7 @@
|
||||
return kSuccess;
|
||||
}
|
||||
|
||||
-#if defined(CLONE_NEWUSER) && defined(CLONE_NEWPID)
|
||||
+#if 0 && defined(CLONE_NEWUSER) && defined(CLONE_NEWPID)
|
||||
TEST_F(ProcessUtilTest, CloneFlags) {
|
||||
if (!PathExists(FilePath("/proc/self/ns/user")) ||
|
||||
!PathExists(FilePath("/proc/self/ns/pid"))) {
|
||||
--- a/net/base/address_tracker_linux_unittest.cc
|
||||
+++ b/net/base/address_tracker_linux_unittest.cc
|
||||
@@ -831,6 +831,7 @@
|
||||
//
|
||||
// This test creates multiple concurrent `AddressTrackerLinux` instances in
|
||||
// separate processes, each in their own PID namespaces.
|
||||
+#if 0
|
||||
TEST(AddressTrackerLinuxNetlinkTest, TestInitializeTwoTrackersInPidNamespaces) {
|
||||
// This test initializes `kNumChildren` instances of `AddressTrackerLinux` in
|
||||
// tracking mode, each in their own child process running in a PID namespace.
|
||||
@@ -901,6 +902,7 @@
|
||||
ASSERT_EQ(exit_code, 0);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
MULTIPROCESS_TEST_MAIN(ChildProcessInitializeTrackerForTesting) {
|
||||
base::test::TaskEnvironment task_env(
|
||||
--- a/base/trace_event/trace_event_unittest.cc
|
||||
+++ b/base/trace_event/trace_event_unittest.cc
|
||||
@@ -1368,6 +1368,7 @@
|
||||
}
|
||||
|
||||
// Test that data sent from multiple threads is gathered
|
||||
+#if 0
|
||||
TEST_F(TraceEventTestFixture, DataCapturedManyThreads) {
|
||||
BeginTrace();
|
||||
|
||||
@@ -1408,6 +1409,7 @@
|
||||
delete task_complete_events[i];
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
// Test that thread and process names show up in the trace.
|
||||
// In SDK build, thread names are not tracked inside //base. Instead, there's
|
||||
--- a/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc
|
||||
+++ b/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc
|
||||
@@ -1481,6 +1481,7 @@
|
||||
// `base::to_address()` will use the dereference operator. This is not
|
||||
// what we want; this test enforces extraction semantics for
|
||||
// `to_address()`.
|
||||
+#if 0
|
||||
TEST_F(RawPtrTest, ToAddressDoesNotDereference) {
|
||||
CountingRawPtr<int> ptr = nullptr;
|
||||
int* raw = base::to_address(ptr);
|
||||
@@ -1492,6 +1493,7 @@
|
||||
.get_for_duplication_cnt = 0}),
|
||||
CountersMatch());
|
||||
}
|
||||
+#endif
|
||||
|
||||
TEST_F(RawPtrTest, ToAddressGivesBackRawAddress) {
|
||||
int* raw = nullptr;
|
||||
--- a/net/http/http_stream_factory_unittest.cc
|
||||
+++ b/net/http/http_stream_factory_unittest.cc
|
||||
@@ -3477,6 +3477,7 @@
|
||||
DefaultCTPolicyEnforcer ct_policy_enforcer_;
|
||||
};
|
||||
|
||||
+#if 0
|
||||
TEST_F(ProcessAlternativeServicesTest, ProcessEmptyAltSvc) {
|
||||
session_ =
|
||||
std::make_unique<HttpNetworkSession>(session_params_, session_context_);
|
||||
@@ -3585,6 +3586,7 @@
|
||||
alternatives[0].host_port_pair());
|
||||
EXPECT_EQ(0u, alternatives[0].advertised_versions().size());
|
||||
}
|
||||
+#endif
|
||||
|
||||
} // namespace
|
||||
|
36
backports/electron/dns-resolver.patch
Normal file
36
backports/electron/dns-resolver.patch
Normal file
|
@ -0,0 +1,36 @@
|
|||
--- a/net/dns/host_resolver_manager.cc
|
||||
+++ b/net/dns/host_resolver_manager.cc
|
||||
@@ -3014,8 +3014,7 @@
|
||||
NetworkChangeNotifier::AddConnectionTypeObserver(this);
|
||||
if (system_dns_config_notifier_)
|
||||
system_dns_config_notifier_->AddObserver(this);
|
||||
-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \
|
||||
- !BUILDFLAG(IS_ANDROID)
|
||||
+#if defined(__GLIBC__)
|
||||
EnsureDnsReloaderInit();
|
||||
#endif
|
||||
|
||||
--- a/net/dns/dns_reloader.cc
|
||||
+++ b/net/dns/dns_reloader.cc
|
||||
@@ -6,8 +6,7 @@
|
||||
|
||||
#include "build/build_config.h"
|
||||
|
||||
-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \
|
||||
- !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA)
|
||||
+#if defined(__GLIBC__)
|
||||
|
||||
#include <resolv.h>
|
||||
|
||||
--- a/net/dns/host_resolver_proc.cc
|
||||
+++ b/net/dns/host_resolver_proc.cc
|
||||
@@ -176,8 +176,7 @@
|
||||
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
|
||||
base::BlockingType::WILL_BLOCK);
|
||||
|
||||
-#if BUILDFLAG(IS_POSIX) && \
|
||||
- !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID))
|
||||
+#if defined(__GLIBC__)
|
||||
DnsReloaderMaybeReload();
|
||||
#endif
|
||||
absl::optional<AddressInfo> ai;
|
|
@ -9,12 +9,6 @@ done
|
|||
|
||||
# Prefer user defined ELECTRON_USER_FLAGS (from env) over system
|
||||
# default ELECTRON_FLAGS (from /etc/electron/default.conf).
|
||||
export ELECTRON_FLAGS="$ELECTRON_FLAGS ${ELECTRON_USER_FLAGS:-"$ELECTRON_USER_FLAGS"}"
|
||||
# Re-export, for it to be accessible by the process
|
||||
export ELECTRON_OZONE_PLATFORM_HINT="${ELECTRON_OZONE_PLATFORM_HINT}"
|
||||
|
||||
if [ "$ELECTRON_RUN_AS_NODE" == "1" ] && [ "$ELECTRON_STILL_PASS_THE_DEFAULT_FLAGS" != "1" ]; then
|
||||
exec "/usr/lib/electron/electron" "$@"
|
||||
fi
|
||||
ELECTRON_FLAGS=${ELECTRON_USER_FLAGS:-"$ELECTRON_FLAGS"}
|
||||
|
||||
exec "/usr/lib/electron/electron" "$@" ${ELECTRON_FLAGS}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
--- ./electron/BUILD.gn.orig
|
||||
+++ ./electron/BUILD.gn
|
||||
@@ -1565,7 +1565,6 @@
|
||||
public_deps = header_groups + [
|
||||
":node_gypi_headers",
|
||||
":node_version_header",
|
||||
- ":zlib_headers",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
--- ./third_party/electron_node/BUILD.gn.orig
|
||||
+++ ./third_party/electron_node/BUILD.gn
|
||||
@@ -40,6 +40,8 @@
|
||||
node_release_urlbase = ""
|
||||
|
||||
# Allows downstream packagers (eg. Linux distributions) to build Electron against system shared libraries.
|
||||
+ use_system_ada = false
|
||||
+ use_system_base64 = false
|
||||
use_system_cares = false
|
||||
use_system_nghttp2 = false
|
||||
use_system_llhttp = false
|
||||
@@ -48,6 +50,16 @@
|
||||
|
||||
if (is_linux) {
|
||||
import("//build/config/linux/pkg_config.gni")
|
||||
+ if (use_system_ada) {
|
||||
+ config("ada") {
|
||||
+ libs = [ "ada" ]
|
||||
+ }
|
||||
+ }
|
||||
+ if (use_system_base64) {
|
||||
+ pkg_config("base64") {
|
||||
+ packages = [ "base64" ]
|
||||
+ }
|
||||
+ }
|
||||
if (use_system_cares) {
|
||||
pkg_config("cares") {
|
||||
packages = [ "libcares" ]
|
||||
@@ -258,8 +270,6 @@
|
||||
deps = [
|
||||
":node_js2c_exec",
|
||||
"deps/googletest:gtest",
|
||||
- "deps/ada",
|
||||
- "deps/base64",
|
||||
"deps/simdutf",
|
||||
"deps/uvwasi",
|
||||
"//third_party/zlib",
|
||||
@@ -267,6 +277,16 @@
|
||||
"//third_party/brotli:enc",
|
||||
"//v8:v8_libplatform",
|
||||
]
|
||||
+ if (use_system_ada) {
|
||||
+ configs += [ ":ada" ]
|
||||
+ } else {
|
||||
+ deps += [ "deps/ada" ]
|
||||
+ }
|
||||
+ if (use_system_base64) {
|
||||
+ configs += [ ":base64" ]
|
||||
+ } else {
|
||||
+ deps += [ "deps/base64" ]
|
||||
+ }
|
||||
if (use_system_cares) {
|
||||
configs += [ ":cares" ]
|
||||
} else {
|
||||
diff --git a/./electron/script/generate-config-gypi.py.orig b/./electron/script/generate-config-gypi.py
|
||||
index b41cd7eb450..bc4098debb5 100755
|
||||
--- a/./electron/script/generate-config-gypi.py.orig
|
||||
+++ b/./electron/script/generate-config-gypi.py
|
||||
@@ -62,6 +62,11 @@ def main(target_file, target_cpu):
|
||||
# Used by certain versions of node-gyp.
|
||||
v['build_v8_with_gn'] = 'false'
|
||||
|
||||
+ with open(os.path.join(NODE_DIR, 'use_system.txt')) as f:
|
||||
+ for dep in f.read().strip().split(' '):
|
||||
+ if v.get(f'node_shared_{dep}') is not None:
|
||||
+ v[f'node_shared_{dep}'] = 'true'
|
||||
+
|
||||
with open(target_file, 'w+', encoding='utf-8') as file_out:
|
||||
file_out.write(pprint.pformat(config, indent=2))
|
|
@ -1,13 +0,0 @@
|
|||
instead of hardcoding the version, use the defined macro.
|
||||
--
|
||||
--- a/third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc
|
||||
+++ b/third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc
|
||||
@@ -56,7 +56,7 @@
|
||||
FcFini();
|
||||
|
||||
// Check existence of intended fontconfig cache file.
|
||||
- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-9";
|
||||
+ auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-" + FC_CACHE_VERSION;
|
||||
bool cache_exists = access(cache.c_str(), F_OK) == 0;
|
||||
return !cache_exists;
|
||||
}
|
31
backports/electron/fix-crashpad.patch
Normal file
31
backports/electron/fix-crashpad.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
--- a/third_party/crashpad/crashpad/client/BUILD.gn
|
||||
+++ b/third_party/crashpad/crashpad/client/BUILD.gn
|
||||
@@ -81,6 +81,7 @@
|
||||
deps = [
|
||||
":common",
|
||||
"$mini_chromium_source_parent:chromeos_buildflags",
|
||||
+ "../util",
|
||||
]
|
||||
|
||||
if (crashpad_is_win) {
|
||||
--- a/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
+++ b/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#if defined(ARCH_CPU_X86_FAMILY)
|
||||
#include <asm/ldt.h>
|
||||
+#include <asm/ptrace-abi.h>
|
||||
#endif
|
||||
|
||||
namespace crashpad {
|
||||
--- a/third_party/crashpad/crashpad/util/linux/thread_info.h
|
||||
+++ b/third_party/crashpad/crashpad/util/linux/thread_info.h
|
||||
@@ -273,7 +273,7 @@ union FloatContext {
|
||||
"Size mismatch");
|
||||
#elif defined(ARCH_CPU_ARMEL)
|
||||
static_assert(sizeof(f32_t::fpregs) == sizeof(user_fpregs), "Size mismatch");
|
||||
-#if !defined(__GLIBC__)
|
||||
+#if defined(OS_ANDROID)
|
||||
static_assert(sizeof(f32_t::vfp) == sizeof(user_vfp), "Size mismatch");
|
||||
#endif
|
||||
#elif defined(ARCH_CPU_ARM64)
|
11
backports/electron/fix-missing-cstdint-include-musl.patch
Normal file
11
backports/electron/fix-missing-cstdint-include-musl.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
Patch-Source: https://github.com/void-linux/void-packages/blob/378db3cf5087877588aebaaa8ca3c9d94dfb54e0/srcpkgs/chromium/patches/fix-missing-cstdint-include-musl.patch
|
||||
--- a/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h
|
||||
+++ b/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <functional>
|
||||
|
||||
#include "common/platform/api/quiche_export.h"
|
44
backports/electron/fix-narrowing-cast.patch
Normal file
44
backports/electron/fix-narrowing-cast.patch
Normal file
|
@ -0,0 +1,44 @@
|
|||
--- a/base/files/file_util_linux.cc
|
||||
+++ b/base/files/file_util_linux.cc
|
||||
@@ -30,7 +30,7 @@
|
||||
case EXT2_SUPER_MAGIC: // Also ext3 and ext4
|
||||
case MSDOS_SUPER_MAGIC:
|
||||
case REISERFS_SUPER_MAGIC:
|
||||
- case static_cast<int>(BTRFS_SUPER_MAGIC):
|
||||
+ case BTRFS_SUPER_MAGIC:
|
||||
case 0x5346544E: // NTFS
|
||||
case 0x58465342: // XFS
|
||||
case 0x3153464A: // JFS
|
||||
@@ -40,14 +40,14 @@
|
||||
*type = FILE_SYSTEM_NFS;
|
||||
break;
|
||||
case SMB_SUPER_MAGIC:
|
||||
- case static_cast<int>(0xFF534D42): // CIFS
|
||||
+ case 0xFF534D42: // CIFS
|
||||
*type = FILE_SYSTEM_SMB;
|
||||
break;
|
||||
case CODA_SUPER_MAGIC:
|
||||
*type = FILE_SYSTEM_CODA;
|
||||
break;
|
||||
- case static_cast<int>(HUGETLBFS_MAGIC):
|
||||
- case static_cast<int>(RAMFS_MAGIC):
|
||||
+ case HUGETLBFS_MAGIC:
|
||||
+ case RAMFS_MAGIC:
|
||||
case TMPFS_MAGIC:
|
||||
*type = FILE_SYSTEM_MEMORY;
|
||||
break;
|
||||
--- a/base/system/sys_info_posix.cc
|
||||
+++ b/base/system/sys_info_posix.cc
|
||||
@@ -100,10 +100,10 @@
|
||||
if (HANDLE_EINTR(statfs(path.value().c_str(), &stats)) != 0)
|
||||
return false;
|
||||
|
||||
switch (stats.f_type) {
|
||||
case TMPFS_MAGIC:
|
||||
- case static_cast<int>(HUGETLBFS_MAGIC):
|
||||
- case static_cast<int>(RAMFS_MAGIC):
|
||||
+ case HUGETLBFS_MAGIC:
|
||||
+ case RAMFS_MAGIC:
|
||||
return true;
|
||||
}
|
||||
return false;
|
|
@ -1,12 +0,0 @@
|
|||
--- a/media/filters/ffmpeg_glue.cc
|
||||
+++ b/media/filters/ffmpeg_glue.cc
|
||||
@@ -142,7 +142,7 @@ const char* FFmpegGlue::GetAllowedAudioDecoders() {
|
||||
static const base::NoDestructor<std::string> kAllowedAudioCodecs([]() {
|
||||
// This should match the configured lists in //third_party/ffmpeg.
|
||||
std::string allowed_decoders(
|
||||
- "vorbis,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,"
|
||||
+ "vorbis,opus,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,"
|
||||
"mp3,pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw");
|
||||
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
|
||||
allowed_decoders += ",aac";
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
fstatat64 is macrod to fstatat in sys/stat.h in musl- but then that fstatat is
|
||||
used in the _syscall4 macro mapping to __NR_$name, and __NR_fstatat is not
|
||||
defined anywhere here, as it wants the 64 name.
|
||||
|
||||
so, just let it keep the name with an undef of the stat.h macro, then the macro
|
||||
expansion below evaluates correctly.
|
||||
--- a/third_party/lss/linux_syscall_support.h
|
||||
+++ b/third_party/lss/linux_syscall_support.h
|
||||
@@ -4947,7 +4947,8 @@
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__NR_fstatat64)
|
||||
+ #undef fstatat64
|
||||
LSS_INLINE _syscall4(int, fstatat64, int, d,
|
||||
const char *, p,
|
||||
struct kernel_stat64 *, b, int, f)
|
||||
#endif
|
|
@ -1,4 +1,3 @@
|
|||
aports is a git tree so these git commands get the wrong directory
|
||||
--- a/tools/gdb/gdbinit
|
||||
+++ b/tools/gdb/gdbinit
|
||||
@@ -50,17 +50,7 @@
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
--- a/services/device/public/cpp/generic_sensor/sensor_reading.h
|
||||
+++ b/services/device/public/cpp/generic_sensor/sensor_reading.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_H_
|
||||
#define SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_H_
|
||||
|
||||
+#include <cstddef>
|
||||
+#include <cstdint>
|
||||
#include <type_traits>
|
||||
|
||||
namespace device {
|
|
@ -1,11 +1,11 @@
|
|||
--- a/electron/default_app/default_app.ts
|
||||
+++ b/electron/default_app/default_app.ts
|
||||
@@ -61,7 +61,7 @@
|
||||
@@ -60,7 +60,7 @@
|
||||
};
|
||||
|
||||
if (process.platform === 'linux') {
|
||||
- options.icon = url.fileURLToPath(new URL('icon.png', import.meta.url));
|
||||
+ options.icon = 'file:///usr/share/icons/hicolor/1024x1024/apps/electron.png';
|
||||
- options.icon = path.join(__dirname, 'icon.png');
|
||||
+ options.icon = '/usr/share/icons/hicolor/1024x1024/apps/electron.png';
|
||||
}
|
||||
|
||||
mainWindow = new BrowserWindow(options);
|
39
backports/electron/jsoncpp.patch
Normal file
39
backports/electron/jsoncpp.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
Patch-Source: https://github.com/archlinux/svntogit-packages/blob/bf2401407df5bcc938382eb03748fbef41e41c89/trunk/unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch
|
||||
From ed8d931e35f81d8566835a579caf7d61368f85b7 Mon Sep 17 00:00:00 2001
|
||||
From: Evangelos Foutras <evangelos@foutrelis.com>
|
||||
Date: Tue, 27 Sep 2022 22:20:41 +0000
|
||||
Subject: [PATCH] unbundle/jsoncpp: avoid CFI faults with is_cfi=true
|
||||
|
||||
Ensure jsoncpp symbols have public visibility and are thus excluded from
|
||||
CFI checks and whole-program optimization. This is achieved by defining
|
||||
JSON_DLL_BUILD which in turn causes json/config.h to define JSON_API as
|
||||
__attribute__((visibility("default"))). The latter macro is used to tag
|
||||
jsoncpp classes and namespace functions throughout jsoncpp's headers.
|
||||
|
||||
BUG=1365218
|
||||
|
||||
Change-Id: I56277737b7d9ecaeb5e17c8d21a2e55f3d5d5bc9
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3919652
|
||||
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
|
||||
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/main@{#1052077}
|
||||
---
|
||||
build/linux/unbundle/jsoncpp.gn | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/build/linux/unbundle/jsoncpp.gn b/build/linux/unbundle/jsoncpp.gn
|
||||
index 544f9d13c9..e84a0ef27a 100644
|
||||
--- a/build/linux/unbundle/jsoncpp.gn
|
||||
+++ b/build/linux/unbundle/jsoncpp.gn
|
||||
@@ -3,6 +3,11 @@ import("//build/shim_headers.gni")
|
||||
|
||||
pkg_config("jsoncpp_config") {
|
||||
packages = [ "jsoncpp" ]
|
||||
+
|
||||
+ # Defining JSON_DLL_BUILD applies public visibility to jsoncpp classes
|
||||
+ # thus deactivating CFI checks for them. This avoids CFI violations in
|
||||
+ # virtual calls to system jsoncpp library (https://crbug.com/1365218).
|
||||
+ defines = [ "JSON_DLL_BUILD" ]
|
||||
}
|
||||
|
||||
shim_headers("jsoncpp_shim") {
|
18
backports/electron/memory-tagging-arm64.patch
Normal file
18
backports/electron/memory-tagging-arm64.patch
Normal file
|
@ -0,0 +1,18 @@
|
|||
--- a/base/allocator/partition_allocator/tagging.cc
|
||||
+++ b/base/allocator/partition_allocator/tagging.cc
|
||||
@@ -19,15 +19,6 @@
|
||||
#define PR_GET_TAGGED_ADDR_CTRL 56
|
||||
#define PR_TAGGED_ADDR_ENABLE (1UL << 0)
|
||||
|
||||
-#if BUILDFLAG(IS_LINUX)
|
||||
-#include <linux/version.h>
|
||||
-
|
||||
-// Linux headers already provide these since v5.10.
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)
|
||||
-#define HAS_PR_MTE_MACROS
|
||||
-#endif
|
||||
-#endif
|
||||
-
|
||||
#ifndef HAS_PR_MTE_MACROS
|
||||
#define PR_MTE_TCF_SHIFT 1
|
||||
#define PR_MTE_TCF_NONE (0UL << PR_MTE_TCF_SHIFT)
|
|
@ -1,11 +0,0 @@
|
|||
--- ./v8/src/base/cpu.cc.orig
|
||||
+++ ./v8/src/base/cpu.cc
|
||||
@@ -14,7 +14,7 @@
|
||||
#if V8_OS_LINUX
|
||||
#include <linux/auxvec.h> // AT_HWCAP
|
||||
#endif
|
||||
-#if V8_GLIBC_PREREQ(2, 16) || V8_OS_ANDROID
|
||||
+#if 1
|
||||
#include <sys/auxv.h> // getauxval()
|
||||
#endif
|
||||
#if V8_OS_QNX
|
|
@ -1,10 +1,7 @@
|
|||
musl uses different syscalls from glibc for some functions, so the sandbox has
|
||||
to account for that
|
||||
--
|
||||
diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ./sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
index ff5a1c0..da56b9b 100644
|
||||
--- a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
+++ ./sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
+++ b/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
@@ -139,21 +139,11 @@ namespace sandbox {
|
||||
// present (as in newer versions of posix_spawn).
|
||||
ResultExpr RestrictCloneToThreadsAndEPERMFork() {
|
||||
|
@ -44,8 +41,8 @@ index ff5a1c0..da56b9b 100644
|
|||
diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ./sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
index d9d1882..0567557 100644
|
||||
--- a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
+++ ./sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
@@ -438,6 +438,7 @@
|
||||
+++ b/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
@@ -392,6 +392,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) {
|
||||
#if defined(__i386__)
|
||||
case __NR_waitpid:
|
||||
#endif
|
||||
|
@ -53,7 +50,7 @@ index d9d1882..0567557 100644
|
|||
return true;
|
||||
case __NR_clone: // Should be parameter-restricted.
|
||||
case __NR_setns: // Privileged.
|
||||
@@ -450,7 +451,6 @@
|
||||
@@ -404,7 +405,6 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) {
|
||||
#if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
|
||||
case __NR_set_thread_area:
|
||||
#endif
|
||||
|
@ -61,16 +58,16 @@ index d9d1882..0567557 100644
|
|||
case __NR_unshare:
|
||||
#if !defined(__mips__) && !defined(__aarch64__)
|
||||
case __NR_vfork:
|
||||
@@ -549,6 +549,8 @@
|
||||
@@ -514,6 +514,8 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) {
|
||||
case __NR_mlock:
|
||||
case __NR_munlock:
|
||||
case __NR_munmap:
|
||||
case __NR_mseal:
|
||||
+ case __NR_mremap:
|
||||
+ case __NR_membarrier:
|
||||
return true;
|
||||
case __NR_madvise:
|
||||
case __NR_mincore:
|
||||
@@ -566,7 +568,6 @@
|
||||
@@ -531,7 +533,6 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) {
|
||||
case __NR_modify_ldt:
|
||||
#endif
|
||||
case __NR_mprotect:
|
||||
|
@ -90,35 +87,21 @@ index 2b78a0c..b6fedb5 100644
|
|||
|
||||
#if defined(__x86_64__)
|
||||
#include "sandbox/linux/system_headers/x86_64_linux_syscalls.h"
|
||||
diff --git a/services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc ./services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc
|
||||
index a85c0ea..715aa1e 100644
|
||||
--- a/sandbox/policy/linux/bpf_renderer_policy_linux.cc
|
||||
+++ b/sandbox/policy/linux/bpf_renderer_policy_linux.cc
|
||||
@@ -94,6 +94,9 @@
|
||||
case __NR_pwrite64:
|
||||
case __NR_sched_get_priority_max:
|
||||
case __NR_sched_get_priority_min:
|
||||
+ case __NR_sched_getparam:
|
||||
+ case __NR_sched_getscheduler:
|
||||
+ case __NR_sched_setscheduler:
|
||||
case __NR_sysinfo:
|
||||
case __NR_times:
|
||||
case __NR_uname:
|
||||
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
|
||||
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
|
||||
@@ -225,10 +225,15 @@
|
||||
if (sysno == __NR_getpriority || sysno ==__NR_setpriority)
|
||||
return RestrictGetSetpriority(current_pid);
|
||||
|
||||
+ // XXX: hacks for musl sandbox, calls needed?
|
||||
+ if (sysno == __NR_sched_getparam || sysno == __NR_sched_getscheduler ||
|
||||
+ sysno == __NR_sched_setscheduler) {
|
||||
+ return Allow();
|
||||
+ }
|
||||
+
|
||||
// The scheduling syscalls are used in threading libraries and also heavily in
|
||||
// abseil. See for example https://crbug.com/1370394.
|
||||
- if (sysno == __NR_sched_getaffinity || sysno == __NR_sched_getparam ||
|
||||
- sysno == __NR_sched_getscheduler || sysno == __NR_sched_setscheduler) {
|
||||
+ if (sysno == __NR_sched_getaffinity) {
|
||||
return RestrictSchedTarget(current_pid, sysno);
|
||||
}
|
||||
|
||||
@@ -102,11 +102,11 @@
|
||||
#if defined(__arm__) || defined(__aarch64__)
|
||||
case __NR_getcpu:
|
||||
#endif
|
||||
- return Allow();
|
||||
- case __NR_sched_getaffinity:
|
||||
case __NR_sched_getparam:
|
||||
case __NR_sched_getscheduler:
|
||||
case __NR_sched_setscheduler:
|
||||
+ return Allow();
|
||||
+ case __NR_sched_getaffinity:
|
||||
return RestrictSchedTarget(GetPolicyPid(), sysno);
|
||||
case __NR_prlimit64:
|
||||
// See crbug.com/662450 and setrlimit comment above.
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
the sandbox caching of thread id's only works with glibc
|
||||
see: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/32356
|
||||
see: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13579
|
||||
--
|
||||
--- a/sandbox/linux/services/namespace_sandbox.cc
|
||||
+++ b/sandbox/linux/services/namespace_sandbox.cc
|
||||
@@ -209,6 +209,70 @@
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
use monotonic clock for pthread_cond_timedwait with musl too, since it supports
|
||||
it
|
||||
--
|
||||
Use monotonic clock for pthread_cond_timedwait with musl too.
|
||||
|
||||
--- a/v8/src/base/platform/condition-variable.cc
|
||||
+++ b/v8/src/base/platform/condition-variable.cc
|
||||
@@ -16,7 +16,7 @@
|
||||
|
|
|
@ -1,8 +1,57 @@
|
|||
musl does not have execinfo.h, and hence no implementation of
|
||||
. backtrace()
|
||||
. backtrace_symbols()
|
||||
for discussion about this, see https://www.openwall.com/lists/musl/2021/07/16/1
|
||||
--
|
||||
--- a/base/debug/stack_trace_posix.cc
|
||||
+++ b/base/debug/stack_trace_posix.cc
|
||||
@@ -27,7 +27,7 @@
|
||||
#if !defined(USE_SYMBOLIZE)
|
||||
#include <cxxabi.h>
|
||||
#endif
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
#include <execinfo.h>
|
||||
#endif
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
// Note: code in this function is NOT async-signal safe (std::string uses
|
||||
// malloc internally).
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
std::string::size_type search_from = 0;
|
||||
while (search_from < text->size()) {
|
||||
// Look for the start of a mangled symbol, from search_from.
|
||||
@@ -136,7 +136,7 @@
|
||||
virtual ~BacktraceOutputHandler() = default;
|
||||
};
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
void OutputPointer(void* pointer, BacktraceOutputHandler* handler) {
|
||||
// This should be more than enough to store a 64-bit number in hex:
|
||||
// 16 hex digits + 1 for null-terminator.
|
||||
@@ -839,7 +839,7 @@
|
||||
// If we do not have unwind tables, then try tracing using frame pointers.
|
||||
return base::debug::TraceStackFramePointers(const_cast<const void**>(trace),
|
||||
count, 0);
|
||||
-#elif !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#elif defined(__GLIBC__) && !defined(_AIX)
|
||||
// Though the backtrace API man page does not list any possible negative
|
||||
// return values, we take no chance.
|
||||
return base::saturated_cast<size_t>(backtrace(trace, count));
|
||||
@@ -852,13 +852,13 @@
|
||||
// NOTE: This code MUST be async-signal safe (it's used by in-process
|
||||
// stack dumping signal handler). NO malloc or stdio is allowed here.
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
PrintBacktraceOutputHandler handler;
|
||||
ProcessBacktrace(trace_, count_, prefix_string, &handler);
|
||||
#endif
|
||||
}
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
void StackTrace::OutputToStreamWithPrefix(std::ostream* os,
|
||||
const char* prefix_string) const {
|
||||
StreamBacktraceOutputHandler handler(os);
|
||||
--- a/v8/src/codegen/external-reference-table.cc
|
||||
+++ b/v8/src/codegen/external-reference-table.cc
|
||||
@@ -11,7 +11,9 @@
|
||||
|
@ -37,32 +86,22 @@ for discussion about this, see https://www.openwall.com/lists/musl/2021/07/16/1
|
|||
#define HAVE_FCNTL_H 1
|
||||
--- a/base/debug/stack_trace.cc
|
||||
+++ b/base/debug/stack_trace.cc
|
||||
@@ -311,7 +311,7 @@
|
||||
@@ -251,7 +253,9 @@
|
||||
}
|
||||
|
||||
std::string StackTrace::ToStringWithPrefix(cstring_view prefix_string) const {
|
||||
void StackTrace::OutputToStream(std::ostream* os) const {
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
OutputToStreamWithPrefix(os, nullptr);
|
||||
+#endif
|
||||
}
|
||||
|
||||
std::string StackTrace::ToString() const {
|
||||
@@ -281,7 +281,7 @@
|
||||
}
|
||||
std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const {
|
||||
std::stringstream stream;
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
OutputToStreamWithPrefix(&stream, prefix_string);
|
||||
#endif
|
||||
return stream.str();
|
||||
@@ -335,7 +335,7 @@
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const StackTrace& s) {
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(_AIX)
|
||||
s.OutputToStream(&os);
|
||||
#else
|
||||
os << "StackTrace::OutputToStream not implemented.";
|
||||
--- a/base/debug/stack_trace_unittest.cc
|
||||
+++ b/base/debug/stack_trace_unittest.cc
|
||||
@@ -33,7 +33,7 @@
|
||||
typedef testing::Test StackTraceTest;
|
||||
#endif
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if !defined(__UCLIBC__) && !defined(_AIX) && defined(__GLIBC__)
|
||||
// StackTrace::OutputToStream() is not implemented under uclibc, nor AIX.
|
||||
// See https://crbug.com/706728
|
||||
|
||||
|
|
19
backports/electron/no-glibc-version.patch
Normal file
19
backports/electron/no-glibc-version.patch
Normal file
|
@ -0,0 +1,19 @@
|
|||
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
|
||||
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
|
||||
@@ -61,7 +61,6 @@
|
||||
// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
|
||||
// of lacros-chrome is complete.
|
||||
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||
-#include <gnu/libc-version.h>
|
||||
|
||||
#include "base/linux_util.h"
|
||||
#include "base/strings/string_split.h"
|
||||
@@ -324,7 +323,7 @@
|
||||
void RecordLinuxGlibcVersion() {
|
||||
// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
|
||||
// of lacros-chrome is complete.
|
||||
-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||
+#if defined(__GLIBC__) || BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||
base::Version version(gnu_get_libc_version());
|
||||
|
||||
UMALinuxGlibcVersion glibc_version_result = UMA_LINUX_GLIBC_NOT_PARSEABLE;
|
|
@ -1,6 +1,3 @@
|
|||
musl does not implement mallinfo()/mallinfo2()
|
||||
(or rather, malloc-ng, musl's allocator, doesn't)
|
||||
--
|
||||
--- a/base/trace_event/malloc_dump_provider.cc
|
||||
+++ b/base/trace_event/malloc_dump_provider.cc
|
||||
@@ -185,7 +185,6 @@
|
||||
|
@ -60,8 +57,8 @@ musl does not implement mallinfo()/mallinfo2()
|
|||
// TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
|
||||
return 0;
|
||||
#endif
|
||||
--- ./third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc.orig
|
||||
+++ ./third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc
|
||||
--- a/third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc
|
||||
+++ b/third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
MemoryUsage GetMemoryUsage() {
|
||||
|
@ -71,8 +68,8 @@ musl does not implement mallinfo()/mallinfo2()
|
|||
rusage res;
|
||||
if (getrusage(RUSAGE_SELF, &res) == 0) {
|
||||
result.max_rss_kb = res.ru_maxrss;
|
||||
--- ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
|
||||
+++ ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig
|
||||
--- a/third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
|
||||
+++ b/third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
|
||||
@@ -86,11 +86,11 @@
|
||||
}
|
||||
|
||||
|
@ -88,8 +85,8 @@ musl does not implement mallinfo()/mallinfo2()
|
|||
mi = ::mallinfo();
|
||||
return mi.uordblks;
|
||||
|
||||
--- ./third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h.orig 2019-09-30 13:03:42.556880537 -0400
|
||||
+++ ./third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h 2019-09-30 13:07:27.989821227 -0400
|
||||
--- a/third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h
|
||||
+++ b/third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h
|
||||
@@ -122,7 +122,9 @@
|
||||
/* #undef HAVE_MALLCTL */
|
||||
|
||||
|
@ -100,25 +97,14 @@ musl does not implement mallinfo()/mallinfo2()
|
|||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#define HAVE_MALLOC_H 1
|
||||
--- a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc.cc
|
||||
+++ b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc.cc
|
||||
@@ -660,7 +660,7 @@
|
||||
--- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
|
||||
+++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
|
||||
@@ -717,7 +717,7 @@
|
||||
|
||||
#endif // !PA_BUILDFLAG(IS_APPLE) && !PA_BUILDFLAG(IS_ANDROID)
|
||||
#endif // !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
-#if PA_BUILDFLAG(IS_LINUX) || PA_BUILDFLAG(IS_CHROMEOS)
|
||||
-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
|
||||
+#if 0
|
||||
SHIM_ALWAYS_EXPORT struct mallinfo mallinfo(void) __THROW {
|
||||
partition_alloc::SimplePartitionStatsDumper allocator_dumper;
|
||||
base::SimplePartitionStatsDumper allocator_dumper;
|
||||
Allocator()->DumpStats("malloc", true, &allocator_dumper);
|
||||
--- a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
|
||||
+++ b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
|
||||
@@ -29,7 +29,7 @@
|
||||
#if PA_BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
|
||||
|
||||
// Platforms on which we override weak libc symbols.
|
||||
-#if PA_BUILDFLAG(IS_LINUX) || PA_BUILDFLAG(IS_CHROMEOS)
|
||||
+#if (PA_BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || PA_BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
PA_NOINLINE void FreeForTest(void* data) {
|
||||
free(data);
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
similar to dns-resolver.patch, musl doesn't have res_ninit and so on
|
||||
--
|
||||
--- a/net/dns/public/scoped_res_state.cc
|
||||
+++ b/net/dns/public/scoped_res_state.cc
|
||||
@@ -13,7 +13,7 @@
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
this optimisation of CLONE_SETTLS is not valid used like this, and future musl
|
||||
clone(3) will EINVAL on this use
|
||||
--
|
||||
--- a/sandbox/linux/services/credentials.cc
|
||||
+++ b/sandbox/linux/services/credentials.cc
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
int clone_flags = CLONE_FS | LINUX_SIGCHLD;
|
||||
void* tls = nullptr;
|
||||
-#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY)) && \
|
||||
+#if 0 && (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY)) && \
|
||||
!defined(MEMORY_SANITIZER)
|
||||
// Use CLONE_VM | CLONE_VFORK as an optimization to avoid copying page tables.
|
||||
// Since clone writes to the new child's TLS before returning, we must set a
|
12
backports/electron/no-stat-redefine.patch
Normal file
12
backports/electron/no-stat-redefine.patch
Normal file
|
@ -0,0 +1,12 @@
|
|||
--- a/base/files/file.h
|
||||
+++ b/base/files/file.h
|
||||
@@ -19,7 +19,8 @@
|
||||
#include "build/build_config.h"
|
||||
|
||||
#if BUILDFLAG(IS_BSD) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_NACL) || \
|
||||
- BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21)
|
||||
+ BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21) || \
|
||||
+ (defined(OS_LINUX) && !defined(__GLIBC__))
|
||||
struct stat;
|
||||
namespace base {
|
||||
typedef struct stat stat_wrapper_t;
|
11
backports/electron/nullptr-t.patch
Normal file
11
backports/electron/nullptr-t.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
|
||||
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
|
||||
@@ -178,7 +178,7 @@
|
||||
class AutofillPopupViewPtr {
|
||||
public:
|
||||
AutofillPopupViewPtr() = default;
|
||||
- AutofillPopupViewPtr(nullptr_t) : ptr_(nullptr) {}
|
||||
+ AutofillPopupViewPtr(std::nullptr_t) : ptr_(nullptr) {}
|
||||
AutofillPopupViewPtr(AutofillPopupView* ptr) : ptr_(ptr) {}
|
||||
|
||||
explicit operator bool() const { return ptr_; }
|
|
@ -1,25 +0,0 @@
|
|||
Hard-disable memory tagging on ARM64 - it does exist there but musl is
|
||||
missing some required interface headers for it, and it's not clear how
|
||||
to make the partalloc support code for it work.
|
||||
--- ./base/allocator/partition_allocator/partition_alloc.gni.orig
|
||||
+++ ./base/allocator/partition_allocator/partition_alloc.gni
|
||||
@@ -30,7 +30,7 @@
|
||||
}
|
||||
|
||||
has_memory_tagging =
|
||||
- current_cpu == "arm64" && is_clang && !is_asan && (is_linux || is_android)
|
||||
+ false
|
||||
|
||||
declare_args() {
|
||||
# Causes all the allocations to be routed via allocator_shim.cc. Usually,
|
||||
--- ./base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.orig
|
||||
+++ ./base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "partition_alloc/build_config.h"
|
||||
#include "partition_alloc/partition_alloc_buildflags.h"
|
||||
|
||||
-#if PA_BUILDFLAG(IS_ANDROID) || PA_BUILDFLAG(IS_LINUX)
|
||||
+#if PA_BUILDFLAG(IS_ANDROID) || (PA_BUILDFLAG(IS_LINUX) && defined(__GLIBC__))
|
||||
#define HAS_HW_CAPS
|
||||
#endif
|
||||
|
15
backports/electron/partition-atfork.patch
Normal file
15
backports/electron/partition-atfork.patch
Normal file
|
@ -0,0 +1,15 @@
|
|||
--- a/base/allocator/partition_allocator/partition_root.cc
|
||||
+++ b/base/allocator/partition_allocator/partition_root.cc
|
||||
@@ -248,9 +248,9 @@
|
||||
// However, no perfect solution really exists to make threads + fork()
|
||||
// cooperate, but deadlocks are real (and fork() is used in DEATH_TEST()s),
|
||||
// and other malloc() implementations use the same techniques.
|
||||
- int err =
|
||||
- pthread_atfork(BeforeForkInParent, AfterForkInParent, AfterForkInChild);
|
||||
- PA_CHECK(err == 0);
|
||||
+ //int err =
|
||||
+ // pthread_atfork(BeforeForkInParent, AfterForkInParent, AfterForkInChild);
|
||||
+ //PA_CHECK(err == 0);
|
||||
#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
the pvalloc/valloc symbols are obsolete and not implemented in musl
|
||||
--
|
||||
--- a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_unittest.cc
|
||||
+++ b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_unittest.cc
|
||||
@@ -410,7 +410,7 @@
|
||||
ASSERT_GE(aligned_allocs_intercepted_by_alignment[128], 1u);
|
||||
ASSERT_GE(aligned_allocs_intercepted_by_size[53], 1u);
|
||||
|
||||
-#if PA_BUILDFLAG(IS_POSIX) && !PA_BUILDFLAG(IS_ANDROID)
|
||||
+#if (PA_BUILDFLAG(IS_POSIX) && defined(__GLIBC__)) && !PA_BUILDFLAG(IS_ANDROID)
|
||||
void* pvalloc_ptr = pvalloc(67);
|
||||
ASSERT_NE(nullptr, pvalloc_ptr);
|
||||
ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(pvalloc_ptr) % kPageSize);
|
||||
@@ -449,7 +449,7 @@
|
||||
free(memalign_ptr);
|
||||
ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
|
||||
|
||||
-#if PA_BUILDFLAG(IS_POSIX) && !PA_BUILDFLAG(IS_ANDROID)
|
||||
+#if (PA_BUILDFLAG(IS_POSIX) && defined(__GLIBC__)) && !PA_BUILDFLAG(IS_ANDROID)
|
||||
free(pvalloc_ptr);
|
||||
ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
|
||||
#endif // PA_BUILDFLAG(IS_POSIX) && !PA_BUILDFLAG(IS_ANDROID)
|
||||
--- a/base/process/memory_unittest.cc
|
||||
+++ b/base/process/memory_unittest.cc
|
||||
@@ -359,7 +359,7 @@
|
||||
#endif // BUILDFLAG(IS_WIN)
|
||||
#endif // !BUILDFLAG(IS_MAC)
|
||||
|
||||
-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
|
||||
+#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
TEST_F(OutOfMemoryDeathTest, Valloc) {
|
||||
ASSERT_OOM_DEATH({
|
11
backports/electron/py3.11.patch
Normal file
11
backports/electron/py3.11.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/tools/grit/grit/util.py
|
||||
+++ b/tools/grit/grit/util.py
|
||||
@@ -209,7 +209,7 @@
|
||||
mode = 'rb'
|
||||
encoding = None
|
||||
else:
|
||||
- mode = 'rU'
|
||||
+ mode = 'r'
|
||||
|
||||
with io.open(filename, mode, encoding=encoding) as f:
|
||||
return f.read()
|
11
backports/electron/quiche-arena-size.patch
Normal file
11
backports/electron/quiche-arena-size.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/net/third_party/quiche/src/quiche/quic/core/quic_one_block_arena.h
|
||||
+++ b/net/third_party/quiche/src/quiche/quic/core/quic_one_block_arena.h
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
// QuicConnections currently use around 1KB of polymorphic types which would
|
||||
// ordinarily be on the heap. Instead, store them inline in an arena.
|
||||
-using QuicConnectionArena = QuicOneBlockArena<1280>;
|
||||
+using QuicConnectionArena = QuicOneBlockArena<1504>;
|
||||
|
||||
} // namespace quic
|
||||
|
22
backports/electron/scoped-file-no-close.patch
Normal file
22
backports/electron/scoped-file-no-close.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
for some reason this breaks and the fd returned after close() after a few
|
||||
cycles is still in the lock array
|
||||
|
||||
so, just don't enforce or wrap anything.
|
||||
--- a/base/files/scoped_file_linux.cc
|
||||
+++ b/base/files/scoped_file_linux.cc
|
||||
@@ -77,15 +77,3 @@
|
||||
}
|
||||
|
||||
} // namespace base
|
||||
-
|
||||
-extern "C" {
|
||||
-
|
||||
-int __close(int);
|
||||
-
|
||||
-__attribute__((visibility("default"), noinline)) int close(int fd) {
|
||||
- if (base::IsFDOwned(fd) && g_is_ownership_enforced)
|
||||
- CrashOnFdOwnershipViolation();
|
||||
- return __close(fd);
|
||||
-}
|
||||
-
|
||||
-} // extern "C"
|
53
backports/electron/system-node.patch
Normal file
53
backports/electron/system-node.patch
Normal file
|
@ -0,0 +1,53 @@
|
|||
--- a/third_party/electron_node/BUILD.gn
|
||||
+++ b/third_party/electron_node/BUILD.gn
|
||||
@@ -42,6 +42,18 @@
|
||||
node_module_version = ""
|
||||
}
|
||||
|
||||
+if (is_linux) {
|
||||
+ import("//build/config/linux/pkg_config.gni")
|
||||
+
|
||||
+ pkg_config("cares") {
|
||||
+ packages = [ "libcares" ]
|
||||
+ }
|
||||
+
|
||||
+ pkg_config("nghttp2") {
|
||||
+ packages = [ "libnghttp2" ]
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
assert(!node_use_dtrace, "node_use_dtrace not supported in GN")
|
||||
assert(!node_use_etw, "node_use_etw not supported in GN")
|
||||
|
||||
@@ -182,11 +194,9 @@
|
||||
component("node_lib") {
|
||||
deps = [
|
||||
":node_js2c",
|
||||
- "deps/cares",
|
||||
"deps/histogram",
|
||||
"deps/googletest:gtest",
|
||||
"deps/llhttp",
|
||||
- "deps/nghttp2",
|
||||
"deps/uvwasi",
|
||||
"//third_party/zlib",
|
||||
"//third_party/brotli:dec",
|
||||
@@ -202,6 +212,19 @@
|
||||
public_configs = [ ":node_lib_config" ]
|
||||
include_dirs = [ "src" ]
|
||||
libs = []
|
||||
+ if (is_linux) {
|
||||
+ configs += [
|
||||
+ ":cares",
|
||||
+ ":nghttp2",
|
||||
+ ]
|
||||
+ libs += [ "http_parser" ]
|
||||
+ } else {
|
||||
+ deps += [
|
||||
+ "deps/cares",
|
||||
+ "deps/http_parser",
|
||||
+ "deps/nghttp2",
|
||||
+ ]
|
||||
+ }
|
||||
frameworks = []
|
||||
cflags_cc = [
|
||||
"-Wno-deprecated-declarations",
|
|
@ -1,5 +1,4 @@
|
|||
random glibc macro, not provided by musl.
|
||||
https://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
|
||||
random glibc macro
|
||||
--- a/sandbox/linux/suid/process_util.h
|
||||
+++ b/sandbox/linux/suid/process_util.h
|
||||
@@ -11,6 +11,14 @@
|
||||
|
|
113
backports/electron/vector-const.patch
Normal file
113
backports/electron/vector-const.patch
Normal file
|
@ -0,0 +1,113 @@
|
|||
--- a/chrome/browser/process_singleton_posix.cc
|
||||
+++ b/chrome/browser/process_singleton_posix.cc
|
||||
@@ -607,7 +607,7 @@
|
||||
// |reader| is for sending back ACK message.
|
||||
void HandleMessage(const std::string& current_dir,
|
||||
const std::vector<std::string>& argv,
|
||||
- const std::vector<const uint8_t> additional_data,
|
||||
+ const std::vector<uint8_t> additional_data,
|
||||
SocketReader* reader);
|
||||
|
||||
private:
|
||||
@@ -664,7 +664,7 @@
|
||||
void ProcessSingleton::LinuxWatcher::HandleMessage(
|
||||
const std::string& current_dir,
|
||||
const std::vector<std::string>& argv,
|
||||
- const std::vector<const uint8_t> additional_data,
|
||||
+ const std::vector<uint8_t> additional_data,
|
||||
SocketReader* reader) {
|
||||
DCHECK(ui_task_runner_->BelongsToCurrentThread());
|
||||
DCHECK(reader);
|
||||
@@ -754,7 +754,7 @@
|
||||
base::StringToSizeT(tokens[0], &num_args);
|
||||
std::vector<std::string> command_line(tokens.begin() + 1, tokens.begin() + 1 + num_args);
|
||||
|
||||
- std::vector<const uint8_t> additional_data;
|
||||
+ std::vector<uint8_t> additional_data;
|
||||
if (tokens.size() >= 3 + num_args) {
|
||||
size_t additional_data_size;
|
||||
base::StringToSizeT(tokens[1 + num_args], &additional_data_size);
|
||||
@@ -763,7 +763,7 @@
|
||||
std::string(1, kTokenDelimiter));
|
||||
const uint8_t* additional_data_bits =
|
||||
reinterpret_cast<const uint8_t*>(remaining_args.c_str());
|
||||
- additional_data = std::vector<const uint8_t>(
|
||||
+ additional_data = std::vector<uint8_t>(
|
||||
additional_data_bits, additional_data_bits + additional_data_size);
|
||||
}
|
||||
|
||||
--- a/chrome/browser/process_singleton.h
|
||||
+++ b/chrome/browser/process_singleton.h
|
||||
@@ -102,7 +102,7 @@
|
||||
using NotificationCallback =
|
||||
base::RepeatingCallback<bool(const base::CommandLine& command_line,
|
||||
const base::FilePath& current_directory,
|
||||
- const std::vector<const uint8_t> additional_data)>;
|
||||
+ const std::vector<uint8_t> additional_data)>;
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
ProcessSingleton(const std::string& program_name,
|
||||
--- a/chrome/browser/process_singleton_win.cc
|
||||
+++ b/chrome/browser/process_singleton_win.cc
|
||||
@@ -81,7 +81,7 @@
|
||||
bool ParseCommandLine(const COPYDATASTRUCT* cds,
|
||||
base::CommandLine* parsed_command_line,
|
||||
base::FilePath* current_directory,
|
||||
- std::vector<const uint8_t>* parsed_additional_data) {
|
||||
+ std::vector<uint8_t>* parsed_additional_data) {
|
||||
// We should have enough room for the shortest command (min_message_size)
|
||||
// and also be a multiple of wchar_t bytes. The shortest command
|
||||
// possible is L"START\0\0" (empty command line, current directory,
|
||||
@@ -163,7 +163,7 @@
|
||||
msg.substr(fourth_null + 1, fifth_null - fourth_null);
|
||||
const uint8_t* additional_data_bytes =
|
||||
reinterpret_cast<const uint8_t*>(additional_data.c_str());
|
||||
- *parsed_additional_data = std::vector<const uint8_t>(additional_data_bytes,
|
||||
+ *parsed_additional_data = std::vector<uint8_t>(additional_data_bytes,
|
||||
additional_data_bytes + additional_data_length);
|
||||
|
||||
return true;
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
base::CommandLine parsed_command_line(base::CommandLine::NO_PROGRAM);
|
||||
base::FilePath current_directory;
|
||||
- std::vector<const uint8_t> additional_data;
|
||||
+ std::vector<uint8_t> additional_data;
|
||||
if (!ParseCommandLine(cds, &parsed_command_line, ¤t_directory, &additional_data)) {
|
||||
*result = TRUE;
|
||||
return true;
|
||||
--- a/electron/shell/browser/api/electron_api_app.cc
|
||||
+++ b/electron/shell/browser/api/electron_api_app.cc
|
||||
@@ -519,10 +519,10 @@
|
||||
const base::RepeatingCallback<
|
||||
void(const base::CommandLine& command_line,
|
||||
const base::FilePath& current_directory,
|
||||
- const std::vector<const uint8_t> additional_data)>& callback,
|
||||
+ const std::vector<uint8_t> additional_data)>& callback,
|
||||
const base::CommandLine& cmd,
|
||||
const base::FilePath& cwd,
|
||||
- const std::vector<const uint8_t> additional_data) {
|
||||
+ const std::vector<uint8_t> additional_data) {
|
||||
// Make sure the callback is called after app gets ready.
|
||||
if (Browser::Get()->is_ready()) {
|
||||
callback.Run(cmd, cwd, std::move(additional_data));
|
||||
@@ -1082,7 +1082,7 @@
|
||||
|
||||
void App::OnSecondInstance(const base::CommandLine& cmd,
|
||||
const base::FilePath& cwd,
|
||||
- const std::vector<const uint8_t> additional_data) {
|
||||
+ const std::vector<uint8_t> additional_data) {
|
||||
v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
|
||||
v8::Locker locker(isolate);
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
--- a/electron/shell/browser/api/electron_api_app.h
|
||||
+++ b/electron/shell/browser/api/electron_api_app.h
|
||||
@@ -195,7 +195,7 @@
|
||||
std::string GetLocaleCountryCode();
|
||||
void OnSecondInstance(const base::CommandLine& cmd,
|
||||
const base::FilePath& cwd,
|
||||
- const std::vector<const uint8_t> additional_data);
|
||||
+ const std::vector<uint8_t> additional_data);
|
||||
bool HasSingleInstanceLock() const;
|
||||
bool RequestSingleInstanceLock(gin::Arguments* args);
|
||||
void ReleaseSingleInstanceLock();
|
20
backports/electron/wtf-stacksize.patch
Normal file
20
backports/electron/wtf-stacksize.patch
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- a/third_party/blink/renderer/platform/wtf/stack_util.cc
|
||||
+++ b/third_party/blink/renderer/platform/wtf/stack_util.cc
|
||||
@@ -29,7 +29,7 @@
|
||||
// FIXME: On Mac OSX and Linux, this method cannot estimate stack size
|
||||
// correctly for the main thread.
|
||||
|
||||
-#elif defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
|
||||
+#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
|
||||
BUILDFLAG(IS_FUCHSIA)
|
||||
// pthread_getattr_np() can fail if the thread is not invoked by
|
||||
// pthread_create() (e.g., the main thread of blink_unittests).
|
||||
@@ -97,7 +97,7 @@
|
||||
}
|
||||
|
||||
void* GetStackStart() {
|
||||
-#if defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
|
||||
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
|
||||
BUILDFLAG(IS_FUCHSIA)
|
||||
pthread_attr_t attr;
|
||||
int error;
|
|
@ -1,11 +0,0 @@
|
|||
--- ./buildtools/third_party/libc++/__config_site.orig
|
||||
+++ ./buildtools/third_party/libc++/__config_site
|
||||
@@ -18,7 +18,7 @@
|
||||
/* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
|
||||
/* #undef _LIBCPP_HAS_NO_THREADS */
|
||||
/* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
|
||||
-/* #undef _LIBCPP_HAS_MUSL_LIBC */
|
||||
+#define _LIBCPP_HAS_MUSL_LIBC 1
|
||||
/* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
|
||||
/* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
|
||||
/* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
|
|
@ -1,27 +0,0 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer:
|
||||
pkgname=fdm-materials
|
||||
pkgver=5.2.2
|
||||
pkgrel=1
|
||||
pkgdesc="FDM Material Database"
|
||||
url="https://github.com/Ultimaker/fdm_materials"
|
||||
arch="noarch"
|
||||
license="CC0-1.0"
|
||||
makedepends="cmake samurai"
|
||||
options="!check" # no checks provided
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/Ultimaker/fdm_materials/archive/refs/tags/$pkgver.tar.gz"
|
||||
builddir="$srcdir/fdm_materials-$pkgver"
|
||||
|
||||
build() {
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
73eefec8b7b88af73afc578ffba583480bda30309945b1720d7a1a075bd7ab3279599d53fe83f4c96695f294a5a3e11297abc334ca6cc9db163d4eb0fbdaf0f9 fdm-materials-5.2.2.tar.gz
|
||||
"
|
20
backports/font-barlow/APKBUILD
Normal file
20
backports/font-barlow/APKBUILD
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Contributor: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
pkgname=font-barlow
|
||||
pkgver=1.422
|
||||
pkgrel=0
|
||||
pkgdesc="Barlow is a slightly rounded, low-contrast, grotesk font superfamily"
|
||||
url="https://tribby.com/fonts/barlow/"
|
||||
arch="noarch"
|
||||
license="OFL-1.1"
|
||||
source="https://tribby.com/fonts/barlow/download/barlow-$pkgver.zip"
|
||||
options="!check" # No code to test
|
||||
builddir="$srcdir/fonts/otf"
|
||||
|
||||
package() {
|
||||
install -Dm644 ./*.otf -t "$pkgdir"/usr/share/fonts/$pkgname
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
ecd9d3c66161e5043cf5ae7edf60863a27d51655b13ea01fabe83abcb4adf6a84366ad14f7c01cd0a7160dda357e81996dceae272fac65f97b3384bef9589df8 barlow-1.422.zip
|
||||
"
|
20
backports/font-eb-garamond/APKBUILD
Normal file
20
backports/font-eb-garamond/APKBUILD
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Contributor: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
pkgname=font-eb-garamond
|
||||
pkgver=0.016
|
||||
pkgrel=0
|
||||
pkgdesc="Digitization of the Garamond shown on the Egenolff-Berner specimen"
|
||||
url="http://www.georgduffner.at/ebgaramond/"
|
||||
arch="noarch"
|
||||
license="OFL-1.1"
|
||||
source="https://bitbucket.org/georgd/eb-garamond/downloads/EBGaramond-$pkgver.zip"
|
||||
options="!check" # No code to test
|
||||
builddir="$srcdir/EBGaramond-$pkgver/otf"
|
||||
|
||||
package() {
|
||||
install -Dm644 ./*.otf -t "$pkgdir"/usr/share/fonts/$pkgname
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
f7d67d6fb47ff7aa614b08d97f953cd50122935b40ff191c7b226ad0714b738a5b359b04342ebea10109e7ab8b4260256ce0f8592fd70dc3e7fe29c77188a955 EBGaramond-0.016.zip
|
||||
"
|
20
backports/font-inter/APKBUILD
Normal file
20
backports/font-inter/APKBUILD
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Contributor: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
pkgname=font-inter
|
||||
pkgver=3.19
|
||||
pkgrel=0
|
||||
pkgdesc="A typeface carefully crafted & designed for computer screens"
|
||||
url="https://rsms.me/inter/"
|
||||
arch="noarch"
|
||||
license="OFL-1.1"
|
||||
source="https://github.com/rsms/inter/releases/download/v$pkgver/Inter-$pkgver.zip"
|
||||
options="!check" # No code to test
|
||||
builddir="$srcdir/Inter Desktop"
|
||||
|
||||
package() {
|
||||
install -Dm644 ./*.otf -t "$pkgdir"/usr/share/fonts/font-inter
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
5a602c9da3c75aff3817066a5cf01489d54b2a2a93f13aa7eb61ac4f4f3453e91cb6153dfa5d7d72c8d9008c47bcbdf704f19909dbaef247dc7b2c14ff2d3041 Inter-3.19.zip
|
||||
"
|
20
backports/font-parisienne/APKBUILD
Normal file
20
backports/font-parisienne/APKBUILD
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Contributor: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
# Maintainer: Lauren N. Liberda <lauren@selfisekai.rocks>
|
||||
pkgname=font-parisienne
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
pkgdesc="Parisienne is a casual connecting script inspired by a 1960s Bra advertisement"
|
||||
url="https://fonts.google.com/specimen/Parisienne"
|
||||
arch="noarch"
|
||||
license="OFL-1.1"
|
||||
source="Parisienne-$pkgver.zip::https://fonts.google.com/download?family=Parisienne"
|
||||
options="!check" # No code to test
|
||||
builddir="$srcdir/"
|
||||
|
||||
package() {
|
||||
install -Dm644 ./Parisienne-Regular.ttf -t "$pkgdir"/usr/share/fonts/$pkgname
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
a5099b4952b26c31bc1aa363318b4a13a3c156712e58b601534a6530780bc1938420970a50a3a22cbf3f4dff647660b3cafdc4d05a4c86b86a8d21a7bb5efab0 Parisienne-1.zip
|
||||
"
|
|
@ -1,56 +0,0 @@
|
|||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
pkgname=freetube
|
||||
pkgver=0.21.3
|
||||
pkgrel=2
|
||||
pkgdesc="An open source desktop YouTube player built with privacy in mind."
|
||||
arch="x86_64 aarch64" # blocked by electron
|
||||
license="AGPL-3.0-only"
|
||||
depends="
|
||||
electron
|
||||
font-roboto
|
||||
"
|
||||
makedepends="
|
||||
electron-tasje
|
||||
nodejs
|
||||
yarn
|
||||
"
|
||||
url="https://freetubeapp.io"
|
||||
source="
|
||||
$pkgname-$pkgver.tar.gz::https://github.com/FreeTubeApp/FreeTube/archive/v$pkgver-beta.tar.gz
|
||||
freetube.sh
|
||||
tasje-dotdash.patch
|
||||
"
|
||||
options="net !check" # No testsuite
|
||||
builddir="$srcdir"/FreeTube-$pkgver-beta
|
||||
|
||||
export npm_config_nodedir=/usr/include/electron/node_headers
|
||||
export npm_config_build_from_source=true
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
yarn --cache-folder "$srcdir"/yarn-cache install --frozen-lockfile --ignore-scripts
|
||||
}
|
||||
|
||||
build() {
|
||||
yarn --cache-folder "$srcdir"/yarn-cache run pack
|
||||
|
||||
tasje --config _scripts/ebuilder.config.js pack
|
||||
}
|
||||
|
||||
package() {
|
||||
# directory creation + program copy
|
||||
install -Dm755 build/resources/app.asar -t "$pkgdir"/usr/lib/$pkgname/
|
||||
|
||||
# link binaries + other items
|
||||
install -Dm755 "$srcdir"/freetube.sh "$pkgdir"/usr/bin/$pkgname
|
||||
install -Dm644 "$builddir"/_icons/icon.svg "$pkgdir"/usr/share/icons/hicolor/scalable/$pkgname.svg
|
||||
install -Dm644 build/freetube.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
22e5ab677cd442d50237b2d62534698d8ad73a37e1731003dc23c4ea3da992b3cae936f0bb3a0a86cd4b7fba731c9fa53276cb0a6cd5bab213ff2a6c9006cb05 freetube-0.21.3.tar.gz
|
||||
2ce2effc794bb663789cefe968b5899122127983dbfa1b240aa33a2be383720b18204e6d01b4a550df72956f02b6636b79c93a58f470a970b09b770f5b8f2fc4 freetube.sh
|
||||
d27cb896b65a7e8d52ffe86e5f74eed72b6cf976b28e1a13012d34c7eceba5ff6f20298017738dfa93c0336ffa52b8ee4da7e06b02747062898db7e678819526 tasje-dotdash.patch
|
||||
"
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
exec electron /usr/lib/freetube/app.asar "$@"
|
|
@ -1,12 +0,0 @@
|
|||
https://codeberg.org/selfisekai/electron_tasje/issues/27
|
||||
--- ./_scripts/ebuilder.config.js.orig
|
||||
+++ ./_scripts/ebuilder.config.js
|
||||
@@ -20,7 +20,7 @@
|
||||
files: [
|
||||
'_icons/iconColor.*',
|
||||
'icon.svg',
|
||||
- './dist/**/*',
|
||||
+ 'dist/**/*',
|
||||
'!dist/web/*',
|
||||
'!node_modules/**/*',
|
||||
],
|
|
@ -1,40 +0,0 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=libnest2d
|
||||
pkgver=0.4
|
||||
pkgrel=6
|
||||
pkgdesc="2D irregular bin packaging and nesting library written in modern C++"
|
||||
url="https://github.com/tamasmeszaros/libnest2d"
|
||||
arch="noarch"
|
||||
license="LGPL-3.0-only"
|
||||
makedepends="samurai cmake clipper-dev boost-dev nlopt-dev"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/tamasmeszaros/libnest2d/archive/refs/tags/$pkgver.tar.gz
|
||||
allow-disallowed-area.patch"
|
||||
|
||||
build() {
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
||||
fi
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=True \
|
||||
-DCMAKE_BUILD_TYPE=minsizerel \
|
||||
$CMAKE_CROSSOPTS .
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build
|
||||
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
fadce18986b844eed13a581f84055df909a17407a0980deb6c7c24248a969a537a8840650bcfc673e61973810ce9a008acb599e3b8e00c9bff6b566ca41cd62c libnest2d-0.4.tar.gz
|
||||
2e8cd3343c72c576ecb54960d7ad9f4f2322f822b19ac41850b3b28da95e97c2cefe7c67de6c97627df08cd5cdc1660ce4dfa95fe51f88e0ff5c066c8d785458 allow-disallowed-area.patch
|
||||
"
|
|
@ -1,124 +0,0 @@
|
|||
From 2e91be2679b5efa0773292d9d0a2ae72255bb271 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:13:15 +0200
|
||||
Subject: [PATCH 1/3] Allow for an item to be a disallowed area
|
||||
|
||||
url: https://github.com/tamasmeszaros/libnest2d/pull/18
|
||||
|
||||
Disallowed areas have slightly different behaviour from fixed items: Other items won't get packed closely around them. Implementation of that pending.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp
|
||||
index 2f207d5..932a060 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -71,6 +71,15 @@ class _Item {
|
||||
int binid_{BIN_ID_UNSET}, priority_{0};
|
||||
bool fixed_{false};
|
||||
|
||||
+ /**
|
||||
+ * \brief If this is a fixed area, indicates whether it is a disallowed area
|
||||
+ * or a previously placed item.
|
||||
+ *
|
||||
+ * If this is a disallowed area, other objects will not get packed close
|
||||
+ * together with this item. It only blocks other items in its area.
|
||||
+ */
|
||||
+ bool disallowed_{false};
|
||||
+
|
||||
public:
|
||||
|
||||
/// The type of the shape which was handed over as the template argument.
|
||||
@@ -129,11 +138,18 @@ class _Item {
|
||||
sh_(sl::create<RawShape>(std::move(contour), std::move(holes))) {}
|
||||
|
||||
inline bool isFixed() const noexcept { return fixed_; }
|
||||
+ inline bool isDisallowedArea() const noexcept { return disallowed_; }
|
||||
inline void markAsFixedInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
}
|
||||
+ inline void markAsDisallowedAreaInBin(int binid)
|
||||
+ {
|
||||
+ fixed_ = binid >= 0;
|
||||
+ binid_ = binid;
|
||||
+ disallowed_ = true;
|
||||
+ }
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
inline int binId() const noexcept { return binid_; }
|
||||
|
||||
From ff61049e59d3151462bca7ff2e2268c2b32731e7 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:14:36 +0200
|
||||
Subject: [PATCH 2/3] Allow unsetting of being a disallowed area
|
||||
|
||||
If you set the bin to -1 or set the item to be a simple fixed item afterwards, it'll no longer be a disallowed area.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp
|
||||
index 932a060..54761a6 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -143,12 +143,13 @@ class _Item {
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
+ disallowed_ = false;
|
||||
}
|
||||
inline void markAsDisallowedAreaInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
- disallowed_ = true;
|
||||
+ disallowed_ = fixed_;
|
||||
}
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
|
||||
From 31391fd173249ad9b906390058e13b09238fadc8 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Thu, 8 Oct 2020 11:06:58 +0200
|
||||
Subject: [PATCH 3/3] Align items to their starting position if all placed
|
||||
items are disallowed
|
||||
|
||||
We shouldn't align items to disallowed areas. So place them in the starting position according to the alignment property.
|
||||
|
||||
Lot of work to investigate. But very little code changes!
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/placers/nfpplacer.hpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/libnest2d/placers/nfpplacer.hpp b/include/libnest2d/placers/nfpplacer.hpp
|
||||
index 96a8cff..b0ebb15 100644
|
||||
--- a/include/libnest2d/placers/nfpplacer.hpp
|
||||
+++ b/include/libnest2d/placers/nfpplacer.hpp
|
||||
@@ -101,7 +101,7 @@ struct NfpPConfig {
|
||||
* alignment with the candidate item or do anything else.
|
||||
*
|
||||
* \param remaining A container with the remaining items waiting to be
|
||||
- * placed. You can use some features about the remaining items to alter to
|
||||
+ * placed. You can use some features about the remaining items to alter the
|
||||
* score of the current placement. If you know that you have to leave place
|
||||
* for other items as well, that might influence your decision about where
|
||||
* the current candidate should be placed. E.g. imagine three big circles
|
||||
@@ -735,7 +735,8 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer<RawShape, TBin
|
||||
remlist.insert(remlist.end(), remaining.from, remaining.to);
|
||||
}
|
||||
|
||||
- if(items_.empty()) {
|
||||
+ if(std::all_of(items_.begin(), items_.end(),
|
||||
+ [](const Item& item) { return item.isDisallowedArea(); })) {
|
||||
setInitialPosition(item);
|
||||
best_overfit = overfit(item.transformedShape(), bin_);
|
||||
can_pack = best_overfit <= 0;
|
|
@ -1,33 +0,0 @@
|
|||
# Contributor: Alex Yam <alex@alexyam.com>
|
||||
# Maintainer: Alex Yam <alex@alexyam.com>
|
||||
pkgname=libspatialindex
|
||||
pkgver=0_git20210205
|
||||
_commit=8ee223632f95c81f49f5eb2d547ad973475c4601
|
||||
pkgrel=1
|
||||
pkgdesc="extensible framework for robust spatial indexing methods"
|
||||
url="https://libspatialindex.org/"
|
||||
arch="all"
|
||||
license="MIT"
|
||||
makedepends="cmake"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$_commit.tar.gz::https://github.com/libspatialindex/libspatialindex/archive/$_commit.tar.gz"
|
||||
builddir="$srcdir/$pkgname-$_commit"
|
||||
|
||||
build() {
|
||||
cmake -B build \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DCMAKE_PREFIX_PATH=/usr \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DBUILD_TESTING=ON
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build && ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --build build --target install
|
||||
}
|
||||
|
||||
sha512sums="caf91aac77b75445e4fc4d0baedcd10c619b2097dfd841b00339d9ddd4b73db05b99de1d84be88f1083f4713a936cf110d5851523491f5a74c6f96e1d5795dbb libspatialindex-8ee223632f95c81f49f5eb2d547ad973475c4601.tar.gz"
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue