diff --git a/.forgejo/bin/check_ver.sh b/.forgejo/bin/check_ver.sh deleted file mode 100755 index b647e57..0000000 --- a/.forgejo/bin/check_ver.sh +++ /dev/null @@ -1,213 +0,0 @@ -#!/bin/bash - -# expects the following env variables: -# downstream: downstream repo -# -# env variables to track minor or bug-fix updates -# minor_only: array of packages that should only track minor releases (seperate by space) -# default: none -# all packages: all -# fix_only: array of packages that should only track bug fix releases (seperated by space) -# default: none -# all packages: all -# -# If either minor_only or fix_only is set, only packages with semantic versioning schemes -# will be tracked. -# -# If a package is both minor_only and fix_only, the minor releases will be tracked -# -# If a - is placed in front of package name, it'll be excluded from the update rule -# -# optional env variables -# ALL_PACKAGES: when true, ignore is package is owned by me -# skip_package: array of packages to skip, place a - in front of package name to not exclude it -# add_package: array of additional packages to check -# - -repo=${downstream/*\/} -release=${downstream/\/$repo/} -release=${release/*\/} -release=${release/v} -arch=$(apk --print-arch) -# add special case for postmarketos -[ "$release" == "postmarketos" ] && { release=$repo; repo="pmos"; arch="aarch64"; } -[ "$release" == "master" ] && release=edge - -is_semantic() { - local downstream_version_dot=${1//[^.]} - if [[ ${#downstream_version_dot} -eq 2 ]]; then - return 0 - fi - return 1 -} - - -echo "Checking $downstream for out of date packages" -curl --silent $downstream/$arch/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX - -if [ "$ALL_PACKAGES" == "true" ]; then - owned_by_you=$(awk -F ':' '{if($1=="o"){print $2}}' APKINDEX | sort | uniq) - 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\) /' 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 - -# add additionnal packages -owned_by_you="$owned_by_you $add_package" - -rm -f out_of_date not_in_anitya - -for pkg in $owned_by_you; do - downstream_version=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}' | sort -V | tail -n 1) - downstream_version=${downstream_version/-*} - - # skip package if in $skip_package array - if [[ "$skip_package" == *all* || "$skip_package" == *$pkg* ]] && [[ "$skip_package" != *-$pkg* ]]; then - echo "$pkg skipped" - continue - fi - - # special cases where package is not semantic - case $pkg in - # track u-boot-pine64-pinenote against mainline u-boot, and track upstream rockchip blobs - u-boot-pine64-pinenote) - # reproduce catch-all option - if [[ "$minor_only" == *all* || "$minor_only" == *$pkg* ]] && [[ "$minor_only" != *-$pkg* ]]; then - # continues when package version scheme is not semantic, but minor_only or fix_only is set - if ! is_semantic $downstream_version; then - echo "$pkg is not semantic, and minor_only is set" - continue - fi - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/u-boot" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*.*}.*\").string" | head -n1) - elif [[ "$fix_only" == *all* || "$fix_only" == *$pkg* ]] && [[ "$fix_only" != *-$pkg* ]]; then - # continues when package version scheme is not semantic, but minor_only or fix_only is set - if ! is_semantic $downstream_version; then - echo "$pkg is not semantic, and fix_only is set" - continue - fi - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/u-boot" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1) - else - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/u-boot" | jq -r '.stable_versions.[]' | head -n1) - fi - - # some reason the commit now not in APKINDEX, using master instead - #commit=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="c"){print $2}}') - #commit=${commit/-dirty/} - commit=master - - # fetches upstream version for blobs using ini file - upstream_trust="$(curl --fail -s 'https://raw.githubusercontent.com/rockchip-linux/rkbin/master/RKTRUST/RK3566TRUST_ULTRA.ini' | grep bl31 | awk -F '=' '{if($1"="PATH){print $2}}' | grep -o -P '(?<=_v).*(?=.elf)')" - upstream_ddr="$(curl --fail -s 'https://raw.githubusercontent.com/rockchip-linux/rkbin/master/RKBOOT/RK3566MINIALL_ULTRA.ini' | grep ddr | awk -F '=' '{if($1"="PATH){print $2}}' | head -n 1 | grep -o -P '(?<=_v).*(?=.bin)')" - - # extracts downstream version via _trust_ver and _ddr_ver variable - downstream_trust=$(curl --fail -X GET -s "https://gitlab.postmarketos.org/postmarketOS/pmaports/-/raw/$commit/device/testing/u-boot-pine64-pinenote/APKBUILD" | awk -F '=' '{if($1=="_trust_ver"){print $2}}') - downstream_ddr=$(curl --fail -X GET -s "https://gitlab.postmarketos.org/postmarketOS/pmaports/-/raw/$commit/device/testing/u-boot-pine64-pinenote/APKBUILD" | awk -F '=' '{if($1=="_ddr_ver"){print $2}}') - - # compares versions and creates newline in out_of_date if problematic - if [ "$upstream_trust" != "$downstream_trust" ]; then - echo "$pkg new Trust blob $upstream_trust version available" - echo "$pkg(trust) $downstream_trust $upstream_trust $repo $release" >> out_of_date - fi - if [ "$upstream_ddr" != "$downstream_ddr" ]; then - echo "$pkg new ddr blob $upstream_ddr version available" - echo "$pkg(ddr) $downstream_ddr $upstream_ddr $repo $release" >> out_of_date - fi - ;; - # release-monitoring omits the extra B, while we keep it but put it after the version no. - looking-glass) upstream_version="$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1)b";; - # we want to track both Firefox security upgrades + Zotero upgrades - zotero) - commit=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="c"){print $2}}') - downstream_fx_ver=$(curl --fail -X GET -s "https://gitlab.alpinelinux.org/alpine/aports/-/raw/$commit/community/zotero/APKBUILD" | awk -F '=' '{if($1=="_fxver"){print $2}}') - upstream_fx_ver=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/firefox-esr" | jq -r ".stable_versions.[] | match(\"${downstream_fx_ver/.*.*}.*\").string" | head -n1) - if [ "$upstream_fx_ver" != "$downstream_fx_ver" ]; then - echo "$pkg new Firefox $upstream_fx_ver version available" - echo "$pkg(fx_ver) $downstream_fx_ver $upstream_fx_ver $repo $release" >> out_of_date - fi - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1) - ;; - # aports omits the -beta part of the version - freetube) upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].version' | sed "s|-beta||");; - # we only track x.x.1xx feature branches of SDK and stage0 - dotnet*sdk|dotnet*stage0) upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version::-2}.*\").string" | sed 's|-.*||' | head -n1);; - # we want to track both current major version and upstream latest - electron) - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/projects/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_versions' | jq -r ".[] | match(\"${downstream_version/.*}.*\").string" | head -n 1) - latest_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version' ) - # append version number to signal that this is not latest major version - if [ "${upstream_version/.*}" != "${latest_version/.*}" ]; then - echo "$pkg(${latest_version/.*}) major version available" - echo "$pkg(${latest_version/.*}) $downstream_version $latest_version $repo $release" >> out_of_date - pkg="$pkg(${upstream_version/.*})" - fi - ;; - # we want to track LTS (even releases) rather than latest - arm-trusted-firmware) - if [[ "$fix_only" == *all* || "$fix_only" == *$pkg* ]] || [[ "$minor_only" == *all* || "$minor_only" == *$pkg* ]]; then - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1) - else - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[] | select(test("^[0-9]+\\.[0-9]+\\.[0-9]+$")) | select(split(".") | .[1] | tonumber | . % 2 == 0)' | head -n1) - fi - ;; - # track linux-pine64-pinenote against latest - linux-pine64-pinenote) - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/315000" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1) - latest_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/315000" | jq -r ".stable_versions.[]" | head -n1) - - # append version number to signal that this is not latest major version - if [ "${upstream_version/.*.*}" != "${latest_version/.*.*}" ]; then - echo "$pkg(${latest_version/.*.*}) major version available" - echo "$pkg(${latest_version/.*.*}) $downstream_version $latest_version $repo $release" >> out_of_date - pkg="$pkg(${upstream_version%.*})" - fi - ;; - # track linux-radxa against BSP kernel (usually got awful late - linux-radxa) - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1) - upstream_version=${upstream_version/-*} - ;; - dotnet*-sdk|dotnet*-stage0) - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/141853" | jq -r ".stable_versions.[] | match(\"${downstream_version::-2}.*\").string" | head -n 1) - ;; - dotnet*-runtime) - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/220385" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n 1) - ;; - # removes last bit in github tag from usbboot release, as not needed - raspberrypi-usbboot) curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1 | sed 's|-.*||';; - *) - - if [[ "$minor_only" == *all* || "$minor_only" == *$pkg* ]] && [[ "$minor_only" != *-$pkg* ]]; then - # continues when package version scheme is not semantic, but minor_only or fix_only is set - if ! is_semantic $downstream_version; then - echo "$pkg is not semantic, and minor_only is set" - continue - fi - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*.*}.*\").string" | head -n1) - elif [[ "$fix_only" == *all* || "$fix_only" == *$pkg* ]] && [[ "$fix_only" != *-$pkg* ]]; then - # continues when package version scheme is not semantic, but minor_only or fix_only is set - if ! is_semantic $downstream_version; then - echo "$pkg is not semantic, and fix_only is set" - continue - fi - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r ".stable_versions.[] | match(\"${downstream_version%.*}.*\").string" | head -n1) - else - upstream_version=$(curl --fail -X GET -s -H 'Content-Type: application/json' "https://release-monitoring.org/api/project/Alpine/$pkg" | jq -r '.stable_versions.[]' | head -n1) - fi - ;; - esac - - if [ -z "$upstream_version" ]; then - echo "$pkg not in anitya" - # do not track not_in_anitya if either minor_only or fix_only is set - if [ -z ${minor_only+x} ] && [ -z ${fix_only+x} ]; then - echo "$pkg" >> not_in_anitya - fi - elif [ "$downstream_version" != "$(printf '%s\n' $upstream_version $downstream_version | sort -V | head -n 1)" ]; then - echo "$pkg higher downstream $upstream_version" - continue - elif [ "$upstream_version" != "$downstream_version" ]; then - echo "$pkg upstream version $upstream_version does not match downstream version $downstream_version in $release" - echo "$pkg $downstream_version $upstream_version $repo $release" >> out_of_date - fi -done diff --git a/.forgejo/bin/clear-repo.sh b/.forgejo/bin/clear-repo.sh deleted file mode 100755 index 486321b..0000000 --- a/.forgejo/bin/clear-repo.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -TARGET_REPO=$1 -ARCH="x86 x86_64 armhf armv7 aarch64 ppc64le s390x mips64 riscv64 loongarch64" - -for arch in $ARCH; do - # check if repo exists - wget --spider $TARGET_REPO/$arch/APKINDEX.tar.gz -o /dev/null || continue - echo ">>> Clearing repo $TARGET_REPO/$arch" - - curl --silent $TARGET_REPO/$arch/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX - - 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 -done diff --git a/.forgejo/bin/create_issue.sh b/.forgejo/bin/create_issue.sh deleted file mode 100755 index 3164b14..0000000 --- a/.forgejo/bin/create_issue.sh +++ /dev/null @@ -1,190 +0,0 @@ -#!/bin/bash - -# expects: -# env variable ISSUE_TOKEN -# file out_of_date - -IFS=' -' -repo=${downstream/*\/} - -does_it_exist() { - name=$1 - downstream_version=$2 - upstream_version=$3 - repo=$4 - release=$5 - - query="$repo/$name: upgrade to $upstream_version" - if [ "$release" != "edge" ]; then - query="%22[$release] $query%22" - elif [ "$repo" != "pmos" ] && [ "$repo" != "user" ]; then - # workaround to this query matching both stable and edge branch - query="%22$query%22&labels=Edge" - else - query="%22$query%22" - fi - query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' | sed 's|\[|%5B|g' | sed 's|\]|%5D|g')" - - result="$(curl -L --silent -X 'GET' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues&sort=latest" \ - -H 'accept: application/json' \ - -H "Authorization: token $ISSUE_TOKEN" - )" - - if [ "$result" == "[]" ]; then - return 1 - fi -} - -is_it_old() { - name=$1 - downstream_version=$2 - upstream_version=$3 - repo=$4 - release=$5 - - query="$repo/$name: upgrade to" - if [ "$release" != "edge" ]; then - query="%22[$release] $query%22" - elif [ "$repo" != "pmos" ] && [ "$repo" != "user" ]; then - # workaround to this query matching both stable and edge branch - query="%22$query%22&labels=Edge" - else - query="%22$query%22" - fi - query="$(echo $query | sed 's| |%20|g' | sed 's|:|%3A|g' | sed 's|/|%2F|g' | sed 's|\[|%5B|g' | sed 's|\]|%5D|g')" - - result="$(curl -L --silent -X 'GET' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues&sort=latest" \ - -H 'accept: application/json' \ - -H "authorization: token $ISSUE_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 - release=$5 - id=$6 - - title="$repo/$name: upgrade to $upstream_version" - if [ "$release" != "edge" ]; then title="[$release] $title"; fi - - result=$(curl -L --silent -X 'PATCH' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$id" \ - -H 'accept: application/json' \ - -H "authorization: token $ISSUE_TOKEN" \ - -H 'Content-Type: application/json' \ - -d "{\"title\": \"$title\"}" - ) - - return 0 -} - -create_issue() { - name=$1 - downstream_version=$2 - upstream_version=$3 - repo=$4 - release=$5 - - title="$repo/$name: upgrade to $upstream_version" - if [ "$release" != "edge" ]; then title="[$release] $title"; fi - - result=$(curl -L --silent -X 'POST' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \ - -H 'accept: application/json' \ - -H "authorization: token $ISSUE_TOKEN" \ - -H 'Content-Type: application/json' \ - -d "{ - \"title\": \"$title\", - \"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}')" - release="$(echo $pkg | awk '{print $5}')" - - if does_it_exist $name $downstream_version $upstream_version $repo $release; then - echo "Issue for $repo/$name already exists" - continue - fi - - id=$(is_it_old $name $downstream_version $upstream_version $repo $release) - - if [ "$id" != "0" ] && [ -n "$id" ]; then - echo "Issue for $repo/$name needs updating" - update_title $name $downstream_version $upstream_version $repo $release $id - continue - fi - - echo "Creating issue for $repo/$name" - create_issue $name $downstream_version $upstream_version $repo $release - done -fi - -if [ -f not_in_anitya ]; then - query="Add missing $repo packages to anitya" - query="%22$(echo $query | sed 's| |%20|g')%22" - - result="$(curl -L --silent -X 'GET' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues?state=open&q=$query&type=issues&sort=latest" \ - -H 'accept: application/json' \ - -H "authorization: token $ISSUE_TOKEN" - )" - - if [ "$result" == "[]" ]; then - echo "Creating anitya issue" - result=$(curl -L --silent -X 'POST' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues" \ - -H 'accept: application/json' \ - -H "authorization: token $ISSUE_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 -L --silent -X 'PATCH' \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/issues/$result_id" \ - -H 'accept: application/json' \ - -H "authorization: token $ISSUE_TOKEN" \ - -H 'Content-Type: application/json' \ - -d "{ - \"body\": \"- [ ] $(sed '{:q;N;s/\n/\\n- [ ] /g;t q}' not_in_anitya)\" - }" - ) - fi -fi diff --git a/.forgejo/bin/deploy.sh b/.forgejo/bin/deploy.sh deleted file mode 100755 index 57afd32..0000000 --- a/.forgejo/bin/deploy.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -# shellcheck disable=SC3040 -set -eu -o pipefail - -readonly REPOS="backports user" -readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME -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 - diff --git a/.forgejo/bin/generate-cross.sh b/.forgejo/bin/generate-cross.sh deleted file mode 100755 index 878b25f..0000000 --- a/.forgejo/bin/generate-cross.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -TARGET_RELEASE=$1 -shift -TARGET_ARCH=$@ -CURRENT_ARCH=$(cat /etc/apk/arch) - -if [ -z "$TARGET_RELEASE" ]; then - echo ">>> No target release specified, assumming edge" - TARGET_RELEASE=edge -fi -[[ "$TARGET_RELEASE" == "edge" ]] && TARGET_BRANCH=master || TARGET_BRANCH="${TARGET_RELEASE/v}-stable" - -if [[ ! -d "aports-$TARGET_RELEASE" ]]; then - echo ">>> Fetching aports for $TARGET_RELEASE" - git init aports-$TARGET_RELEASE - git -C aports-$TARGET_RELEASE remote add origin https://gitlab.alpinelinux.org/alpine/aports - git -C aports-$TARGET_RELEASE fetch --depth 1 origin $TARGET_BRANCH - git -C aports-$TARGET_RELEASE checkout $TARGET_BRANCH - [[ $? -ne 0 ]] && { echo ">>> Git fetch failed, does your release exist?"; exit; } || true -fi - -if [ -z "$TARGET_ARCH" ]; then - echo ">>> No arch specified, assuming target to all arches supported by upstream for release $TARGET_RELEASE" - TARGET_ARCH=$(cat aports-$TARGET_RELEASE/scripts/mkimg.minirootfs.sh | tr -d "\t" | awk -F "=" '{if($1=="arch"){print $2}}' | tr -d \" | sed "s| $CURRENT_ARCH||") - if [ -z "$TARGET_ARCH" ]; then - echo ">>> Could not compute arches that are supported, does your release exist?" - exit - fi -fi - -. /usr/share/abuild/functions.sh - -for arch in $TARGET_ARCH; do - if [[ "$(arch_to_hostspec $arch)" == "unknown" ]]; then - echo ">>> $arch not valid arch, please chose among the following" - sed -n '/^arch_to_hostspec/,/esac$/ {s/esac//;p;}' /usr/share/abuild/functions.sh | sed -e '/unknown/d' -e '/arch/d' -e '/case/d' -e "/$CURRENT_ARCH/d" | awk '{print $1}' | tr -d ')' - exit - fi -done - -echo ">>> Targetting $TARGET_ARCH for cross generation" - -( - cd aports-$TARGET_RELEASE/scripts - # this stops bootstrap from building the whole base system - sed -i 's|^msg "Cross building base system"|exit; msg "Cross building base system"|' bootstrap.sh - for arch in $TARGET_ARCH; do - echo ">>> Building cross-compilers for $arch" - ./bootstrap.sh $arch - [[ $? -ne 0 ]] && { echo ">>> Cross-build failure"; exit; } || true - done - echo ">>> Building done" -) diff --git a/.forgejo/workflows/build-aarch64.yaml b/.forgejo/workflows/build-aarch64.yaml deleted file mode 100644 index 78db319..0000000 --- a/.forgejo/workflows/build-aarch64.yaml +++ /dev/null @@ -1,54 +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 upgrade -a - doas apk add nodejs git patch curl - cd /etc/apk/keys - doas curl -JO https://ayakael.net/api/packages/forge/alpine/key - - name: Repo pull - uses: actions/checkout@v4 - with: - fetch-depth: 500 - - name: Package build - run: | - ${{ github.workspace }}/.forgejo/bin/build.sh - touch packages/dummy - - name: Package upload - uses: actions/upload-artifact@v3 - with: - name: package - path: packages - - deploy-aarch64: - needs: [build-aarch64] - runs-on: aarch64 - container: - image: alpine:latest - env: - CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine' - CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }} - FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} - FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} - steps: - - name: Setting up environment - run: apk add nodejs curl findutils git gawk - - name: Repo pull - uses: actions/checkout@v4 - - name: Package download - uses: actions/download-artifact@v3 - - name: Package deployment - run: ${{ github.workspace }}/.forgejo/bin/deploy.sh diff --git a/.forgejo/workflows/build-armv7.yaml b/.forgejo/workflows/build-armv7.yaml deleted file mode 100644 index aaf4029..0000000 --- a/.forgejo/workflows/build-armv7.yaml +++ /dev/null @@ -1,54 +0,0 @@ -on: - pull_request: - types: [ assigned, opened, synchronize, reopened ] - -jobs: - build-armv7: - runs-on: armv7 - container: - image: alpinelinux/alpine-gitlab-ci:latest - env: - CI_PROJECT_DIR: ${{ github.workspace }} - CI_DEBUG_BUILD: ${{ runner.debug }} - CI_MERGE_REQUEST_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }} - CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }} - steps: - - name: Environment setup - run: | - doas apk upgrade -a - doas apk add nodejs git patch curl - cd /etc/apk/keys - doas curl -JO https://ayakael.net/api/packages/forge/alpine/key - - name: Repo pull - uses: actions/checkout@v4 - with: - fetch-depth: 500 - - name: Package build - run: | - ${{ github.workspace }}/.forgejo/bin/build.sh - touch packages/dummy - - name: Package upload - uses: actions/upload-artifact@v3 - with: - name: package - path: packages - - deploy-armv7: - needs: [build-armv7] - runs-on: armv7 - container: - image: alpine:latest - env: - CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine' - CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }} - FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} - FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} - steps: - - name: Setting up environment - run: apk add nodejs curl findutils git gawk - - name: Repo pull - uses: actions/checkout@v4 - - name: Package download - uses: actions/download-artifact@v3 - - name: Package deployment - run: ${{ github.workspace }}/.forgejo/bin/deploy.sh diff --git a/.forgejo/workflows/build-cross.yaml b/.forgejo/workflows/build-cross.yaml deleted file mode 100644 index f4737b6..0000000 --- a/.forgejo/workflows/build-cross.yaml +++ /dev/null @@ -1,59 +0,0 @@ -on: - workflow_dispatch: - inputs: - target_arch: - description: 'target arch' - required: false - type: string - -jobs: - build-cross: - runs-on: x86_64 - container: - image: alpinelinux/alpine-gitlab-ci:latest - env: - CI_PROJECT_DIR: ${{ github.workspace }} - CI_DEBUG_BUILD: ${{ runner.debug }} - CI_MERGE_REQUEST_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }} - CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.ref_name }} - steps: - - name: Environment setup - run: | - doas apk upgrade -a - doas apk add nodejs git patch curl bash - cd /etc/apk/keys - doas curl -JO https://ayakael.net/api/packages/forge/alpine/key - - name: Repo pull - uses: actions/checkout@v4 - with: - fetch-depth: 500 - - name: Package build - run: | - ${{ github.workspace }}/.forgejo/bin/build.sh - ${{ github.workspace }}/.forgejo/bin/generate-cross.sh ${{ github.ref_name }} ${{ inputs.target_arch }} - mv -v /home/buildozer/packages/main ${{ github.workspace }}/packages/cross - - name: Package upload - uses: actions/upload-artifact@v3 - with: - name: package - path: packages - - deploy-cross: - needs: [build-cross] - runs-on: x86_64 - container: - image: alpine:latest - env: - CI_ALPINE_REPO: 'https://ayakael.net/api/packages/forge/alpine' - CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.ref_name }} - FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} - FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} - steps: - - name: Setting up environment - run: apk add nodejs curl findutils git gawk - - name: Repo pull - uses: actions/checkout@v4 - - name: Package download - uses: actions/download-artifact@v3 - - name: Package deployment - run: ${{ github.workspace }}/.forgejo/bin/deploy.sh diff --git a/.forgejo/workflows/build-x86_64.yaml b/.forgejo/workflows/build-x86_64.yaml deleted file mode 100644 index 84d6908..0000000 --- a/.forgejo/workflows/build-x86_64.yaml +++ /dev/null @@ -1,54 +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 upgrade -a - doas apk add nodejs git patch curl - cd /etc/apk/keys - doas curl -JO https://ayakael.net/api/packages/forge/alpine/key - - name: Repo pull - uses: actions/checkout@v4 - with: - fetch-depth: 500 - - name: Package build - run: | - ${{ github.workspace }}/.forgejo/bin/build.sh - touch packages/dummy - - name: Package upload - uses: actions/upload-artifact@v3 - with: - name: package - path: packages - - deploy-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' - CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.base_ref }} - FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} - FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} - steps: - - name: Setting up environment - run: apk add nodejs curl findutils git gawk - - name: Repo pull - uses: actions/checkout@v4 - - name: Package download - uses: actions/download-artifact@v3 - - name: Package deployment - run: ${{ github.workspace }}/.forgejo/bin/deploy.sh diff --git a/.forgejo/workflows/check-backports.yml b/.forgejo/workflows/check-backports.yml deleted file mode 100644 index 99bb71d..0000000 --- a/.forgejo/workflows/check-backports.yml +++ /dev/null @@ -1,28 +0,0 @@ -on: - workflow_dispatch: - - schedule: - - cron: '0 5 * * *' - -jobs: - check-backports: - name: Check backports repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://ayakael.net/api/packages/forge/alpine/v3.23/backports - ISSUE_TOKEN: ${{ secrets.issue_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 diff --git a/.forgejo/workflows/check-community.yml b/.forgejo/workflows/check-community.yml deleted file mode 100644 index ee6d624..0000000 --- a/.forgejo/workflows/check-community.yml +++ /dev/null @@ -1,116 +0,0 @@ -on: - workflow_dispatch: - - schedule: - - cron: '0 5 * * *' - -jobs: - check-community-edge: - name: Check community(edge) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/edge/community - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 4 - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-community-3.23: - name: Check community(3.23) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.23/community - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - fix_only: all -git-annex - skip_package: dotnet9-stage0 dotnet8-stage0 py3-boto3 py3-botocore dotnet10-stage0 - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-community-3.22: - name: Check community(3.22) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.22/community - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - skip_package: 'all -dotnet8-runtime -dotnet9-runtime' - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-community-3.21: - name: Check community(3.21) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.21/community - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - skip_package: 'all -dotnet8-runtime -dotnet9-runtime' - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-community-3.20: - name: Check community(3.20) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.20/community - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - skip_package: 'all -dotnet8-runtime' - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - diff --git a/.forgejo/workflows/check-main.yml b/.forgejo/workflows/check-main.yml deleted file mode 100644 index 276feb5..0000000 --- a/.forgejo/workflows/check-main.yml +++ /dev/null @@ -1,112 +0,0 @@ -on: - workflow_dispatch: - - schedule: - - cron: '0 5 * * *' - -jobs: - check-main-edge: - name: Check main(edge) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/edge/main - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 4 - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-main-3.23: - name: Check main(3.23) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.23/main - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-main-3.22: - name: Check main(3.22) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.22/main - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-main-3.21: - name: Check main(3.21) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.21/main - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-main-3.20: - name: Check main(3.20) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/v3.20/main - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 13 - fix_only: all - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - diff --git a/.forgejo/workflows/check-pmos.yml b/.forgejo/workflows/check-pmos.yml deleted file mode 100644 index 750f608..0000000 --- a/.forgejo/workflows/check-pmos.yml +++ /dev/null @@ -1,50 +0,0 @@ -on: - workflow_dispatch: - - schedule: - - cron: '0 5 * * *' - -jobs: - check-pmos-edge: - name: Check pmos(edge) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: http://mirror.postmarketos.org/postmarketos/master - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 14 - skip_package: device-clockworkpi-uconsole-radxa-cm5 device-pine64-pinenote u-boot-radxa-cm5 - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh - check-pmos-latest: - name: Check pmos(v25.12) repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: http://mirror.postmarketos.org/postmarketos/v25.12 - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 14 - fix_only: all - skip_package: device-clockworkpi-uconsole-radxa-cm5 device-pine64-pinenote u-boot-radxa-cm5 - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - name: Get scripts - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: Check out-of-date packages - run: ${{ github.workspace }}/.forgejo/bin/check_ver.sh - - name: Create issues - run: ${{ github.workspace }}/.forgejo/bin/create_issue.sh diff --git a/.forgejo/workflows/check-testing.yml b/.forgejo/workflows/check-testing.yml deleted file mode 100644 index 71ad18e..0000000 --- a/.forgejo/workflows/check-testing.yml +++ /dev/null @@ -1,28 +0,0 @@ -on: - workflow_dispatch: - - schedule: - - cron: '0 5 * * *' - -jobs: - check-testing: - name: Check testing repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://dl-cdn.alpinelinux.org/alpine/edge/testing - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 4 - skip_package: dotnet6-stage0 dotnet6-build - 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 diff --git a/.forgejo/workflows/check-user.yml b/.forgejo/workflows/check-user.yml deleted file mode 100644 index db1f574..0000000 --- a/.forgejo/workflows/check-user.yml +++ /dev/null @@ -1,27 +0,0 @@ -on: - workflow_dispatch: - - schedule: - - cron: '0 5 * * *' - -jobs: - check-user: - name: Check user repo - runs-on: aarch64 - container: - image: alpine:latest - env: - downstream: https://ayakael.net/api/packages/forge/alpine/edge/user - ISSUE_TOKEN: ${{ secrets.issue_token }} - LABEL_NUMBER: 12 - steps: - - name: Environment setup - run: apk add grep coreutils gawk curl wget bash nodejs git jq sed - - 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 diff --git a/.forgejo/workflows/clear-repo.yml b/.forgejo/workflows/clear-repo.yml deleted file mode 100644 index f60f5e7..0000000 --- a/.forgejo/workflows/clear-repo.yml +++ /dev/null @@ -1,25 +0,0 @@ -on: - workflow_dispatch: - inputs: - target_repo: - description: 'target repo' - default: 'edge/user' - required: true - type: string - -jobs: - clear-repo: - runs-on: x86_64 - container: - image: alpine:latest - env: - TARGET_REPO: 'https://ayakael.net/api/packages/forge/alpine/${{ inputs.target_repo }}' - FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} - FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} - steps: - - name: Setting up environment - run: apk add nodejs curl findutils git gawk - - name: Repo pull - uses: actions/checkout@v4 - - name: Clear repo - run: ${{ github.workspace }}/.forgejo/bin/clear-repo.sh $TARGET_REPO diff --git a/.forgejo/workflows/lint.yaml b/.forgejo/workflows/lint.yaml deleted file mode 100644 index 743cefc..0000000 --- a/.forgejo/workflows/lint.yaml +++ /dev/null @@ -1,23 +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 upgrade -a - doas apk add nodejs git - - uses: actions/checkout@v4 - with: - fetch-depth: 500 - - run: lint diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..36f5b06 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,107 @@ +stages: + - verify + - build + - deploy + +variables: + GIT_STRATEGY: clone + GIT_DEPTH: "500" + +lint: + stage: verify + interruptible: true + script: + - | + sudo apk add shellcheck atools sudo abuild + export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin" + lint + allow_failure: true + only: + - merge_requests + tags: + - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-x86_64 + +.build: + stage: build + interruptible: true + script: + - | + sudo apk add alpine-sdk lua-aports sudo + sudo 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 + only: + - merge_requests + +.cross: + stage: build + interruptible: true + script: + - | + sudo apk add alpine-sdk lua-aports sudo gzip xz qemu-$CI_QEMU_TARGET_ARCH + sudo addgroup $USER abuild + export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin" + build-rootfs.sh alpine${CI_MERGE_REQUEST_TARGET_BRANCH_NAME/v} $CI_ALPINE_TARGET_ARCH --rootfsdir $HOME/sysroot-$CI_ALPINE_TARGET_ARCH + cp /etc/apk/repositories $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/. + sudo -Eu $USER CHOST=$CI_TARGET_ALPINE_ARCH build.sh + artifacts: + paths: + - packages/ + - keys/ + - logs/ + expire_in: 7 days + only: + - merge_requests + +build-x86_64: + extends: .build + when: always + tags: + - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-x86_64 + +build-aarch64: + extends: .build + when: always + tags: + - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-aarch64 + +build-ppc64le: + extends: .build + when: manual + tags: + - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-ppc64le + +build-s390x: + extends: .build + when: manual + tags: + - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-s390x + +build-armv7: + extends: .cross + when: manual + tags: + - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-x86_64 + variables: + CI_ALPINE_TARGET_ARCH: armv7 + CI_QEMU_TARGET_ARCH: arm + +push: + interruptible: true + stage: deploy + script: + - | + sudo apk add abuild git-lfs findutils + export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin" + push.sh + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: manual + tags: + - repo diff --git a/.gitlab/bin/APKBUILD_SHIM b/.gitlab/bin/APKBUILD_SHIM new file mode 100755 index 0000000..76577ff --- /dev/null +++ b/.gitlab/bin/APKBUILD_SHIM @@ -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" diff --git a/.gitlab/bin/apkbuild-shellcheck b/.gitlab/bin/apkbuild-shellcheck new file mode 100755 index 0000000..3126684 --- /dev/null +++ b/.gitlab/bin/apkbuild-shellcheck @@ -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 diff --git a/.gitlab/bin/build-rootfs.sh b/.gitlab/bin/build-rootfs.sh new file mode 100755 index 0000000..44c4372 --- /dev/null +++ b/.gitlab/bin/build-rootfs.sh @@ -0,0 +1,556 @@ +#!/usr/bin/env bash +# Availabl here: https://lab.ilot.io/dotnet/arcade/-/blob/7f6d9796cc7f594772f798358dbdd8c69b6a97af/eng/common/cross/build-rootfs.sh +# Only modification: qemu-$arch-static becomes qemu-$arch + +set -e + +usage() +{ + echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir ]" + echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86" + echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine" + echo " for alpine can be specified with version: alpineX.YY or alpineedge" + echo " for FreeBSD can be: freebsd12, freebsd13" + echo " for illumos can be: illumos" + echo " for Haiku can be: haiku." + echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD" + echo "llvmx[.y] - optional, LLVM version for LLVM related packages." + echo "--skipunmount - optional, will skip the unmount of rootfs folder." + echo "--use-mirror - optional, use mirror URL to fetch resources, when available." + echo "--jobs N - optional, restrict to N jobs." + exit 1 +} + +__CodeName=xenial +__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +__BuildArch=arm +__AlpineArch=armv7 +__FreeBSDArch=arm +__FreeBSDMachineArch=armv7 +__IllumosArch=arm7 +__QEMUArch=arm +__UbuntuArch=armhf +__UbuntuRepo="http://ports.ubuntu.com/" +__LLDB_Package="liblldb-3.9-dev" +__SkipUnmount=0 + +# base development support +__UbuntuPackages="build-essential" + +__AlpinePackages="alpine-base" +__AlpinePackages+=" build-base" + +# symlinks fixer +__UbuntuPackages+=" symlinks" + +# runtime dependencies +__UbuntuPackages+=" libicu-dev" +__UbuntuPackages+=" liblttng-ust-dev" +__UbuntuPackages+=" libunwind8-dev" +__UbuntuPackages+=" libnuma-dev" + +# runtime libraries' dependencies +__UbuntuPackages+=" libcurl4-openssl-dev" +__UbuntuPackages+=" libkrb5-dev" +__UbuntuPackages+=" libssl-dev" +__UbuntuPackages+=" zlib1g-dev" + +__FreeBSDBase="12.3-RELEASE" +__FreeBSDPkg="1.17.0" +__FreeBSDABI="12" +__FreeBSDPackages="libunwind" +__FreeBSDPackages+=" icu" +__FreeBSDPackages+=" libinotify" +__FreeBSDPackages+=" openssl" +__FreeBSDPackages+=" krb5" +__FreeBSDPackages+=" terminfo-db" + +__IllumosPackages="icu" +__IllumosPackages+=" mit-krb5" +__IllumosPackages+=" openssl" +__IllumosPackages+=" zlib" + +__HaikuPackages="gmp" +__HaikuPackages+=" gmp_devel" +__HaikuPackages+=" krb5" +__HaikuPackages+=" krb5_devel" +__HaikuPackages+=" libiconv" +__HaikuPackages+=" libiconv_devel" +__HaikuPackages+=" llvm12_libunwind" +__HaikuPackages+=" llvm12_libunwind_devel" +__HaikuPackages+=" mpfr" +__HaikuPackages+=" mpfr_devel" + +# ML.NET dependencies +__UbuntuPackages+=" libomp5" +__UbuntuPackages+=" libomp-dev" + +__Keyring= +__UseMirror=0 + +__UnprocessedBuildArgs= +while :; do + if [[ "$#" -le 0 ]]; then + break + fi + + lowerI="$(echo "$1" | tr "[:upper:]" "[:lower:]")" + case $lowerI in + -\?|-h|--help) + usage + exit 1 + ;; + arm) + __BuildArch=arm + __UbuntuArch=armhf + __AlpineArch=armv7 + __QEMUArch=arm + ;; + arm64) + __BuildArch=arm64 + __UbuntuArch=arm64 + __AlpineArch=aarch64 + __QEMUArch=aarch64 + __FreeBSDArch=arm64 + __FreeBSDMachineArch=aarch64 + ;; + armel) + __BuildArch=armel + __UbuntuArch=armel + __UbuntuRepo="http://ftp.debian.org/debian/" + __CodeName=jessie + ;; + armv6) + __BuildArch=armv6 + __UbuntuArch=armhf + __QEMUArch=arm + __UbuntuRepo="http://raspbian.raspberrypi.org/raspbian/" + __CodeName=buster + __LLDB_Package="liblldb-6.0-dev" + + if [[ -e "/usr/share/keyrings/raspbian-archive-keyring.gpg" ]]; then + __Keyring="--keyring /usr/share/keyrings/raspbian-archive-keyring.gpg" + fi + ;; + riscv64) + __BuildArch=riscv64 + __AlpineArch=riscv64 + __QEMUArch=riscv64 + __UbuntuArch=riscv64 + __UbuntuRepo="http://deb.debian.org/debian-ports" + __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" + unset __LLDB_Package + + if [[ -e "/usr/share/keyrings/debian-ports-archive-keyring.gpg" ]]; then + __Keyring="--keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring" + fi + ;; + ppc64le) + __BuildArch=ppc64le + __AlpineArch=ppc64le + __QEMUArch=ppc64le + __UbuntuArch=ppc64el + __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/" + __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" + __UbuntuPackages="${__UbuntuPackages// libomp-dev/}" + __UbuntuPackages="${__UbuntuPackages// libomp5/}" + unset __LLDB_Package + ;; + s390x) + __BuildArch=s390x + __AlpineArch=s390x + __QEMUArch=s390x + __UbuntuArch=s390x + __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/" + __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" + __UbuntuPackages="${__UbuntuPackages// libomp-dev/}" + __UbuntuPackages="${__UbuntuPackages// libomp5/}" + unset __LLDB_Package + ;; + x64) + __BuildArch=x64 + __AlpineArch=x86_64 + __QEMUArch=x86_64 + __UbuntuArch=amd64 + __FreeBSDArch=amd64 + __FreeBSDMachineArch=amd64 + __illumosArch=x86_64 + __UbuntuRepo= + ;; + x86) + __BuildArch=x86 + __AlpineArch=i386 + __QEMUArch=i386 + __UbuntuArch=i386 + __AlpineArch=x86 + __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" + ;; + lldb*) + version="${lowerI/lldb/}" + parts=(${version//./ }) + + # for versions > 6.0, lldb has dropped the minor version + if [[ "${parts[0]}" -gt 6 ]]; then + version="${parts[0]}" + fi + + __LLDB_Package="liblldb-${version}-dev" + ;; + no-lldb) + unset __LLDB_Package + ;; + llvm*) + version="${lowerI/llvm/}" + parts=(${version//./ }) + __LLVM_MajorVersion="${parts[0]}" + __LLVM_MinorVersion="${parts[1]}" + + # for versions > 6.0, llvm has dropped the minor version + if [[ -z "$__LLVM_MinorVersion" && "$__LLVM_MajorVersion" -le 6 ]]; then + __LLVM_MinorVersion=0; + fi + ;; + xenial) # Ubuntu 16.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=xenial + fi + ;; + zesty) # Ubuntu 17.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=zesty + fi + ;; + bionic) # Ubuntu 18.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=bionic + fi + ;; + focal) # Ubuntu 20.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=focal + fi + ;; + jammy) # Ubuntu 22.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=jammy + fi + ;; + jessie) # Debian 8 + __CodeName=jessie + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + stretch) # Debian 9 + __CodeName=stretch + __LLDB_Package="liblldb-6.0-dev" + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + buster) # Debian 10 + __CodeName=buster + __LLDB_Package="liblldb-6.0-dev" + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + bullseye) # Debian 11 + __CodeName=bullseye + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + sid) # Debian sid + __CodeName=sid + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + tizen) + __CodeName= + __UbuntuRepo= + __Tizen=tizen + ;; + alpine*) + __CodeName=alpine + __UbuntuRepo= + version="${lowerI/alpine/}" + + if [[ "$version" == "edge" ]]; then + __AlpineVersion=edge + else + parts=(${version//./ }) + __AlpineMajorVersion="${parts[0]}" + __AlpineMinoVersion="${parts[1]}" + __AlpineVersion="$__AlpineMajorVersion.$__AlpineMinoVersion" + fi + ;; + freebsd12) + __CodeName=freebsd + __SkipUnmount=1 + ;; + freebsd13) + __CodeName=freebsd + __FreeBSDBase="13.0-RELEASE" + __FreeBSDABI="13" + __SkipUnmount=1 + ;; + illumos) + __CodeName=illumos + __SkipUnmount=1 + ;; + haiku) + __CodeName=haiku + __BuildArch=x64 + __SkipUnmount=1 + ;; + --skipunmount) + __SkipUnmount=1 + ;; + --rootfsdir|-rootfsdir) + shift + __RootfsDir="$1" + ;; + --use-mirror) + __UseMirror=1 + ;; + --use-jobs) + shift + MAXJOBS=$1 + ;; + *) + __UnprocessedBuildArgs="$__UnprocessedBuildArgs $1" + ;; + esac + + shift +done + +if [[ "$__BuildArch" == "armel" ]]; then + __LLDB_Package="lldb-3.5-dev" +fi + +__UbuntuPackages+=" ${__LLDB_Package:-}" + +if [[ -n "$__LLVM_MajorVersion" ]]; then + __UbuntuPackages+=" libclang-common-${__LLVM_MajorVersion}${__LLVM_MinorVersion:+.$__LLVM_MinorVersion}-dev" +fi + +if [[ -z "$__RootfsDir" && -n "$ROOTFS_DIR" ]]; then + __RootfsDir="$ROOTFS_DIR" +fi + +if [[ -z "$__RootfsDir" ]]; then + __RootfsDir="$__CrossDir/../../../.tools/rootfs/$__BuildArch" +fi + +if [[ -d "$__RootfsDir" ]]; then + if [[ "$__SkipUnmount" == "0" ]]; then + umount "$__RootfsDir"/* || true + fi + rm -rf "$__RootfsDir" +fi + +mkdir -p "$__RootfsDir" +__RootfsDir="$( cd "$__RootfsDir" && pwd )" + +if [[ "$__CodeName" == "alpine" ]]; then + __ApkToolsVersion=2.12.11 + __ApkToolsDir="$(mktemp -d)" + + wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic//v$__ApkToolsVersion/x86_64/apk.static" -P "$__ApkToolsDir" + chmod +x "$__ApkToolsDir/apk.static" + + mkdir -p "$__RootfsDir"/usr/bin + cp -v "/usr/bin/qemu-$__QEMUArch" "$__RootfsDir/usr/bin" + + if [[ "$__AlpineVersion" == "edge" ]]; then + version=edge + else + version="v$__AlpineVersion" + fi + + # initialize DB + "$__ApkToolsDir/apk.static" \ + -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ + -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ + -U --allow-untrusted --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add + + if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then + __AlpinePackages+=" $("$__ApkToolsDir/apk.static" \ + -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ + -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ + -U --allow-untrusted --root "$__RootfsDir" --arch "$__AlpineArch" \ + search 'llvm*-libs' | sort | tail -1 | sed 's/-[^-]*//2g')" + fi + + # install all packages in one go + "$__ApkToolsDir/apk.static" \ + -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ + -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ + -U --allow-untrusted --no-scripts --root "$__RootfsDir" --arch "$__AlpineArch" \ + add $__AlpinePackages + + rm -r "$__ApkToolsDir" +elif [[ "$__CodeName" == "freebsd" ]]; then + mkdir -p "$__RootfsDir"/usr/local/etc + JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} + wget -O - "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + echo "ABI = \"FreeBSD:${__FreeBSDABI}:${__FreeBSDMachineArch}\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > "${__RootfsDir}"/usr/local/etc/pkg.conf + echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"${__RootfsDir}/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf + mkdir -p "$__RootfsDir"/tmp + # get and build package manager + wget -O - "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + cd "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" + # needed for install to succeed + mkdir -p "$__RootfsDir"/host/etc + ./autogen.sh && ./configure --prefix="$__RootfsDir"/host && make -j "$JOBS" && make install + rm -rf "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" + # install packages we need. + INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update + INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages +elif [[ "$__CodeName" == "illumos" ]]; then + mkdir "$__RootfsDir/tmp" + pushd "$__RootfsDir/tmp" + JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} + echo "Downloading sysroot." + wget -O - https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + echo "Building binutils. Please wait.." + wget -O - https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf - + mkdir build-binutils && cd build-binutils + ../binutils-2.33.1/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" + make -j "$JOBS" && make install && cd .. + echo "Building gcc. Please wait.." + wget -O - https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf - + CFLAGS="-fPIC" + CXXFLAGS="-fPIC" + CXXFLAGS_FOR_TARGET="-fPIC" + CFLAGS_FOR_TARGET="-fPIC" + export CFLAGS CXXFLAGS CXXFLAGS_FOR_TARGET CFLAGS_FOR_TARGET + mkdir build-gcc && cd build-gcc + ../gcc-8.4.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \ + --with-gnu-ld --disable-nls --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libada --disable-libsanitizer \ + --disable-libquadmath-support --disable-shared --enable-tls + make -j "$JOBS" && make install && cd .. + BaseUrl=https://pkgsrc.smartos.org + if [[ "$__UseMirror" == 1 ]]; then + BaseUrl=https://pkgsrc.smartos.skylime.net + fi + BaseUrl="$BaseUrl/packages/SmartOS/trunk/${__illumosArch}/All" + echo "Downloading manifest" + wget "$BaseUrl" + echo "Downloading dependencies." + read -ra array <<<"$__IllumosPackages" + for package in "${array[@]}"; do + echo "Installing '$package'" + # find last occurrence of package in listing and extract its name + package="$(sed -En '/.*href="('"$package"'-[0-9].*).tgz".*/h;$!d;g;s//\1/p' All)" + echo "Resolved name '$package'" + wget "$BaseUrl"/"$package".tgz + ar -x "$package".tgz + tar --skip-old-files -xzf "$package".tmp.tg* -C "$__RootfsDir" 2>/dev/null + done + echo "Cleaning up temporary files." + popd + rm -rf "$__RootfsDir"/{tmp,+*} + mkdir -p "$__RootfsDir"/usr/include/net + mkdir -p "$__RootfsDir"/usr/include/netpacket + wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h + wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h + wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h + wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h +elif [[ "$__CodeName" == "haiku" ]]; then + JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} + + echo "Building Haiku sysroot for x86_64" + mkdir -p "$__RootfsDir/tmp" + cd "$__RootfsDir/tmp" + git clone -b hrev56235 https://review.haiku-os.org/haiku + git clone -b btrev43195 https://review.haiku-os.org/buildtools + cd "$__RootfsDir/tmp/buildtools" && git checkout 7487388f5110021d400b9f3b88e1a7f310dc066d + + # Fetch some unmerged patches + cd "$__RootfsDir/tmp/haiku" + ## Add development build profile (slimmer than nightly) + git fetch origin refs/changes/64/4164/1 && git -c commit.gpgsign=false cherry-pick FETCH_HEAD + + # Build jam + cd "$__RootfsDir/tmp/buildtools/jam" + make + + # Configure cross tools + echo "Building cross-compiler" + mkdir -p "$__RootfsDir/generated" + cd "$__RootfsDir/generated" + "$__RootfsDir/tmp/haiku/configure" -j"$JOBS" --sysroot "$__RootfsDir" --cross-tools-source "$__RootfsDir/tmp/buildtools" --build-cross-tools x86_64 + + # Build Haiku packages + echo "Building Haiku" + echo 'HAIKU_BUILD_PROFILE = "development-raw" ;' > UserProfileConfig + "$__RootfsDir/tmp/buildtools/jam/jam0" -j"$JOBS" -q 'package' 'Haiku' + + BaseUrl="https://depot.haiku-os.org/__api/v2/pkg/get-pkg" + + # Download additional packages + echo "Downloading additional required packages" + read -ra array <<<"$__HaikuPackages" + for package in "${array[@]}"; do + echo "Downloading $package..." + # API documented here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L60 + # The schema here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L598 + hpkgDownloadUrl="$(wget -qO- --post-data='{"name":"'"$package"'","repositorySourceCode":"haikuports_x86_64","versionType":"LATEST","naturalLanguageCode":"en"}' \ + --header='Content-Type:application/json' "$BaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" + wget -P "$__RootfsDir/generated/download" "$hpkgDownloadUrl" + done + + # Setup the sysroot + echo "Setting up sysroot and extracting needed packages" + mkdir -p "$__RootfsDir/boot/system" + for file in "$__RootfsDir/generated/objects/haiku/x86_64/packaging/packages/"*.hpkg; do + "$__RootfsDir/generated/objects/linux/x86_64/release/tools/package/package" extract -C "$__RootfsDir/boot/system" "$file" + done + for file in "$__RootfsDir/generated/download/"*.hpkg; do + "$__RootfsDir/generated/objects/linux/x86_64/release/tools/package/package" extract -C "$__RootfsDir/boot/system" "$file" + done + + # Cleaning up temporary files + echo "Cleaning up temporary files" + rm -rf "$__RootfsDir/tmp" + for name in "$__RootfsDir/generated/"*; do + if [[ "$name" =~ "cross-tools-" ]]; then + : # Keep the cross-compiler + else + rm -rf "$name" + fi + done +elif [[ -n "$__CodeName" ]]; then + qemu-debootstrap $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" + cp "$__CrossDir/$__BuildArch/sources.list.$__CodeName" "$__RootfsDir/etc/apt/sources.list" + chroot "$__RootfsDir" apt-get update + chroot "$__RootfsDir" apt-get -f -y install + chroot "$__RootfsDir" apt-get -y install $__UbuntuPackages + chroot "$__RootfsDir" symlinks -cr /usr + chroot "$__RootfsDir" apt-get clean + + if [[ "$__SkipUnmount" == "0" ]]; then + umount "$__RootfsDir"/* || true + fi + + if [[ "$__BuildArch" == "armel" && "$__CodeName" == "jessie" ]]; then + pushd "$__RootfsDir" + patch -p1 < "$__CrossDir/$__BuildArch/armel.jessie.patch" + popd + fi +elif [[ "$__Tizen" == "tizen" ]]; then + ROOTFS_DIR="$__RootfsDir" "$__CrossDir/tizen-build-rootfs.sh" "$__BuildArch" +else + echo "Unsupported target platform." + usage; + exit 1 +fi diff --git a/.forgejo/bin/build.sh b/.gitlab/bin/build.sh similarity index 72% rename from .forgejo/bin/build.sh rename to .gitlab/bin/build.sh index 445929f..3d0294f 100755 --- a/.forgejo/bin/build.sh +++ b/.gitlab/bin/build.sh @@ -1,28 +1,27 @@ #!/bin/sh # shellcheck disable=SC3043 -. /usr/local/lib/functions.sh +. $CI_PROJECT_DIR/.gitlab/bin/functions.sh # shellcheck disable=SC3040 set -eu -o pipefail readonly APORTSDIR=$CI_PROJECT_DIR -readonly REPOS="backports user pmos" +readonly REPOS="cross backports user testing community" readonly ALPINE_REPOS="main community testing" readonly ARCH=$(apk --print-arch) # gitlab variables 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}" -: "${PMOS_MIRROR:=http://mirror.postmarketos.org/postmarketos}" -: "${PMOS_KEY:=https://git.syndicate-lang.org/synit/pmbootstrap/raw/commit/8efee86388408c0d8de45c64fe383580ffd91700/pmb/data/keys/build.postmarketos.org.rsa.pub}" : "${MAX_ARTIFACT_SIZE:=300000000}" #300M : "${CI_DEBUG_BUILD:=}" : "${CI_ALPINE_BUILD_OFFSET:=0}" : "${CI_ALPINE_BUILD_LIMIT:=9999}" +: "${CI_ALPINE_TARGET_ARCH:=$(uname -m)}" msg() { local color=${2:-green} @@ -72,7 +71,7 @@ report() { get_release() { case $BASEBRANCH in - v*) echo "$BASEBRANCH";; + v*) echo "${BASEBRANCH%-*}";; edge) echo edge;; *) die "Branch \"$BASEBRANCH\" not supported!" esac @@ -81,8 +80,9 @@ get_release() { build_aport() { local repo="$1" aport="$2" cd "$APORTSDIR/$repo/$aport" + export CHOST=$CI_ALPINE_TARGET_ARCH 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" @@ -92,6 +92,12 @@ build_aport() { check_aport() { local repo="$1" aport="$2" cd "$APORTSDIR/$repo/$aport" + export CHOST=$CI_ALPINE_TARGET_ARCH + # TODO: this enables crossbuild only on user, this should be cleaner + if [ "$repo" != "user" ] && [ "$repo" != "backports" ] && [ "$CI_ALPINE_TARGET_ARCH" != "$ARCH" ]; then + aport_na="$aport_na $repo/$aport" + return 1 + fi if ! abuild check_arch 2>/dev/null; then aport_na="$aport_na $repo/$aport" return 1 @@ -104,13 +110,16 @@ 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 - doas sh -c "printf '%s\n' $repos >> /etc/apk/repositories" - doas apk update || true + sudo sh -c "printf '%s\n' $repos >> /etc/apk/repositories" + sudo apk update || true + if [ "$CI_ALPINE_TARGET_ARCH" != "$ARCH" ]; then + sudo sh -c "printf '%s\n' $repos >> $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/repositories" + sudo cp -R /etc/apk/keys/* $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/keys/. + sudo apk --root=$HOME/sysroot-$CI_ALPINE_TARGET_ARCH update || true + fi } apply_offset_limit() { @@ -130,31 +139,27 @@ setup_system() { [ "$release" != "edge" ] && [ "$repo" == "testing" ] && continue 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 sed -i -E 's/export JOBS=[0-9]+$/export JOBS=$(nproc)/' /etc/abuild.conf + repos="$repos $MIRROR/$release/cross" + sudo sh -c "printf '%s\n' $repos > /etc/apk/repositories" + sudo apk -U upgrade -a || sudo apk fix || die "Failed to up/downgrade system" + if [ "$CI_ALPINE_TARGET_ARCH" != "$ARCH" ]; then + sudo apk add gcc-$CI_ALPINE_TARGET_ARCH + fi + 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 + sudo cp $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub /etc/apk/keys/$ABUILD_KEY_NAME.rsa.pub + + # patch abuild for crosscompiling + sudo patch -p1 -d / -i $CI_PROJECT_DIR/.gitlab/patches/abuild-cross.patch + + sudo 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" git config --global init.defaultBranch master } -setup_pmos() { - local release - - case $BASEBRANCH in - v3.21) release="v24.12";; - v3.20) release="v24.6";; - v3.19) release="v23.12";; - edge) release=master;; - *) die "Branch \"$BASEBRANCH\" not supported!" - esac - - doas wget "$PMOS_KEY" -P /etc/apk/keys - doas sh -c "echo $PMOS_MIRROR/$release >> /etc/apk/repositories" - doas apk update || true -} - sysinfo() { printf ">>> Host system information (arch: %s, release: %s) <<<\n" "$ARCH" "$(get_release)" printf "- Number of Cores: %s\n" "$(nproc)" @@ -162,7 +167,6 @@ sysinfo() { printf "- Free space: %s\n" "$(df -hP / | awk '/\/$/ {print $4}')" } - copy_artifacts() { cd "$APORTSDIR" @@ -199,9 +203,9 @@ 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: . +sudo chown -R $USER: . -fetch_flags="-qnu" +fetch_flags="-qn" debugging && fetch_flags="-v" git fetch $fetch_flags "$CI_MERGE_REQUEST_PROJECT_URL" \ @@ -222,8 +226,8 @@ 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" - [ "$repo" == "pmos" ] && setup_pmos built_aports=0 changed_aports_in_repo=$(changed_aports "$repo") changed_aports_in_repo_count=$(echo "$changed_aports_in_repo" | wc -l) @@ -263,7 +267,7 @@ for ok in $aport_ok; do done for na in $aport_na; do - msg "$na: disabled for $ARCH" yellow + msg "$na: disabled for $CI_ALPINE_TARGET_ARCH" yellow done for ng in $aport_ng; do @@ -277,4 +281,3 @@ if [ "$failed" = true ]; then elif [ -z "$aport_ok" ]; then msg "No packages found to be built." yellow fi - diff --git a/.gitlab/bin/changed-aports b/.gitlab/bin/changed-aports new file mode 100755 index 0000000..4541230 --- /dev/null +++ b/.gitlab/bin/changed-aports @@ -0,0 +1,20 @@ +#!/bin/sh + +if [ $# -lt 1 ]; then + echo "Usage: $0 " + 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 diff --git a/.gitlab/bin/functions.sh b/.gitlab/bin/functions.sh new file mode 100755 index 0000000..44de1fe --- /dev/null +++ b/.gitlab/bin/functions.sh @@ -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" +} diff --git a/.gitlab/bin/lint b/.gitlab/bin/lint new file mode 100755 index 0000000..c1edcfb --- /dev/null +++ b/.gitlab/bin/lint @@ -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 +sudo 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" == "backports" ]; then + echo "Skipping $PKG as backports (we don't care)" + continue + 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 diff --git a/.gitlab/bin/push.sh b/.gitlab/bin/push.sh new file mode 100755 index 0000000..e93101a --- /dev/null +++ b/.gitlab/bin/push.sh @@ -0,0 +1,56 @@ +#!/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=$HOME/repo-apk" >> $HOME/.abuild/abuild.conf +sudo cp $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub /etc/apk/keys/. + +if [ -d $HOME/repo-apk ]; then + git -C $HOME/repo-apk fetch + git -C $HOME/repo-apk checkout $BASEBRANCH + git -C $HOME/repo-apk pull --rebase +else + git clone git@lab.ilot.io:ayakael/repo-apk -b $BASEBRANCH $HOME/repo-apk +fi + +for i in $(find packages -type f -name "*.apk"); do + install -vDm644 $i ${i/packages/$HOME\/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 $HOME/repo-apk/$repo/*/APKINDEX.tar.gz | true + mkdir -p $repo/DUMMY + echo "pkgname=DUMMY" > $repo/DUMMY/APKBUILD + cd $repo/DUMMY + for i in $(find $HOME/repo-apk/$repo -maxdepth 1 -mindepth 1 -printf '%P '); do + CHOST=$i abuild index + done + cd "$CI_PROJECT_DIR" + rm -R $repo/DUMMY +done + +git -C $HOME/repo-apk add . +git -C $HOME/repo-apk commit -m "Update from $CI_MERGE_REQUEST_IID - $CI_MERGE_REQUEST_TITLE" +git -C $HOME/repo-apk push diff --git a/.gitlab/patches/abuild-cross.patch b/.gitlab/patches/abuild-cross.patch new file mode 100644 index 0000000..50afd23 --- /dev/null +++ b/.gitlab/patches/abuild-cross.patch @@ -0,0 +1,17 @@ +diff --git a/usr/bin/abuild.orig b/usr/bin/abuild +index 71e0681..d4ae3dd 100755 +--- a/usr/bin/abuild.orig ++++ b/usr/bin/abuild +@@ -2231,7 +2231,11 @@ calcdeps() { + list_has $i $builddeps && continue + subpackages_has ${i%%[<>=]*} || builddeps="$builddeps $i" + done +- hostdeps="$EXTRADEPENDS_TARGET" ++ for i in $EXTRADEPENDS_HOST $EXTRADEPENDS_TARGET $depends $makedepends; do ++ [ "$pkgname" = "${i%%[<>=]*}" ] && continue ++ list_has $i $hostdeps && continue ++ subpackages_has ${i%%[<>=]*} || hostdeps="$hostdeps $i" ++ done + fi + } + diff --git a/README.md b/README.md index 255b3ee..ce0ef3c 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,55 @@ -# ayaports -Upstream: https://ayakael.net/forge/ayaports +# user-aports +Upstream: https://lab.ilot.io/ayakael/user-aports ## Description 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 Forgejo repository, making -them available to apk. +built using GitLab CI on my own GitLab instance. 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://ayakael.net/forge/ayaports +You can browse all the repositories at https://lab.ilot.io/ayakael/repo-apk. 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 +https://lab.ilot.io/ayakael/repo-apk/-/raw/v3.18/backports ``` -Aports from the official Alpine repositories backported from edge. This is only -available and kept up-to-date on latest stable release. +Aports from the official Alpine repositories backported from edge to v3.18. #### User ``` -https://ayakael.net/api/packages/forge/alpine/edge/user +https://lab.ilot.io/ayakael/repo-apk/-/raw/v3.18/user ``` Aports that have yet to be (or may never be) upstreamed to the official aports. +#### Testing/Community +``` +https://lab.ilot.io/ayakael/repo-apk/-/raw/v3.18/community +https://lab.ilot.io/ayakael/repo-apk/-/raw/v3.18/testing +``` + +Aports that have already been upstreamed are kept here for three reasons: +* Facilitate keeping track of packages that I support +* Upgrades are first deployed here for first batch of testing +* Make packages that are in 'testing' available for stable releases + ## How to use -Add security key of the apk repository to your /etc/apk/keys: +Add security key of the repo-apk repository to your /etc/apk/keys: ```shell cd /etc/apk/keys -curl -JO https://ayakael.net/api/packages/forge/alpine/key +wget https://lab.ilot.io/ayakael/repo-apk/-/raw/v3.18/antoine.martin@protonmail.com-5b3109ad.rsa.pub ``` Add repositories that you want to use (see above) to `/etc/apk/repositories`. @@ -52,10 +63,10 @@ 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 +you can do so on Alpine's GitLab instance here: +https://gitlab.alpinelinux.org/ayakael/user-aports -For packages that are in backports, bug reports and merge requests +For packages that are in testing/community, bug reports and merge requests should be done on Alpine's aports repo instance: https://gitlab.alpinelinux.org/alpine/aports diff --git a/backports/airsonic-advanced/APKBUILD b/backports/airsonic-advanced/APKBUILD new file mode 100644 index 0000000..ec5e7c1 --- /dev/null +++ b/backports/airsonic-advanced/APKBUILD @@ -0,0 +1,48 @@ +# Contributor: Kay Thomas +# Maintainer: Kay Thomas +pkgname=airsonic-advanced +_sha=1397446f979b1cdea283eec89ce4f0eae7d63450 +pkgver=11.0.0_git20230217 +pkgrel=0 +pkgdesc="Modern implementation of the Airsonic fork with several key performance and feature enhancements" +url="https://github.com/airsonic-advanced/airsonic-advanced" +# inconsistent test and build failures on other arches +arch="x86_64" +license="GPL-3.0-or-later" +depends="openjdk11" +makedepends="maven" +subpackages="$pkgname-openrc" +pkgusers="airsonic-advanced" +pkggroups="airsonic-advanced" +install="$pkgname.pre-install" +source="$pkgname-$pkgver.tar.gz::https://github.com/airsonic-advanced/airsonic-advanced/archive/$_sha.tar.gz + maven.patch + airsonic-advanced.initd + " +builddir="$srcdir/$pkgname-$_sha" + +build() { + mvn clean package -DskipTests +} + +check() { + mvn test +} + +package() { + install -dm755 -o airsonic-advanced -g airsonic-advanced \ + "$pkgdir"/var/airsonic + + install -m755 -o airsonic-advanced -g airsonic-advanced \ + "$builddir"/airsonic-main/target/airsonic.war \ + "$pkgdir"/var/airsonic/airsonic.war + + install -Dm755 "$srcdir"/$pkgname.initd \ + "$pkgdir"/etc/init.d/$pkgname +} + +sha512sums=" +f415620bdbed9fb3874afbf30d9362e68b1e9e8e90dbbed4ca3206b643cad97ca0558e64ec5b4440382f0ec908c3325e321ea3631c38ff9a2109163c8f0cfe0b airsonic-advanced-11.0.0_git20230217.tar.gz +6cb52fee19815fcdf2596e55d97d3e750321b1df7a4fec36fc9bc2a57d4be979a3905a42d3aa9dbeb2bf0d4f56edbf344f13551219b8e4d2ca583abd4bb5c8f9 maven.patch +ca87e6a7199950e6ac52aeb076a03f831d60ee9d4ceed47366bbd78443765d205796d895ebb244051d8033e5b2e9ccd648d20434039c854b8b50e766cc5cd10d airsonic-advanced.initd +" diff --git a/backports/airsonic-advanced/airsonic-advanced.initd b/backports/airsonic-advanced/airsonic-advanced.initd new file mode 100644 index 0000000..c1ce9bd --- /dev/null +++ b/backports/airsonic-advanced/airsonic-advanced.initd @@ -0,0 +1,14 @@ +#!/sbin/openrc-run + +supervisor=supervise-daemon +name="airsonic-advanced" +command="/usr/lib/jvm/java-11-openjdk/jre/bin/java" +command_args="-jar airsonic.war" +command_user="airsonic-advanced:airsonic-advanced" +directory="/var/airsonic" +pidfile="/run/airsonic-advanced.pid" + +depend() { + need net localmount + after firewall +} diff --git a/backports/airsonic-advanced/airsonic-advanced.pre-install b/backports/airsonic-advanced/airsonic-advanced.pre-install new file mode 100644 index 0000000..373b896 --- /dev/null +++ b/backports/airsonic-advanced/airsonic-advanced.pre-install @@ -0,0 +1,6 @@ +#!/bin/sh + +addgroup -S airsonic-advanced 2>/dev/null +adduser -S -D -H -s /sbin/nologin -G airsonic-advanced -g airsonic-advanced airsonic-advanced 2>/dev/null + +exit 0 diff --git a/backports/airsonic-advanced/maven.patch b/backports/airsonic-advanced/maven.patch new file mode 100644 index 0000000..56594b6 --- /dev/null +++ b/backports/airsonic-advanced/maven.patch @@ -0,0 +1,8 @@ +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 diff --git a/backports/calibre/0001-calibre-no-update.patch b/backports/calibre/0001-calibre-no-update.patch deleted file mode 100644 index 85b3e59..0000000 --- a/backports/calibre/0001-calibre-no-update.patch +++ /dev/null @@ -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): - diff --git a/backports/calibre/0002-calibre-use-make.patch b/backports/calibre/0002-calibre-use-make.patch deleted file mode 100644 index 1b49726..0000000 --- a/backports/calibre/0002-calibre-use-make.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/setup/build.py b/setup/build.py -index 956ad7504f..aa9d7ea028 100644 ---- a/setup/build.py -+++ b/setup/build.py -@@ -662,7 +662,7 @@ def build_headless(self): - f.seek(0), f.truncate() - f.write(raw) - bdir = os.path.join(bdir, 'build') -- cmd = [CMAKE] -+ cmd = [CMAKE, '-GUnix Makefiles'] - if is_macos_universal_build: - cmd += ['-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'] - if sw and os.path.exists(os.path.join(sw, 'qt')): diff --git a/backports/calibre/0003-calibre-disable-piper.patch b/backports/calibre/0003-calibre-disable-piper.patch deleted file mode 100644 index 855b62f..0000000 --- a/backports/calibre/0003-calibre-disable-piper.patch +++ /dev/null @@ -1,46 +0,0 @@ -piper uses a function in espeak-ng that is upstreamed but not in a -release. - -diff --git a/setup/extensions.json b/setup/extensions.json -index b39ce6d..c105031 100644 ---- a/setup/extensions.json -+++ b/setup/extensions.json -@@ -134,14 +134,6 @@ - "error": "!podofo_error", - "needs_c++": "17" - }, -- { -- "name": "piper", -- "sources": "calibre/utils/tts/piper.cpp", -- "needs_c++": "17", -- "libraries": "!piper_libs", -- "lib_dirs": "!piper_lib_dirs", -- "inc_dirs": "!piper_inc_dirs" -- }, - { - "name": "html_as_json", - "sources": "calibre/srv/html_as_json.cpp", -diff --git a/src/calibre/constants.py b/src/calibre/constants.py -index fa4b211459..7b27768953 100644 ---- a/src/calibre/constants.py -+++ b/src/calibre/constants.py -@@ -258,7 +258,6 @@ def __init__(self): - 'rcc_backend', - 'icu', - 'speedup', -- 'piper', - 'html_as_json', - 'fast_css_transform', - 'fast_html_entities', -diff --git a/src/calibre/utils/run_tests.py b/src/calibre/utils/run_tests.py -index ffd0f95c04..c80a35f83d 100644 ---- a/src/calibre/utils/run_tests.py -+++ b/src/calibre/utils/run_tests.py -@@ -192,6 +192,7 @@ def test_import_of_all_python_modules(self): - } - if 'SKIP_SPEECH_TESTS' in os.environ: - exclude_packages.add('calibre.gui2.tts') -+ exclude_modules.add('calibre.utils.tts.piper') - if not isbsd: - exclude_modules.add('calibre.devices.usbms.hal') - d = os.path.dirname diff --git a/backports/calibre/APKBUILD b/backports/calibre/APKBUILD deleted file mode 100644 index 47dc7d8..0000000 --- a/backports/calibre/APKBUILD +++ /dev/null @@ -1,123 +0,0 @@ -# Maintainer: Cowington Post -pkgname=calibre -pkgver=8.14.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 - qt6-qtbase-private-dev - udisks2 - " -makedepends=" - cmake - curl - ffmpeg-dev - hunspell-dev - hyphen-dev - libmtp-dev - libstemmer-dev - libusb-dev - podofo-dev - py3-pyqt-builder - py3-pyqt6-sip - py3-qt6 - py3-sip - python3-dev - qt6-qtbase-dev - uchardet-dev - xdg-utils - " -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 - 0002-$pkgname-use-make.patch - 0003-$pkgname-disable-piper.patch - " -# net: downloads iso-codes -# !check: no tests ran -options="net !check" - -export LANG="en_US.UTF-8" -export PATH="$PATH:/usr/lib/qt6/bin" - -prepare() { - default_prepare - - 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=" -edb32e47b083e10fbf53088e485737f3b61bb642ce6c4dd444e58a6618979c3b05b77ceffc4b8cb42e35eee7dcc2b94145abc22030ffd8b5de63e45b321fbf72 calibre-8.14.0.tar.xz -eb8e7ce40ff8b8daf6e7e55a5dff8ec4dff06c45744266bb48b3194e92ab1196bc91468203e3c2ca1e5144166a7d6be90e6cf0253513e761b56a4c85be4c2c76 0001-calibre-no-update.patch -bbb7253257073ae14840b3b4697943fe129d862b49cabd9388ea24cbd0259e68a1d359870334772164897f0c781db121de55fcdf5bccc841e36c021abe56f1ec 0002-calibre-use-make.patch -0efcf35944cd0f42d6f3572839647fc5c8336562db3f71655211d3de682e155b6d6fee4d281f9576201156e0bc828b6a579a8708a27791e4e4d604d456416954 0003-calibre-disable-piper.patch -" diff --git a/backports/caprine/caprine.sh b/backports/caprine/caprine.sh deleted file mode 100644 index bf0f8de..0000000 --- a/backports/caprine/caprine.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/usr/bin/electron "/usr/lib/caprine" diff --git a/backports/celery/APKBUILD b/backports/celery/APKBUILD new file mode 100644 index 0000000..8afc9c7 --- /dev/null +++ b/backports/celery/APKBUILD @@ -0,0 +1,58 @@ +# Maintainer: Drew DeVault +pkgname=celery +pkgver=5.2.7 +pkgrel=3 +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-billiard + py3-click + py3-click-didyoumean + py3-click-plugins + py3-click-repl + py3-kombu + py3-tz + py3-vine + python3 + " +makedepends="python3-dev py3-setuptools py3-gpep517 py3-wheel" +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 $pkgname-pyc" +provides="py3-celery=$pkgver-r$pkgrel" + +# TODO: requires many many many dependencies +options="!check" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + # 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 -m installer -d "$pkgdir" \ + dist/*.whl +} + +check() { + python3 setup.py test +} + +sha512sums=" +68e3bb082f97ebe20391293cc8fa96c41c8f5ac5e8c24b2b7bd66eb104ec459bdfa49741e47486676e5daa88d7a71e3eb0d9432851aeafc74b0d4352e567e853 celery-5.2.7.tar.gz +c283956f8fe386ef39cb3e165a20d1cc7ff6398fbf5a922bec6b61fe4a71188519baed9feafc4e0e5b6864851545edaba54b89ba3613b2cf2ddd6426a6bf8fc2 celery.confd +3e5e2c6a55672bc0a02fca93ad334c694066c636ed62f2b55cb8f27b9301c429d68ce53667ec744b9b152ec786de7aea90cc05a143d6942cf5d2f34e51ca4089 celery.initd +" diff --git a/backports/celery/celery.confd b/backports/celery/celery.confd new file mode 100644 index 0000000..2d69aea --- /dev/null +++ b/backports/celery/celery.confd @@ -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 $CELERY_REDIR" diff --git a/backports/celery/celery.initd b/backports/celery/celery.initd new file mode 100644 index 0000000..f4e2bf9 --- /dev/null +++ b/backports/celery/celery.initd @@ -0,0 +1,16 @@ +#!/sbin/openrc-run +supervisor=supervise-daemon + +description="celery queue worker" + +: ${CELERY_USER:="celery"} +: ${CELERY_GROUP:="$(id -gn $CELERY_USER)"} + +pidfile="/run/$RC_SVCNAME.sd.pid" +supervise_daemon_args="-u $CELERY_USER -g $CELERY_GROUP" +command=/usr/bin/celery +command_args="${CELERY_OPTS}" + +depends() { + use net +} diff --git a/backports/celery/celery.pre-install b/backports/celery/celery.pre-install new file mode 100644 index 0000000..05ba0f5 --- /dev/null +++ b/backports/celery/celery.pre-install @@ -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 + diff --git a/backports/coin/APKBUILD b/backports/coin/APKBUILD new file mode 100644 index 0000000..782df0b --- /dev/null +++ b/backports/coin/APKBUILD @@ -0,0 +1,36 @@ +# Contributor: Aiden Grossman +# Maintainer: Aiden Grossman +pkgname=coin +pkgver=4.0.0 +pkgrel=5 +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 +" diff --git a/backports/coin/TestSuitePatch.patch b/backports/coin/TestSuitePatch.patch new file mode 100644 index 0000000..ce484e5 --- /dev/null +++ b/backports/coin/TestSuitePatch.patch @@ -0,0 +1,11 @@ +--- ./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 diff --git a/backports/dex/APKBUILD b/backports/dex/APKBUILD new file mode 100644 index 0000000..4d55d52 --- /dev/null +++ b/backports/dex/APKBUILD @@ -0,0 +1,26 @@ +# Contributor: Anjandev Momi +# Maintainer: Anjandev Momi +pkgname=dex +pkgver=0.9.0 +pkgrel=0 +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 DESTDIR="$pkgdir" +} + +sha512sums=" +d68f5482cb0948f27a724437ddfc6de9a0f502bfd0d5c60c76fb85dda3c30e4c432013e530f6a91138c9ac9ff36b3824cd5e382e9d29bb9fb2ec2b9de4133094 dex-0.9.0.tar.gz +" diff --git a/backports/electron-tasje/APKBUILD b/backports/electron-tasje/APKBUILD index ac8776a..79c92db 100644 --- a/backports/electron-tasje/APKBUILD +++ b/backports/electron-tasje/APKBUILD @@ -1,7 +1,7 @@ # Contributor: lauren n. liberda # Maintainer: lauren n. liberda pkgname=electron-tasje -pkgver=0.7.3 +pkgver=0.7.0 pkgrel=0 pkgdesc="Tiny replacement for electron-builder" url="https://codeberg.org/selfisekai/electron_tasje/" @@ -31,5 +31,5 @@ package() { } sha512sums=" -251b7eabe74acdb5c7394f9d4d735b736acf555352785a9896ddaeed37632b238e823e1bb639e1f5a44a50455957ec41e1a585a3b2a9919b5818bb40843bd877 electron_tasje-0.7.3.tar.gz +1f77dc8a5639c5e61952172b1b30c84cce41b5763d5ce96fa8fb2a02f8f8197a87dd3d9c047a90951d8ddc6f1542d8b0f8c33a3dad233d0868b82f19a765731d electron_tasje-0.7.0.tar.gz " diff --git a/backports/electron/0001-hotfix-ignore-a-new-warning-in-rust-1.89.patch b/backports/electron/0001-hotfix-ignore-a-new-warning-in-rust-1.89.patch deleted file mode 100644 index 2c38c7c..0000000 --- a/backports/electron/0001-hotfix-ignore-a-new-warning-in-rust-1.89.patch +++ /dev/null @@ -1,21 +0,0 @@ -From adbc495726382c023b755c35aea36c6e9cad1950 Mon Sep 17 00:00:00 2001 -From: LN Liberda -Date: Sat, 23 Aug 2025 03:11:09 +0200 -Subject: [PATCH] hotfix: ignore a new warning in rust 1.89 - ---- - third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs -index 1b729621c2f47..55d392c6da72f 100644 ---- a/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs -+++ b/third_party/rust/chromium_crates_io/vendor/qr_code-v2/src/lib.rs -@@ -5,7 +5,6 @@ - //! - - #![deny(missing_docs)] --#![deny(warnings)] - #![allow( - clippy::must_use_candidate, // This is just annoying. - clippy::use_self, // Rust 1.33 doesn't support Self::EnumVariant, let's try again in 1.37. diff --git a/backports/electron/APKBUILD b/backports/electron/APKBUILD index c57c98e..0f817b6 100644 --- a/backports/electron/APKBUILD +++ b/backports/electron/APKBUILD @@ -1,21 +1,17 @@ -# Contributor: lauren n. liberda -# Maintainer: Antoine Martin (ayakael) +# Maintainer: lauren n. liberda pkgname=electron -pkgver=39.2.7 -_gittag=v"${pkgver/_beta/-beta.}" +pkgver=27.1.0 +_semver="${pkgver/_beta/-beta.}" pkgrel=0 -_chromium=142.0.7444.235 -_copium_tag=142.0 -_depot_tools=495b23b39aaba2ca3b55dd27cadc523f1cb17ee6 +_chromium=118.0.5993.144 +_depot_tools=b5509953468edd0906f2dc297886939abbd2bed5 +_extra_patches=118.0.5993.11 pkgdesc="Electron cross-platform desktop toolkit" url="https://github.com/electron/electron" -# armv7: Segmentation fault on builder despite building in CI arch="aarch64 x86_64" # same as chromium license="MIT" depends="gtk+3.0 so:libudev.so.1 xdg-utils" -_llvmver=21 makedepends=" - ada-dev alsa-lib-dev aom-dev bash @@ -24,20 +20,17 @@ makedepends=" bzip2-dev c-ares-dev cairo-dev - clang$_llvmver-dev - clang$_llvmver-rtlib + clang16-dev clang-extra-tools - crc32c-dev + compiler-rt 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,8 +38,6 @@ makedepends=" gn gzip harfbuzz-dev - highway-dev - hdrhistogram-c-dev hunspell-dev http-parser-dev hwdata-dev @@ -59,12 +50,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 @@ -76,136 +66,107 @@ makedepends=" libxscrnsaver-dev libxslt-dev linux-headers - lld$_llvmver - llhttp-dev - llvm$_llvmver + lld + llvm16 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 - simdutf-dev snappy-dev speex-dev - spirv-tools-dev sqlite-dev woff2-dev xcb-proto - yarn-berry + 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 - 0001-hotfix-ignore-a-new-warning-in-rust-1.89.patch - compiler.patch - disable-dns_config_service.patch - disable-failing-tests.patch - fc-cache-version.patch - fix-ffmpeg-codec-list.patch - fstatat-32bit.patch +source="https://s3.sakamoto.pl/lnl-aports-snapshots/electron-$_semver-$_chromium.tar.zst + https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/$_extra_patches/chromium-patches-$_extra_patches.tar.gz + chromium-revert-drop-of-system-java.patch + chromium-use-alpine-target.patch + fix-missing-cstdint-include-musl.patch gdbinit.patch - generic-sensor-include.patch - headless-shell-no-license.patch + import-version.patch + libstdc++13.patch + mman.patch musl-sandbox.patch musl-tid-caching.patch - net-test-no-vpython.patch - net-test-pyws3-py3.12.patch + musl-v8-monotonic-pthread-cont_timedwait.patch no-execinfo.patch no-mallinfo.patch + no-mte.patch no-res-ninit-nclose.patch no-sandbox-settls.patch - partalloc-no-tagging-arm64.patch - pvalloc.patch temp-failure-retry.patch - electron_icon.patch - electron_python-jinja-3.10.patch - electron_webpack-hash.patch - electron_unbundle-node.patch - electron_system-zlib-headers.patch - electron_do-not-strip-binaries.patch - electron_shell-file-dialog-drop-glibc.patch - electron_use-system-yarn.patch + icon.patch + python-jinja-3.10.patch + vector-const.patch + webpack-hash.patch + chromium-icu-74.patch default.conf electron.desktop electron-launcher.sh " -_copium_patches=" - cr131-v8-non4k-pages.patch - cr133-ffmpeg-no-noh264parse.patch - cr133-is-musl-libcxx.patch - cr138-node-version-check.patch - cr140-musl-prctl.patch - cr142-autofill-incomplete-formfielddata.patch - " -# Avoid conflicting providers -sonameprefix="$pkgname:" # tests are todo for some base checks options="!check net suid" -builddir="$srcdir/electron-$_gittag-$_chromium" +builddir="$srcdir/electron-$_semver-$_chromium" -export CC="/usr/lib/llvm$_llvmver/bin/clang" -export CXX="/usr/lib/llvm$_llvmver/bin/clang++" +export PATH="$PATH:/usr/lib/qt5/bin" + +# clang uses much less memory (and this doesn't support gcc) +export CC=clang-16 +export CXX=clang++-16 # required to find the tools -export NM="/usr/lib/llvm$_llvmver/bin/llvm-nm" -export AR="/usr/lib/llvm$_llvmver/bin/llvm-ar" -export LD="/usr/lib/llvm$_llvmver/bin/clang++" +export AR=llvm16-ar +export NM=llvm16-nm +export LD=clang++-16 # 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" -# _LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE is set by project -export CXXFLAGS="${CXXFLAGS/-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST/}" +export CFLAGS="${CFLAGS/-g/} -O2 -Wno-unknown-warning-option -Wno-builtin-macro-redefined -Wno-deprecated-declarations" +export CXXFLAGS="${CXXFLAGS/-g/} -O2 -Wno-unknown-warning-option -Wno-builtin-macro-redefined -Wno-deprecated-declarations" 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 # breaks chromium-based stuff export CXXFLAGS="${CXXFLAGS/-D_GLIBCXX_ASSERTIONS=1}" -# workaround to error: undefined symbol: __rustc::__rust_dealloc -# with 000*.patch patches -export RUSTC_BOOTSTRAP=1 - # 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" + if ! [ -d src ]; then + git clone --branch=$_chromium --depth=1 \ + https://chromium.googlesource.com/chromium/src.git + fi + + if ! [ -d electron ]; then + git clone https://github.com/electron/electron.git + fi if ! [ -d depot_tools ]; then ( @@ -221,77 +182,83 @@ snapshot() { echo "solutions = [ { \"name\": \"src/electron\", - \"url\": \"https://github.com/electron/electron.git@$_gittag\", + \"url\": \"file://$srcdir/electron@v$_semver\", \"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 -m DAWN_COMMIT_HASH -s src/third_party/dawn \ - --revision src/gpu/webgpu/DAWN_VERSION --header src/gpu/webgpu/dawn_commit_hash.h + python3 src/build/util/lastchange.py -o src/build/util/LASTCHANGE + 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-$_semver-$_chromium # 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-$_semver-$_chromium); do rm -f "$elf" done msg "generating tarball.. (this takes a while)" - tar -cf $pkgname-$_gittag-$_chromium.tar \ + tar -cf $pkgname-$_semver-$_chromium.tar \ --exclude="ChangeLog*" \ --exclude="testdata/*" \ --exclude="test_data/*" \ --exclude="android_rust_toolchain/*" \ - --exclude="third_party/instrumented_libs/binaries" \ --exclude-backups \ --exclude-caches-all \ --exclude-vcs \ - $pkgname-$_gittag-$_chromium + $pkgname-$_semver-$_chromium - 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" + zstd --auto-threads=logical --ultra --long -22 -T"${ZSTD_LIMIT:-0}" -vv $pkgname-$_semver-$_chromium.tar } -export RUSTC_BOOTSTRAP=1 +_extra_patch() { + msg chromium-"$1".patch + patch -Np1 < "$srcdir"/chromium-patches-"$_extra_patches"/chromium-"$1".patch +} prepare() { + dos2unix third_party/vulkan_memory_allocator/include/vk_mem_alloc.h + 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 + _extra_patch 118-SensorReadingField-include + _extra_patch 117-material-color-include + _extra_patch 118-system-freetype + _extra_patch 117-system-zstd + _extra_patch 118-compiler git init -q . @@ -309,9 +276,9 @@ prepare() { git config commit.gpgsign false git add LICENSE git commit -m "init" - git tag "$_gittag" + git tag "v$_semver" git pack-refs - yarn install --immutable --mode=skip-build + yarn install --frozen-lockfile --no-scripts ) ( @@ -319,47 +286,33 @@ prepare() { ./update_npm_deps ) - # generate dawn_commit_hash - # TODO: remove on next update as it'll be generated after - # https://ayakael.net/mirrors/electron/commit/7623f4a14ab44fa4f4343e47d9d681c9b4aa984c - python3 build/util/lastchange.py -m DAWN_COMMIT_HASH -s third_party/dawn \ - --revision gpu/webgpu/DAWN_VERSION --header gpu/webgpu/dawn_commit_hash.h - - # reusable system library settings - # flatbuffers - tensorflow has a few static_asserts for a specific patch version - # 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 - # icu 76 does not build - https://bugs.gentoo.org/943216 - local chromium_use_system=" - brotli - crc32c + local use_system=" dav1d - double-conversion ffmpeg flac fontconfig freetype harfbuzz-ng - highway + icu + jsoncpp + libavif libdrm + libevent libjpeg - libsecret - libusb libwebp libxml libxslt - openh264 opus - simdutf + 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/*" \ @@ -368,38 +321,10 @@ 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 - # ada - needs use_custom_libcxx=false - local node_use_system=" - llhttp - 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 @@ -408,15 +333,9 @@ prepare() { 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 @@ -429,9 +348,8 @@ prepare() { sed -i -e 's/\/malloc/' -e 's/\/free/' \ third_party/blink/renderer/core/xml/*.cc \ third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \ - third_party/libxml/chromium/*.cc - - echo "$CTARGET" >> build/rust/known-target-triples.txt + third_party/libxml/chromium/*.cc \ + third_party/maldoca/src/maldoca/ole/oss_utils.h _configure } @@ -440,77 +358,63 @@ _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_nocompile_tests=false - enable_rust=true - enable_stripping=false - 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_musl=true 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=true + 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_rust=false + enable_screen_ai_service=false + enable_service_discovery=false + enable_stripping=false + enable_vr=false + ozone_platform_headless=false + link_pulseaudio=true - node_version_check=false 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_clang_modules=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_pulseaudio=true + use_sysroot=false use_system_cares=true - use_system_histogram=true + use_system_freetype=true + use_system_harfbuzz=true use_system_lcms2=true + use_system_libdrm=true use_system_libffi=true - use_system_llhttp=true + use_system_libjpeg=true use_system_nghttp2=true + use_vaapi=true " # shellcheck disable=2086,2090,2116 @@ -519,13 +423,13 @@ _configure() { } build() { - export ELECTRON_OUT_DIR="$builddir"/out/Release/ + 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() { @@ -539,7 +443,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 @@ -565,38 +470,30 @@ lang() { } sha512sums=" -6dc7161f6df396e2b7569b0a607e264b43a2d7215de65164dc2ca04c019df93ea0a67dec2490071c09c8a03f90605faaf3880f2d843f838bb5d841bba204c298 electron-v39.2.7-142.0.7444.235.tar.zst -30b298549804e7753b0b639b72417ba081e964676862b6c7d73ad73cdf806883f20e4a4b36e67a6c375eaf2dd97686cf21b90b062400d3b61fba86da4d239bfa copium-142.0.tar.gz -69b45005451ccd69c354b4c2910e92371cb801665f5e300dbecd36f8bc4ce68e77a431b5dac07c0937787debb4e93b7aadefa0a1e76c4ae334d2547ca3ca14ff 0001-hotfix-ignore-a-new-warning-in-rust-1.89.patch -dc254dd79e135aeac3e9c03eb055e3bc17980fc213f8c4d8d7921a575be7f9c26b91f110a6dcb01c0a824a7d9375c09f8a61c8858c20c11d79c03f873e2cb3f9 compiler.patch -1bee1448e409fedff635388ee6f1efa6d23c29ae3e6b6fd31452c56974adb40fcd0088c82d1e643d549154663e402942cbab9807dff5aff2d8997a09de6f5655 disable-dns_config_service.patch -0ef9168b8b1a4779bc4c8df718735e06d29e459dcfd00f8cbf9a4edaf9fade8089225219e46dead7de81de716bddc8d745dc2069db0ee7f7e5d2f64c5236e2ab disable-failing-tests.patch -0050857a9a9553c10fd502fe70606bce48269c9b48fa82ce9e111575637a0c03578e923c82fc639fcb574fc3337aeef50d8a0aea5e512ae4eab83b8c3d732cf6 fc-cache-version.patch -87f63d83139562e058f3f649eb1f62bf100dd92c2bb6ee393fdce0c8f7d7c188a7062394647aafe4e82c0a8fbbffeb613edc5c8dd9415dd9dda777827ea371c5 fix-ffmpeg-codec-list.patch -c63dee5044353eb306a39ca1526158c0f003ab310ecb03d1c368dc2a979454590c84b8d3c15484517d5e66bb8add9b231da9abbadf2e50850abd72ac1345c4ab fstatat-32bit.patch +8a83b73d219fe607f8ba4a4203ec06c866c883f8056c17e67105162257eb263e26e5424cb2d8a56ab1a25a989cb20cd59c7a2132de587447c193c1b53b01e6c5 electron-27.1.0-118.0.5993.144.tar.zst +194c3a7a0fa03a85df6fe52ece3d53d4d15b9d0cb440b56a2ccb1b5c0d3f6481b6f7287aa705c596ceea92d475677ddaf58926f3b31c03a3c20e80ad7e481ce7 chromium-patches-118.0.5993.11.tar.gz +29bb685e03356a77df5fd347cdf55194cc8b3265c421cc76e54d64edefc329dbcb052deb26b22e8f587ce68456876c071de1b7d258dd0fcc6ee66c875ec4a020 chromium-revert-drop-of-system-java.patch +fa291e941076146d0edd5b96c088240a44a6e0aca3dfc744929655607182d2dc47e6c35ecb419f7c623fcf7f26dc3c4dd924dbf5ed10c3b986283f5ef2f72573 chromium-use-alpine-target.patch +9200f78bad70e95c648a5e8392d50642190600f655c6baa366ff6467ebad52d3b3f305dad58f3610da67136f4b723557653b174ec5c25be8d8737ee04d9ee09f fix-missing-cstdint-include-musl.patch 33ee60863cc438ef57ffef92ba4cf67a856a5ffc16138bce241bcf87e47b15154aa86918e793c26f7ec4dc62a445257ad5673ed7001daf22c4043cf6cc57da7f gdbinit.patch -36a764fa73443b47d38050b52dbe6ad2fa8d67201ff4ccdbad13b52308ef165ca046aac6f9609fe35890a6485f0f3e672e78cc41e3e44f3cdc7f145e540524e8 generic-sensor-include.patch -a94cf7a0670abf5178abba33c619cc6d41d73f2e16c7a1fd5b152152f5077df103e049d166e3b8627797c38113821d2f2e6b64cd48d132c1e90ad32d63a349f5 headless-shell-no-license.patch -51f1959bd622af26a1c3a1f4b0ad9a5bfa461057aa4cf9960c568dddf8ac47d55989c277f5d5ab5db040a04c54925a531af7a1cc767559218b408eaa6bdd7577 musl-sandbox.patch +8de65109ece27ea63bd469f2220c56b8c752ba0a50fdf390082a2d5ae74b8e010199126175569f6d5084270dd4e0571e68aec32c0bca8211a6699925b3a09124 import-version.patch +49851d42ce8ccd533d01d1bb2477930802b0bcebab8dd52f2da292088378c6ed9b74146e7dad55edfe096281fc84b2c55abaf832744fd4553a97c38ed891df3a libstdc++13.patch +0e991842e23a4b9133898125eeb39e45e3f86f886eef5d2f0d9a72ee143a3e124b3b4f60be94edd57ce4185bcd69704edb51f76d08fdb6207f5559a08dd41ab0 mman.patch +50c274a420bb8a7f14fcb56e40920dac8f708792a4520789b4987facea459bef88113d5a2b60fa8c57bee6e92bff3617d6b73fa305c8c44614c638971cffd440 musl-sandbox.patch e7163ac5810ac85366cef2447412287c856e3d67c6b77f219a6e5a418b1965b98e449c409424ad0704a5bded9355dd0aec3dc4585918ce5a2ab36c079707afe2 musl-tid-caching.patch -3b7420d58d13dfc4baab5065e3017f666f51fed6de087af42a660a839d7b4444b50d1a93204322d213df36c6722eaf6b08d46d50dc374198a342da2675fafff5 net-test-no-vpython.patch -e487662b6606ea526ddd716c31e6b9ad3d61f1bee5356cd94b78a903efb3928338cbb48e3d5840b34c3b70a71e8361a228430bd50e707ad301228a7049d59e37 net-test-pyws3-py3.12.patch -a250cff50d282b02ce0f28880d0a2b4fb8e7df51bc072bfeeddc561c29a7c76453dbcbc7b17b82966a7b30a31409d2555720d1dcf963e1b3fb8a2a06a6abcf46 no-execinfo.patch -0b41aeb6b212f9c3f61aa0a8d3085c9e865a2e68f3270ceec2376aab67f337ac46eaea7da36d3fd7219e2a1cb731b7aa2d3fb619a374d2b7653976b9f4f384bb no-mallinfo.patch +92eb002718026611f5542362ad69b67f0a398ff71b3fca5c05d55cb5c6f9f29334e5e127bb4860cfaa3fba0f0d4c901e2b98808217e7dc02e254a64a5c9521aa musl-v8-monotonic-pthread-cont_timedwait.patch +8cc774e8d84e434960222c0497ad8193ae35c0732f98d3282d5fd4b4930f914809eec97832c199517ca89ca6b9d1d011db5ce533c40c68ce5fa464609d131a23 no-execinfo.patch +b5479874d125ee95a311295f227f8881a83023ec34fded7a6160b3ae32ea3ba0f2b833a9fb264c57f3d22746b6d8b00bdc8eb2ff86c43c412d6d3b55ae15b16b no-mallinfo.patch +8a52ff52201a5e20344f5497ee2ffef0520f7b2d934be92227e49c3f2c12a94c33650eefc88a0e451a6b81d44ce197db421aaec7388e6bb1cb525a43628779d3 no-mte.patch e4c4e5bc6f828f9c883dd418c0ba01887949c29c311f76206a1ec29f620b0c0ba0452949dc2778a9c46ea066405857536964a36436a68eecf7da7952736333cf no-res-ninit-nclose.patch 6dc4d8dc92e685dace62265a1ddb3aebc558aed54d20ff6d36b030be0c48d7e84662326c31363612492574d9a03c62653cdc21a60995b97dee1d75cae86a9f9b no-sandbox-settls.patch -b75908a45ee2f4f806eec8d86fca2f51fda3531b88de48ef4539c364a40d7e2897cdaf38b715682d712648e3f43aac983055e688385f85fa7b7204ffb6d617e1 partalloc-no-tagging-arm64.patch -03f829a2da633533ef3fd0f287f5ec602d936a97a98b53cd2415553c2537ae9d571f35397ca7c9fb3f4b0806c300e3b189569f8d979ca132e1a2a4dae7206396 pvalloc.patch e48693e6b7aeebf69a5acbf80d9a35defe4c23835121dfeb58b051ac7c527e758a41004f4d193274fe1b01c0bfb1dbc77b09cb6a404a3fdee507a2918afb0edb temp-failure-retry.patch -465107da7818b237e3c144a318ab80c3c9343b51ed38b8971ef204692d13346929becbe94cefad4c153788d3a200642143584d5ca070f6304e768ba2139c19ec electron_icon.patch -e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e1005b644550331f6b8500177aa7e79bcb3750d3c1ceb76c3 electron_python-jinja-3.10.patch -2aa340854316f1284217c0ca17cbf44953684ad6c7da90815117df30928612eb9fb9ffb734b948dfc309cd25d1a67cd57f77aac2d052a3dd9aca07a3a58cbb30 electron_webpack-hash.patch -c7f57929943a86f9e5f333da9d5691da88038770eeb46dd0a0719962c934deb2879f0e7a1ed714e9383e38ee4d68eb754501f362c4d7cdee76cfc2e980b21272 electron_unbundle-node.patch -4d9287d4cdfe27fbfb7be3d4b26c0c40edbd6a0c3ff926d60f2093ca09c15bcb58e20c2ccc8c0606aafd66c6d25a54225bc329cb056d8c5b297db4c6d0e768e6 electron_system-zlib-headers.patch -7031ddb61a858e95d83366185a53b5a2e4be9abe0aa4957543e0621cad57175ffef31bd87b8be25255184bb4cb30ec4fbced055407c6c8c7940c9e240b25d498 electron_do-not-strip-binaries.patch -0f8f36c21cc50c80e378691265845ff10fa53953d6cd5352fe71efcba489f956e50d374d8f634dadc3569c4901a81a1f308a3e69140c0f9136e0777022b9520f electron_shell-file-dialog-drop-glibc.patch -3fd20144ed171cf9706899a1481141c7fa3e98b17d600cdc5a3a68ba39059cebd9e5ccb5534af3e262f689df381bc3cb630ac24e46dd6f6c72eac4f4b6b14b35 electron_use-system-yarn.patch -e8ea87c547546011c4c8fc2de30e4f443b85cd4cfcff92808e2521d2f9ada03feefb8e1b0cf0f6b460919c146e56ef8d5ad4bb5e2461cc5247c30d92eb4d068e default.conf +905565c10f5e5600e7d4db965c892cc45009a258e9995da958974d838ace469e1db1019195307e8807860d5b55ba6bfeea478b1f39a9b99e82c619b2816a1a22 icon.patch +e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e1005b644550331f6b8500177aa7e79bcb3750d3c1ceb76c3 python-jinja-3.10.patch +71571b15cf8bd6259b7fd22bea0e46b64890f3db776365de33fe539f26ce9ef99459e05c3dde9434c3657225bc67160abc915acd93033cb487c770c6a2a5975f vector-const.patch +2aa340854316f1284217c0ca17cbf44953684ad6c7da90815117df30928612eb9fb9ffb734b948dfc309cd25d1a67cd57f77aac2d052a3dd9aca07a3a58cbb30 webpack-hash.patch +4c540972fa12acd9f0aafb8dc7e9987c3d6e4f28ff679dde522ebcec2dc5ae1a62d9d255bed0a30b9c79ae3b90ab0f5b9ae1ef5b7bf338612e28d9ef70250ca3 chromium-icu-74.patch +07e9203b05402f81c0ded5871a845e37bdc4c09b7bb2839312396f298a9ce8196e2c24508675e3d6f695f1e2b0ff1c2c64f4e9dfff3ff5359a87cb7b9b972393 default.conf 191559fc7aa1ea0353c6fb0cc321ee1d5803a0e44848c8be941cfab96277b0de6a59962d373e2a2a1686c8f9be2bcf2d2f33706759a339a959e297d3f7fda463 electron.desktop -5f7ba5ad005f196facec1c0f26108356b64cafb1e5cfa462ff714a33b8a4c757ac00bfcb080da09eb5b65032f8eb245d9676a61ec554515d125ed63912708648 electron-launcher.sh +ff1844036c8ae0a0a57a16211a816bc0ad550ccf6ea1cf718e228b8c95b9c4f5c9772d1a1a23638c0e140703a7b52874371e27a0d9d54a7b9468e5c384759be5 electron-launcher.sh " diff --git a/backports/electron/README.md b/backports/electron/README.md deleted file mode 100644 index 2a12409..0000000 --- a/backports/electron/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# electron - -This is the `electron` package for Alpine Linux. - -Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael - -## Building electron - -Electron is an application framework based on `chromium`. Just like `chromium`, -and any Google application, the build process is a form of [hostile -architecture] (https://en.wikipedia.org/wiki/Hostile_architecture) It's quite -literally chromium with patches applied on top for the most part. The build -process applies a series of git patches against `chromium` from directories -with a script. - -Its source code isn't available as a downloadable tarball. It is only fetchable -using Google's `gclient` available in `depot_tools` with a reimplemented -version in the `teapot` package. By executing, `abuild snapshot`, the tarball -can be fetched and packaged, as long as `gclient` is in your path. For ease of -maintenance, a workflow on [Ayakael's Forge](https://ayakael.net/mirrors/electron) -automatically fetches and packages the source code on new releases and makes it -available in a [generic Forgejo repository](https://ayakael.net/mirrors/-/packages/generic/electron). - -## Electron maintenance cycle - -Security / bug fixes land from upstream land randomly, but chromium security fixes land -basically weekly around Tuesday in `America/Los_Angeles`. Minor relases only require -an upgrade to the `electron` packages. It is advisable to follow chromium weekly -security fixes, although following `electron` minor releases is fine. - -Major version upgrades require a more thorough approach. For one, most changes -can be backported from `chromium` APKBUILD by diffing the previous version -packaged with `electron` with the current (set with `_chromium` var). You also -need to rebuild all `electron` apps, with patches sometimes necessary when -upstream bumps to a new `nodejs` major verion. Major electron releases are -every two `chromium` major releases, with [dates known well ahead] -(https://chromiumdash.appspot.com/schedule) with a few major releases of -`electron` [officially supported at a time](https://www.electronjs.org/docs/latest/tutorial/electron-timelines). - -Steps, in a nutshell: - -1. Set `pkgver` to up-to-date version - -2. Optional: fetch source-code using `abuild snapshot`, making sure `gclient` -is in your path - -3. Update source checksum using `abuild checksum` - -4. If major update, backport changes from `chromium` aport and bump `pkgrel` -for all electron-based applications. - -## Why is this package still in testing - -[Work is under way](https://gitlab.alpinelinux.org/alpine/aports/-/issues/15760) -to make this aport ready for `community` - -Until that happens, this package is also kept-to-date against the latest -release of Alpine Linux in [Ayakael's Forge](https://ayakael.net/forge/-/packages/alpine/signal-desktop) -This is true of all Ayakael's packages still in `testing`. diff --git a/backports/electron/chromium-icu-74.patch b/backports/electron/chromium-icu-74.patch new file mode 100644 index 0000000..02a44b7 --- /dev/null +++ b/backports/electron/chromium-icu-74.patch @@ -0,0 +1,20 @@ +See ICU change https://github.com/unicode-org/icu/commit/2e45e6ec0e84a1c01812015a254ea31b286316fb + +Similar has happened in the past. See: +https://chromium.googlesource.com/chromium/src/+/e60b571faa3f14dd9119a6792dccf12f8bf80192 + +diff --git a/third_party/blink/renderer/platform/text/text_break_iterator.cc b/third_party/blink/renderer/platform/text/text_break_iterator.cc +index ddfbd51..247da06 100644 +--- a/third_party/blink/renderer/platform/text/text_break_iterator.cc ++++ b/third_party/blink/renderer/platform/text/text_break_iterator.cc +@@ -161,7 +161,9 @@ static const unsigned char kAsciiLineBreakTable[][(kAsciiLineBreakTableLastChar + }; + // clang-format on + +-#if U_ICU_VERSION_MAJOR_NUM >= 58 ++#if U_ICU_VERSION_MAJOR_NUM >= 74 ++#define BA_LB_COUNT (U_LB_COUNT - 8) ++#elif U_ICU_VERSION_MAJOR_NUM >= 58 + #define BA_LB_COUNT (U_LB_COUNT - 3) + #else + #define BA_LB_COUNT U_LB_COUNT diff --git a/backports/electron/chromium-revert-drop-of-system-java.patch b/backports/electron/chromium-revert-drop-of-system-java.patch new file mode 100644 index 0000000..24355bf --- /dev/null +++ b/backports/electron/chromium-revert-drop-of-system-java.patch @@ -0,0 +1,17 @@ +This was dropped for some reason in 6951c37cecd05979b232a39e5c10e6346a0f74ef +allows using /usr/bin/java instead of a downloaded one (that doesn't work on musl) +-- +--- a/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200 ++++ b/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200 +@@ -13,8 +13,9 @@ + + + _CURRENT_DIR = os.path.join(os.path.dirname(__file__)) +-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") +-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds" ++_JAVA_BIN = "java" ++_JDK_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") ++_JAVA_PATH = _JDK_PATH if os.path.isfile(_JDK_PATH) else _JAVA_BIN + + class Compiler(object): + """Runs the Closure compiler on given source files to typecheck them diff --git a/backports/electron/chromium-use-alpine-target.patch b/backports/electron/chromium-use-alpine-target.patch new file mode 100644 index 0000000..ae57735 --- /dev/null +++ b/backports/electron/chromium-use-alpine-target.patch @@ -0,0 +1,30 @@ +building for arm targets by default passes --target to clang, because it +assumes it's cross compiling (so passes --target as if the host is different, +instead of assuming default) + +probably also works: removing this entirely. but to be safe, pass the alpine clang host triple +-- +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -915,8 +915,8 @@ config("compiler_cpu_abi") { + } 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 += [ +@@ -930,8 +930,8 @@ config("compiler_cpu_abi") { + } 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 diff --git a/backports/electron/compiler.patch b/backports/electron/compiler.patch deleted file mode 100644 index 41b9b08..0000000 --- a/backports/electron/compiler.patch +++ /dev/null @@ -1,202 +0,0 @@ ---- ./build/config/compiler/BUILD.gn.orig -+++ ./build/config/compiler/BUILD.gn -@@ -658,22 +658,6 @@ - } - } - -- # TODO(crbug.com/40283598): This causes binary size growth and potentially -- # other problems. -- if (default_toolchain != "//build/toolchain/cros:target") { -- 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" ] -@@ -1273,8 +1257,8 @@ - # simplicity we always explicitly set the architecture. - if (current_cpu == "x64") { - if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) { -- cflags += [ "--target=x86_64-unknown-linux-gnu" ] -- ldflags += [ "--target=x86_64-unknown-linux-gnu" ] -+ cflags += [ "--target=x86_64-alpine-linux-musl" ] -+ ldflags += [ "--target=x86_64-alpine-linux-musl" ] - } else { - cflags += [ "-m64" ] - ldflags += [ "-m64" ] -@@ -1282,8 +1266,8 @@ - cflags += [ "-msse3" ] - } else if (current_cpu == "x86") { - if (is_clang && !is_android && !is_chromeos_device) { -- cflags += [ "--target=i386-unknown-linux-gnu" ] -- ldflags += [ "--target=i386-unknown-linux-gnu" ] -+ cflags += [ "--target=i586-alpine-linux-musl" ] -+ ldflags += [ "--target=i586-alpine-linux-musl" ] - } else { - cflags += [ "-m32" ] - ldflags += [ "-m32" ] -@@ -1294,8 +1278,8 @@ - ] - } else if (current_cpu == "arm") { - if (is_clang && !is_android && !is_chromeos_device) { -- cflags += [ "--target=arm-linux-gnueabihf" ] -- ldflags += [ "--target=arm-linux-gnueabihf" ] -+ cflags += [ "--target=armv7-alpine-linux-musleabihf" ] -+ ldflags += [ "--target=armv7-alpine-linux-musleabihf" ] - } - cflags += [ - "-march=$arm_arch", -@@ -1306,8 +1290,8 @@ - } - } else if (current_cpu == "arm64") { - if (is_clang && !is_android && !is_fuchsia && !is_chromeos_device) { -- cflags += [ "--target=aarch64-linux-gnu" ] -- ldflags += [ "--target=aarch64-linux-gnu" ] -+ cflags += [ "--target=aarch64-alpine-linux-musl" ] -+ ldflags += [ "--target=aarch64-alpine-linux-musl" ] - } - } else if (current_cpu == "mipsel") { - ldflags += [ "-Wl,--hash-style=sysv" ] -@@ -1551,22 +1535,22 @@ - ldflags += [ "-maix64" ] - } - } else if (is_clang) { -- cflags += [ "--target=powerpc64le-unknown-linux-gnu" ] -- ldflags += [ "--target=powerpc64le-unknown-linux-gnu" ] -+ cflags += [ "--target=powerpc64le-alpine-linux-musl" ] -+ ldflags += [ "--target=powerpc64le-alpine-linux-musl" ] - } else { - cflags += [ "-m64" ] - ldflags += [ "-m64" ] - } - } else if (current_cpu == "riscv64") { - if (is_clang && !is_android) { -- cflags += [ "--target=riscv64-linux-gnu" ] -- ldflags += [ "--target=riscv64-linux-gnu" ] -+ cflags += [ "--target=riscv64-alpine-linux-musl" ] -+ ldflags += [ "--target=riscv64-alpine-linux-musl" ] - } - cflags += [ "-mabi=lp64d" ] - } else if (current_cpu == "loong64") { - if (is_clang) { -- cflags += [ "--target=loongarch64-linux-gnu" ] -- ldflags += [ "--target=loongarch64-linux-gnu" ] -+ cflags += [ "--target=loongarch64-alpine-linux-musl" ] -+ ldflags += [ "--target=loongarch64-alpine-linux-musl" ] - } - cflags += [ - "-mabi=lp64d", -@@ -1574,8 +1558,8 @@ - ] - } else if (current_cpu == "s390x") { - if (is_clang) { -- cflags += [ "--target=s390x-unknown-linux-gnu" ] -- ldflags += [ "--target=s390x-unknown-linux-gnu" ] -+ cflags += [ "--target=s390x-alpine-linux-musl" ] -+ ldflags += [ "--target=s390x-alpine-linux-musl" ] - } - cflags += [ "-m64" ] - ldflags += [ "-m64" ] -@@ -2274,7 +2258,7 @@ - defines = [ "_HAS_NODISCARD" ] - } - } else { -- 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 -@@ -178,11 +178,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" -@@ -200,25 +200,21 @@ - # The thumbv7 vs. armv7 distinction is for legacy reasons and both - # targets in fact target Thumb, see: - # https://github.com/rust-lang/rust/issues/44722 -- if (arm_use_neon) { -- rust_abi_target = "thumbv7neon-unknown-linux-gnueabi" + float_suffix -- } else { -- rust_abi_target = "armv7-unknown-linux-gnueabi" + float_suffix -- } -+ rust_abi_target = "armv7-alpine-linux-musleabi" + float_suffix - } else { -- rust_abi_target = "arm-unknown-linux-gnueabi" + float_suffix -+ 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 if (current_cpu == "ppc64") { -- rust_abi_target = "powerpc64le-unknown-linux-gnu" -+ rust_abi_target = "powerpc64le-alpine-linux-musl" - } else if (current_cpu == "s390x") { -- rust_abi_target = "s390x-unknown-linux-gnu" -+ rust_abi_target = "s390x-alpine-linux-musl" - } else if (current_cpu == "loong64") { -- rust_abi_target = "loongarch64-unknown-linux-gnu" -+ rust_abi_target = "loongarch64-alpine-linux-musl" - } else { - # Best guess for other future platforms. -- rust_abi_target = current_cpu + "-unknown-linux-gnu" -+ 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 -@@ -207,22 +207,23 @@ - assert(false) # Unhandled cpu type - } - } 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 if (current_cpu == "loong64") { -- _dir = "loongarch64-unknown-linux-gnu" -+ _suffix = "-loongarch64" - } else if (current_cpu == "riscv64") { -- _dir = "riscv64-unknown-linux-gnu" -+ _suffix = "-riscv64" - } else if (current_cpu == "ppc64") { -- _dir = "ppc64le-unknown-linux-gnu" -+ _suffix = "-powerpc64le" - } else if (current_cpu == "s390x") { -- _dir = "s390x-unknown-linux-gnu" -+ _suffix = "-s390x" - } else { - assert(false) # Unhandled cpu type - } diff --git a/backports/electron/crbug-1407202-mediarouter-crash.patch b/backports/electron/crbug-1407202-mediarouter-crash.patch new file mode 100644 index 0000000..6bd5c3a --- /dev/null +++ b/backports/electron/crbug-1407202-mediarouter-crash.patch @@ -0,0 +1,372 @@ +From d0c1f5ee1f56c165bdf550c9e3be0d7313587b80 Mon Sep 17 00:00:00 2001 +From: Elly Fong-Jones +Date: Wed, 18 Jan 2023 22:33:11 +0000 +Subject: [PATCH] media: untangle MediaRouterUI lifetimes + +Currently, MediaRouterUI is owned by MediaItemUIDeviceSelectorView. +There is an observer method named "OnControllerInvalidated" which +MediaItemUIDeviceSelectorView reacts to by deleting the MediaRouterUI it +owns. However, OnControllerInvalidated can actually be called in two +different situations: + +* From MediaRouterUI::TakeMediaRouteStarter(), in which case the + MediaRouterUI object is *not* being destroyed, but should be, because + it can't be safely used after TakeMediaRouteStarter() ends; +* From MediaRouterUI::~MediaRouterUI(), in which case the MediaRouterUI + object *is* being destroyed already and should not be. + +In the second case, only the fact that libc++ nulls out unique_ptr +before destroying the pointed-to object saves us from a use-after-free; +under libstdc++, we UaF immediately by re-entering the destructor. Even +under libc++ though this is still very dangerous, because any observers +that happened to be registered after MediaItemUIDeviceSelectorView will +be invoked after the destruction of the object they're observing. Right +now there are no such other observers, but the fact remains that this +interface is basically a UaF timebomb. + +This change separates "this object is about to be destroyed" (an +observable state) from "please destroy this object, it is no longer +useful" (a callback that is made to the object's owner) by: + +1. Renaming OnControllerInvalidated to OnControllerDestroying, to make + it very clear what is happening to the object, and +2. Adding a RegisterDestructor method to CastDialogController, which + allows MediaItemUIDeviceSelectorView to pass a callback into + MediaRouterUI which MediaRouterUI can use to arrange for its own + destruction. + +This is still a bit tangled and ungainly, but it's safe. A fuller +writeup is on the linked bug. + +Fixed: 1407202 +Change-Id: Id9410de1fbf2cb42f13957dde316b7c9259f192f +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4165967 +Reviewed-by: Peter Kasting +Reviewed-by: Takumi Fujimoto +Commit-Queue: Elly Fong-Jones +Cr-Commit-Position: refs/heads/main@{#1094110} +--- + +diff --git a/chrome/browser/ui/media_router/cast_dialog_controller.h b/chrome/browser/ui/media_router/cast_dialog_controller.h +index 2a8de976..c3c0553 100644 +--- a/chrome/browser/ui/media_router/cast_dialog_controller.h ++++ b/chrome/browser/ui/media_router/cast_dialog_controller.h +@@ -24,10 +24,12 @@ + public: + virtual ~Observer() = default; + +- virtual void OnModelUpdated(const CastDialogModel& model) = 0; ++ virtual void OnModelUpdated(const CastDialogModel& model) {} + +- // Observer should drop its reference to the controller when this is called. +- virtual void OnControllerInvalidated() = 0; ++ // Notifies observers that the observed object is being destroyed. Observers ++ // MUST NOT try to destroy the observed object in response - to manage the ++ // lifetime of a CastDialogController, use RegisterDestructor() below. ++ virtual void OnControllerDestroying() {} + }; + + virtual ~CastDialogController() = default; +@@ -55,6 +57,16 @@ + // intended that this API should only be used to transfer ownership to some + // new component that will want to start casting on this dialog box's behalf. + virtual std::unique_ptr TakeMediaRouteStarter() = 0; ++ ++ // Registers a callback for when the CastDialogController has given up ++ // ownership of its MediaRouteStarter and is no longer safe to use. The ++ // provided closure must destroy |this| or otherwise ensure it is never used ++ // again. This method can only be called once. ++ // ++ // TODO(https://crbug.com/1408494): It's awkward that CastDialogController has ++ // a state where it exists but is unsafe to use, and doubly awkward that we ++ // have to paper over that with this callback. Can that be fixed? ++ virtual void RegisterDestructor(base::OnceClosure destructor) = 0; + }; + + } // namespace media_router +diff --git a/chrome/browser/ui/media_router/media_router_ui.cc b/chrome/browser/ui/media_router/media_router_ui.cc +index 1865115f..644d131 100644 +--- a/chrome/browser/ui/media_router/media_router_ui.cc ++++ b/chrome/browser/ui/media_router/media_router_ui.cc +@@ -83,6 +83,9 @@ + MediaRouterUI::~MediaRouterUI() { + if (media_route_starter_) + DetachFromMediaRouteStarter(); ++ for (CastDialogController::Observer& observer : observers_) { ++ observer.OnControllerDestroying(); ++ } + } + + // static +@@ -145,9 +148,6 @@ + } + + void MediaRouterUI::DetachFromMediaRouteStarter() { +- for (CastDialogController::Observer& observer : observers_) +- observer.OnControllerInvalidated(); +- + media_route_starter()->RemovePresentationRequestSourceObserver(this); + media_route_starter()->RemoveMediaSinkWithCastModesObserver(this); + } +@@ -181,8 +181,16 @@ + + std::unique_ptr MediaRouterUI::TakeMediaRouteStarter() { + DCHECK(media_route_starter_) << "MediaRouteStarter already taken!"; +- DetachFromMediaRouteStarter(); +- return std::move(media_route_starter_); ++ auto starter = std::move(media_route_starter_); ++ if (destructor_) { ++ std::move(destructor_).Run(); // May destroy `this`. ++ } ++ return starter; ++} ++ ++void MediaRouterUI::RegisterDestructor(base::OnceClosure destructor) { ++ DCHECK(!destructor_); ++ destructor_ = std::move(destructor); + } + + bool MediaRouterUI::CreateRoute(const MediaSink::Id& sink_id, +diff --git a/chrome/browser/ui/media_router/media_router_ui.h b/chrome/browser/ui/media_router/media_router_ui.h +index 5c2f14e..7afe775 100644 +--- a/chrome/browser/ui/media_router/media_router_ui.h ++++ b/chrome/browser/ui/media_router/media_router_ui.h +@@ -100,8 +100,10 @@ + void StopCasting(const std::string& route_id) override; + void ClearIssue(const Issue::Id& issue_id) override; + // Note that |MediaRouterUI| should not be used after |TakeMediaRouteStarter| +- // is called. ++ // is called. To enforce that, |TakeMediaRouteStarter| calls the destructor ++ // callback given to |RegisterDestructor| to destroy itself. + std::unique_ptr TakeMediaRouteStarter() override; ++ void RegisterDestructor(base::OnceClosure destructor) override; + + // Requests a route be created from the source mapped to + // |cast_mode|, to the sink given by |sink_id|. +@@ -337,6 +339,8 @@ + raw_ptr router_; + raw_ptr logger_; + ++ base::OnceClosure destructor_; ++ + // NOTE: Weak pointers must be invalidated before all other member variables. + // Therefore |weak_factory_| must be placed at the end. + base::WeakPtrFactory weak_factory_{this}; +diff --git a/chrome/browser/ui/media_router/media_router_ui_unittest.cc b/chrome/browser/ui/media_router/media_router_ui_unittest.cc +index 2cc243d1..c33437b 100644 +--- a/chrome/browser/ui/media_router/media_router_ui_unittest.cc ++++ b/chrome/browser/ui/media_router/media_router_ui_unittest.cc +@@ -80,11 +80,11 @@ + } + + MOCK_METHOD1(OnModelUpdated, void(const CastDialogModel& model)); +- void OnControllerInvalidated() override { ++ void OnControllerDestroying() override { + controller_ = nullptr; +- OnControllerInvalidatedInternal(); ++ OnControllerDestroyingInternal(); + } +- MOCK_METHOD0(OnControllerInvalidatedInternal, void()); ++ MOCK_METHOD0(OnControllerDestroyingInternal, void()); + + private: + raw_ptr controller_ = nullptr; +@@ -295,7 +295,7 @@ + }))); + NotifyUiOnRoutesUpdated({route}); + +- EXPECT_CALL(observer, OnControllerInvalidatedInternal()); ++ EXPECT_CALL(observer, OnControllerDestroyingInternal()); + ui_.reset(); + } + +diff --git a/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.cc b/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.cc +index 34dad46..d843bba 100644 +--- a/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.cc ++++ b/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.cc +@@ -222,6 +222,11 @@ + if (cast_controller) { + cast_controller_ = std::move(cast_controller); + cast_controller_->AddObserver(this); ++ cast_controller_->RegisterDestructor( ++ base::BindOnce(&MediaItemUIDeviceSelectorView::DestroyCastController, ++ // Unretained is safe: this callback is held by ++ // cast_controller_, which is owned by this object. ++ base::Unretained(this))); + } + } + +@@ -499,10 +504,6 @@ + observer.OnMediaItemUIDeviceSelectorUpdated(device_entry_ui_map_); + } + +-void MediaItemUIDeviceSelectorView::OnControllerInvalidated() { +- cast_controller_.reset(); +-} +- + void MediaItemUIDeviceSelectorView::OnDeviceSelected(int tag) { + auto it = device_entry_ui_map_.find(tag); + DCHECK(it != device_entry_ui_map_.end()); +@@ -658,5 +659,9 @@ + weak_ptr_factory_.GetWeakPtr())); + } + ++void MediaItemUIDeviceSelectorView::DestroyCastController() { ++ cast_controller_.reset(); ++} ++ + BEGIN_METADATA(MediaItemUIDeviceSelectorView, views::View) + END_METADATA +diff --git a/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.h b/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.h +index e950565..222fc20 100644 +--- a/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.h ++++ b/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view.h +@@ -81,7 +81,6 @@ + + // media_router::CastDialogController::Observer + void OnModelUpdated(const media_router::CastDialogModel& model) override; +- void OnControllerInvalidated() override; + + // MediaItemUIFooterView::Delegate + void OnDeviceSelected(int tag) override; +@@ -121,6 +120,7 @@ + void RecordCastDeviceCount(); + DeviceEntryUI* GetDeviceEntryUI(views::View* view) const; + void RegisterAudioDeviceCallbacks(); ++ void DestroyCastController(); + + bool has_expand_button_been_shown_ = false; + bool have_devices_been_shown_ = false; +diff --git a/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view_unittest.cc b/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view_unittest.cc +index c3bcc6cc..6ae3dde8 100644 +--- a/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view_unittest.cc ++++ b/chrome/browser/ui/views/global_media_controls/media_item_ui_device_selector_view_unittest.cc +@@ -156,6 +156,7 @@ + MOCK_METHOD1(ClearIssue, void(const media_router::Issue::Id& issue_id)); + MOCK_METHOD0(TakeMediaRouteStarter, + std::unique_ptr()); ++ MOCK_METHOD1(RegisterDestructor, void(base::OnceClosure)); + }; + + } // anonymous namespace +diff --git a/chrome/browser/ui/views/media_router/cast_dialog_coordinator_unittest.cc b/chrome/browser/ui/views/media_router/cast_dialog_coordinator_unittest.cc +index f6c80d6a..2dedc7e 100644 +--- a/chrome/browser/ui/views/media_router/cast_dialog_coordinator_unittest.cc ++++ b/chrome/browser/ui/views/media_router/cast_dialog_coordinator_unittest.cc +@@ -40,6 +40,7 @@ + MOCK_METHOD(void, StopCasting, (const std::string& route_id)); + MOCK_METHOD(void, ClearIssue, (const Issue::Id& issue_id)); + MOCK_METHOD(std::unique_ptr, TakeMediaRouteStarter, ()); ++ MOCK_METHOD(void, RegisterDestructor, (base::OnceClosure)); + }; + + class CastDialogCoordinatorTest : public TestWithBrowserView { +diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view.cc b/chrome/browser/ui/views/media_router/cast_dialog_view.cc +index e3c7dadb..711d081 100644 +--- a/chrome/browser/ui/views/media_router/cast_dialog_view.cc ++++ b/chrome/browser/ui/views/media_router/cast_dialog_view.cc +@@ -125,9 +125,9 @@ + observer.OnDialogModelUpdated(this); + } + +-void CastDialogView::OnControllerInvalidated() { ++void CastDialogView::OnControllerDestroying() { + controller_ = nullptr; +- // We don't destroy the dialog here because if the invalidation was caused by ++ // We don't destroy the dialog here because if the destruction was caused by + // activating the toolbar icon in order to close the dialog, then it would + // cause the dialog to immediately open again. + } +diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view.h b/chrome/browser/ui/views/media_router/cast_dialog_view.h +index d87fdda..d44d4e0 100644 +--- a/chrome/browser/ui/views/media_router/cast_dialog_view.h ++++ b/chrome/browser/ui/views/media_router/cast_dialog_view.h +@@ -66,7 +66,7 @@ + + // CastDialogController::Observer: + void OnModelUpdated(const CastDialogModel& model) override; +- void OnControllerInvalidated() override; ++ void OnControllerDestroying() override; + + // views::BubbleDialogDelegateView: + void OnPaint(gfx::Canvas* canvas) override; +diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view_browsertest.cc b/chrome/browser/ui/views/media_router/cast_dialog_view_browsertest.cc +index 1c584120..a7af3c8 100644 +--- a/chrome/browser/ui/views/media_router/cast_dialog_view_browsertest.cc ++++ b/chrome/browser/ui/views/media_router/cast_dialog_view_browsertest.cc +@@ -70,6 +70,7 @@ + override { + return nullptr; + } ++ void RegisterDestructor(base::OnceClosure destructor) override {} + }; + + } // namespace +diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc b/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc +index 5326467..988cb07a 100644 +--- a/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc ++++ b/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc +@@ -91,6 +91,7 @@ + MOCK_METHOD1(StopCasting, void(const std::string& route_id)); + MOCK_METHOD1(ClearIssue, void(const Issue::Id& issue_id)); + MOCK_METHOD0(TakeMediaRouteStarter, std::unique_ptr()); ++ MOCK_METHOD1(RegisterDestructor, void(base::OnceClosure)); + }; + + class CastDialogViewTest : public ChromeViewsTestBase { +diff --git a/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.cc b/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.cc +index ad379b2..244d523 100644 +--- a/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.cc ++++ b/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.cc +@@ -51,7 +51,7 @@ + std::move(context)); + } + +- ShowGlobalMeidaControlsDialog(std::move(context)); ++ ShowGlobalMediaControlsDialog(std::move(context)); + return true; + } + +@@ -155,9 +155,20 @@ + initiator(), std::move(start_presentation_context_)) + : MediaRouterUI::CreateWithDefaultMediaSourceAndMirroring( + initiator()); ++ ui_->RegisterDestructor( ++ base::BindOnce(&MediaRouterDialogControllerViews::DestroyMediaRouterUI, ++ // Safe to use base::Unretained here: the callback being ++ // bound is held by the MediaRouterUI we are creating and ++ // owning, and ownership of |ui_| is never transferred ++ // away from this object. ++ base::Unretained(this))); + } + +-void MediaRouterDialogControllerViews::ShowGlobalMeidaControlsDialog( ++void MediaRouterDialogControllerViews::DestroyMediaRouterUI() { ++ ui_.reset(); ++} ++ ++void MediaRouterDialogControllerViews::ShowGlobalMediaControlsDialog( + std::unique_ptr context) { + // Show the WebContents requesting a dialog. + initiator()->GetDelegate()->ActivateContents(initiator()); +diff --git a/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.h b/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.h +index 0a5fdb1..7c97211 100644 +--- a/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.h ++++ b/chrome/browser/ui/views/media_router/media_router_dialog_controller_views.h +@@ -69,13 +69,14 @@ + // MediaRouterUIService::Observer: + void OnServiceDisabled() override; + +- // Initializes |ui_|. ++ // Initializes and destroys |ui_| respectively. + void InitializeMediaRouterUI(); ++ void DestroyMediaRouterUI(); + + // If there exists a media button, show the GMC dialog anchored to the media + // button. Otherwise, show the dialog anchored to the top center of the web + // contents. +- void ShowGlobalMeidaControlsDialog( ++ void ShowGlobalMediaControlsDialog( + std::unique_ptr context); + + // Returns the media button from the browser that initiates the request to diff --git a/backports/electron/default.conf b/backports/electron/default.conf index 41f3f03..2fb04de 100644 --- a/backports/electron/default.conf +++ b/backports/electron/default.conf @@ -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 --enable-features=WebRTCPipeWireCapturer" diff --git a/backports/electron/disable-dns_config_service.patch b/backports/electron/disable-dns_config_service.patch deleted file mode 100644 index 731a751..0000000 --- a/backports/electron/disable-dns_config_service.patch +++ /dev/null @@ -1,23 +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 -@@ -142,8 +142,8 @@ - ] - } 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 += [ -@@ -455,7 +455,6 @@ - if (is_android) { - sources += [ "dns_config_service_android_unittest.cc" ] - } else if (is_linux) { -- sources += [ "dns_config_service_linux_unittest.cc" ] - } else if (is_posix) { - sources += [ "dns_config_service_posix_unittest.cc" ] - } diff --git a/backports/electron/disable-failing-tests.patch b/backports/electron/disable-failing-tests.patch deleted file mode 100644 index 9351ea0..0000000 --- a/backports/electron/disable-failing-tests.patch +++ /dev/null @@ -1,22 +0,0 @@ -safesprintf emitnull: - error: conversion from 'std::nullptr_t' to 'const internal::Arg' is ambiguous - const internal::Arg arg_array[] = { args... }; - ---- 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 diff --git a/backports/electron/electron-launcher.sh b/backports/electron/electron-launcher.sh index 546d4cc..e49141f 100644 --- a/backports/electron/electron-launcher.sh +++ b/backports/electron/electron-launcher.sh @@ -10,8 +10,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" "$@" diff --git a/backports/electron/electron_do-not-strip-binaries.patch b/backports/electron/electron_do-not-strip-binaries.patch deleted file mode 100644 index f90ce54..0000000 --- a/backports/electron/electron_do-not-strip-binaries.patch +++ /dev/null @@ -1,127 +0,0 @@ -diff --git a/electron/BUILD.gn.orig b/electron/BUILD.gn -index b08f434..4062428 100644 ---- a/electron/BUILD.gn.orig -+++ b/electron/BUILD.gn -@@ -44,7 +44,6 @@ if (is_mac) { - - if (is_linux) { - import("//build/config/linux/pkg_config.gni") -- import("//electron/build/linux/strip_binary.gni") - import("//tools/generate_stubs/rules.gni") - - pkg_config("gio_unix") { -@@ -1424,18 +1423,6 @@ dist_zip("electron_dist_zip") { - ":licenses", - ] - if (is_linux) { -- if (is_official_build) { -- data_deps += [ -- ":strip_chrome_crashpad_handler", -- ":strip_chrome_sandbox", -- ":strip_electron_binary", -- ":strip_libEGL_shlib", -- ":strip_libGLESv2_shlib", -- ":strip_libffmpeg_shlib", -- ":strip_libvk_swiftshader_shlib", -- ] -- } -- - data_deps += [ "//sandbox/linux:chrome_sandbox" ] - } - deps = data_deps -@@ -1481,16 +1468,6 @@ group("electron_mksnapshot") { - - dist_zip("electron_mksnapshot_zip") { - data_deps = mksnapshot_deps -- if (is_linux && is_official_build) { -- data_deps += [ -- ":strip_libEGL_shlib", -- ":strip_libGLESv2_shlib", -- ":strip_libffmpeg_shlib", -- ":strip_libvk_swiftshader_shlib", -- ":strip_mksnapshot_binary", -- ":strip_v8_context_snapshot_generator_binary", -- ] -- } - deps = data_deps - outputs = [ "$root_build_dir/mksnapshot.zip" ] - } -@@ -1637,78 +1614,3 @@ group("release_build") { - ] - } - } -- --if (is_linux && is_official_build) { -- strip_binary("strip_electron_binary") { -- binary_input = "$root_out_dir/$electron_project_name" -- symbol_output = "$root_out_dir/debug/$electron_project_name.debug" -- compress_debug_sections = true -- deps = [ ":electron_app" ] -- } -- -- strip_binary("strip_chrome_crashpad_handler") { -- binary_input = "$root_out_dir/chrome_crashpad_handler" -- symbol_output = "$root_out_dir/debug/chrome_crashpad_handler.debug" -- compress_debug_sections = true -- deps = [ "//components/crash/core/app:chrome_crashpad_handler" ] -- } -- -- strip_binary("strip_chrome_sandbox") { -- binary_input = "$root_out_dir/chrome_sandbox" -- symbol_output = "$root_out_dir/debug/chrome-sandbox.debug" -- compress_debug_sections = true -- deps = [ "//sandbox/linux:chrome_sandbox" ] -- } -- -- strip_binary("strip_libEGL_shlib") { -- binary_input = "$root_out_dir/libEGL.so" -- symbol_output = "$root_out_dir/debug/libEGL.so.debug" -- compress_debug_sections = true -- deps = [ "//third_party/angle:libEGL" ] -- } -- -- strip_binary("strip_libGLESv2_shlib") { -- binary_input = "$root_out_dir/libGLESv2.so" -- symbol_output = "$root_out_dir/debug/libGLESv2.so.debug" -- compress_debug_sections = true -- deps = [ "//third_party/angle:libGLESv2" ] -- } -- -- strip_binary("strip_libffmpeg_shlib") { -- binary_input = "$root_out_dir/libffmpeg.so" -- symbol_output = "$root_out_dir/debug/libffmpeg.so.debug" -- compress_debug_sections = true -- deps = [ "//third_party/ffmpeg" ] -- } -- -- strip_binary("strip_libvk_swiftshader_shlib") { -- binary_input = "$root_out_dir/libvk_swiftshader.so" -- symbol_output = "$root_out_dir/debug/libvk_swiftshader.so.debug" -- compress_debug_sections = true -- deps = [ "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan" ] -- } -- -- strip_binary("strip_mksnapshot_binary") { -- _binary_path = rebase_path( -- get_label_info( -- ":v8_context_snapshot_generator($v8_snapshot_toolchain)", -- "root_out_dir") + "/mksnapshot", -- root_build_dir) -- binary_input = "$root_out_dir/$_binary_path" -- symbol_output = "$root_out_dir/debug/${_binary_path}.debug" -- compress_debug_sections = true -- deps = mksnapshot_deps -- } -- -- strip_binary("strip_v8_context_snapshot_generator_binary") { -- _binary_path = rebase_path( -- get_label_info( -- ":v8_context_snapshot_generator($v8_snapshot_toolchain)", -- "root_out_dir") + "/v8_context_snapshot_generator", -- root_build_dir) -- binary_input = "$root_out_dir/$_binary_path" -- symbol_output = "$root_out_dir/debug/${_binary_path}.debug" -- compress_debug_sections = true -- deps = mksnapshot_deps -- } --} diff --git a/backports/electron/electron_shell-file-dialog-drop-glibc.patch b/backports/electron/electron_shell-file-dialog-drop-glibc.patch deleted file mode 100644 index b2a6927..0000000 --- a/backports/electron/electron_shell-file-dialog-drop-glibc.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/./electron/shell/browser/ui/file_dialog.h.orig b/./electron/shell/browser/ui/file_dialog.h -index 6cdfc7b..f7757da 100644 ---- a/./electron/shell/browser/ui/file_dialog.h.orig -+++ b/./electron/shell/browser/ui/file_dialog.h -@@ -13,10 +13,6 @@ - #include "base/files/file_path.h" - #include "base/memory/raw_ptr_exclusion.h" - --#if BUILDFLAG(IS_LINUX) --#include --#endif -- - namespace electron { - class NativeWindow; - } - diff --git a/backports/electron/electron_system-zlib-headers.patch b/backports/electron/electron_system-zlib-headers.patch deleted file mode 100644 index 644f5e7..0000000 --- a/backports/electron/electron_system-zlib-headers.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/electron/BUILD.gn.orig b/electron/BUILD.gn -index 235c7abd3e8..088c24ac45e 100644 ---- a/electron/BUILD.gn.orig -+++ b/electron/BUILD.gn -@@ -1569,7 +1569,6 @@ group("copy_node_headers") { - ":generate_node_headers", - ":node_gypi_headers", - ":node_version_header", -- ":zlib_headers", - ] - } - diff --git a/backports/electron/electron_unbundle-node.patch b/backports/electron/electron_unbundle-node.patch deleted file mode 100644 index d518d7e..0000000 --- a/backports/electron/electron_unbundle-node.patch +++ /dev/null @@ -1,143 +0,0 @@ -diff --git a/electron/script/generate-config-gypi.py.orig b/electron/script/generate-config-gypi.py -index 58c973b..c215d90 100755 ---- a/electron/script/generate-config-gypi.py.orig -+++ b/electron/script/generate-config-gypi.py -@@ -64,6 +64,11 @@ def main(target_file, target_cpu): - # in common.gypi - if 'clang' in v: - del v['clang'] -+ -+ with open(os.path.join(NODE_DIR, 'use_system.txt')) as f: -+ for dep in f.read().strip().split(' '): -+ if v.get(f'node_shared_{dep}') is not None: -+ v[f'node_shared_{dep}'] = 'true' - - with open(target_file, 'w+', encoding='utf-8') as file_out: - file_out.write(pprint.pformat(config, indent=2)) - -diff --git a/third_party/electron_node/node.gni.orig b/third_party/electron_node/node.gni -index 73bf383..1c80d5a 100644 ---- a/third_party/electron_node/node.gni.orig -+++ b/third_party/electron_node/node.gni -@@ -73,6 +73,7 @@ declare_args() { - node_use_amaro = true - - # Allows downstream packagers (eg. Linux distributions) to build against system shared libraries. -+ use_system_ada = false - use_system_cares = false - use_system_nghttp2 = false - use_system_llhttp = false -diff --git a/third_party/electron_node/unofficial.gni.orig b/third_party/electron_node/unofficial.gni -index d61a9bd..8bf990e 100644 ---- a/third_party/electron_node/unofficial.gni.orig -+++ b/third_party/electron_node/unofficial.gni -@@ -143,7 +143,6 @@ template("node_gn_build") { - "deps/googletest:googletest_config", - ] - public_deps = [ -- "deps/ada", - "deps/uv", - "//electron:electron_js2c", - "deps/simdjson", -@@ -151,10 +150,7 @@ template("node_gn_build") { - ] - deps = [ - ":run_node_js2c", -- "deps/cares", -- "deps/histogram", - "deps/nbytes", -- "deps/nghttp2", - "deps/postject", - "deps/sqlite", - "deps/uvwasi", -@@ -182,12 +178,30 @@ template("node_gn_build") { - if (is_posix) { - configs -= [ "//build/config/gcc:symbol_visibility_hidden" ] - configs += [ "//build/config/gcc:symbol_visibility_default" ] -+ libs = [] -+ include_dirs = [] - } - if (use_system_llhttp) { - libs += [ "llhttp" ] - } else { - deps += [ "deps/llhttp" ] - } -+ if (use_system_cares) { -+ libs += [ "cares" ] -+ } else { -+ deps += [ "deps/cares" ] -+ } -+ if (use_system_nghttp2) { -+ libs += [ "nghttp2" ] -+ } else { -+ deps += [ "deps/nghttp2" ] -+ } -+ if (use_system_ada) { -+ libs += [ "ada" ] -+ include_dirs += [ "/usr/include/ada" ] -+ } else { -+ public_deps += [ "deps/ada" ] -+ } - if (use_system_histogram) { - libs += [ "hdr_histogram" ] - include_dirs += [ "/usr/include/hdr" ] -@@ -208,7 +222,7 @@ template("node_gn_build") { - "src/inspector:node_protocol_generated_sources", - "src/inspector:v8_inspector_compress_protocol_json", - ] -- include_dirs = [ -+ include_dirs += [ - "$target_gen_dir/src", - "$target_gen_dir/src/inspector", - "$node_inspector_protocol_path", -@@ -222,17 +236,18 @@ template("node_gn_build") { - sources += node_inspector.node_inspector_sources + - node_inspector.node_inspector_generated_sources - } -- if (is_linux) { -- import("//build/config/linux/pkg_config.gni") -- if (use_system_cares) { -- pkg_config("cares") { -- packages = [ "libcares" ] -- } -- } -- if (use_system_nghttp2) { -- pkg_config("nghttp2") { -- packages = [ "libnghttp2" ] -- } -+ } -+ -+ if (is_linux) { -+ import("//build/config/linux/pkg_config.gni") -+ if (use_system_cares) { -+ pkg_config("cares") { -+ packages = [ "libcares" ] -+ } -+ } -+ if (use_system_nghttp2) { -+ pkg_config("nghttp2") { -+ packages = [ "libnghttp2" ] - } - } - } -diff --git a/third_party/electron_node/unofficial.gni.orig b/third_party/electron_node/unofficial.gni -index 6bcc40b..7e383b2 100644 ---- a/third_party/electron_node/unofficial.gni.orig -+++ b/third_party/electron_node/unofficial.gni -@@ -142,7 +142,6 @@ template("node_gn_build") { - public_configs = [ - ":node_external_config", - "deps/googletest:googletest_config", -- ":zstd_include_config" - ] - public_deps = [ - "deps/ada", -@@ -163,8 +162,6 @@ template("node_gn_build") { - "//third_party/zlib", - "//third_party/brotli:dec", - "//third_party/brotli:enc", -- "//third_party/zstd:decompress", -- "//third_party/zstd:headers", - "$node_simdutf_path", - "$node_v8_path:v8_libplatform", - ] diff --git a/backports/electron/electron_use-system-yarn.patch b/backports/electron/electron_use-system-yarn.patch deleted file mode 100644 index eaa8a8c..0000000 --- a/backports/electron/electron_use-system-yarn.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/electron/.yarnrc.yml.orig b/electron/.yarnrc.yml -index ca0a580..a388ff9 100644 ---- a/electron/.yarnrc.yml.orig -+++ b/electron/.yarnrc.yml -@@ -1,12 +1,3 @@ - enableScripts: false - --nmHoistingLimits: workspaces -- - nodeLinker: node-modules -- --npmMinimalAgeGate: 10080 -- --npmPreapprovedPackages: -- - "@electron/*" -- --yarnPath: .yarn/releases/yarn-4.12.0.cjs diff --git a/backports/electron/fc-cache-version.patch b/backports/electron/fc-cache-version.patch deleted file mode 100644 index 7cbd2a8..0000000 --- a/backports/electron/fc-cache-version.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc.orig -+++ ./third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc -@@ -56,7 +56,7 @@ - FcFini(); - - // Check existence of intended fontconfig cache file. -- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-11"; -+ auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-" + FC_CACHE_VERSION; - bool cache_exists = access(cache.c_str(), F_OK) == 0; - return !cache_exists; - } diff --git a/backports/electron/fix-ffmpeg-codec-list.patch b/backports/electron/fix-ffmpeg-codec-list.patch deleted file mode 100644 index de24f66..0000000 --- a/backports/electron/fix-ffmpeg-codec-list.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/media/ffmpeg/ffmpeg_common.cc -+++ b/media/ffmpeg/ffmpeg_common.cc -@@ -1046,8 +1046,8 @@ - - // This should match the configured lists in //third_party/ffmpeg. - static constexpr std::string_view kAllowedAudioCodecs = -- "vorbis,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le," -- "mp3,pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw" EXTRA_CODECS; -+ "vorbis,opus,libopus,flac,pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le," -+ "mp3float,mp3,pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw" EXTRA_CODECS; - #undef EXTRA_CODECS - - return kAllowedAudioCodecs.data(); diff --git a/backports/electron/fix-missing-cstdint-include-musl.patch b/backports/electron/fix-missing-cstdint-include-musl.patch new file mode 100644 index 0000000..00f16af --- /dev/null +++ b/backports/electron/fix-missing-cstdint-include-musl.patch @@ -0,0 +1,13 @@ +Patch-Source: https://github.com/void-linux/void-packages/blob/378db3cf5087877588aebaaa8ca3c9d94dfb54e0/srcpkgs/chromium/patches/fix-missing-cstdint-include-musl.patch +fixed in https://github.com/google/quiche/commit/4d4820f0a959be7fa22285d114a5b5b8676f10fe +-- +--- 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 + ++#include + #include + + #include "common/platform/api/quiche_export.h" diff --git a/backports/electron/fstatat-32bit.patch b/backports/electron/fstatat-32bit.patch deleted file mode 100644 index 1627ffa..0000000 --- a/backports/electron/fstatat-32bit.patch +++ /dev/null @@ -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 diff --git a/backports/electron/generic-sensor-include.patch b/backports/electron/generic-sensor-include.patch deleted file mode 100644 index e8e2563..0000000 --- a/backports/electron/generic-sensor-include.patch +++ /dev/null @@ -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 -+#include - #include - - namespace device { diff --git a/backports/electron/headless-shell-no-license.patch b/backports/electron/headless-shell-no-license.patch deleted file mode 100644 index 6a6027d..0000000 --- a/backports/electron/headless-shell-no-license.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 6f4685cff1ab8c68de98c0731bb8afaf8a05a723 Mon Sep 17 00:00:00 2001 -From: knuxify -Date: Sat, 5 Apr 2025 14:10:37 +0200 -Subject: [PATCH] Do not generate license file for headless-shell build - ---- - headless/BUILD.gn | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/headless/BUILD.gn b/headless/BUILD.gn -index 798bb22..9d83f49 100644 ---- a/headless/BUILD.gn -+++ b/headless/BUILD.gn -@@ -934,10 +934,6 @@ executable("headless_shell") { - - deps = [ ":headless_shell_lib" ] - -- if (proprietary_codecs) { -- deps += [ ":generate_headless_shell_license_file" ] -- } -- - if (!headless_use_embedded_resources) { - data = [ - "$root_out_dir/headless_lib_data.pak", --- -2.49.0 - diff --git a/backports/electron/electron_icon.patch b/backports/electron/icon.patch similarity index 70% rename from backports/electron/electron_icon.patch rename to backports/electron/icon.patch index 101b60a..6a999f1 100644 --- a/backports/electron/electron_icon.patch +++ b/backports/electron/icon.patch @@ -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); diff --git a/backports/electron/import-version.patch b/backports/electron/import-version.patch new file mode 100644 index 0000000..d275038 --- /dev/null +++ b/backports/electron/import-version.patch @@ -0,0 +1,15 @@ +they fixed the import to be glibc conditional, but now nothing is imported so +all the string functions are missing. +-- +--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc ++++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc +@@ -61,8 +61,7 @@ + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if defined(__GLIBC__) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) +-#include ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) + + #include "base/linux_util.h" + #include "base/strings/string_split.h" diff --git a/backports/electron/jsoncpp.patch b/backports/electron/jsoncpp.patch new file mode 100644 index 0000000..c9ea765 --- /dev/null +++ b/backports/electron/jsoncpp.patch @@ -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 +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 +Commit-Queue: Thomas Anderson +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") { diff --git a/backports/electron/libstdc++13.patch b/backports/electron/libstdc++13.patch new file mode 100644 index 0000000..b85df2c --- /dev/null +++ b/backports/electron/libstdc++13.patch @@ -0,0 +1,319 @@ +missing libstdc++13 includes +-- +--- a/third_party/ruy/src/ruy/profiler/instrumentation.h ++++ b/third_party/ruy/src/ruy/profiler/instrumentation.h +@@ -19,6 +19,7 @@ + #ifdef RUY_PROFILER + #include + #include ++#include + #include + #endif + +--- a/third_party/openscreen/src/platform/base/error.h ++++ b/third_party/openscreen/src/platform/base/error.h +@@ -6,6 +6,7 @@ + #define PLATFORM_BASE_ERROR_H_ + + #include ++#include + #include + #include + #include +--- a/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h ++++ b/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +@@ -2389,6 +2389,7 @@ + #undef VMA_IMPLEMENTATION + + #include ++#include + #include + #include + #include +--- a/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h ++++ b/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h +@@ -2389,6 +2389,7 @@ + #undef VMA_IMPLEMENTATION + + #include ++#include + #include + #include + #include +--- a/ui/base/prediction/kalman_filter.h ++++ b/ui/base/prediction/kalman_filter.h +@@ -8,6 +8,8 @@ + #include "base/component_export.h" + #include "ui/gfx/geometry/matrix3_f.h" + ++#include ++ + namespace ui { + + // This Kalman filter is used to predict state in one axles. +--- a/ui/events/types/scroll_types.h ++++ b/ui/events/types/scroll_types.h +@@ -5,6 +5,8 @@ + #ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_ + #define UI_EVENTS_TYPES_SCROLL_TYPES_H_ + ++#include ++ + namespace ui { + + enum class ScrollGranularity : uint8_t { +--- a/third_party/webrtc/rtc_base/system/file_wrapper.h ++++ b/third_party/webrtc/rtc_base/system/file_wrapper.h +@@ -14,6 +14,7 @@ + #include + #include + ++#include + #include + + #include "absl/strings/string_view.h" +--- a/third_party/pdfium/constants/annotation_flags.h ++++ b/third_party/pdfium/constants/annotation_flags.h +@@ -5,6 +5,8 @@ + #ifndef CONSTANTS_ANNOTATION_FLAGS_H_ + #define CONSTANTS_ANNOTATION_FLAGS_H_ + ++#include ++ + namespace pdfium { + namespace annotation_flags { + +--- a/third_party/s2cellid/src/s2/util/math/mathutil.h ++++ b/third_party/s2cellid/src/s2/util/math/mathutil.h +@@ -21,6 +21,7 @@ + #ifndef S2_UTIL_MATH_MATHUTIL_H_ + #define S2_UTIL_MATH_MATHUTIL_H_ + ++#include + #include + + class MathUtil { +--- a/third_party/s2cellid/src/s2/s1angle.h ++++ b/third_party/s2cellid/src/s2/s1angle.h +@@ -24,6 +24,7 @@ + #define S2_S1ANGLE_H_ + + #include ++#include + #include + #include + #include +--- a/third_party/maldoca/src/maldoca/ole/header.h ++++ b/third_party/maldoca/src/maldoca/ole/header.h +@@ -45,6 +45,8 @@ + + #include "absl/strings/string_view.h" + ++#include ++ + namespace maldoca { + + class OLEHeader { +--- a/components/password_manager/core/browser/generation/password_generator.h ++++ b/components/password_manager/core/browser/generation/password_generator.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_ + #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_ + ++#include + #include + + +--- a/base/debug/profiler.h ++++ b/base/debug/profiler.h +@@ -7,6 +7,7 @@ + + #include + ++#include + #include + + #include "base/base_export.h" +--- a/components/dom_distiller/core/url_utils.h ++++ b/components/dom_distiller/core/url_utils.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_DOM_DISTILLER_CORE_URL_UTILS_H_ + #define COMPONENTS_DOM_DISTILLER_CORE_URL_UTILS_H_ + ++#include + #include + + #include "base/strings/string_piece_forward.h" +--- a/components/feature_engagement/internal/event_storage_validator.h ++++ b/components/feature_engagement/internal/event_storage_validator.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_ + #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_ + ++#include + #include + + namespace feature_engagement { +--- a/chrome/test/chromedriver/chrome/web_view_impl.cc ++++ b/chrome/test/chromedriver/chrome/web_view_impl.cc +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + #include + +--- a/cc/trees/target_property.cc ++++ b/cc/trees/target_property.cc +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include ++ + #include "cc/trees/target_property.h" + + #include "ui/gfx/animation/keyframe/target_property.h" +--- a/gpu/config/gpu_feature_info.h ++++ b/gpu/config/gpu_feature_info.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_ + #define GPU_CONFIG_GPU_FEATURE_INFO_H_ + ++#include + #include + #include + +--- a/gpu/config/gpu_driver_bug_workarounds.h ++++ b/gpu/config/gpu_driver_bug_workarounds.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_GPU_DRIVER_BUG_WORKAROUNDS_H_ + #define GPU_CONFIG_GPU_DRIVER_BUG_WORKAROUNDS_H_ + ++#include + #include + + #include "build/build_config.h" +--- a/third_party/blink/public/common/page_state/page_state.h ++++ b/third_party/blink/public/common/page_state/page_state.h +@@ -5,6 +5,7 @@ + #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_H_ + #define THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_H_ + ++#include + #include + #include + +--- a/pdf/document_attachment_info.h ++++ b/pdf/document_attachment_info.h +@@ -5,6 +5,7 @@ + #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_ + #define PDF_DOCUMENT_ATTACHMENT_INFO_H_ + ++#include + #include + + +--- a/components/payments/content/utility/fingerprint_parser.h ++++ b/components/payments/content/utility/fingerprint_parser.h +@@ -7,6 +7,7 @@ + + #include + ++#include + #include + #include + +--- a/media/base/video_transformation.h ++++ b/media/base/video_transformation.h +@@ -5,6 +5,7 @@ + #ifndef MEDIA_BASE_VIDEO_TRANSFORMATION_H_ + #define MEDIA_BASE_VIDEO_TRANSFORMATION_H_ + ++#include + #include + + #include "base/numerics/math_constants.h" +--- a/components/omnibox/browser/on_device_head_model.h ++++ b/components/omnibox/browser/on_device_head_model.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_ + #define COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_ + ++#include + #include + #include + #include +--- a/components/autofill/core/browser/autofill_ablation_study.h ++++ b/components/autofill/core/browser/autofill_ablation_study.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_ + #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_ + ++#include + #include + + class GURL; +--- a/components/autofill/core/browser/strike_databases/strike_database_base.h ++++ b/components/autofill/core/browser/strike_databases/strike_database_base.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_STRIKE_DATABASES_STRIKE_DATABASE_BASE_H_ + #define COMPONENTS_AUTOFILL_CORE_BROWSER_STRIKE_DATABASES_STRIKE_DATABASE_BASE_H_ + ++#include + #include + #include + #include +--- a/chrome/browser/privacy_budget/encountered_surface_tracker.h ++++ b/chrome/browser/privacy_budget/encountered_surface_tracker.h +@@ -5,6 +5,7 @@ + #ifndef CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_ + #define CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_ + ++#include + #include + + #include "base/containers/flat_set.h" +--- a/chrome/browser/resource_coordinator/decision_details.h ++++ b/chrome/browser/resource_coordinator/decision_details.h +@@ -5,6 +5,7 @@ + #ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_DECISION_DETAILS_H_ + #define CHROME_BROWSER_RESOURCE_COORDINATOR_DECISION_DETAILS_H_ + ++#include + #include + #include + +--- a/net/third_party/quiche/src/quiche/quic/core/qpack/qpack_stream_sender_delegate.h ++++ b/net/third_party/quiche/src/quiche/quic/core/qpack/qpack_stream_sender_delegate.h +@@ -8,6 +8,8 @@ + #include "absl/strings/string_view.h" + #include "quiche/quic/platform/api/quic_export.h" + ++#include ++ + namespace quic { + + // This interface writes encoder/decoder data to peer. +--- a/third_party/perfetto/src/trace_processor/sqlite/query_constraints.h ++++ b/third_party/perfetto/src/trace_processor/sqlite/query_constraints.h +@@ -17,6 +17,7 @@ + #ifndef SRC_TRACE_PROCESSOR_SQLITE_QUERY_CONSTRAINTS_H_ + #define SRC_TRACE_PROCESSOR_SQLITE_QUERY_CONSTRAINTS_H_ + ++#include + #include + #include + +--- a/third_party/perfetto/include/perfetto/base/export.h ++++ b/third_party/perfetto/include/perfetto/base/export.h +@@ -17,6 +17,8 @@ + #ifndef INCLUDE_PERFETTO_BASE_EXPORT_H_ + #define INCLUDE_PERFETTO_BASE_EXPORT_H_ + ++#include ++ + #include "perfetto/base/build_config.h" + #include "perfetto/public/abi/export.h" + diff --git a/backports/electron/mman.patch b/backports/electron/mman.patch new file mode 100644 index 0000000..748696c --- /dev/null +++ b/backports/electron/mman.patch @@ -0,0 +1,13 @@ +needed for PKEY_DISABLE_WRITE. these are documented as also being from sys/ +mman.h with GNU_SOURCE, but musl doesn't do that, so these are strictly from +kernel headers +--- a/base/allocator/partition_allocator/partition_alloc_unittest.cc ++++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc +@@ -60,6 +60,7 @@ + #include + #include + #include ++#include + #endif // BUILDFLAG(IS_POSIX) + + #if BUILDFLAG(ENABLE_PARTITION_ALLOC_AS_MALLOC_SUPPORT) && BUILDFLAG(IS_MAC) diff --git a/backports/electron/musl-sandbox.patch b/backports/electron/musl-sandbox.patch index ccd9423..52c3b21 100644 --- a/backports/electron/musl-sandbox.patch +++ b/backports/electron/musl-sandbox.patch @@ -45,7 +45,7 @@ diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ./sandbox/linux/s 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 @@ +@@ -392,6 +392,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { #if defined(__i386__) case __NR_waitpid: #endif @@ -53,7 +53,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 +61,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: diff --git a/backports/electron/musl-v8-monotonic-pthread-cont_timedwait.patch b/backports/electron/musl-v8-monotonic-pthread-cont_timedwait.patch new file mode 100644 index 0000000..3a99ee5 --- /dev/null +++ b/backports/electron/musl-v8-monotonic-pthread-cont_timedwait.patch @@ -0,0 +1,23 @@ +use monotonic clock for pthread_cond_timedwait with musl too, since it supports +it +-- +--- a/v8/src/base/platform/condition-variable.cc ++++ b/v8/src/base/platform/condition-variable.cc +@@ -16,7 +16,7 @@ + + ConditionVariable::ConditionVariable() { + #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ +- (V8_OS_LINUX && V8_LIBC_GLIBC)) ++ V8_OS_LINUX) + // On Free/Net/OpenBSD and Linux with glibc we can change the time + // source for pthread_cond_timedwait() to use the monotonic clock. + pthread_condattr_t attr; +@@ -92,7 +92,7 @@ + &native_handle_, &mutex->native_handle(), &ts); + #else + #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ +- (V8_OS_LINUX && V8_LIBC_GLIBC)) ++ V8_OS_LINUX) + // On Free/Net/OpenBSD and Linux with glibc we can change the time + // source for pthread_cond_timedwait() to use the monotonic clock. + result = clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/backports/electron/net-test-no-vpython.patch b/backports/electron/net-test-no-vpython.patch deleted file mode 100644 index efb2920..0000000 --- a/backports/electron/net-test-no-vpython.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 4b41417068045f11db9e7edead1447e93adb9073 Mon Sep 17 00:00:00 2001 -From: LN Liberda -Date: Sat, 28 Jun 2025 18:13:59 +0200 -Subject: [PATCH] Test net without vendored python - ---- - net/test/python_utils.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/net/test/python_utils.cc b/net/test/python_utils.cc -index 2cdc07dad9948..0b2d42a5bf126 100644 ---- a/net/test/python_utils.cc -+++ b/net/test/python_utils.cc -@@ -47,7 +47,7 @@ bool GetPython3Command(base::CommandLine* python_cmd) { - #if BUILDFLAG(IS_WIN) - python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("vpython3.bat"))); - #else -- python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("vpython3"))); -+ python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("python3"))); - #endif - - #if BUILDFLAG(IS_MAC) diff --git a/backports/electron/net-test-pyws3-py3.12.patch b/backports/electron/net-test-pyws3-py3.12.patch deleted file mode 100644 index cee3e61..0000000 --- a/backports/electron/net-test-pyws3-py3.12.patch +++ /dev/null @@ -1,39 +0,0 @@ -ssl.wrap_socket() was removed in Python 3.12, needed for net_unittests. -Patch-Source: https://github.com/GoogleChromeLabs/pywebsocket3/pull/39 -Modified (changed path) -lnl - -From bc50ae9d451ca705edd6101d987b839e1a09d45e Mon Sep 17 00:00:00 2001 -From: Sven Diederichs <22592421+zaurask@users.noreply.github.com> -Date: Thu, 28 Mar 2024 18:55:28 +0100 -Subject: [PATCH] use ssl.SSLContext.wrap_socket rather than the deprecated - ssl.wrap_socket - ---- - pywebsocket3/websocket_server.py | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py b/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py -index e7485ec..93ad6f1 100644 ---- a/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py -+++ b/third_party/pywebsocket3/src/mod_pywebsocket/websocket_server.py -@@ -157,12 +157,14 @@ class WebSocketServer(socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer): - client_cert_ = ssl.CERT_REQUIRED - else: - client_cert_ = ssl.CERT_NONE -- socket_ = ssl.wrap_socket( -- socket_, -- keyfile=server_options.private_key, -- certfile=server_options.certificate, -- ca_certs=server_options.tls_client_ca, -- cert_reqs=client_cert_) -+ -+ ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS) -+ if server_options.certificate: -+ ssl_context.load_cert_chain(certfile=server_options.certificate, keyfile=server_options.private_key) -+ if server_options.tls_client_ca: -+ ssl_context.load_verify_locations(server_options.tls_client_ca) -+ ssl_context.verify_mode =client_cert_ -+ socket_ = ssl_context.wrap_socket(socket_) - self._sockets.append((socket_, addrinfo)) - - def server_bind(self): diff --git a/backports/electron/no-execinfo.patch b/backports/electron/no-execinfo.patch index 12064ba..79e3327 100644 --- a/backports/electron/no-execinfo.patch +++ b/backports/electron/no-execinfo.patch @@ -37,24 +37,25 @@ 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 @@ @@ -66,3 +67,12 @@ for discussion about this, see https://www.openwall.com/lists/musl/2021/07/16/1 // StackTrace::OutputToStream() is not implemented under uclibc, nor AIX. // See https://crbug.com/706728 +@@ -156,7 +156,7 @@ + + #endif // !defined(__UCLIBC__) && !defined(_AIX) + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) ++#if (BUILDFLAG(IS_POSIX) && defined(__GLIBC__)) && !BUILDFLAG(IS_ANDROID) + #if !BUILDFLAG(IS_IOS) + static char* newArray() { + // Clang warns about the mismatched new[]/delete if they occur in the same diff --git a/backports/electron/no-mallinfo.patch b/backports/electron/no-mallinfo.patch index 1f2d541..90824e8 100644 --- a/backports/electron/no-mallinfo.patch +++ b/backports/electron/no-mallinfo.patch @@ -100,25 +100,25 @@ musl does not implement mallinfo()/mallinfo2() /* Define to 1 if you have the 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/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc ++++ b/base/allocator/partition_allocator/shim/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) +--- a/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc ++++ b/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc +@@ -24,7 +24,7 @@ + #if 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) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) - PA_NOINLINE void FreeForTest(void* data) { + NOINLINE void FreeForTest(void* data) { free(data); diff --git a/backports/electron/no-mte.patch b/backports/electron/no-mte.patch new file mode 100644 index 0000000..2f5cead --- /dev/null +++ b/backports/electron/no-mte.patch @@ -0,0 +1,13 @@ +M115 needs ifuncs for this +-- +--- a/base/allocator/partition_allocator/partition_alloc_config.h ++++ b/base/allocator/partition_allocator/partition_alloc_config.h +@@ -155,7 +155,7 @@ + #define PA_CONFIG_HAS_MEMORY_TAGGING() \ + (defined(ARCH_CPU_ARM64) && defined(__clang__) && \ + !defined(ADDRESS_SANITIZER) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID))) ++ ((BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_ANDROID))) + + #if PA_CONFIG(HAS_MEMORY_TAGGING) + static_assert(sizeof(void*) == 8); diff --git a/backports/electron/partalloc-no-tagging-arm64.patch b/backports/electron/partalloc-no-tagging-arm64.patch deleted file mode 100644 index 422fcf5..0000000 --- a/backports/electron/partalloc-no-tagging-arm64.patch +++ /dev/null @@ -1,26 +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 -@@ -89,8 +89,7 @@ - # TODO(crbug.com/329199197): Clean this up when experiments are complete. - use_large_empty_slot_span_ring = true - --has_memory_tagging = current_cpu == "arm64" && is_clang && !is_asan && -- !is_hwasan && (is_linux || is_android) -+has_memory_tagging = false - - declare_args() { - # Debug configuration. ---- ./base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.orig -+++ ./base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h -@@ -10,7 +10,7 @@ - #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 - diff --git a/backports/electron/pvalloc.patch b/backports/electron/pvalloc.patch deleted file mode 100644 index 145e05b..0000000 --- a/backports/electron/pvalloc.patch +++ /dev/null @@ -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(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({ diff --git a/backports/electron/electron_python-jinja-3.10.patch b/backports/electron/python-jinja-3.10.patch similarity index 100% rename from backports/electron/electron_python-jinja-3.10.patch rename to backports/electron/python-jinja-3.10.patch diff --git a/backports/electron/remove-broken-patch.patch b/backports/electron/remove-broken-patch.patch new file mode 100644 index 0000000..cf57c12 --- /dev/null +++ b/backports/electron/remove-broken-patch.patch @@ -0,0 +1,10 @@ +--- a/third_party/node/update_npm_deps ++++ b/third_party/node/update_npm_deps +@@ -20,7 +20,6 @@ + + patch -d node_modules/@types/d3/ -p1 < chromium_d3_types_index.patch + patch -d node_modules/html-minifier/ -p1 < html_minifier.patch +-patch -p1 < typescript.patch + + rsync -c --delete -r -q --include-from="npm_include.txt" --exclude-from="npm_exclude.txt" \ + --prune-empty-dirs "node_modules/" "node_modules_filtered/" diff --git a/backports/electron/vector-const.patch b/backports/electron/vector-const.patch new file mode 100644 index 0000000..cb65e12 --- /dev/null +++ b/backports/electron/vector-const.patch @@ -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& argv, +- const std::vector additional_data, ++ const std::vector additional_data, + SocketReader* reader); + + private: +@@ -664,7 +664,7 @@ + void ProcessSingleton::LinuxWatcher::HandleMessage( + const std::string& current_dir, + const std::vector& argv, +- const std::vector additional_data, ++ const std::vector additional_data, + SocketReader* reader) { + DCHECK(ui_task_runner_->BelongsToCurrentThread()); + DCHECK(reader); +@@ -754,7 +754,7 @@ + base::StringToSizeT(tokens[0], &num_args); + std::vector command_line(tokens.begin() + 1, tokens.begin() + 1 + num_args); + +- std::vector additional_data; ++ std::vector 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(remaining_args.c_str()); +- additional_data = std::vector( ++ additional_data = std::vector( + 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 additional_data)>; ++ const std::vector 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* parsed_additional_data) { ++ std::vector* 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(additional_data.c_str()); +- *parsed_additional_data = std::vector(additional_data_bytes, ++ *parsed_additional_data = std::vector(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 additional_data; ++ std::vector 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 additional_data)>& callback, ++ const std::vector additional_data)>& callback, + const base::CommandLine& cmd, + const base::FilePath& cwd, +- const std::vector additional_data) { ++ const std::vector 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 additional_data) { ++ const std::vector 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 additional_data); ++ const std::vector additional_data); + bool HasSingleInstanceLock() const; + bool RequestSingleInstanceLock(gin::Arguments* args); + void ReleaseSingleInstanceLock(); diff --git a/backports/electron/electron_webpack-hash.patch b/backports/electron/webpack-hash.patch similarity index 100% rename from backports/electron/electron_webpack-hash.patch rename to backports/electron/webpack-hash.patch diff --git a/backports/element-desktop/APKBUILD b/backports/element-desktop/APKBUILD deleted file mode 100644 index c5d8fd7..0000000 --- a/backports/element-desktop/APKBUILD +++ /dev/null @@ -1,172 +0,0 @@ -# Contributor: lauren n. liberda -maintainer="lauren n. liberda " -pkgname=element-desktop -pkgver=1.12.3 -pkgrel=1 -pkgdesc="Secure and independent communication, connected via Matrix" -url="https://element.io/" -arch="aarch64 x86_64" # same as electron -license="GPL-3.0-only" -_electronver=39 -depends=" - electron~$_electronver - font-inconsolata - font-inter - font-nunito - font-opensans - font-twemoji - " -makedepends=" - cargo - electron-dev~$_electronver - electron-tasje - jq - libsecret-dev - nodejs - npm - python3 - py3-setuptools - sqlcipher-dev - swc - yarn - " -source=" - https://github.com/vector-im/element-desktop/archive/refs/tags/v$pkgver/element-desktop-$pkgver.tar.gz - https://github.com/vector-im/element-web/archive/refs/tags/v$pkgver/element-web-$pkgver.tar.gz - - add-alpine-targets.patch - use-system-headers.patch - tasje-fixes.patch - no-source-maps.patch.web - use-system-fonts.patch.web - - element-desktop - " -options="net !check" # broken -# Avoid conflicting providers -sonameprefix="$pkgname:" - -# secfixes: -# 1.11.30-r0: -# - CVE-2023-30609 -# 1.11.26-r0: -# - CVE-2023-28103 -# - CVE-2023-28427 -# 1.11.7-r0: -# - CVE-2022-39249 -# - CVE-2022-39250 -# - CVE-2022-39251 -# - CVE-2022-39236 -# 1.11.4-r0: -# - CVE-2022-36059 -# - CVE-2022-36060 - -# used by buildscripts (at least web's webpack) -export VERSION=$pkgver - -export CARGO_PROFILE_RELEASE_OPT_LEVEL=2 -export CARGO_PROFILE_RELEASE_STRIP="symbols" -export NODE_OPTIONS="--openssl-legacy-provider" - -prepare() { - default_prepare - - msg "Applying more patches" - for x in $source; do - case "$x" in - *.patch.web) - msg "$x" - patch -p1 -i "$srcdir"/$x -d "$srcdir"/element-web-$pkgver - ;; - esac - done - - rm -rf res/fonts - - ( - cd "$srcdir"/element-web-$pkgver - - msg "Fetch element-web dependencies" - yarn install --frozen-lockfile --ignore-scripts --ignore-engines - jq '.show_labs_settings = true' < config.sample.json > config.json - ) - - ln -s "$srcdir"/element-web-$pkgver/webapp webapp - - msg "Fetch element-desktop dependencies" - yarn install --frozen-lockfile --ignore-scripts - patch -p1 -i patches/@types+auto-launch+5.0.5.patch -} - -build() { - ( - cd "$srcdir"/element-web-$pkgver - - msg "Build element-web" - NODE_ENV=production yarn build - ) - - msg "Build element-desktop" - - yarn asar-webapp - - # add "optional" native dependencies - # hak stands for hack - yarn run hak --target "$(uname -m)-alpine-linux-musl" - - yarn build:ts - - yarn build:res - - # we need it as js to be of any use for tasje. - # fails with `yarn tsc`. https://github.com/electron-userland/electron-builder/issues/7961 - swc compile electron-builder.ts --out-file electron-builder.mjs - - yarn install --frozen-lockfile --ignore-scripts --production - - npm rebuild keytar-forked --nodedir=/usr/include/electron/node_headers --build-from-source - find node_modules/keytar-forked/build/ -type f \ - \! -path node_modules/keytar-forked/build/Release/keytar.node \ - -delete - # stripping in build because it gets into asar - strip node_modules/keytar-forked/build/Release/keytar.node - - tasje -c electron-builder.mjs pack -} - -check() { - ( - cd "$srcdir"/element-web-$pkgver - - yarn test - ) -} - -package() { - local resources="dist/resources" - - install -Dm644 $resources/app.asar "$pkgdir"/usr/lib/element-desktop/app.asar - install -Dm644 webapp.asar "$pkgdir"/usr/lib/element-desktop/webapp.asar - - cp -r $resources/app.asar.unpacked "$pkgdir"/usr/lib/element-desktop/app.asar.unpacked - - install -Dm644 $resources/build/icon.png "$pkgdir"/usr/lib/element-desktop/build/icon.png - - install -Dm755 "$srcdir"/$pkgname "$pkgdir"/usr/bin/$pkgname - - install -Dm644 dist/$pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop - while read -r size; do - install -Dm644 dist/icons/$size.png "$pkgdir"/usr/share/icons/hicolor/$size/apps/$pkgname.png - done < dist/icons/size-list -} - -sha512sums=" -f302907165a35f4a4f069f5aec6bc28edeba3d09c75f483c818e3930ceb4e838e5bb91ad9d42019a11a661d6e656da3c1ff25507cbb281c69183aac7d499e882 element-desktop-1.12.3.tar.gz -b845ff71ca39d7ae4dca9bb55e821bfdf911b12de5d012ba55d598f3287046fb2b525bce608925a9fa8fa7d39a4ceed9b4213d5d1c1d0c9e6b9b72154c9a35a5 element-web-1.12.3.tar.gz -4747893ed3e43d3074e9afe1cdd668a6be0de073d439205fe8c38c5e0f4091cc76e3cd15d98818bea5139add29501d8d07e83c58e9da230a4ce5bb538d388f80 add-alpine-targets.patch -755b17f7b828eb6920c06a6950ad4e14c32c99d22e9c05fcef7a081b5d2034adb03db3958aa5209c99fb7201f4d888c2383fc9864c5e743dd33f8b5c4925acd7 use-system-headers.patch -a5d90dd1ec7aec0dc18b73eb3a6fd51ac1223e381c492d24e7dc0fd2ade955ac727cebbaff6ffa27c7e18d9acf712c709de3f886ee2ddf87ab3b028d3eb461c6 tasje-fixes.patch -ec635fde026f7fce8e8cc57960b5b9dcec4418416d4867ed47711422d48f068bb58a3c9ceb7715efc9c177beca3788da6b0babc9b689ea8c0724a0395f2b85f8 no-source-maps.patch.web -aaf46476bac403aa5204aa265fcf0654fad4c149fd74d0ec4273c051a5549943384cae3cdd62c5b78fdedfed55c11ecceb898b886e44165cbe7e30953a095cf9 use-system-fonts.patch.web -afc588311dc3b566a754e3e7fe6b37b99a06d47b8bbce0ed9acca8ef308fdab0bd1d41b406199e5cbdd86bdce695ff847cd8668857a235cbdc292ad8b899c063 element-desktop -" diff --git a/backports/element-desktop/add-alpine-targets.patch b/backports/element-desktop/add-alpine-targets.patch deleted file mode 100644 index 87e1148..0000000 --- a/backports/element-desktop/add-alpine-targets.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- a/scripts/hak/target.ts -+++ b/scripts/hak/target.ts -@@ -29,8 +29,10 @@ - | "i686-unknown-linux-gnu" - | "x86_64-unknown-linux-musl" - | "x86_64-unknown-linux-gnu" -+ | "x86_64-alpine-linux-musl" - | "aarch64-unknown-linux-musl" - | "aarch64-unknown-linux-gnu" -+ | "aarch64-alpine-linux-musl" - | "powerpc64le-unknown-linux-musl" - | "powerpc64le-unknown-linux-gnu"; - -@@ -112,6 +114,13 @@ - libC: MUSL, - }; - -+const x8664AlpineLinuxMusl: LinuxTarget = { -+ id: "x86_64-alpine-linux-musl", -+ platform: "linux", -+ arch: "x64", -+ libC: MUSL, -+}; -+ - const i686UnknownLinuxGnu: LinuxTarget = { - id: "i686-unknown-linux-gnu", - platform: "linux", -@@ -140,6 +149,13 @@ - libC: MUSL, - }; - -+const aarch64AlpineLinuxMusl: LinuxTarget = { -+ id: "aarch64-alpine-linux-musl", -+ platform: "linux", -+ arch: "arm64", -+ libC: MUSL, -+}; -+ - const powerpc64leUnknownLinuxGnu: LinuxTarget = { - id: "powerpc64le-unknown-linux-gnu", - platform: "linux", -@@ -167,8 +183,10 @@ - "i686-unknown-linux-gnu": i686UnknownLinuxGnu, - "x86_64-unknown-linux-musl": x8664UnknownLinuxMusl, - "x86_64-unknown-linux-gnu": x8664UnknownLinuxGnu, -+ "x86_64-alpine-linux-musl": x8664AlpineLinuxMusl, - "aarch64-unknown-linux-musl": aarch64UnknownLinuxMusl, - "aarch64-unknown-linux-gnu": aarch64UnknownLinuxGnu, -+ "aarch64-alpine-linux-musl": aarch64AlpineLinuxMusl, - "powerpc64le-unknown-linux-musl": powerpc64leUnknownLinuxMusl, - "powerpc64le-unknown-linux-gnu": powerpc64leUnknownLinuxGnu, - }; diff --git a/backports/element-desktop/element-desktop b/backports/element-desktop/element-desktop deleted file mode 100755 index de3c5b2..0000000 --- a/backports/element-desktop/element-desktop +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec electron /usr/lib/element-desktop/app.asar "$@" diff --git a/backports/element-desktop/no-source-maps.patch.web b/backports/element-desktop/no-source-maps.patch.web deleted file mode 100644 index 86b3bac..0000000 --- a/backports/element-desktop/no-source-maps.patch.web +++ /dev/null @@ -1,18 +0,0 @@ ---- ./webpack.config.js.orig -+++ ./webpack.config.js -@@ -102,15 +102,6 @@ - } - - const development = {}; -- if (devMode) { -- // Embedded source maps for dev builds, can't use eval-source-map due to CSP -- development["devtool"] = "inline-source-map"; -- } else { -- // High quality source maps in separate .map files which include the source. This doesn't bulk up the .js -- // payload file size, which is nice for performance but also necessary to get the bundle to a small enough -- // size that sentry will accept the upload. -- development["devtool"] = "source-map"; -- } - - // Resolve the directories for the js-sdk for later use. We resolve these early, so we - // don't have to call them over and over. We also resolve to the package.json instead of the src diff --git a/backports/element-desktop/tasje-fixes.patch b/backports/element-desktop/tasje-fixes.patch deleted file mode 100644 index 0e026c5..0000000 --- a/backports/element-desktop/tasje-fixes.patch +++ /dev/null @@ -1,33 +0,0 @@ -directories in .hak/hakModules are already symlinked inside node_modules, -and as such are already being copied by default. this makes tasje fail with: -``` -thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: -FileAlreadyWritten("/node_modules/keytar/package.json")', src/main.rs:200:18 -``` - -console.log interferes with tasje, which reads config from node stdout - ---- ./electron-builder.ts.orig -+++ ./electron-builder.ts -@@ -72,10 +72,6 @@ - console.warn(`No VARIANT_PATH specified, using default variant configuration '${DEFAULT_VARIANT}':`); - } - --for (const key in variant) { -- console.log(`${key}: ${variant[key]}`); --} -- - interface Configuration extends BaseConfiguration { - extraMetadata: Partial> & ExtraMetadata; - linux: BaseConfiguration["linux"]; -@@ -112,10 +108,6 @@ - }, - files: [ - "package.json", -- { -- from: ".hak/hakModules", -- to: "node_modules", -- }, - "lib/**", - ], - extraResources: ["build/icon.*", "webapp.asar"], diff --git a/backports/element-desktop/use-system-fonts.patch.web b/backports/element-desktop/use-system-fonts.patch.web deleted file mode 100644 index 855fdea..0000000 --- a/backports/element-desktop/use-system-fonts.patch.web +++ /dev/null @@ -1,79 +0,0 @@ ---- a/src/vector/jitsi/index.pcss -+++ b/src/vector/jitsi/index.pcss -@@ -14,7 +14,7 @@ - font-family: "Nunito"; - font-style: normal; - font-weight: 400; -- src: url("$(res)/fonts/Nunito/Nunito-Regular.ttf") format("truetype"); -+ src: local("Nunito Regular"); - } - - $dark-fg: #edf3ff; ---- a/res/themes/light/css/_fonts.pcss -+++ b/res/themes/light/css/_fonts.pcss -@@ -5,16 +5,16 @@ - @font-face { - font-family: "Twemoji"; - font-weight: 400; -- src: url("$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2") format("woff2"); -+ src: local("Twemoji"); - } - /* For at least Chrome on Windows 10, we have to explictly add extra weights for the emoji to appear in bold messages, etc. */ - @font-face { - font-family: "Twemoji"; - font-weight: 600; -- src: url("$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2") format("woff2"); -+ src: local("Twemoji"); - } - @font-face { - font-family: "Twemoji"; - font-weight: 700; -- src: url("$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2") format("woff2"); -+ src: local("Twemoji"); - } ---- a/res/themes/legacy-light/css/_fonts.pcss -+++ b/res/themes/legacy-light/css/_fonts.pcss -@@ -23,17 +23,17 @@ - font-family: "Nunito"; - font-style: normal; - font-weight: 400; -- src: url("$(res)/fonts/Nunito/Nunito-Regular.ttf") format("truetype"); -+ src: local("Nunito Regular"); - } - @font-face { - font-family: "Nunito"; - font-style: normal; - font-weight: 600; -- src: url("$(res)/fonts/Nunito/Nunito-SemiBold.ttf") format("truetype"); -+ src: local("Nunito SemiBold"); - } - @font-face { - font-family: "Nunito"; - font-style: normal; - font-weight: 700; -- src: url("$(res)/fonts/Nunito/Nunito-Bold.ttf") format("truetype"); -+ src: local("Nunito Bold"); - } ---- ./src/theme.ts.orig -+++ ./src/theme.ts -@@ -7,20 +7,6 @@ - Please see LICENSE files in the repository root for full details. - */ - --import "@fontsource/inter/400.css"; --import "@fontsource/inter/400-italic.css"; --import "@fontsource/inter/500.css"; --import "@fontsource/inter/500-italic.css"; --import "@fontsource/inter/600.css"; --import "@fontsource/inter/600-italic.css"; --import "@fontsource/inter/700.css"; --import "@fontsource/inter/700-italic.css"; -- --import "@fontsource/inconsolata/latin-ext-400.css"; --import "@fontsource/inconsolata/latin-400.css"; --import "@fontsource/inconsolata/latin-ext-700.css"; --import "@fontsource/inconsolata/latin-700.css"; -- - import { logger } from "matrix-js-sdk/src/logger"; - - import { _t } from "./languageHandler"; diff --git a/backports/element-desktop/use-system-headers.patch b/backports/element-desktop/use-system-headers.patch deleted file mode 100644 index 6ea957b..0000000 --- a/backports/element-desktop/use-system-headers.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/scripts/hak/hakEnv.ts -+++ b/scripts/hak/hakEnv.ts -@@ -101,11 +101,10 @@ - ...process.env, - npm_config_arch: this.target.arch, - npm_config_target_arch: this.target.arch, -- npm_config_disturl: "https://electronjs.org/headers", -+ npm_config_nodedir: "/usr/include/electron/node_headers", - npm_config_runtime: this.runtime, - npm_config_target: this.runtimeVersion, - npm_config_build_from_source: "true", -- npm_config_devdir: path.join(os.homedir(), ".electron-gyp"), - }; - } - diff --git a/backports/freecad/APKBUILD b/backports/freecad/APKBUILD new file mode 100644 index 0000000..279a09b --- /dev/null +++ b/backports/freecad/APKBUILD @@ -0,0 +1,96 @@ +# Contributor: Aiden Grossman +# Maintainer: Aiden Grossman +pkgname=freecad +pkgver=0.21.0 +pkgrel=0 +pkgdesc="Free and open source 3D parametric modeler" +url="https://freecadweb.org/" +license="LGPL-2.0-or-later" +arch="x86_64" # dependency OpenCascade is only x86_64 +depends=" + graphviz + hdf5 + opencascade + py3-matplotlib + py3-numpy + py3-pivy + py3-ply + py3-pyside2 + py3-six + py3-yaml + python3 + " +makedepends=" + boost-dev + cmake + coin-dev + doxygen + eigen-dev + freeimage-dev + glu-dev + hdf5-dev + libmedc-dev + libshiboken2-dev + onetbb-dev + opencascade-dev + py3-pyside2-dev + python3-dev + shiboken2 + qt5-qtsvg-dev + qt5-qtwebengine-dev + qt5-qtxmlpatterns-dev + samurai + swig + vtk-dev + xerces-c-dev + " +options="!check" # Failing test units upstream as well +checkdepends="xvfb-run mesa mesa-dri-gallium font-opensans" +source="https://github.com/FreeCAD/FreeCAD/archive/$pkgver/freecad-$pkgver.tar.gz + $pkgname-cstdint.patch::https://github.com/FreeCAD/FreeCAD/commit/f8f02f089537497a1bf46bc1057f01659b6636c1.patch + no-execinfo.patch + " +builddir="$srcdir/FreeCAD-$pkgver" + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="$CFLAGS -fPIC -w" \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS -fPIC -w" \ + -DCMAKE_INSTALL_PREFIX=/usr/lib/freecad \ + -DCMAKE_INSTALL_DATADIR=/usr/share/freecad \ + -DCMAKE_INSTALL_DATAROOTDIR=/usr/share \ + -DCMAKE_INSTALL_DOCDIR=/usr/share/freecad/doc \ + -DBUILD_ENABLE_CXX_STD=C++17 \ + -DBUILD_QT5=ON \ + -DFREECAD_USE_EXTERNAL_PIVY=ON \ + -DFREECAD_USE_OCC_VARIANT="Official Version" \ + -DFREECAD_USE_QT_FILEDIALOG=ON \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 + cmake --build build +} + +check() { + DESTDIR=test_install cmake --install build + mkdir -p test_install/usr/bin + ln -s ../lib/freecad/bin/FreeCAD test_install/usr/bin/FreeCAD + ln -s ../lib/freecad/bin/FreeCADCmd test_install/usr/bin/FreeCADCmd + LD_LIBRARY_PATH="$PWD"/test_install/usr/lib/freecad/lib \ + xvfb-run "$PWD"/test_install/usr/bin/FreeCAD -t 0 +} + +package() { + DESTDIR="$pkgdir" cmake --install build + + # FreeCAD does not initialize correctly when binaries + # are located under /usr/bin; thus, symlinks are necessary. + install -d "$pkgdir"/usr/bin + ln -s /usr/lib/freecad/bin/FreeCAD "$pkgdir"/usr/bin/FreeCAD + ln -s /usr/lib/freecad/bin/FreeCADCmd "$pkgdir"/usr/bin/FreeCADCmd +} + +sha512sums=" +f5b4428217d9abd18aed1dcd8a5c77132b90173d07627ff9164919a87f04d242f9d616e9655751ec06ff57fc3e242090cc4d7e1d7045fdae9bc2e281e7855281 freecad-0.21.0.tar.gz +27dffdbb124096e7fcbec3589cdcfc587ea09bf039c1c1108edb68a9a4fd1278f66a39642636f98b8759a44da92485fd748f8b3d615b0625bc37fc717130e237 freecad-cstdint.patch +73aaba7015dce7048eb7d2456131b5b5ba4673cc980503331987be54d99daed5f61db015ca33d7d2ef0f02bd3192da8ce122c103c3b93f9959927deb4f0b933e no-execinfo.patch +" diff --git a/backports/freecad/no-execinfo.patch b/backports/freecad/no-execinfo.patch new file mode 100644 index 0000000..3e1c39c --- /dev/null +++ b/backports/freecad/no-execinfo.patch @@ -0,0 +1,46 @@ +diff --git a/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp b/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp +index 23c5083..54c7ecf 100644 +--- a/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp ++++ b/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp +@@ -29,7 +29,6 @@ + #ifndef WIN32 + #include + #include +-#include + #endif + + +@@ -109,20 +108,7 @@ namespace Kernel_Utils + #ifndef WIN32 + void print_traceback() + { +- void *array[50]; +- size_t size; +- char **strings; +- size_t i; +- +- size = backtrace (array, 40); +- strings = backtrace_symbols (array, size); +- +- for (i = 0; i < size; i++) +- { +- std::cerr << strings[i] << std::endl; +- } +- +- free (strings); ++ std::cerr << "there is no backtrace." << std::endl; + } + #else + #if (_MSC_VER >= 1400) // Visual Studio 2005 +diff --git a/src/App/Application.cpp b/src/App/Application.cpp +index 3081623..ba3525f 100644 +--- a/src/App/Application.cpp ++++ b/src/App/Application.cpp +@@ -1732,7 +1732,6 @@ static void freecadNewHandler () + #endif + + #if defined(FC_OS_LINUX) +-#include + #include + #include + diff --git a/backports/freecad/tests.patch b/backports/freecad/tests.patch new file mode 100644 index 0000000..4b63a20 --- /dev/null +++ b/backports/freecad/tests.patch @@ -0,0 +1,33 @@ +--- ./src/Mod/Mesh/App/MeshTestsApp.py.orig ++++ ./src/Mod/Mesh/App/MeshTestsApp.py +@@ -423,30 +423,6 @@ + self.planarMesh = [] + FreeCAD.newDocument("MeshTest") + +- def testRayPick(self): +- if not FreeCAD.GuiUp: +- return +- self.planarMesh.append( [-16.097176,-29.891157,15.987688] ) +- self.planarMesh.append( [-16.176304,-29.859991,15.947966] ) +- self.planarMesh.append( [-16.071451,-29.900553,15.912505] ) +- self.planarMesh.append( [-16.092241,-29.893408,16.020439] ) +- self.planarMesh.append( [-16.007210,-29.926180,15.967641] ) +- self.planarMesh.append( [-16.064457,-29.904951,16.090832] ) +- planarMeshObject = Mesh.Mesh(self.planarMesh) +- +- from pivy import coin; import FreeCADGui +- Mesh.show(planarMeshObject) +- view=FreeCADGui.ActiveDocument.ActiveView.getViewer() +- rp=coin.SoRayPickAction(view.getSoRenderManager().getViewportRegion()) +- rp.setRay(coin.SbVec3f(-16.05,16.0,16.0),coin.SbVec3f(0,-1,0)) +- rp.apply(view.getSoRenderManager().getSceneGraph()) +- pp=rp.getPickedPoint() +- self.assertTrue(pp != None) +- det=pp.getDetail() +- self.assertTrue(det.getTypeId() == coin.SoFaceDetail.getClassTypeId()) +- det=coin.cast(det, det.getTypeId().getName().getString()) +- self.assertTrue(det.getFaceIndex() == 1) +- + def testPrimitiveCount(self): + if not FreeCAD.GuiUp: + return diff --git a/backports/freetube/APKBUILD b/backports/freetube/APKBUILD deleted file mode 100644 index 3ab6bf8..0000000 --- a/backports/freetube/APKBUILD +++ /dev/null @@ -1,56 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=freetube -pkgver=0.23.12 -pkgrel=1 -pkgdesc="An open source desktop YouTube player built with privacy in mind." -arch="x86_64 aarch64" # blocked by electron -license="AGPL-3.0-only" -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=" -e19c7e8de0c6c5bbddcd3da73cd1907cae7157e8f44f550c4a34965b3b4f3c1a180c111a8c497d74a556d6d8e74e9fdd1ed6e064d4fc899f80712a1f187395ae freetube-0.23.12.tar.gz -2ce2effc794bb663789cefe968b5899122127983dbfa1b240aa33a2be383720b18204e6d01b4a550df72956f02b6636b79c93a58f470a970b09b770f5b8f2fc4 freetube.sh -d27cb896b65a7e8d52ffe86e5f74eed72b6cf976b28e1a13012d34c7eceba5ff6f20298017738dfa93c0336ffa52b8ee4da7e06b02747062898db7e678819526 tasje-dotdash.patch -" diff --git a/backports/freetube/freetube.sh b/backports/freetube/freetube.sh deleted file mode 100644 index 5d2bb77..0000000 --- a/backports/freetube/freetube.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec electron /usr/lib/freetube/app.asar "$@" diff --git a/backports/freetube/tasje-dotdash.patch b/backports/freetube/tasje-dotdash.patch deleted file mode 100644 index 9f2c2e0..0000000 --- a/backports/freetube/tasje-dotdash.patch +++ /dev/null @@ -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/**/*', - ], diff --git a/backports/libmedc/APKBUILD b/backports/libmedc/APKBUILD new file mode 100644 index 0000000..9df22d2 --- /dev/null +++ b/backports/libmedc/APKBUILD @@ -0,0 +1,43 @@ +# Contributor: Aiden Grossman +# Maintainer: Aiden Grossman +pkgname=libmedc +pkgver=4.1.1 +pkgrel=0 +pkgdesc="Open source library for numerical simulation" +url="https://www.salome-platform.org/" +arch="all" +license="GPL-3.0-or-later" +makedepends="cmake hdf5-dev swig python3-dev samurai" +options="!check" #test suite is nonfunctional with python bindings +subpackages="$pkgname-dev $pkgname-doc $pkgname-python-pyc $pkgname-python:_py" +source=" + https://ftp.kaist.ac.kr/macports/distfiles/libmed/med-$pkgver.tar.gz + hdf5.patch + cmake-config-dir.patch + " +builddir="$srcdir/med-${pkgver}_SRC" + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DMEDFILE_BUILD_TESTS=OFF \ + -DMEDFILE_BUILD_PYTHON=ON + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build +} + +_py() { + pkgdesc="Python bindings for libmedc" + depends="python3" + amove usr/lib/python3* +} + +sha512sums=" +8917e7ecfe30e1259b0927c8e1c3d6efd86ed2386813f6d90217bd95589199478e587f0815031ab65cacf7901a30b77a6307414f9073caffe6e7f013e710d768 med-4.1.1.tar.gz +68d9291e73a68d674081314028c0fce7bbd4a7b78b93b7e5078117ce62f2d07318bc33ec95091ce677148ec3926c1ce653d0760c34e74b29257a7be59210f040 hdf5.patch +8d0f58cd67d205fbacaff0e6da76e2ee5473457b478ede13a551ebe5853c0716c7406b74c3792e1ace33a34d352fccca8dd2940f063a7c060a12529d060a991a cmake-config-dir.patch +" diff --git a/backports/libmedc/cmake-config-dir.patch b/backports/libmedc/cmake-config-dir.patch new file mode 100644 index 0000000..e1f43a4 --- /dev/null +++ b/backports/libmedc/cmake-config-dir.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -101,7 +101,7 @@ + IF(WIN32 AND NOT CYGWIN) + SET(INSTALL_CMAKE_CONFIG_DIR cmake) + ELSE() +- SET(INSTALL_CMAKE_CONFIG_DIR share/cmake/medfile-${MED_STR_VERSION}) ++ SET(INSTALL_CMAKE_CONFIG_DIR lib${LIB_SUFFIX}/cmake/medfile-${MED_STR_VERSION}) + ENDIF() + SET(INSTALL_INCLUDE_DIR include) + diff --git a/backports/libmedc/hdf5.patch b/backports/libmedc/hdf5.patch new file mode 100644 index 0000000..bc4764b --- /dev/null +++ b/backports/libmedc/hdf5.patch @@ -0,0 +1,94 @@ +Originally from https://gist.github.com/jedbrown/527ef81ff59a0dccf833da40fdd15a47 +diff -rupN med-4.1.0/config/cmake_files/medMacros.cmake med-4.1.0-new/config/cmake_files/medMacros.cmake +--- med-4.1.0/config/cmake_files/medMacros.cmake 2021-12-03 09:35:30.675827163 +0100 ++++ med-4.1.0-new/config/cmake_files/medMacros.cmake 2021-12-03 09:32:31.894994147 +0100 +@@ -447,7 +447,7 @@ MACRO(MED_FIND_HDF5) + ## + ## Requires 1.10.x version + ## +- IF (NOT HDF_VERSION_MAJOR_REF EQUAL 1 OR NOT HDF_VERSION_MINOR_REF EQUAL 10 OR NOT HDF_VERSION_RELEASE_REF GREATER 1) ++ IF (HDF5_VERSION VERSION_LESS 1.10.2) + MESSAGE(FATAL_ERROR "HDF5 version is ${HDF_VERSION_REF}. Only versions >= 1.10.2 are supported.") + ENDIF() + ## +diff -rupN med-4.1.0/src/ci/MEDfileCompatibility.c med-4.1.0-new/src/ci/MEDfileCompatibility.c +--- med-4.1.0/src/ci/MEDfileCompatibility.c 2021-12-03 09:35:30.676827162 +0100 ++++ med-4.1.0-new/src/ci/MEDfileCompatibility.c 2021-12-03 09:33:26.292942149 +0100 +@@ -71,7 +71,7 @@ MEDfileCompatibility(const char* const f + _hversionMMR=10000*_hmajeur+100*_hmineur+_hrelease; + /* ISCRUTE(_hversionMMR); */ + /* ISCRUTE(HDF_VERSION_NUM_REF); */ +- if ( (_hversionMMR >= HDF_VERSION_NUM_REF) && (_hmineur == HDF_VERSION_MINOR_REF) ) *hdfok = MED_TRUE; ++ if (_hversionMMR >= HDF_VERSION_NUM_REF) *hdfok = MED_TRUE; + + /* TODO : Vérifier si la version mineure HDF du fichier est supérieure + à la version mineure de la bibliothèque HDF utilisée : +@@ -113,7 +113,7 @@ MEDfileCompatibility(const char* const f + #if MED_NUM_MAJEUR != 4 + #error "Don't forget to update the test version here when you change the major version of the library !" + #endif +-#if H5_VERS_MINOR > 10 ++#if H5_VERS_MINOR > 14 + #error "Don't forget to check the compatibility version of the library, depending on the internal hdf model choice !" + #error "Cf. _MEDfileCreate ..." + #endif +diff -rupN med-4.1.0/src/hdfi/_MEDfileCreate.c med-4.1.0-new/src/hdfi/_MEDfileCreate.c +--- med-4.1.0/src/hdfi/_MEDfileCreate.c 2021-12-03 09:35:30.677827161 +0100 ++++ med-4.1.0-new/src/hdfi/_MEDfileCreate.c 2021-12-03 09:32:31.894994147 +0100 +@@ -159,7 +159,7 @@ med_idt _MEDfileCreate(const char * cons + * En HDF5-1.10.0p1 cela n'a aucun effet ! + * Un test autoconf permet de fixer un intervalle de version HDF à MED. + */ +-#if H5_VERS_MINOR > 10 ++#if H5_VERS_MINOR > 14 + #error "Don't forget to change the compatibility version of the library !" + #endif + +diff -rupN med-4.1.0/src/hdfi/_MEDfileOpen.c med-4.1.0-new/src/hdfi/_MEDfileOpen.c +--- med-4.1.0/src/hdfi/_MEDfileOpen.c 2021-12-03 09:35:30.677827161 +0100 ++++ med-4.1.0-new/src/hdfi/_MEDfileOpen.c 2021-12-03 09:32:31.894994147 +0100 +@@ -72,7 +72,7 @@ med_idt _MEDfileOpen(const char * const + + • The creation order tracking property, H5P_CRT_ORDER_TRACKED, has been set in the group creation property list (see H5Pset_link_creation_order). + */ +-#if H5_VERS_MINOR > 10 ++#if H5_VERS_MINOR > 14 + #error "Don't forget to change the compatibility version of the library !" + #endif + /* L'avantage de bloquer le modèle interne HDF5 +diff -rupN med-4.1.0/src/hdfi/_MEDmemFileOpen.c med-4.1.0-new/src/hdfi/_MEDmemFileOpen.c +--- med-4.1.0/src/hdfi/_MEDmemFileOpen.c 2021-12-03 09:35:30.678827160 +0100 ++++ med-4.1.0-new/src/hdfi/_MEDmemFileOpen.c 2021-12-03 09:32:31.894994147 +0100 +@@ -434,7 +434,7 @@ med_idt _MEDmemFileOpen(const char * con + goto ERROR; + } + +-#if H5_VERS_MINOR > 10 ++#if H5_VERS_MINOR > 14 + #error "Don't forget to change the compatibility version of the library !" + #endif + if ( H5Pset_libver_bounds( _fapl, H5F_LIBVER_18, H5F_LIBVER_18) ) { +diff -rupN med-4.1.0/src/hdfi/_MEDparFileCreate.c med-4.1.0-new/src/hdfi/_MEDparFileCreate.c +--- med-4.1.0/src/hdfi/_MEDparFileCreate.c 2021-12-03 09:35:30.678827160 +0100 ++++ med-4.1.0-new/src/hdfi/_MEDparFileCreate.c 2021-12-03 09:32:31.894994147 +0100 +@@ -64,7 +64,7 @@ med_idt _MEDparFileCreate(const char * c + * En HDF5-1.10.0p1 cela n'a aucun effet ! + * Un test autoconf permet de fixer un intervalle de version HDF à MED. + */ +-#if H5_VERS_MINOR > 10 ++#if H5_VERS_MINOR > 14 + #error "Don't forget to change the compatibility version of the library !" + #endif + +diff -rupN med-4.1.0/src/hdfi/_MEDparFileOpen.c med-4.1.0-new/src/hdfi/_MEDparFileOpen.c +--- med-4.1.0/src/hdfi/_MEDparFileOpen.c 2021-12-03 09:35:30.679827159 +0100 ++++ med-4.1.0-new/src/hdfi/_MEDparFileOpen.c 2021-12-03 09:32:31.894994147 +0100 +@@ -55,7 +55,7 @@ med_idt _MEDparFileOpen(const char * con + MED_ERR_(_fid,MED_ERR_INIT,MED_ERR_PROPERTY,MED_ERR_PARALLEL_MSG); + goto ERROR; + } +-#if H5_VERS_MINOR > 10 ++#if H5_VERS_MINOR > 14 + #error "Don't forget to change the compatibility version of the library !" + #endif + if ( H5Pset_libver_bounds( _fapl, H5F_LIBVER_18, H5F_LIBVER_18 ) ) { diff --git a/backports/libspnav/APKBUILD b/backports/libspnav/APKBUILD new file mode 100644 index 0000000..59763af --- /dev/null +++ b/backports/libspnav/APKBUILD @@ -0,0 +1,44 @@ +# Contributor: guddaff +# Maintainer: guddaff +pkgname=libspnav +pkgver=1.1 +pkgrel=0 +pkgdesc="library for communicating with spacenavd or 3dxsrv" +url="https://spacenav.sourceforge.net/" +arch="all" +license="BSD-3-Clause" +options="!check" #no checks +makedepends="libx11-dev" +subpackages="$pkgname-static $pkgname-dev" +source="https://github.com/FreeSpacenav/libspnav/releases/download/v$pkgver/libspnav-$pkgver.tar.gz + configure.patch + " + +prepare() { + default_prepare + sed -i "s/@PKGVERSION@/$pkgver/" "$builddir"/configure +} + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums=" +94770d9449dd02ade041d3589bcae7664fa990c4a4feca7b2b1e6542b65aa7073305595310b9e639f10716cf15aaad913e57496fb79bdd4dba5bf703ec8299ab libspnav-1.1.tar.gz +1536a172843459c1f26806ad774194afddf93baca0421d0803337eb90b6dd4bcc9dc9b6ebcb1a4e7de0c6f52b16da51538d302a07d57f0625a3a3311a14327f9 configure.patch +" diff --git a/backports/libspnav/configure.patch b/backports/libspnav/configure.patch new file mode 100644 index 0000000..5cc2fbb --- /dev/null +++ b/backports/libspnav/configure.patch @@ -0,0 +1,22 @@ +--- a/configure ++++ b/configure +@@ -6,18 +6,8 @@ + OPT=yes + DBG=yes + X11=yes +-VER=`git describe --tags 2>/dev/null` ++VER="@PKGVERSION@" + +-if [ -z "$VER" ]; then +- VER=`git rev-parse --short HEAD 2>/dev/null` +- if [ -z "$VER" ]; then +- VER=v`pwd | grep 'libspnav-[0-9]\+\.' | sed 's/.*libspnav-\(\([0-9]\+\.\)\+[0-9]\+\).*$/\1/'` +- if [ $VER = v ]; then +- VER='' +- fi +- fi +-fi +- + echo "configuring libspnav - $VER" + + srcdir="`dirname "$0"`" diff --git a/backports/nb/APKBUILD b/backports/nb/APKBUILD deleted file mode 100644 index 9540e5c..0000000 --- a/backports/nb/APKBUILD +++ /dev/null @@ -1,45 +0,0 @@ -# Contributor: Quillith -# Maintainer: Quillith -pkgname=nb -pkgver=7.19.1 -pkgrel=0 -pkgdesc="Command line note-taking, bookmarking, archiving, and knowledge base application" -url="https://github.com/xwmx/nb" -arch="noarch" -license="AGPL-3.0-or-later" -depends="bash git" -subpackages=" - $pkgname-doc - $pkgname-full - $pkgname-bash-completion - $pkgname-fish-completion - $pkgname-zsh-completion - " -source="$pkgname-$pkgver.tar.gz::https://github.com/xwmx/nb/archive/$pkgver.tar.gz" -options="!check" # no tests - -package() { - install -Dm755 nb "$pkgdir/usr/bin/nb" - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/nb/LICENSE" - install -Dm644 README.md "$pkgdir/usr/share/doc/nb/README.md" - # Completions - install -Dm644 etc/nb-completion.bash "$pkgdir/usr/share/bash-completion/completions/nb" - install -Dm644 etc/nb-completion.fish "$pkgdir/usr/share/fish/vendor_completions.d/nb.fish" - install -Dm644 etc/nb-completion.zsh "$pkgdir/usr/share/zsh/site-functions/_nb" - # Plugins - install -Dm644 -t "$pkgdir/usr/share/nb/plugins/" plugins/* - # Extras (prefixed with "nb-") - for extra in bookmark notes; do - install -Dm0755 "bin/$extra" "$pkgdir/usr/bin/nb-$extra" - done -} - -full() { - pkgdesc="More utilities that integrate with nb" - depends="$pkgname=$pkgver-r$pkgrel bat nmap-ncat pandoc ripgrep tig w3m" - mkdir -p "$subpkgdir" -} - -sha512sums=" -fdfcedc5a32c1a5fe62b00141e25193bc33eee9249fef559938f2b4baf0bff5eb7cc792db3c664c68afb2ba2db84303432790ae5254a9cdd319ce4d9a9face9f nb-7.19.1.tar.gz -" diff --git a/backports/openscad/0001-fix-CVE-2022-0496.patch b/backports/openscad/0001-fix-CVE-2022-0496.patch new file mode 100644 index 0000000..8f8a1e8 --- /dev/null +++ b/backports/openscad/0001-fix-CVE-2022-0496.patch @@ -0,0 +1,76 @@ +From 00a4692989c4e2f191525f73f24ad8727bacdf41 Mon Sep 17 00:00:00 2001 +From: Torsten Paul +Date: Sat, 5 Feb 2022 18:38:31 +0100 +Subject: [PATCH] CVE-2022-0496 Out-of-bounds memory access in DXF loader. + +Public issue: +https://github.com/openscad/openscad/issues/4037 + +Fix in master branch: +https://github.com/openscad/openscad/pull/4090 +--- + src/dxfdata.cc | 27 +++++++++++++++++++++++---- + 1 file changed, 23 insertions(+), 4 deletions(-) + +diff --git a/src/dxfdata.cc b/src/dxfdata.cc +index 2bb7236746..aa6b6f3976 100644 +--- a/src/dxfdata.cc ++++ b/src/dxfdata.cc +@@ -441,6 +441,11 @@ DxfData::DxfData(double fn, double fs, double fa, + auto lv = grid.data(this->points[lines[idx].idx[j]][0], this->points[lines[idx].idx[j]][1]); + for (size_t ki = 0; ki < lv.size(); ++ki) { + int k = lv.at(ki); ++ if (k < 0 || k >= lines.size()) { ++ LOG(message_group::Warning,Location::NONE,"", ++ "Bad DXF line index in %1$s.",QuotedString(boostfs_uncomplete(filename, fs::current_path()).generic_string())); ++ continue; ++ } + if (k == idx || lines[k].disabled) continue; + goto next_open_path_j; + } +@@ -466,13 +471,20 @@ DxfData::DxfData(double fn, double fs, double fa, + auto lv = grid.data(ref_point[0], ref_point[1]); + for (size_t ki = 0; ki < lv.size(); ++ki) { + int k = lv.at(ki); ++ if (k < 0 || k >= lines.size()) { ++ LOG(message_group::Warning,Location::NONE,"", ++ "Bad DXF line index in %1$s.",QuotedString(boostfs_uncomplete(filename, fs::current_path()).generic_string())); ++ continue; ++ } + if (lines[k].disabled) continue; +- if (grid.eq(ref_point[0], ref_point[1], this->points[lines[k].idx[0]][0], this->points[lines[k].idx[0]][1])) { ++ auto idk0 = lines[k].idx[0]; // make it easier to read and debug ++ auto idk1 = lines[k].idx[1]; ++ if (grid.eq(ref_point[0], ref_point[1], this->points[idk0][0], this->points[idk0][1])) { + current_line = k; + current_point = 0; + goto found_next_line_in_open_path; + } +- if (grid.eq(ref_point[0], ref_point[1], this->points[lines[k].idx[1]][0], this->points[lines[k].idx[1]][1])) { ++ if (grid.eq(ref_point[0], ref_point[1], this->points[idk1][0], this->points[idk1][1])) { + current_line = k; + current_point = 1; + goto found_next_line_in_open_path; +@@ -501,13 +513,20 @@ DxfData::DxfData(double fn, double fs, double fa, + auto lv = grid.data(ref_point[0], ref_point[1]); + for (size_t ki = 0; ki < lv.size(); ++ki) { + int k = lv.at(ki); ++ if (k < 0 || k >= lines.size()) { ++ LOG(message_group::Warning,Location::NONE,"", ++ "Bad DXF line index in %1$s.",QuotedString(boostfs_uncomplete(filename, fs::current_path()).generic_string())); ++ continue; ++ } + if (lines[k].disabled) continue; +- if (grid.eq(ref_point[0], ref_point[1], this->points[lines[k].idx[0]][0], this->points[lines[k].idx[0]][1])) { ++ auto idk0 = lines[k].idx[0]; // make it easier to read and debug ++ auto idk1 = lines[k].idx[1]; ++ if (grid.eq(ref_point[0], ref_point[1], this->points[idk0][0], this->points[idk0][1])) { + current_line = k; + current_point = 0; + goto found_next_line_in_closed_path; + } +- if (grid.eq(ref_point[0], ref_point[1], this->points[lines[k].idx[1]][0], this->points[lines[k].idx[1]][1])) { ++ if (grid.eq(ref_point[0], ref_point[1], this->points[idk1][0], this->points[idk1][1])) { + current_line = k; + current_point = 1; + goto found_next_line_in_closed_path; diff --git a/backports/openscad/0002-fix-CVE-2022-0497.patch b/backports/openscad/0002-fix-CVE-2022-0497.patch new file mode 100644 index 0000000..fac3024 --- /dev/null +++ b/backports/openscad/0002-fix-CVE-2022-0497.patch @@ -0,0 +1,27 @@ +From 84addf3c1efbd51d8ff424b7da276400bbfa1a4b Mon Sep 17 00:00:00 2001 +From: Torsten Paul +Date: Sat, 5 Feb 2022 18:45:29 +0100 +Subject: [PATCH] CVE-2022-0497 Out-of-bounds memory access in comment parser. + +Public issue: +https://github.com/openscad/openscad/issues/4043 + +Fix in master branch: +https://github.com/openscad/openscad/pull/4044 +--- + src/comment.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/comment.cpp b/src/comment.cpp +index f02ad2c5f6..1ce3ab547b 100644 +--- a/src/comment.cpp ++++ b/src/comment.cpp +@@ -92,7 +92,7 @@ static std::string getComment(const std::string &fulltext, int line) + } + + int end = start + 1; +- while (fulltext[end] != '\n') end++; ++ while (end < fulltext.size() && fulltext[end] != '\n') end++; + + std::string comment = fulltext.substr(start, end - start); + diff --git a/backports/openscad/0003-fix-build-with-cgal-5.3.patch b/backports/openscad/0003-fix-build-with-cgal-5.3.patch new file mode 100644 index 0000000..dc3c1ca --- /dev/null +++ b/backports/openscad/0003-fix-build-with-cgal-5.3.patch @@ -0,0 +1,47 @@ +From 9aa0d7e9f2914fe5f547bdde69202161d1c6064d Mon Sep 17 00:00:00 2001 +From: Jordan Brown +Date: Sun, 18 Jul 2021 21:01:46 -0700 +Subject: [PATCH] Fix build failure with "generic_print_polyhedron" on + CGAL-5.3. + +--- + src/cgalutils-polyhedron.cc | 13 ------------- + src/cgalutils.h | 1 - + 2 files changed, 14 deletions(-) + +diff --git a/src/cgalutils-polyhedron.cc b/src/cgalutils-polyhedron.cc +index 9f4f98f623..41cca4b3f2 100644 +--- a/src/cgalutils-polyhedron.cc ++++ b/src/cgalutils-polyhedron.cc +@@ -337,19 +337,6 @@ namespace CGALUtils { + } + }; + +- template +- std::string printPolyhedron(const Polyhedron &p) { +- std::ostringstream sstream; +- sstream.precision(20); +- +- Polyhedron_writer writer; +- generic_print_polyhedron(sstream, p, writer); +- +- return sstream.str(); +- } +- +- template std::string printPolyhedron(const CGAL_Polyhedron &p); +- + }; // namespace CGALUtils + + #endif /* ENABLE_CGAL */ +diff --git a/src/cgalutils.h b/src/cgalutils.h +index 21a01cdba6..c08a3aa7df 100644 +--- a/src/cgalutils.h ++++ b/src/cgalutils.h +@@ -45,7 +45,6 @@ namespace CGALUtils { + bool is_approximately_convex(const PolySet &ps); + Geometry const* applyMinkowski(const Geometry::Geometries &children); + +- template std::string printPolyhedron(const Polyhedron &p); + template bool createPolySetFromPolyhedron(const Polyhedron &p, PolySet &ps); + template bool createPolyhedronFromPolySet(const PolySet &ps, Polyhedron &p); + template diff --git a/backports/openscad/0004-fix-build-with-cgal-5.4.patch b/backports/openscad/0004-fix-build-with-cgal-5.4.patch new file mode 100644 index 0000000..f1fedc2 --- /dev/null +++ b/backports/openscad/0004-fix-build-with-cgal-5.4.patch @@ -0,0 +1,38 @@ +From abfebc651343909b534ef337aacc7604c99cf0ea Mon Sep 17 00:00:00 2001 +From: Torsten Paul +Date: Wed, 2 Feb 2022 02:30:59 +0100 +Subject: [PATCH] CGAL build fix, v5.4 renames projection traits header files + and classes. + +--- + src/cgalutils-tess.cc | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/cgalutils-tess.cc b/src/cgalutils-tess.cc +index ec1cc1eeb3..37f8cf08b1 100644 +--- a/src/cgalutils-tess.cc ++++ b/src/cgalutils-tess.cc +@@ -6,10 +6,12 @@ + #pragma push_macro("NDEBUG") + #undef NDEBUG + #include +-#if CGAL_VERSION_NR >= CGAL_VERSION_NUMBER(4,11,0) +- #include ++#if CGAL_VERSION_NR < 1050401000 ++#include ++typedef CGAL::Triangulation_2_filtered_projection_traits_3 Projection; + #else +- #include ++#include ++typedef CGAL::Filtered_projection_traits_3 Projection; + #endif + #include + #pragma pop_macro("NDEBUG") +@@ -19,7 +21,6 @@ struct FaceInfo { + bool in_domain() { return nesting_level%2 == 1; } + }; + +-typedef CGAL::Triangulation_2_filtered_projection_traits_3 Projection; + typedef CGAL::Triangulation_face_base_with_info_2 Fbb; + typedef CGAL::Triangulation_data_structure_2< + CGAL::Triangulation_vertex_base_2, diff --git a/backports/openscad/0005-fix-boost-join.patch b/backports/openscad/0005-fix-boost-join.patch new file mode 100644 index 0000000..1347c27 --- /dev/null +++ b/backports/openscad/0005-fix-boost-join.patch @@ -0,0 +1,62 @@ +From 08bf69b4115c989fc5671254e0d05735d01bcca5 Mon Sep 17 00:00:00 2001 +From: Torsten Paul +Date: Wed, 2 Feb 2022 00:50:43 +0100 +Subject: [PATCH] Fix build issue with overloaded join(). + +--- + src/openscad.cc | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/src/openscad.cc b/src/openscad.cc +index a6f648d2a2..3c46cda2af 100644 +--- a/src/openscad.cc ++++ b/src/openscad.cc +@@ -65,7 +65,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -307,7 +306,7 @@ void set_render_color_scheme(const std::string color_scheme, const bool exit_if_ + } + + if (exit_if_not_found) { +- LOG(message_group::None,Location::NONE,"",(boost::join(ColorMap::inst()->colorSchemeNames(), "\n"))); ++ LOG(message_group::None,Location::NONE,"",(boost::algorithm::join(ColorMap::inst()->colorSchemeNames(), "\n"))); + + exit(1); + } else { +@@ -885,7 +884,7 @@ struct CommaSeparatedVector + }; + + template +-std::string join(const Seq &seq, const std::string &sep, const ToString &toString) ++std::string str_join(const Seq &seq, const std::string &sep, const ToString &toString) + { + return boost::algorithm::join(boost::adaptors::transform(seq, toString), sep); + } +@@ -947,7 +946,7 @@ int main(int argc, char **argv) + ("P,P", po::value(), "customizer parameter set") + #ifdef ENABLE_EXPERIMENTAL + ("enable", po::value>(), ("enable experimental features: " + +- join(boost::make_iterator_range(Feature::begin(), Feature::end()), " | ", ++ str_join(boost::make_iterator_range(Feature::begin(), Feature::end()), " | ", + [](const Feature *feature) { + return feature->get_name(); + }) + +@@ -964,11 +963,11 @@ int main(int argc, char **argv) + ("render", po::value()->implicit_value(""), "for full geometry evaluation when exporting png") + ("preview", po::value()->implicit_value(""), "[=throwntogether] -for ThrownTogether preview png") + ("animate", po::value(), "export N animated frames") +- ("view", po::value(), ("=view options: " + boost::join(viewOptions.names(), " | ")).c_str()) ++ ("view", po::value(), ("=view options: " + boost::algorithm::join(viewOptions.names(), " | ")).c_str()) + ("projection", po::value(), "=(o)rtho or (p)erspective when exporting png") + ("csglimit", po::value(), "=n -stop rendering at n CSG elements when exporting png") + ("colorscheme", po::value(), ("=colorscheme: " + +- join(ColorMap::inst()->colorSchemeNames(), " | ", ++ str_join(ColorMap::inst()->colorSchemeNames(), " | ", + [](const std::string& colorScheme) { + return (colorScheme == ColorMap::inst()->defaultColorSchemeName() ? "*" : "") + colorScheme; + }) + diff --git a/backports/openscad/APKBUILD b/backports/openscad/APKBUILD new file mode 100644 index 0000000..0e037f1 --- /dev/null +++ b/backports/openscad/APKBUILD @@ -0,0 +1,143 @@ +# Maintainer: Marian Buschsieweke +pkgname=openscad +pkgver=2021.01 +pkgrel=11 +pkgdesc="The programmers solid 3D CAD modeller" +url="http://openscad.org/" +# Glew and GLES on ARM don't play well with each other +arch="all !armv7 !aarch64 !armhf" +license="GPL-2.0-only" +subpackages="$pkgname-doc" +makedepends=" + bison + boost-dev + cairo-dev + cgal-dev + cmake + double-conversion-dev + eigen-dev + flex + glew-dev + gmp-dev + harfbuzz-dev + libxml2-dev + libzip-dev + libspnav-dev + mpfr-dev + opencsg-dev + qscintilla-dev + qt5-qtbase-dev + qt5-qtmultimedia-dev + " +checkdepends=" + imagemagick + mesa + mesa-dri-gallium + python3 + xvfb-run + " +source=" + https://files.openscad.org/openscad-$pkgver.src.tar.gz + + 0001-fix-CVE-2022-0496.patch + 0002-fix-CVE-2022-0497.patch + 0003-fix-build-with-cgal-5.3.patch + 0004-fix-build-with-cgal-5.4.patch + 0005-fix-boost-join.patch + " + +# Handle tests failing only on some arch's, or building against libs only +# provided by some arch's. +case "$CARCH" in + x86_64) + makedepends="$makedepends lib3mf-dev" + export LIB3MF_INCLUDEPATH="/usr/include/lib3mf/Bindings/Cpp" + ;; + x86) + makedepends="$makedepends lib3mf-dev" + export LIB3MF_INCLUDEPATH="/usr/include/lib3mf/Bindings/Cpp" + _arch_failing_tests=" + 3mfpngtest_cube10 + " + ;; + s390x) + _arch_failing_tests=" + 3mfpngtest_cube10 + cgalbinstlcgalpngtest_bad-stl-pcbvicebar + cgalbinstlcgalpngtest_bad-stl-tardis + cgalbinstlcgalpngtest_fn_bug + cgalbinstlcgalpngtest_issue1225 + cgalpngtest_import_3mf-tests + csgpngtest_import_3mf-tests + opencsgtest_import_3mf-tests + throwntogethertest_import_3mf-tests + " + ;; + *) + # lib3mf is not available on all other archs + _arch_failing_tests=" + 3mfpngtest_cube10 + cgalpngtest_import_3mf-tests + csgpngtest_import_3mf-tests + opencsgtest_import_3mf-tests + throwntogethertest_import_3mf-tests + " + ;; +esac + +# secfixes: +# 2021.01-r2: +# - CVE-2022-0496 +# - CVE-2022-0497 + +build() { + qmake-qt5 PREFIX="/usr" + make +} + +check() { + cd tests + # collect failing tests in a way that creates friendly git diffs + local failing_tests + failing_tests=" + 3mfexport_3mf-export + astdumptest_allexpressions + cgalbinstlcgalpngtest_polyhedron-nonplanar-tests + cgalpngtest_nef3_broken + cgalpngtest_polyhedron-nonplanar-tests + cgalstlcgalpngtest_polyhedron-nonplanar-tests + csgpngtest_nef3_broken + csgpngtest_polyhedron-nonplanar-tests + echotest_allexpressions + echotest_function-literal-.* + lazyunion-.* + monotonepngtest_polyhedron-nonplanar-tests + opencsgtest_nef3_broken + pdfexporttest_centered + pdfexporttest_simple-pdf + throwntogethertest_nef3_broken + $_arch_failing_tests + " + + # trim whitespace before and after list and separate expressions by | (regex or) + failing_tests="$(echo "$failing_tests" | tr -d '\n' | sed -e 's/^\s*//' -e 's/\s*$//' -e 's/\s\+/|/g')" + + cmake \ + -DEXPERIMENTAL=OFF \ + . + make + xvfb-run ctest -E "$failing_tests" +} + +package() { + make INSTALL_ROOT="$pkgdir" install +} + +sha512sums=" +8deaa26bf4c295c12da38f323d2b2e6f827851337f5bc1cc9c79afc083c9f913c19a263086e6e853bf2c8434c1ccc705ea22ddb02dc99d39bb1e5e03fc58d128 openscad-2021.01.src.tar.gz +369353f13bb6d2bf123af1e25b5f264cd757efa5d0cd8c226a3803a41a0fdb74aff7411ddf91cb394f9cd295e10e05159487fb6e9c2d661280bf060e391bc3da 0001-fix-CVE-2022-0496.patch +708a491c5a6166bdf92419bce68dbcb4eccbb97ce1880c5a3c919a90ae5af19aa9092e46b81fe8705e8470189d43c4ecad19dece9f1e405681a186c0bd8f5ca4 0002-fix-CVE-2022-0497.patch +090b8a8e53cc7560695d4065db891a3602923d893d752e3d007a42f2cd32c5f6f444d735d716658fb6f3d979e8cf2489cbff3a58a9070621ab5448a6dbf3372b 0003-fix-build-with-cgal-5.3.patch +7d3067bcadf5a56b3b21b80f36e8d1fd99047029b86db6803b71760d47a8b199d3485c6486767707273aa57f9a83aaafcb763fe7a1ee295b01a776f7e5db038f 0004-fix-build-with-cgal-5.4.patch +f0538eb98543a2a15534794f91c35f10d21fe04a8696639a4f08cd98daf63e6efc855b102f41ecb05a1e1bffeecc7c445fcfad7c3a90f32ec28c5a1646863466 0005-fix-boost-join.patch +" diff --git a/backports/openssl1.1-compat/APKBUILD b/backports/openssl1.1-compat/APKBUILD new file mode 100644 index 0000000..29eb65b --- /dev/null +++ b/backports/openssl1.1-compat/APKBUILD @@ -0,0 +1,177 @@ +# Contributor: Ariadne Conill +# Maintainer: Timo Teras +pkgname=openssl1.1-compat +pkgver=1.1.1w +_abiver=${pkgver%.*} +pkgrel=0 +pkgdesc="toolkit for transport layer security (TLS) - version 1.1" +url="https://www.openssl.org/" +arch="all" +license="OpenSSL" +replaces="libressl" +depends_dev="!openssl-dev" +makedepends_build="perl" +makedepends_host="linux-headers" +makedepends="$makedepends_host $makedepends_build" +subpackages="$pkgname-dbg $pkgname-libs-static:_static $pkgname-dev + libcrypto$_abiver:_libcrypto libssl$_abiver:_libssl" +source="https://www.openssl.org/source/openssl-$pkgver.tar.gz + man-section.patch + ppc64.patch + " +builddir="$srcdir/openssl-$pkgver" +pcprefix="openssl$_abiver:pc:" + +# secfixes: +# 1.1.1u-r1: +# - CVE-2023-3446 +# 1.1.1t-r2: +# - CVE-2023-0465 +# 1.1.1t-r1: +# - CVE-2023-0464 +# 1.1.1t-r0: +# - CVE-2022-4304 +# - CVE-2022-4450 +# - CVE-2023-0215 +# - CVE-2023-0286 +# 1.1.1q-r0: +# - CVE-2022-2097 +# 1.1.1n-r0: +# - CVE-2022-0778 +# 1.1.1l-r0: +# - CVE-2021-3711 +# - CVE-2021-3712 +# 1.1.1k-r0: +# - CVE-2021-3449 +# - CVE-2021-3450 +# 1.1.1j-r0: +# - CVE-2021-23841 +# - CVE-2021-23840 +# - CVE-2021-23839 +# 1.1.1i-r0: +# - CVE-2020-1971 +# 1.1.1g-r0: +# - CVE-2020-1967 +# 1.1.1d-r3: +# - CVE-2019-1551 +# 1.1.1d-r1: +# - CVE-2019-1547 +# - CVE-2019-1549 +# - CVE-2019-1563 +# 1.1.1b-r1: +# - CVE-2019-1543 +# 1.1.1a-r0: +# - CVE-2018-0734 +# - CVE-2018-0735 +# 0: +# - CVE-2022-1292 +# - CVE-2022-2068 + +build() { + local _target _optflags + + # openssl will prepend crosscompile always core CC et al + CC=${CC#${CROSS_COMPILE}} + CXX=${CXX#${CROSS_COMPILE}} + CPP=${CPP#${CROSS_COMPILE}} + + # determine target OS for openssl + case "$CARCH" in + aarch64*) _target="linux-aarch64" ;; + arm*) _target="linux-armv4" ;; + mips64*) _target="linux64-mips64" ;; + # explicit _optflags is needed to prevent automatic -mips3 addition + mips*) _target="linux-mips32"; _optflags="-mips32" ;; + ppc) _target="linux-ppc" ;; + ppc64) _target="linux-ppc64" ;; + ppc64le) _target="linux-ppc64le" ;; + x86) _target="linux-elf" ;; + x86_64) _target="linux-x86_64"; _optflags="enable-ec_nistp_64_gcc_128" ;; + s390x) _target="linux64-s390x";; + riscv64) _target="linux-generic64";; + *) msg "Unable to determine architecture from (CARCH=$CARCH)" ; return 1 ;; + esac + + # Configure assumes --options are for it, so can't use + # gcc's --sysroot fake this by overriding CC + [ -n "$CBUILDROOT" ] && CC="$CC --sysroot=$CBUILDROOT" + + # when cross building do not enable threads as libatomic is not avaiable + if [ "$CBUILD" != "$CHOST" ]; then + case $CARCH in + riscv64) _optflags="$_optflags no-threads";; + esac + fi + + perl ./Configure \ + $_target \ + --prefix=/usr \ + --libdir=lib \ + --openssldir=/etc/ssl1.1 \ + shared \ + no-zlib \ + no-async \ + no-comp \ + no-idea \ + no-mdc2 \ + no-rc5 \ + no-ec2m \ + no-sm2 \ + no-sm4 \ + no-ssl2 \ + no-ssl3 \ + no-seed \ + no-weak-ssl-ciphers \ + $_optflags \ + $CPPFLAGS \ + $CFLAGS \ + $LDFLAGS -Wa,--noexecstack + make +} + +check() { + # AFALG tests have a sporadic test failure, just delete the broken + # test for now. + rm -f test/recipes/30-test_afalg.t + + make test +} + +package() { + make DESTDIR="$pkgdir" install_sw install_ssldirs + # remove the script c_rehash + rm "$pkgdir"/usr/bin/c_rehash + mv -f "$pkgdir"/usr/bin/openssl "$pkgdir"/usr/bin/openssl$_abiver +} + +_libcrypto() { + pkgdesc="Crypto library from openssl" + replaces="libressl2.7-libcrypto" + mkdir -p "$subpkgdir"/lib "$subpkgdir"/usr/lib + mv "$pkgdir"/etc "$subpkgdir"/ + for i in "$pkgdir"/usr/lib/libcrypto*; do + mv $i "$subpkgdir"/lib/ + ln -s ../../lib/${i##*/} "$subpkgdir"/usr/lib/${i##*/} + done + mv "$pkgdir"/usr/lib/engines-$_abiver "$subpkgdir"/usr/lib/ +} + +_libssl() { + pkgdesc="SSL shared libraries" + + mkdir -p "$subpkgdir"/lib "$subpkgdir"/usr/lib + for i in "$pkgdir"/usr/lib/libssl*; do + mv $i "$subpkgdir"/lib/ + ln -s ../../lib/${i##*/} "$subpkgdir"/usr/lib/${i##*/} + done +} + +_static() { + default_static +} + +sha512sums=" +b4c625fe56a4e690b57b6a011a225ad0cb3af54bd8fb67af77b5eceac55cc7191291d96a660c5b568a08a2fbf62b4612818e7cca1bb95b2b6b4fc649b0552b6d openssl-1.1.1w.tar.gz +43c3255118db6f5f340dc865c0f25ccbcafe5bf7507585244ca59b4d27daf533d6c3171aa32a8685cbb6200104bec535894b633de13feaadff87ab86739a445a man-section.patch +e040f23770d52b988578f7ff84d77563340f37c026db7643db8e4ef18e795e27d10cb42cb8656da4d9c57a28283a2828729d70f940edc950c3422a54fea55509 ppc64.patch +" diff --git a/backports/openssl1.1-compat/man-section.patch b/backports/openssl1.1-compat/man-section.patch new file mode 100644 index 0000000..0606897 --- /dev/null +++ b/backports/openssl1.1-compat/man-section.patch @@ -0,0 +1,54 @@ +From: Debian OpenSSL Team +Date: Sun, 5 Nov 2017 15:09:09 +0100 +Subject: man-section + +--- + Configurations/unix-Makefile.tmpl | 6 ++++-- + util/process_docs.pl | 3 ++- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index 1292053546f5..c034d21884d8 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -183,7 +183,8 @@ HTMLDIR=$(DOCDIR)/html + # MANSUFFIX is for the benefit of anyone who may want to have a suffix + # appended after the manpage file section number. "ssl" is popular, + # resulting in files such as config.5ssl rather than config.5. +-MANSUFFIX= ++MANSUFFIX=ssl ++MANSECTION=SSL + HTMLSUFFIX=html + + # For "optional" echo messages, to get "real" silence +@@ -726,7 +727,8 @@ uninstall_runtime: uninstall_programs uninstall_runtime_libs + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) + @$(ECHO) "*** Installing manpages" + $(PERL) $(SRCDIR)/util/process_docs.pl \ +- "--destdir=$(DESTDIR)$(MANDIR)" --type=man --suffix=$(MANSUFFIX) ++ "--destdir=$(DESTDIR)$(MANDIR)" --type=man --suffix=$(MANSUFFIX) \ ++ --mansection=$(MANSECTION) + + uninstall_man_docs: + @$(ECHO) "*** Uninstalling manpages" +diff --git a/util/process_docs.pl b/util/process_docs.pl +index 30b149eb8fcc..424155ea808e 100755 +--- a/util/process_docs.pl ++++ b/util/process_docs.pl +@@ -37,6 +37,7 @@ GetOptions(\%options, + 'type=s', # The result type, 'man' or 'html' + 'suffix:s', # Suffix to add to the extension. + # Only used with type=man ++ 'mansection:s', # Section to put to manpage in + 'remove', # To remove files rather than writing them + 'dry-run|n', # Only output file names on STDOUT + 'debug|D+', +@@ -97,7 +98,7 @@ foreach my $section (sort @{$options{section}}) { + my $name = uc $podname; + my $suffix = { man => ".$podinfo{section}".($options{suffix} // ""), + html => ".html" } -> {$options{type}}; +- my $generate = { man => "pod2man --name=$name --section=$podinfo{section} --center=OpenSSL --release=$config{version} \"$podpath\"", ++ my $generate = { man => "pod2man --name=$name --section=$podinfo{section}$options{mansection} --center=OpenSSL --release=$config{version} \"$podpath\"", + html => "pod2html \"--podroot=$options{sourcedir}\" --htmldir=$updir --podpath=man1:man3:man5:man7 \"--infile=$podpath\" \"--title=$podname\" --quiet" + } -> {$options{type}}; + my $output_dir = catdir($options{destdir}, "man$podinfo{section}"); diff --git a/backports/openssl1.1-compat/ppc64.patch b/backports/openssl1.1-compat/ppc64.patch new file mode 100644 index 0000000..c75ceed --- /dev/null +++ b/backports/openssl1.1-compat/ppc64.patch @@ -0,0 +1,96 @@ +From 34ab13b7d8e3e723adb60be8142e38b7c9cd382a Mon Sep 17 00:00:00 2001 +From: Andy Polyakov +Date: Sun, 5 May 2019 18:25:50 +0200 +Subject: [PATCH] crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is a big endian ELFv2 configuration. ELFv2 was already being +used for little endian, and big endian was traditionally ELFv1 +but there are practical configurations that use ELFv2 with big +endian nowadays (Adélie Linux, Void Linux, possibly Gentoo, etc.) + +Reviewed-by: Paul Dale +Reviewed-by: Richard Levitte +(Merged from https://github.com/openssl/openssl/pull/8883) +--- + crypto/perlasm/ppc-xlate.pl | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl +index e52f2f6ea62..5fcd0526dff 100755 +--- a/crypto/perlasm/ppc-xlate.pl ++++ b/crypto/perlasm/ppc-xlate.pl +@@ -49,7 +49,7 @@ + /osx/ && do { $name = "_$name"; + last; + }; +- /linux.*(32|64le)/ ++ /linux.*(32|64(le|v2))/ + && do { $ret .= ".globl $name"; + if (!$$type) { + $ret .= "\n.type $name,\@function"; +@@ -80,7 +80,7 @@ + }; + my $text = sub { + my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text"; +- $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/); ++ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64(le|v2)/); + $ret; + }; + my $machine = sub { +@@ -186,7 +186,7 @@ + + # Some ABIs specify vrsave, special-purpose register #256, as reserved + # for system use. +-my $no_vrsave = ($flavour =~ /aix|linux64le/); ++my $no_vrsave = ($flavour =~ /aix|linux64(le|v2)/); + my $mtspr = sub { + my ($f,$idx,$ra) = @_; + if ($idx == 256 && $no_vrsave) { +@@ -318,7 +318,7 @@ sub vfour { + if ($label) { + my $xlated = ($GLOBALS{$label} or $label); + print "$xlated:"; +- if ($flavour =~ /linux.*64le/) { ++ if ($flavour =~ /linux.*64(le|v2)/) { + if ($TYPES{$label} =~ /function/) { + printf "\n.localentry %s,0\n",$xlated; + } + +From 098404128383ded87ba390dd74ecd9e2ffa6f530 Mon Sep 17 00:00:00 2001 +From: Andy Polyakov +Date: Sun, 5 May 2019 18:30:55 +0200 +Subject: [PATCH] Configure: use ELFv2 ABI on some ppc64 big endian systems + +If _CALL_ELF is defined to be 2, it's an ELFv2 system. +Conditionally switch to the v2 perlasm scheme. + +Reviewed-by: Paul Dale +Reviewed-by: Richard Levitte +(Merged from https://github.com/openssl/openssl/pull/8883) +--- + Configure | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/Configure b/Configure +index 22082deb4c7..e303d98deb3 100755 +--- a/Configure ++++ b/Configure +@@ -1402,8 +1402,15 @@ + my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); + my %predefined_CXX = $config{CXX} + ? compiler_predefined($config{CROSS_COMPILE}.$config{CXX}) + : (); + ++unless ($disabled{asm}) { ++ # big endian systems can use ELFv2 ABI ++ if ($target eq "linux-ppc64") { ++ $target{perlasm_scheme} = "linux64v2" if ($predefined_C{_CALL_ELF} == 2); ++ } ++} ++ + # Check for makedepend capabilities. + if (!$disabled{makedepend}) { + if ($config{target} =~ /^(VC|vms)-/) { diff --git a/backports/openterface-qt/348_address-use-of-deleted-function.patch b/backports/openterface-qt/348_address-use-of-deleted-function.patch deleted file mode 100644 index 2783740..0000000 --- a/backports/openterface-qt/348_address-use-of-deleted-function.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/serial/SerialPortManager.cpp.orig b/serial/SerialPortManager.cpp -index 22565b5..d444eee 100644 ---- a/serial/SerialPortManager.cpp.orig -+++ b/serial/SerialPortManager.cpp -@@ -1945,8 +1945,9 @@ void SerialPortManager::attemptRecovery() - } - } else { - qCWarning(log_core_serial) << "Serial port recovery attempt failed"; -- if (eventCallback) { -- eventCallback->onStatusUpdate(QString("Recovery attempt %1 failed").arg(m_connectionRetryCount)); -+ if (eventCallback) { -+ int crc = m_connectionRetryCount; -+ eventCallback->onStatusUpdate(QString("Recovery attempt %1 failed").arg(crc)); - } - - // Try again if we haven't exceeded max attempts -@@ -2034,4 +2035,4 @@ void SerialPortManager::applyCommandBasedBaudrateChange(int baudRate, const QStr - } else { - qCWarning(log_core_serial) << logPrefix << "Failed to apply user selected baudrate:" << baudRate; - } --} -\ No newline at end of file -+} diff --git a/backports/openterface-qt/423_deduplicate-logging-categories-and-remove-backslashes.patch b/backports/openterface-qt/423_deduplicate-logging-categories-and-remove-backslashes.patch deleted file mode 100644 index 5e762ff..0000000 --- a/backports/openterface-qt/423_deduplicate-logging-categories-and-remove-backslashes.patch +++ /dev/null @@ -1,586 +0,0 @@ -From 4478cfb004d3db7797e99fd3bdb23bf880a9c85b Mon Sep 17 00:00:00 2001 -From: John Lane <1786613+johnlane@users.noreply.github.com> -Date: Wed, 3 Dec 2025 21:19:33 +0000 -Subject: [PATCH 1/2] Remove additional backslashes and add missing cpp and h - files - ---- - openterfaceQT.pro | 28 +++++++++++++++++++--------- - 1 file changed, 19 insertions(+), 9 deletions(-) - -diff --git a/openterfaceQT.pro b/openterfaceQT.pro -index 3460dbac..f0d878e8 100644 ---- a/openterfaceQT.pro -+++ b/openterfaceQT.pro -@@ -84,16 +84,26 @@ SOURCES += main.cpp \ - !win32 { - SOURCES += host/backend/ffmpegbackendhandler.cpp \ - host/backend/gstreamerbackendhandler.cpp \ -- host/backend/gstreamer/sinkselector.cpp \\ -- host/backend/gstreamer/queueconfigurator.cpp \\ -- host/backend/gstreamer/videooverlaymanager.cpp \\ -- host/backend/gstreamer/pipelinebuilder.cpp -+ host/backend/gstreamer/pipelinefactory.cpp \ -+ host/backend/gstreamer/externalgstrunner.cpp \ -+ host/backend/gstreamer/inprocessgstrunner.cpp \ -+ host/backend/gstreamer/sinkselector.cpp \ -+ host/backend/gstreamer/queueconfigurator.cpp \ -+ host/backend/gstreamer/videooverlaymanager.cpp \ -+ host/backend/gstreamer/pipelinebuilder.cpp \ -+ host/backend/gstreamer/recordingmanager.cpp \ -+ host/backend/gstreamer/gstreamerhelpers.cpp - HEADERS += host/backend/ffmpegbackendhandler.h \ - host/backend/gstreamerbackendhandler.h \ -- host/backend/gstreamer/sinkselector.h \\ -- host/backend/gstreamer/queueconfigurator.h \\ -- host/backend/gstreamer/videooverlaymanager.h \\ -- host/backend/gstreamer/pipelinebuilder.h -+ host/backend/gstreamer/pipelinefactory.h \ -+ host/backend/gstreamer/externalgstrunner.h \ -+ host/backend/gstreamer/inprocessgstrunner.h \ -+ host/backend/gstreamer/sinkselector.h \ -+ host/backend/gstreamer/queueconfigurator.h \ -+ host/backend/gstreamer/videooverlaymanager.h \ -+ host/backend/gstreamer/pipelinebuilder.h \ -+ host/backend/gstreamer/recordingmanager.h \ -+ host/backend/gstreamer/gstreamerhelpers.h - } - - -@@ -263,4 +273,4 @@ TRANSLATIONS += config/languages/openterface_en.ts \ - config/languages/openterface_se.ts \ - config/languages/openterface_de.ts \ - config/languages/openterface_zh.ts -- # Add more languages here -\ No newline at end of file -+ # Add more languages here - -From ccd8f51fe510684439edf0d5f8083e4dd1423836 Mon Sep 17 00:00:00 2001 -From: John Lane <1786613+johnlane@users.noreply.github.com> -Date: Wed, 3 Dec 2025 21:26:20 +0000 -Subject: [PATCH 2/2] De-duplicate logging categories - ---- - host/backend/gstreamer/gstreamerhelpers.cpp | 22 ++-- - host/backend/gstreamer/queueconfigurator.cpp | 8 +- - .../backend/gstreamer/videooverlaymanager.cpp | 118 +++++++++--------- - 3 files changed, 74 insertions(+), 74 deletions(-) - -diff --git a/host/backend/gstreamer/gstreamerhelpers.cpp b/host/backend/gstreamer/gstreamerhelpers.cpp -index 6fc1dd6e..4739da17 100644 ---- a/host/backend/gstreamer/gstreamerhelpers.cpp -+++ b/host/backend/gstreamer/gstreamerhelpers.cpp -@@ -4,7 +4,7 @@ - #include - #include - --Q_LOGGING_CATEGORY(log_gstreamer_backend, "opf.backend.gstreamer") -+Q_LOGGING_CATEGORY(log_gstreamer_gstreamerhelpers, "opf.backend.gstreamerhelpers") - - using namespace Openterface::GStreamer::GstHelpers; - -@@ -16,7 +16,7 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme - { - if (!elementPtr) { - if (outError) *outError = QStringLiteral("Element pointer is null"); -- qCWarning(log_gstreamer_backend) << "setPipelineStateWithTimeout: element pointer is null"; -+ qCWarning(log_gstreamer_gstreamerhelpers) << "setPipelineStateWithTimeout: element pointer is null"; - return false; - } - -@@ -24,7 +24,7 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme - - GstStateChangeReturn ret = gst_element_set_state(element, static_cast(targetState)); - if (ret == GST_STATE_CHANGE_FAILURE) { -- qCCritical(log_gstreamer_backend) << "Failed to set element state to" << targetState; -+ qCCritical(log_gstreamer_gstreamerhelpers) << "Failed to set element state to" << targetState; - // Try to pull any error from the bus for diagnostics - // Caller may pass a bus to parseAndLogGstErrorMessage, but we don't have it here. - if (outError) *outError = QStringLiteral("Failed to set state (GST_STATE_CHANGE_FAILURE)"); -@@ -35,13 +35,13 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme - ret = gst_element_get_state(element, &state, &pending, static_cast(timeoutMs) * GST_MSECOND); - if (ret == GST_STATE_CHANGE_FAILURE) { - if (outError) *outError = QStringLiteral("State change failure"); -- qCCritical(log_gstreamer_backend) << "State change failure waiting for target state"; -+ qCCritical(log_gstreamer_gstreamerhelpers) << "State change failure waiting for target state"; - return false; - } - - if (state != static_cast(targetState)) { - if (outError) *outError = QStringLiteral("Element did not reach target state in timeout"); -- qCCritical(log_gstreamer_backend) << "Element failed to reach state" << targetState << "(current:" << state << ", pending:" << pending << ")"; -+ qCCritical(log_gstreamer_gstreamerhelpers) << "Element failed to reach state" << targetState << "(current:" << state << ", pending:" << pending << ")"; - return false; - } - -@@ -51,14 +51,14 @@ bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* eleme - void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* busPtr, const char* context) - { - if (!busPtr) { -- qCWarning(log_gstreamer_backend) << "Bus not available for error details" << (context ? context : ""); -+ qCWarning(log_gstreamer_gstreamerhelpers) << "Bus not available for error details" << (context ? context : ""); - return; - } - - GstBus* bus = static_cast(busPtr); - GstMessage* msg = gst_bus_pop_filtered(bus, GST_MESSAGE_ERROR); - if (!msg) { -- qCDebug(log_gstreamer_backend) << "No error message available on bus" << (context ? context : ""); -+ qCDebug(log_gstreamer_gstreamerhelpers) << "No error message available on bus" << (context ? context : ""); - return; - } - -@@ -66,8 +66,8 @@ void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* busPtr - gchar* debug_info = nullptr; - gst_message_parse_error(msg, &error, &debug_info); - -- qCCritical(log_gstreamer_backend) << "GStreamer Error:" << (error ? error->message : "Unknown") << (context ? context : ""); -- qCCritical(log_gstreamer_backend) << "Debug info:" << (debug_info ? debug_info : "None"); -+ qCCritical(log_gstreamer_gstreamerhelpers) << "GStreamer Error:" << (error ? error->message : "Unknown") << (context ? context : ""); -+ qCCritical(log_gstreamer_gstreamerhelpers) << "Debug info:" << (debug_info ? debug_info : "None"); - - if (error) g_error_free(error); - if (debug_info) g_free(debug_info); -@@ -79,13 +79,13 @@ void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* busPtr - bool Openterface::GStreamer::GstHelpers::setPipelineStateWithTimeout(void* /*elementPtr*/, int /*targetState*/, int /*timeoutMs*/, QString* outError) - { - if (outError) *outError = QStringLiteral("GStreamer not available in this build"); -- qCWarning(log_gstreamer_backend) << "setPipelineStateWithTimeout called but GStreamer is not compiled in"; -+ qCWarning(log_gstreamer_gstreamerhelpers) << "setPipelineStateWithTimeout called but GStreamer is not compiled in"; - return false; - } - - void Openterface::GStreamer::GstHelpers::parseAndLogGstErrorMessage(void* /*busPtr*/, const char* context) - { -- qCDebug(log_gstreamer_backend) << "GStreamer not compiled in - no bus to parse" << (context ? context : ""); -+ qCDebug(log_gstreamer_gstreamerhelpers) << "GStreamer not compiled in - no bus to parse" << (context ? context : ""); - } - - #endif // HAVE_GSTREAMER -diff --git a/host/backend/gstreamer/queueconfigurator.cpp b/host/backend/gstreamer/queueconfigurator.cpp -index b7bea42e..12290193 100644 ---- a/host/backend/gstreamer/queueconfigurator.cpp -+++ b/host/backend/gstreamer/queueconfigurator.cpp -@@ -8,7 +8,7 @@ - #include - #endif - --Q_LOGGING_CATEGORY(log_gstreamer_backend, "opf.backend.gstreamer") -+Q_LOGGING_CATEGORY(log_gstreamer_queueconfigurator, "opf.backend.queueconfigurator") - - using namespace Openterface::GStreamer; - -@@ -26,10 +26,10 @@ void QueueConfigurator::configureDisplayQueue(void* pipeline) - "max-size-time", G_GUINT64_CONSTANT(100000000), // 100ms - "leaky", 2, // GST_QUEUE_LEAK_DOWNSTREAM - NULL); -- qCDebug(log_gstreamer_backend) << "✓ Configured display queue with higher priority for qtsink"; -+ qCDebug(log_gstreamer_queueconfigurator) << "✓ Configured display queue with higher priority for qtsink"; - gst_object_unref(displayQueue); - } else { -- qCDebug(log_gstreamer_backend) << "Display queue element not found (no named display-queue)"; -+ qCDebug(log_gstreamer_queueconfigurator) << "Display queue element not found (no named display-queue)"; - } - #else - Q_UNUSED(pipeline); -@@ -50,7 +50,7 @@ void QueueConfigurator::configureRecordingQueue(void* pipeline) - "max-size-time", G_GUINT64_CONSTANT(500000000), // 500ms - "leaky", 1, // GST_QUEUE_LEAK_UPSTREAM - NULL); -- qCDebug(log_gstreamer_backend) << "✓ Configured recording queue with lower priority relative to display"; -+ qCDebug(log_gstreamer_queueconfigurator) << "✓ Configured recording queue with lower priority relative to display"; - gst_object_unref(recordingQueue); - } - #else -diff --git a/host/backend/gstreamer/videooverlaymanager.cpp b/host/backend/gstreamer/videooverlaymanager.cpp -index d8bf42f3..2dbe3bbf 100644 ---- a/host/backend/gstreamer/videooverlaymanager.cpp -+++ b/host/backend/gstreamer/videooverlaymanager.cpp -@@ -22,7 +22,7 @@ static int x11_overlay_error_handler_local(Display* display, XErrorEvent* error) - } - #endif - --Q_LOGGING_CATEGORY(log_gstreamer_backend, "opf.backend.gstreamer") -+Q_LOGGING_CATEGORY(log_gstreamer_videooverlaymanager, "opf.backend.videooverlaymanager") - - using namespace Openterface::GStreamer; - -@@ -30,36 +30,36 @@ bool VideoOverlayManager::embedVideoInWidget(void* pipeline, QWidget* widget) - { - #ifdef HAVE_GSTREAMER - if (!widget || !pipeline) { -- qCWarning(log_gstreamer_backend) << "Cannot embed video: widget or pipeline is null"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Cannot embed video: widget or pipeline is null"; - return false; - } - - GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink"); - if (!videoSink) { -- qCWarning(log_gstreamer_backend) << "No video sink element named 'videosink' found in pipeline"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink element named 'videosink' found in pipeline"; - videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY); - if (!videoSink) { -- qCWarning(log_gstreamer_backend) << "No video overlay interface found in pipeline either"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video overlay interface found in pipeline either"; - return false; - } - } - - WId winId = widget->winId(); - if (winId) { -- qCDebug(log_gstreamer_backend) << "Embedding video in widget with window ID:" << winId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Embedding video in widget with window ID:" << winId; - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), winId); - gst_object_unref(videoSink); -- qCDebug(log_gstreamer_backend) << "Video embedded in widget successfully"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Video embedded in widget successfully"; - return true; - } else { -- qCWarning(log_gstreamer_backend) << "Widget window ID is null, cannot embed video"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Widget window ID is null, cannot embed video"; - gst_object_unref(videoSink); - return false; - } - #else - Q_UNUSED(pipeline) - Q_UNUSED(widget) -- qCDebug(log_gstreamer_backend) << "Using autovideosink for video output (no in-process GStreamer)"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Using autovideosink for video output (no in-process GStreamer)"; - return true; - #endif - } -@@ -68,36 +68,36 @@ bool VideoOverlayManager::embedVideoInGraphicsView(void* pipeline, QGraphicsView - { - #ifdef HAVE_GSTREAMER - if (!view || !pipeline) { -- qCWarning(log_gstreamer_backend) << "Cannot embed video: graphics view or pipeline is null"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Cannot embed video: graphics view or pipeline is null"; - return false; - } - - GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink"); - if (!videoSink) { -- qCWarning(log_gstreamer_backend) << "No video sink element named 'videosink' found in pipeline"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink element named 'videosink' found in pipeline"; - videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY); - if (!videoSink) { -- qCWarning(log_gstreamer_backend) << "No video overlay interface found in pipeline either"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video overlay interface found in pipeline either"; - return false; - } - } - - WId winId = view->winId(); - if (winId) { -- qCDebug(log_gstreamer_backend) << "Embedding video in graphics view with window ID:" << winId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Embedding video in graphics view with window ID:" << winId; - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), winId); - gst_object_unref(videoSink); -- qCDebug(log_gstreamer_backend) << "Video embedded in graphics view successfully"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Video embedded in graphics view successfully"; - return true; - } else { -- qCWarning(log_gstreamer_backend) << "Graphics view window ID is null, cannot embed video"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Graphics view window ID is null, cannot embed video"; - gst_object_unref(videoSink); - return false; - } - #else - Q_UNUSED(pipeline) - Q_UNUSED(view) -- qCDebug(log_gstreamer_backend) << "Using autovideosink for video output (no in-process GStreamer)"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Using autovideosink for video output (no in-process GStreamer)"; - return true; - #endif - } -@@ -106,36 +106,36 @@ bool VideoOverlayManager::embedVideoInVideoPane(void* pipeline, ::VideoPane* vid - { - #ifdef HAVE_GSTREAMER - if (!videoPane || !pipeline) { -- qCWarning(log_gstreamer_backend) << "Cannot embed video: VideoPane or pipeline is null"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Cannot embed video: VideoPane or pipeline is null"; - return false; - } - - GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink"); - if (!videoSink) { -- qCWarning(log_gstreamer_backend) << "No video sink element named 'videosink' found in pipeline"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink element named 'videosink' found in pipeline"; - videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY); - if (!videoSink) { -- qCWarning(log_gstreamer_backend) << "No video overlay interface found in pipeline either"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video overlay interface found in pipeline either"; - return false; - } - } - - WId winId = videoPane->getVideoOverlayWindowId(); - if (winId) { -- qCDebug(log_gstreamer_backend) << "Embedding video in VideoPane overlay with window ID:" << winId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Embedding video in VideoPane overlay with window ID:" << winId; - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), winId); - gst_object_unref(videoSink); -- qCDebug(log_gstreamer_backend) << "Video embedded in VideoPane overlay successfully"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Video embedded in VideoPane overlay successfully"; - return true; - } else { -- qCWarning(log_gstreamer_backend) << "VideoPane overlay window ID is null, cannot embed video"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "VideoPane overlay window ID is null, cannot embed video"; - gst_object_unref(videoSink); - return false; - } - #else - Q_UNUSED(pipeline) - Q_UNUSED(videoPane) -- qCDebug(log_gstreamer_backend) << "Using autovideosink for video output (no in-process GStreamer)"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Using autovideosink for video output (no in-process GStreamer)"; - return true; - #endif - } -@@ -144,7 +144,7 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - { - #ifdef HAVE_GSTREAMER - if (!videoSinkPtr || windowId == 0) { -- qCWarning(log_gstreamer_backend) << "Invalid parameters for overlay setup: sink=" << videoSinkPtr << "windowId=" << windowId; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Invalid parameters for overlay setup: sink=" << videoSinkPtr << "windowId=" << windowId; - return false; - } - -@@ -152,7 +152,7 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - - // Check if the sink supports video overlay interface - if (GST_IS_VIDEO_OVERLAY(videoSink)) { -- qCDebug(log_gstreamer_backend) << "Sink supports video overlay - setting up overlay with window ID:" << windowId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Sink supports video overlay - setting up overlay with window ID:" << windowId; - - #ifdef Q_OS_LINUX - // Add X11 error handling to prevent segmentation fault -@@ -175,12 +175,12 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - if (g_object_class_find_property(G_OBJECT_GET_CLASS(videoSink), "force-aspect-ratio")) { - // Allow the sink to stretch to the configured render rectangle so overlay scales to widget size - g_object_set(videoSink, "force-aspect-ratio", FALSE, NULL); -- qCDebug(log_gstreamer_backend) << "Disabled force-aspect-ratio on video sink to allow fill scaling"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Disabled force-aspect-ratio on video sink to allow fill scaling"; - } - - if (g_object_class_find_property(G_OBJECT_GET_CLASS(videoSink), "pixel-aspect-ratio")) { - g_object_set(videoSink, "pixel-aspect-ratio", "1/1", NULL); -- qCDebug(log_gstreamer_backend) << "Set pixel-aspect-ratio to 1:1 on video sink"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Set pixel-aspect-ratio to 1:1 on video sink"; - } - - // Configure render rectangle based on provided targets -@@ -188,13 +188,13 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - QSize widgetSize = videoWidget->size(); - if (widgetSize.width() > 0 && widgetSize.height() > 0) { - gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(videoSink), 0, 0, widgetSize.width(), widgetSize.height()); -- qCDebug(log_gstreamer_backend) << "Set render rectangle to widget size:" << widgetSize; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Set render rectangle to widget size:" << widgetSize; - } - } else if (graphicsVideoItem) { - QRectF itemRect = graphicsVideoItem->boundingRect(); - if (itemRect.width() > 0 && itemRect.height() > 0) { - gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(videoSink), 0, 0, (gint)itemRect.width(), (gint)itemRect.height()); -- qCDebug(log_gstreamer_backend) << "Set render rectangle to video item size:" << itemRect.size(); -+ qCDebug(log_gstreamer_videooverlaymanager) << "Set render rectangle to video item size:" << itemRect.size(); - } - } - -@@ -205,18 +205,18 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - XCloseDisplay(display); - - if (x11_overlay_error_occurred_local) { -- qCWarning(log_gstreamer_backend) << "X11 error occurred during overlay setup - continuing without embedding"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "X11 error occurred during overlay setup - continuing without embedding"; - } else { -- qCDebug(log_gstreamer_backend) << "Video overlay setup completed successfully"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Video overlay setup completed successfully"; - } - } else if (!old_handler) { -- qCDebug(log_gstreamer_backend) << "Video overlay setup completed (no X11 error handling)"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Video overlay setup completed (no X11 error handling)"; - } - #endif - -- qCDebug(log_gstreamer_backend) << "Overlay setup completed"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Overlay setup completed"; - } catch (...) { -- qCCritical(log_gstreamer_backend) << "Exception during video overlay setup - continuing without embedding"; -+ qCCritical(log_gstreamer_videooverlaymanager) << "Exception during video overlay setup - continuing without embedding"; - #ifdef Q_OS_LINUX - if (display && old_handler) { - XSetErrorHandler(old_handler); -@@ -242,17 +242,17 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - if (gst_iterator_next(iter, &item) == GST_ITERATOR_OK) { - actualSink = GST_ELEMENT(g_value_get_object(&item)); - if (actualSink && GST_IS_VIDEO_OVERLAY(actualSink)) { -- qCDebug(log_gstreamer_backend) << "Found overlay-capable sink inside autovideosink"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Found overlay-capable sink inside autovideosink"; - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(actualSink), windowId); - // Use target widget size if available to set explicit render rectangle so scaling works - if (videoWidget) { - QSize widgetSize = videoWidget->size(); - if (widgetSize.width() > 0 && widgetSize.height() > 0) { - gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(actualSink), 0, 0, widgetSize.width(), widgetSize.height()); -- qCDebug(log_gstreamer_backend) << "Set render rectangle to widget size for autovideosink child sink:" << widgetSize; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Set render rectangle to widget size for autovideosink child sink:" << widgetSize; - if (g_object_class_find_property(G_OBJECT_GET_CLASS(actualSink), "force-aspect-ratio")) { - g_object_set(actualSink, "force-aspect-ratio", FALSE, NULL); -- qCDebug(log_gstreamer_backend) << "Disabled force-aspect-ratio on autovideosink child sink"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Disabled force-aspect-ratio on autovideosink child sink"; - } - } else { - gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(actualSink), 0, 0, -1, -1); -@@ -269,18 +269,18 @@ bool VideoOverlayManager::setupVideoOverlay(void* videoSinkPtr, WId windowId, QW - } - gst_iterator_free(iter); - } -- qCDebug(log_gstreamer_backend) << "autovideosink selected sink doesn't support overlay - video will display in separate window"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "autovideosink selected sink doesn't support overlay - video will display in separate window"; - return false; - } - -- qCWarning(log_gstreamer_backend) << "Sink does not support video overlay:" << sinkName; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Sink does not support video overlay:" << sinkName; - return false; - #else - Q_UNUSED(videoSinkPtr) - Q_UNUSED(windowId) - Q_UNUSED(videoWidget) - Q_UNUSED(graphicsVideoItem) -- qCDebug(log_gstreamer_backend) << "No in-process GStreamer - overlay unavailable"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "No in-process GStreamer - overlay unavailable"; - return false; - #endif - } -@@ -300,7 +300,7 @@ bool VideoOverlayManager::setupVideoOverlayForPipeline(void* pipeline, WId windo - gst_object_unref(videoSink); - return ok; - } -- qCWarning(log_gstreamer_backend) << "No video sink found in pipeline"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "No video sink found in pipeline"; - return false; - #else - Q_UNUSED(pipeline) -@@ -315,10 +315,10 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - ::VideoPane* videoPane, - bool &pendingFlag) - { -- qCDebug(log_gstreamer_backend) << "VideoOverlayManager: Completing pending overlay setup..."; -+ qCDebug(log_gstreamer_videooverlaymanager) << "VideoOverlayManager: Completing pending overlay setup..."; - - if (!pendingFlag || !pipeline) { -- qCDebug(log_gstreamer_backend) << "No pending setup or no pipeline"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "No pending setup or no pipeline"; - return false; - } - -@@ -326,7 +326,7 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - const bool isXcb = platform.contains("xcb", Qt::CaseInsensitive); - const bool hasXDisplay = !qgetenv("DISPLAY").isEmpty(); - if (!isXcb || !hasXDisplay) { -- qCWarning(log_gstreamer_backend) << "Skipping deferred overlay setup: platform is" << platform << "(DISPLAY set:" << hasXDisplay << ")"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Skipping deferred overlay setup: platform is" << platform << "(DISPLAY set:" << hasXDisplay << ")"; - pendingFlag = false; - return false; - } -@@ -335,7 +335,7 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - - if (videoPane) { - windowId = videoPane->getVideoOverlayWindowId(); -- qCDebug(log_gstreamer_backend) << "Completing overlay setup with VideoPane window ID:" << windowId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Completing overlay setup with VideoPane window ID:" << windowId; - } else if (graphicsVideoItem) { - if (graphicsVideoItem->scene()) { - QList views = graphicsVideoItem->scene()->views(); -@@ -344,21 +344,21 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - if (auto pane = qobject_cast(view)) { - if (pane->isDirectGStreamerModeEnabled() && pane->getOverlayWidget()) { - windowId = pane->getVideoOverlayWindowId(); -- qCDebug(log_gstreamer_backend) << "Completing overlay setup with VideoPane overlay widget window ID:" << windowId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Completing overlay setup with VideoPane overlay widget window ID:" << windowId; - } else { -- qCDebug(log_gstreamer_backend) << "VideoPane overlay widget still not ready"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "VideoPane overlay widget still not ready"; - return false; - } - } else { - windowId = view->winId(); -- qCDebug(log_gstreamer_backend) << "Completing overlay setup with graphics view window ID:" << windowId; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Completing overlay setup with graphics view window ID:" << windowId; - } - } else { -- qCWarning(log_gstreamer_backend) << "Graphics video item has no associated view"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Graphics video item has no associated view"; - return false; - } - } else { -- qCWarning(log_gstreamer_backend) << "Graphics video item has no scene"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Graphics video item has no scene"; - return false; - } - } -@@ -367,7 +367,7 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - GstElement* videoSink = gst_bin_get_by_name(GST_BIN(pipeline), "videosink"); - if (!videoSink) { - videoSink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY); -- if (videoSink) qCDebug(log_gstreamer_backend) << "Deferred path: found sink by overlay interface"; -+ if (videoSink) qCDebug(log_gstreamer_videooverlaymanager) << "Deferred path: found sink by overlay interface"; - } - - if (videoSink) { -@@ -384,14 +384,14 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - targetWidget = videoWidget; - } - if (targetWidget) { -- qCDebug(log_gstreamer_backend) << "Deferred: binding qt6videosink to QWidget" << targetWidget; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Deferred: binding qt6videosink to QWidget" << targetWidget; - g_object_set(G_OBJECT(videoSink), "widget", (gpointer)targetWidget, nullptr); - gst_object_unref(videoSink); - pendingFlag = false; -- qCDebug(log_gstreamer_backend) << "Deferred qt6videosink binding completed"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Deferred qt6videosink binding completed"; - return true; - } else { -- qCWarning(log_gstreamer_backend) << "Deferred: no target QWidget available to bind qt6videosink"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Deferred: no target QWidget available to bind qt6videosink"; - } - } - -@@ -399,30 +399,30 @@ bool VideoOverlayManager::completePendingOverlaySetup(void* pipeline, - const bool looksLikeXSink = sinkNameBA.contains("xvimage") || sinkNameBA.contains("ximage"); - - if (!supportsOverlay) { -- qCWarning(log_gstreamer_backend) << "Deferred overlay skipped: sink does not support overlay interface (" << sinkName << ")"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Deferred overlay skipped: sink does not support overlay interface (" << sinkName << ")"; - gst_object_unref(videoSink); - pendingFlag = false; - return false; - } - - if (!looksLikeXSink) { -- qCWarning(log_gstreamer_backend) << "Deferred overlay skipped: sink is not an X sink (" << sinkName << ") on platform" << QGuiApplication::platformName(); -+ qCWarning(log_gstreamer_videooverlaymanager) << "Deferred overlay skipped: sink is not an X sink (" << sinkName << ") on platform" << QGuiApplication::platformName(); - gst_object_unref(videoSink); - pendingFlag = false; - return false; - } - -- qCDebug(log_gstreamer_backend) << "Setting up deferred video overlay with window ID:" << windowId << "using sink" << sinkName; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Setting up deferred video overlay with window ID:" << windowId << "using sink" << sinkName; - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videoSink), windowId); - gst_object_unref(videoSink); - pendingFlag = false; -- qCDebug(log_gstreamer_backend) << "Deferred overlay setup completed successfully"; -+ qCDebug(log_gstreamer_videooverlaymanager) << "Deferred overlay setup completed successfully"; - return true; - } else { -- qCWarning(log_gstreamer_backend) << "Could not find video sink for deferred overlay setup"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Could not find video sink for deferred overlay setup"; - } - } else { -- qCWarning(log_gstreamer_backend) << "Still no valid window ID available for deferred overlay setup"; -+ qCWarning(log_gstreamer_videooverlaymanager) << "Still no valid window ID available for deferred overlay setup"; - } - - return false; diff --git a/backports/openterface-qt/51-openterface-permissions.rules b/backports/openterface-qt/51-openterface-permissions.rules deleted file mode 100644 index a74cfbd..0000000 --- a/backports/openterface-qt/51-openterface-permissions.rules +++ /dev/null @@ -1,2 +0,0 @@ -SUBSYSTEM=="usb", ATTRS{idVendor}=="534d", ATTRS{idProduct}=="2109", MODE="0660", GROUP="plugdev" -SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0660", GROUP="plugdev" diff --git a/backports/openterface-qt/APKBUILD b/backports/openterface-qt/APKBUILD deleted file mode 100644 index a96e328..0000000 --- a/backports/openterface-qt/APKBUILD +++ /dev/null @@ -1,73 +0,0 @@ -# Maintainer: Antoine Martin (ayakael) -pkgname=openterface-qt -pkgver=0.5.7 -pkgrel=0 -pkgdesc="Openterface Mini-KVM Host Application" -# armhf: missing qt6-qtmultimedia -# riscv64: missing libgtk-3 -arch="all !armhf !riscv64" -url="https://openterface.com/" -license="AGPL-3.0-only" -depends=" - gst-plugins-good-qt - hicolor-icon-theme - qt6-qtmultimedia-ffmpeg - " -makedepends=" - cmake - ffmpeg-dev - libgudev-dev - libjpeg-turbo-dev - libusb-dev - libx11-dev - libxv-dev - patchelf - qt6-qtbase-dev - qt6-qtmultimedia-dev - qt6-qtserialport-dev - samurai - v4l-utils-dev -" -install="$pkgname.post-install" -builddir="$srcdir"/Openterface_QT-$pkgver -options="!check" # No testsuite -source=" - $pkgname-$pkgver.tar.gz::https://github.com/TechxArtisanStudio/Openterface_QT/archive/$pkgver.tar.gz - openterfaceQT.desktop - 51-openterface-permissions.rules - 348_address-use-of-deleted-function.patch - 423_deduplicate-logging-categories-and-remove-backslashes.patch - use-system-libs.patch - " - -prepare() { - default_prepare - mkdir build && cd build - # OPENTERFACE_BUILD_STATIC: do not build vendored dependencies - cmake -DOPENTERFACE_BUILD_STATIC=OFF .. -} - -build() { - ninja -C build -} - -package() { - install -Dm755 "$builddir"/build/openterfaceQT "$pkgdir"/usr/bin/openterfaceQT - install -Dm644 "$srcdir"/51-openterface-permissions.rules "$pkgdir"/etc/udev/rules.d/51-openterface-permissions.rules - install -Dm644 "$srcdir"/openterfaceQT.desktop "$pkgdir"/usr/share/applications/openterfaceQT.desktop - install -Dm644 "$builddir"/images/icon_32.png "$pkgdir"/usr/share/icons/hicolor/32x32/apps/openterfaceQT.png - install -Dm644 "$builddir"/images/icon_64.png "$pkgdir"/usr/share/icons/hicolor/64x64/apps/openterfaceQT.png - install -Dm644 "$builddir"/images/icon_128.png "$pkgdir"/usr/share/icons/hicolor/128x128/apps/openterfaceQT.png - - # vanilla build does not set rpath, since it usually wants to use vendored libs - patchelf --set-rpath '/usr/lib' "$pkgdir"/usr/bin/openterfaceQT -} - -sha512sums=" -996415d6f7d3ed950901c380a0520ddab8c31e8d3c2e2bb3a5f631a5600cace6bcf6bf89871e4e4ef818009eeb08c448fd793e1e4758ecccf1e1a21ff04fd560 openterface-qt-0.5.7.tar.gz -e39cfa04cbcb59e8ba54110a28eff41854f73fa7c4baeeed5433907c79781946f12bd3a731763caa1d591e664eab0650bdbd2a844954baa12bb96a76a17c6e4f openterfaceQT.desktop -f50d721a6a2d1e0183c81e99230e91e127ee6c6f3243af1cff3e3cb78e2913ebab3346ec8b461a4710220d1ce2e12a7cc960ded6e0dc2def539375c6e737b647 51-openterface-permissions.rules -69b5556ec9e56792e848ea1ff9374e12e6901da821ecd9d6f2f521ea30f48e564c2cd0631fc1360acd6c8c6249cfa718d5baf7ed6929e1e92f63eeaea578bcb3 348_address-use-of-deleted-function.patch -47580d07a2d971ad2010e78373d1abbcbc05b3fbd3a7e466faed50dc9a0d632db30c0a7622e7324aeb0eb38d49e3241cb6cebc835f7adeed977b1dd7b48ea5f6 423_deduplicate-logging-categories-and-remove-backslashes.patch -22ecac74fe0923f39f538a5d587f8c100d9709631a1584bd20646e09dcf777cd3042670d08195626220f0494e5efa9549a299c5e1fd8c42f991ec5746b42cc86 use-system-libs.patch -" diff --git a/backports/openterface-qt/openterface-qt.post-install b/backports/openterface-qt/openterface-qt.post-install deleted file mode 100755 index b853907..0000000 --- a/backports/openterface-qt/openterface-qt.post-install +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -echo "Setup the dialout permission for Serial port." -echo "Run: sudo usermod -a -G video,plugdev \$USER" diff --git a/backports/openterface-qt/openterfaceQT.desktop b/backports/openterface-qt/openterfaceQT.desktop deleted file mode 100644 index 907976c..0000000 --- a/backports/openterface-qt/openterfaceQT.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=OpenterfaceQT -Exec=/usr/bin/openterfaceQT -Icon=openterfaceQT -Comment=OpenterfaceQT Application -Categories=Utility; diff --git a/backports/openterface-qt/use-system-libs.patch b/backports/openterface-qt/use-system-libs.patch deleted file mode 100644 index a220d5f..0000000 --- a/backports/openterface-qt/use-system-libs.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e0e8ea1..c861725 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -244,7 +244,7 @@ endif() - # Add XCB cursor library for static linking (Linux only) - Legacy support - if(UNIX AND NOT APPLE AND XCB_CURSOR_FOUND) - # This is redundant now but keeping for compatibility -- message(STATUS "XCB cursor already linked via static approach above") -+ target_link_libraries(openterfaceQT PRIVATE X11) - endif() - - # Add TurboJPEG if available -@@ -307,4 +307,4 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release") - endif() - endif() - --# Qt components already found above -\ No newline at end of file -+# Qt components already found above -diff --git a/cmake/FFmpeg.cmake b/cmake/FFmpeg.cmake -index ef0699e..660e765 100644 ---- a/cmake/FFmpeg.cmake -+++ b/cmake/FFmpeg.cmake -@@ -19,7 +19,7 @@ if(NOT DEFINED FFMPEG_PREFIX) - if(WIN32) - set(FFMPEG_PREFIX "C:/ffmpeg-static" CACHE PATH "FFmpeg installation directory") - else() -- set(FFMPEG_PREFIX "/opt/ffmpeg" CACHE PATH "FFmpeg installation directory") -+ set(FFMPEG_PREFIX "/usr" CACHE PATH "FFmpeg installation directory") - endif() - message(STATUS "Using default FFMPEG_PREFIX: ${FFMPEG_PREFIX}") - endif() -@@ -116,7 +116,7 @@ if(NOT FFMPEG_FOUND) - message(STATUS "FFmpeg search paths: ${FFMPEG_SEARCH_PATHS}") - foreach(SEARCH_PATH ${FFMPEG_SEARCH_PATHS}) - # For static builds, prefer .a files; check common lib directories -- set(LIB_EXTENSIONS ".a") -+ set(LIB_EXTENSIONS ".so") - - # Platform-specific library paths - if(WIN32) -diff --git a/cmake/GStreamer.cmake b/cmake/GStreamer.cmake -index 220e9f5..576535f 100644 ---- a/cmake/GStreamer.cmake -+++ b/cmake/GStreamer.cmake -@@ -316,10 +316,11 @@ else() - # Check for Qt6 plugin availability in system - message(STATUS "Checking for Qt6 GStreamer plugin in system...") - find_file(GSTREAMER_QT6_PLUGIN -- NAMES libgstqt6.so -+ NAMES libgstqml6.so - PATHS - /usr/lib/x86_64-linux-gnu/gstreamer-1.0 - /usr/lib/aarch64-linux-gnu/gstreamer-1.0 -+ /usr/lib/gstreamer-1.0 - /usr/local/lib/gstreamer-1.0 - NO_DEFAULT_PATH - ) -diff --git a/cmake/Resources.cmake b/cmake/Resources.cmake -index 2d28b89..e2009e3 100644 ---- a/cmake/Resources.cmake -+++ b/cmake/Resources.cmake -@@ -336,7 +336,7 @@ install(FILES ${CMAKE_SOURCE_DIR}/com.openterface.openterfaceQT.metainfo.xml - if(COMMAND qt_generate_deploy_app_script) - qt_generate_deploy_app_script( - TARGET openterfaceQT -- FILENAME_VARIABLE deploy_script -+ OUTPUT_SCRIPT deploy_script - NO_UNSUPPORTED_PLATFORM_ERROR - ) - install(SCRIPT ${deploy_script}) diff --git a/backports/perl-math-random-isaac-xs/APKBUILD b/backports/perl-math-random-isaac-xs/APKBUILD new file mode 100644 index 0000000..55f2632 --- /dev/null +++ b/backports/perl-math-random-isaac-xs/APKBUILD @@ -0,0 +1,47 @@ +# Automatically generated by apkbuild-cpan, template 2 +# Contributor: Timo Teräs +# Maintainer: Timo Teräs +pkgname=perl-math-random-isaac-xs +_pkgreal=Math-Random-ISAAC-XS +pkgver=1.004 +pkgrel=6 +pkgdesc="C implementation of the ISAAC PRNG algorithm" +url="https://metacpan.org/release/Math-Random-ISAAC-XS/" +arch="all" +license="unrestricted" +cpandepends="" +cpanmakedepends="perl-test-nowarnings" +cpancheckdepends="" +depends="$cpandepends" +makedepends="perl-dev perl-module-build $cpanmakedepends" +checkdepends="$cpancheckdepends" +subpackages="$pkgname-doc" +source="https://cpan.metacpan.org/authors/id/J/JA/JAWNSY/$_pkgreal-$pkgver.tar.gz" +builddir="$srcdir/$_pkgreal-$pkgver" + +prepare() { + default_prepare || return 1 + + cd "$builddir" + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + perl Build.PL installdirs=vendor || return 1 +} + +build() { + cd "$builddir" + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + ./Build +} + +package() { + cd "$builddir" + ./Build install destdir="$pkgdir" || return 1 + find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete +} + +check() { + cd "$builddir" + ./Build test +} + +sha512sums="40c46b5f247f585a407ef9f36b5874d9cf03ec05963a9d92d988ebd63daf1e37b1b51308845d4596f47b5ad7203953bcb7fbb421c905b526dbe99b246ccb4d87 Math-Random-ISAAC-XS-1.004.tar.gz" diff --git a/backports/perl-module-find/APKBUILD b/backports/perl-module-find/APKBUILD new file mode 100644 index 0000000..9893826 --- /dev/null +++ b/backports/perl-module-find/APKBUILD @@ -0,0 +1,39 @@ +# Automatically generated by apkbuild-cpan, template 1 +# Contributor: Francesco Colista +# Maintainer: Francesco Colista +pkgname=perl-module-find +_pkgreal=Module-Find +pkgver=0.16 +pkgrel=0 +pkgdesc="Find and use installed modules in a (sub)category" +url="https://metacpan.org/release/Module-Find" +arch="noarch" +license="GPL-1.0-or-later OR Artistic-1.0-Perl" +depends="perl" +subpackages="$pkgname-doc" +source="https://cpan.metacpan.org/authors/id/C/CR/CRENZ/Module-Find-$pkgver.tar.gz" + +builddir="$srcdir/$_pkgreal-$pkgver" + +prepare() { + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor +} + +build() { + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + make +} + +check() { + make test +} + +package() { + make DESTDIR="$pkgdir" install + find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete +} + +sha512sums=" +a0c935fd229320ce74052180571c0da9667dc87a717e039bec27120a8ac1552988352038efd1805d62ac40fcaf7985c44b6d9c56648b379f1ca0f03727e550bd Module-Find-0.16.tar.gz +" diff --git a/backports/php81-pecl-xmlrpc/APKBUILD b/backports/php81-pecl-xmlrpc/APKBUILD new file mode 100644 index 0000000..2d6c6b0 --- /dev/null +++ b/backports/php81-pecl-xmlrpc/APKBUILD @@ -0,0 +1,39 @@ +# Maintainer: Andy Postnikov +pkgname=php81-pecl-xmlrpc +_extname=xmlrpc +pkgver=1.0.0_rc3 +_pkgver=${pkgver/_rc/RC} +pkgrel=1 +pkgdesc="PHP 8.1 extension to write XML-RPC servers and clients - PECL" +url="https://pecl.php.net/package/xmlrpc" +arch="all" +license="PHP-3.01" +depends="php81-xml" +makedepends="php81-dev libxml2-dev" +source="php-pecl-$_extname-$pkgver.tar.gz::https://pecl.php.net/get/$_extname-$_pkgver.tgz" +builddir="$srcdir"/$_extname-$_pkgver + +build() { + phpize81 + ./configure --prefix=/usr --with-php-config=/usr/bin/php-config81 + make +} + +check() { + make NO_INTERACTION=1 REPORT_EXIT_STATUS=1 test TESTS=--show-diff \ + PHP_TEST_SHARED_EXTENSIONS=" \ + -d extension=/usr/lib/php81/modules/xml.so \ + -d extension=modules/$_extname.so" + php81 -d extension=modules/$_extname.so --ri $_extname +} + +package() { + make INSTALL_ROOT="$pkgdir" install + local _confdir="$pkgdir"/etc/php81/conf.d + install -d $_confdir + echo "extension=$_extname" > $_confdir/$_extname.ini +} + +sha512sums=" +aa8e24d5a732b175adb9870357991d48ead046faed89e579eb63afe06c7ef20af9de29e2d70e71e54e5a15ee37265f69a7d52b39ef2465ced93ba818c1f7e9c1 php-pecl-xmlrpc-1.0.0_rc3.tar.gz +" diff --git a/backports/php82-pecl-xmlrpc/APKBUILD b/backports/php82-pecl-xmlrpc/APKBUILD new file mode 100644 index 0000000..cd50550 --- /dev/null +++ b/backports/php82-pecl-xmlrpc/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Andy Postnikov +pkgname=php82-pecl-xmlrpc +_extname=xmlrpc +pkgver=1.0.0_rc3 +_pkgver=${pkgver/_rc/RC} +pkgrel=1 +pkgdesc="PHP 8.2 extension to write XML-RPC servers and clients - PECL" +url="https://pecl.php.net/package/xmlrpc" +arch="all" +license="PHP-3.01" +depends="php82-xml" +options="!check" # Failure +makedepends="php82-dev libxml2-dev" +source="php-pecl-$_extname-$pkgver.tar.gz::https://pecl.php.net/get/$_extname-$_pkgver.tgz" +builddir="$srcdir"/$_extname-$_pkgver + +build() { + phpize82 + ./configure --prefix=/usr --with-php-config=/usr/bin/php-config82 + make +} + +check() { + make NO_INTERACTION=1 REPORT_EXIT_STATUS=1 test TESTS=--show-diff \ + PHP_TEST_SHARED_EXTENSIONS=" \ + -d extension=/usr/lib/php82/modules/xml.so \ + -d extension=modules/$_extname.so" + php82 -d extension=modules/$_extname.so --ri $_extname +} + +package() { + make INSTALL_ROOT="$pkgdir" install + local _confdir="$pkgdir"/etc/php82/conf.d + install -d $_confdir + echo "extension=$_extname" > $_confdir/$_extname.ini +} + +sha512sums=" +aa8e24d5a732b175adb9870357991d48ead046faed89e579eb63afe06c7ef20af9de29e2d70e71e54e5a15ee37265f69a7d52b39ef2465ced93ba818c1f7e9c1 php-pecl-xmlrpc-1.0.0_rc3.tar.gz +" diff --git a/backports/py3-a2wsgi/APKBUILD b/backports/py3-a2wsgi/APKBUILD new file mode 100644 index 0000000..3c9dcd4 --- /dev/null +++ b/backports/py3-a2wsgi/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Patrycja Rosa +pkgname=py3-a2wsgi +pkgver=1.8.0 +pkgrel=0 +pkgdesc="Convert WSGI app to ASGI app or ASGI app to WSGI app" +url="https://github.com/abersheeran/a2wsgi" +arch="noarch" +license="Apache-2.0" +depends="python3" +makedepends="py3-gpep517 py3-pdm-backend py3-wheel" +checkdepends="py3-pytest py3-httpx py3-pytest-asyncio" +subpackages="$pkgname-pyc" +source="https://github.com/abersheeran/a2wsgi/archive/refs/tags/v$pkgver/a2wsgi-$pkgver.tar.gz" +builddir="$srcdir/a2wsgi-$pkgver" + +case "$CARCH" in + # test suite blocked by py3-httpx + armhf|ppc64le) options="!check" ;; +esac + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + .testenv/bin/python3 -m pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +0c3a45ea279e2c104a52a7b70780de7a055312e857b712b534020a2c9f43b62b5d60639b5ce721c5e3717f0315c58496134813772613135b22111905df10d5ad a2wsgi-1.8.0.tar.gz +" diff --git a/backports/py3-a2wsgi/pdm-backend.patch b/backports/py3-a2wsgi/pdm-backend.patch new file mode 100644 index 0000000..c768253 --- /dev/null +++ b/backports/py3-a2wsgi/pdm-backend.patch @@ -0,0 +1,12 @@ +diff --git a/pyproject.toml b/pyproject.toml +index 2e67514..c7f3b40 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -35,5 +35,5 @@ benchmark = [ + includes = ["a2wsgi"] + + [build-system] +-build-backend = "pdm.pep517.api" +-requires = ["pdm-pep517>=1.0.0"] ++build-backend = "pdm.backend" ++requires = ["pdm-backend>=1.0.0"] diff --git a/backports/py3-aiodns/APKBUILD b/backports/py3-aiodns/APKBUILD new file mode 100644 index 0000000..57eae8c --- /dev/null +++ b/backports/py3-aiodns/APKBUILD @@ -0,0 +1,29 @@ +# Contributor: Sam Whited +# Maintainer: Sam Whited +pkgname=py3-aiodns +_pkgname=aiodns +pkgver=3.0.0 +pkgrel=2 +pkgdesc="A library for performing asynchronous DNS resolutions using pycares." +url="https://pypi.org/project/aiosasl/" +arch="all" +license="MIT" +depends="python3 py3-pycares" +makedepends="py3-setuptools" +subpackages="$pkgname-doc $pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir/$_pkgname-$pkgver" +options="!check" # tests not included in source package. + +build() { + python3 setup.py build +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" + install -Dm644 LICENSE README.rst -t "$pkgdir"/usr/share/licenses/$pkgname +} + +sha512sums=" +8c1016f3b0cb461e70e9a55034f9ad3b3db705a845bf20bb6503c7a5d592b4c5d2e8ddc60b375c5fafdc559dc4566736f4c93f26710be2dcbd181284ef039825 aiodns-3.0.0.tar.gz +" diff --git a/backports/py3-amqp/APKBUILD b/backports/py3-amqp/APKBUILD new file mode 100644 index 0000000..458bb5b --- /dev/null +++ b/backports/py3-amqp/APKBUILD @@ -0,0 +1,37 @@ +# Maintainer: Drew DeVault +pkgname=py3-amqp +pkgver=5.1.1 +pkgrel=2 +pkgdesc="an AMQP implementation" +url="https://pypi.org/project/amqp/" +arch="noarch" +license="BSD-3-Clause" +depends="py3-vine python3" +makedepends="py3-setuptools py3-gpep517 py3-wheel" +checkdepends="py3-vine py3-case py3-nose py2py3-mock" +subpackages="$pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/a/amqp/amqp-$pkgver.tar.gz" +options="!check" # requires a running rabbitmq sever +builddir="$srcdir"/amqp-$pkgver + +replaces="py-amqp" # Backwards compatibility +provides="py-amqp=$pkgver-r$pkgrel" # Backwards compatibility + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 setup.py test +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +f549a85e4f04543dd8e844edb68350ca185de9259aa896af31ae5ee5dfdfe73f904d95821c403dc797c7f3ada17ce6bff4e0fd9fcdf2abc1b33a94d079f99179 amqp-5.1.1.tar.gz +" diff --git a/backports/py3-apsw/APKBUILD b/backports/py3-apsw/APKBUILD deleted file mode 100644 index 62e95a7..0000000 --- a/backports/py3-apsw/APKBUILD +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor: Francesco Colista -# Maintainer: Francesco Colista -pkgname=py3-apsw -_pkgname=apsw -pkgver=3.50.4.0 -pkgrel=0 -pkgdesc="Another Python SQLite Wrapper" -url="https://github.com/rogerbinns/apsw" -arch="all" -license="Zlib" -depends="python3" -makedepends=" - python3-dev - py3-gpep517 - py3-setuptools - py3-wheel - sqlite-dev - " -subpackages="$pkgname-pyc" -source="$pkgname-$pkgver.zip::https://github.com/rogerbinns/apsw/releases/download/$pkgver/apsw-$pkgver.zip - detect-sqlite-config.patch - " - -builddir="$srcdir/$_pkgname-$pkgver" - -build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 -} - -check() { - python3 -m venv --clear --without-pip --system-site-packages .testenv - .testenv/bin/python3 -m installer .dist/*.whl - .testenv/bin/python3 setup.py build_test_extension test -} - -package() { - python3 -m installer -d "$pkgdir" \ - .dist/*.whl -} - -sha512sums=" -71db63b0a7f550c9a5d3f112d47c24953472cc6555f0b57198428997d5cf5acf73629f2da8d5d53a2473067ba19d4b655cce467a5e2267e5bd6e8cf0d9883579 py3-apsw-3.50.4.0.zip -8f3957bd6fecb5660a7cab367043e4ccdacd87d8963bbe41cc3d525265de28f08aa207099658d785be29c5c90b818c1418f766995cd780d02b8e36252a389758 detect-sqlite-config.patch -" diff --git a/backports/py3-apsw/detect-sqlite-config.patch b/backports/py3-apsw/detect-sqlite-config.patch deleted file mode 100644 index 4750250..0000000 --- a/backports/py3-apsw/detect-sqlite-config.patch +++ /dev/null @@ -1,8 +0,0 @@ -diff --git a/setup.apsw b/setup.apsw -index 68dedb9..3ceb10b 100644 ---- a/setup.apsw -+++ b/setup.apsw -@@ -1 +1,3 @@ - # You can put ini format directives here in addition to command line flags -+[build_ext] -+use_system_sqlite_config = True diff --git a/backports/py3-billiard/APKBUILD b/backports/py3-billiard/APKBUILD new file mode 100644 index 0000000..126becf --- /dev/null +++ b/backports/py3-billiard/APKBUILD @@ -0,0 +1,42 @@ +# Maintainer: Drew DeVault +pkgname=py3-billiard +pkgver=3.6.4.0 +pkgrel=4 +pkgdesc="a message queue abstraction layer" +url="https://pypi.org/project/billiard/" +arch="noarch" +license="BSD-3-Clause" +makedepends="py3-setuptools" +checkdepends="py3-psutil py3-pytest py3-nose py3-case" +subpackages="$pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/b/billiard/billiard-$pkgver.tar.gz + $pkgname-py311.patch::https://github.com/celery/billiard/commit/ff8efc5d689ef048f5203593390f1ff6a052a5d5.patch + " +builddir="$srcdir/billiard-$pkgver" + +replaces="py-billiard" # Backwards compatibility +provides="py-billiard=$pkgver-r$pkgrel" # Backwards compatibility + +build() { + python3 setup.py build +} + +check() { + # Uses wrong name for 'queue' module. + # Uses internal 'test' and 'test.support' modules. + rm -f t/integration/tests/test_multiprocessing.py + + # Windows only + rm -f t/unit/test_win32.py + + py.test-3 +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" +} + +sha512sums=" +9f2a44024e45c4e7667472a0a3ade7caae755ec7c163929433f818e4b87165218b9cc9545bdee2254e7159c206e525306e383d38906b00fd5428bd1616c39b8f billiard-3.6.4.0.tar.gz +589f57ce516cec2740cff6f06f396caac856b75ff4c7dc022c6b1b60f0d97f590667ff3c0ee4887926556c073241d89a4734658d35dcfb41fc71117fdc2c8426 py3-billiard-py311.patch +" diff --git a/backports/py3-case/APKBUILD b/backports/py3-case/APKBUILD new file mode 100644 index 0000000..9b3094d --- /dev/null +++ b/backports/py3-case/APKBUILD @@ -0,0 +1,32 @@ +# Maintainer: Drew DeVault +pkgname=py3-case +_pyname=case +pkgver=1.5.3 +pkgrel=6 +pkgdesc="Python unittest utilities" +url="https://github.com/celery/case/" +arch="noarch" +license="BSD-3-Clause" +depends="python3 py3-six" +makedepends="py3-setuptools" +checkdepends="py3-coverage py3-mock py3-nose" +_pypiprefix="${_pyname%${_pyname#?}}" +subpackages="$pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/$_pypiprefix/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir/$_pyname-$pkgver" + +replaces="py-case" # Backwards compatibility +provides="py-case=$pkgver-r$pkgrel" # Backwards compatibility + +build() { + python3 setup.py build +} + +check() { + python3 setup.py test +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" +} +sha512sums="ae98a571c282f80c685c42ab1dc578847fe88cf8cd07faff505a8df8e3282a602908a8780ab88b36851e3ee6f3c178405e5c50776fd0f49fcc990087575f2958 case-1.5.3.tar.gz" diff --git a/backports/py3-cbor2/APKBUILD b/backports/py3-cbor2/APKBUILD new file mode 100644 index 0000000..3266f84 --- /dev/null +++ b/backports/py3-cbor2/APKBUILD @@ -0,0 +1,49 @@ +# Contributor: Marian Buschsieweke +# Maintainer: Marian Buschsieweke +pkgname=py3-cbor2 +pkgver=5.5.0 +pkgrel=0 +pkgdesc="encoding and decoding for CBOR (RFC 8949)" +url="https://github.com/agronholm/cbor2" +arch="all" +license="MIT" +depends=" + python3 + " +makedepends=" + py3-gpep517 + py3-setuptools + py3-setuptools_scm + py3-wheel + python3-dev + " +checkdepends=" + py3-hypothesis + py3-pytest + py3-pytest-cov + py3-tomli + " +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/c/cbor2/cbor2-$pkgver.tar.gz" +builddir="$srcdir/"cbor2-$pkgver + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + .testenv/bin/python3 -m pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +64b9ef0e358ac02113f85a2e633ed52900c4d5d6c89f889d9322f181e29fbdf9462663b5eaec7a255d5e6d47c82c4902cb7ff56999251c5ec070c7b610e615b3 py3-cbor2-5.5.0.tar.gz +" diff --git a/backports/py3-codespell/APKBUILD b/backports/py3-codespell/APKBUILD new file mode 100644 index 0000000..3eba852 --- /dev/null +++ b/backports/py3-codespell/APKBUILD @@ -0,0 +1,45 @@ +# Contributor: Marian Buschsieweke +# Maintainer: Marian Buschsieweke +pkgname=py3-codespell +_pkgname=${pkgname#py3-} +pkgver=2.2.6 +pkgrel=0 +pkgdesc="Fix common misspellings in text files, primarily source code" +url="https://github.com/codespell-project/codespell/" +arch="noarch" +license="GPL-2.0-only" +makedepends=" + py3-gpep517 + py3-setuptools + py3-setuptools_scm + py3-wheel + " +checkdepends="py3-pytest-cov" +depends="py3-chardet" +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/codespell-project/codespell/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver + +build() { + SETUPTOOLS_SCM_PRETEND_VERSION=$pkgver \ + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + + # tests want to run bin/codespell + PATH="$builddir/.testenv/bin:$PATH" .testenv/bin/python3 -m pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +37a6fbcf196447e8204a973499c6b3f7efda67e3caaaa707897da438c602834f91ca49b95020d2c03dcb95528c03451a2d9cfe145b2a24e88615c4a5418a4d2b py3-codespell-2.2.6.tar.gz +" diff --git a/backports/py3-daemon/APKBUILD b/backports/py3-daemon/APKBUILD new file mode 100644 index 0000000..6414d62 --- /dev/null +++ b/backports/py3-daemon/APKBUILD @@ -0,0 +1,36 @@ +# Contributor: Noel Kuntze +# Maintainer: Noel Kuntze +pkgname=py3-daemon +pkgver=2.3.2 +pkgrel=2 +pkgdesc="Library to implement a well-behaved Unix daemon process" +url="https://pagure.io/python-daemon" +options="!check" # Has lots of dependencies +arch="noarch" +license="Apache-2.0 AND GPL-3.0-or-later" +depends="py3-setuptools py3-lockfile" +makedepends="py3-docutils" +subpackages="$pkgname-pyc" +source="https://pypi.io/packages/source/p/python-daemon/python-daemon-$pkgver.tar.gz" +builddir="$srcdir/python-daemon-$pkgver" + +prepare() { + default_prepare + + # Remove unnecessary dependency for building, twine is + # required for uploading the package to pypi which we don't + # do + sed -e '/twine/d' -i setup.py +} + +build() { + python3 setup.py build +} + +package() { + python3 setup.py install --root="$pkgdir" +} + +sha512sums=" +d9f6e6c376a496fae96bd9efed0a56d00a137617a3d1d5ef74802ef176bc813bb1d49bbb9164cdbec03213529f944b32b257bcc64283abfa4a3522ff00826bfd python-daemon-2.3.2.tar.gz +" diff --git a/backports/py3-dateparser/APKBUILD b/backports/py3-dateparser/APKBUILD new file mode 100644 index 0000000..99c4bf3 --- /dev/null +++ b/backports/py3-dateparser/APKBUILD @@ -0,0 +1,28 @@ +# Maintainer: Hoang Nguyen +pkgname=py3-dateparser +_pyname=${pkgname#py3-} +pkgver=1.1.8 +pkgrel=1 +pkgdesc="Python parser for human readable dates" +url="https://github.com/scrapinghub/dateparser" +arch="noarch" +license="BSD-3-Clause" +depends="python3 py3-dateutil py3-regex py3-tz py3-tzlocal" +makedepends="py3-setuptools" +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/scrapinghub/dateparser/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir/$_pyname-$pkgver" +# Requires py3-langdetect and py3-fasttext, which are not in the repository +options="!check" + +build() { + python3 setup.py build +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" +} + +sha512sums=" +89761427ab0bd194f74d5458930dd3bc01cf654a535547b3bdde651c766d4222d1a9ddc0986c3659d1b2de3a200d6b7dccc227578efabdc208ff98d4f547323a py3-dateparser-1.1.8.tar.gz +" diff --git a/backports/py3-django-oauth-toolkit/APKBUILD b/backports/py3-django-oauth-toolkit/APKBUILD new file mode 100644 index 0000000..3dfdc7c --- /dev/null +++ b/backports/py3-django-oauth-toolkit/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Celeste +# Maintainer: Celeste +pkgname=py3-django-oauth-toolkit +pkgver=2.3.0 +pkgrel=0 +pkgdesc="OAuth2 Provider for Django" +url="https://django-oauth-toolkit.readthedocs.io/" +arch="noarch" +license="BSD-2-Clause-Views" +depends=" + py3-django + py3-jwcrypto + py3-oauthlib + py3-requests + " +makedepends=" + py3-gpep517 + py3-setuptools + py3-wheel + " +checkdepends=" + py3-django-rest-framework + py3-pytest-cov + py3-pytest-django + py3-pytest-forked + py3-pytest-mock + py3-pytest-xdist + py3-tz + " +subpackages="$pkgname-pyc" +source="https://github.com/jazzband/django-oauth-toolkit/archive/$pkgver/py3-django-oauth-toolkit-$pkgver.tar.gz" +builddir="$srcdir/django-oauth-toolkit-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + DJANGO_SETTINGS_MODULE=tests.settings \ + .testenv/bin/python3 -m pytest -n auto --forked +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +6e4701210300e3e04f85a38e3461daebed7f5d305e8d11fc60a31a715f43d9fc2eed50cf5ff381e6ce11dca479a7dadfbdfacab37e06d88a674b872a50c1a9d1 py3-django-oauth-toolkit-2.3.0.tar.gz +" diff --git a/backports/py3-flask-httpauth/APKBUILD b/backports/py3-flask-httpauth/APKBUILD deleted file mode 100644 index 7cbc2de..0000000 --- a/backports/py3-flask-httpauth/APKBUILD +++ /dev/null @@ -1,39 +0,0 @@ -# Contributor: Fabian Affolter -# Maintainer: Fabian Affolter -pkgname=py3-flask-httpauth -pkgver=4.8.0 -pkgrel=3 -pkgdesc="Basic and Digest HTTP authentication for Flask routes" -url="https://pypi.org/project/Flask-HTTPAuth" -arch="noarch" -license="MIT" -depends="py3-flask python3" -makedepends="py3-gpep517 py3-setuptools py3-wheel" -checkdepends="py3-pytest py3-pytest-asyncio py3-asgiref" -subpackages="$pkgname-pyc" -source="https://files.pythonhosted.org/packages/source/F/Flask-HTTPAuth/Flask-HTTPAuth-$pkgver.tar.gz" -builddir="$srcdir"/Flask-HTTPAuth-$pkgver - -replaces="py-flask-httpauth" # Backwards compatibility -provides="py-flask-httpauth=$pkgver-r$pkgrel" # Backwards compatibility - -build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 -} - -check() { - python3 -m venv --clear --without-pip --system-site-packages .testenv - .testenv/bin/python3 -m installer .dist/*.whl - .testenv/bin/python3 -m pytest -} - -package() { - python3 -m installer -d "$pkgdir" \ - .dist/flask_httpauth*.whl -} - -sha512sums=" -15878f45faf6bdde43d7b588539b044d621ba1ba590880e3d0a3bccf4e9bd04b898b3372775e99577b7e7955c4b6d2d7cc80df19ba30415c6b7c1d3183b7e5f4 Flask-HTTPAuth-4.8.0.tar.gz -" diff --git a/backports/py3-flask-limiter/APKBUILD b/backports/py3-flask-limiter/APKBUILD index cd15f22..bd9df29 100644 --- a/backports/py3-flask-limiter/APKBUILD +++ b/backports/py3-flask-limiter/APKBUILD @@ -1,7 +1,7 @@ # Contributor: lauren n. liberda -maintainer="lauren n. liberda " +# Maintainer: lauren n. liberda pkgname=py3-flask-limiter -pkgver=3.10.1 +pkgver=3.5.0 pkgrel=0 pkgdesc="Rate Limiting extension for Flask" url="https://github.com/alisaifee/flask-limiter" @@ -14,7 +14,7 @@ depends=" py3-rich python3 " -makedepends="py3-setuptools py3-gpep517" +makedepends="py3-setuptools" checkdepends=" py3-flask-restful py3-flask-restx @@ -23,6 +23,7 @@ checkdepends=" py3-pytest py3-pytest-cov " +options="!check" # tests depend on unpackaged modules subpackages="$pkgname-pyc" source=" https://github.com/alisaifee/flask-limiter/archive/refs/tags/$pkgver/flask-limiter-$pkgver.tar.gz @@ -30,26 +31,20 @@ source=" our-std-is-good-enough.patch " builddir="$srcdir/flask-limiter-$pkgver" -options="!check" # tests depend on unpackaged modules build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 + python3 setup.py build } check() { - python3 -m venv --clear --without-pip --system-site-packages .testenv - gpep517 install-wheel --destdir .testenv --prefix '' .dist/*.whl - .testenv/bin/python3 -m pytest + pytest } package() { - gpep517 install-wheel --destdir "$pkgdir" \ - .dist/*.whl + python3 setup.py install --prefix=/usr --root="$pkgdir" } sha512sums=" -a0d3af6f93d4283309d6df46ddb7fed4c358bbc712c2bd9e6897362c6d086c395cb9587c3d9da283ad757b574fd8c09d909f3c4b76d02ae8aade3e61dbea6aa0 flask-limiter-3.10.1.tar.gz +f97fd830fd0bbb2186c82451643413420be93872ed17d71d20c830a76ec3aee999bcda3a07b9d27d4602ef5fcd33f78888dc5d75c220eae5cb83ef02853151e6 flask-limiter-3.5.0.tar.gz 1b90e9134076cda249695d5ea741db9d205a2ae452c7d6edfe01eb37a221ce6f64b0e8ddcdbbee9b0e0fb16a28e5eabf14f1c1e41e965c7e3b93ea4f42caf553 our-std-is-good-enough.patch " diff --git a/backports/py3-flask-principal/APKBUILD b/backports/py3-flask-principal/APKBUILD new file mode 100644 index 0000000..0043b92 --- /dev/null +++ b/backports/py3-flask-principal/APKBUILD @@ -0,0 +1,33 @@ +# Contributor: Fabian Affolter +# Maintainer: Fabian Affolter +pkgname=py3-flask-principal +_pkgname=flask-principal +pkgver=0.4.0 +pkgrel=6 +pkgdesc="Flask Identity management" +url="https://pythonhosted.org/Flask-Principal/" +arch="noarch" +license="MIT" +depends="python3 py3-blinker py3-flask" +makedepends="py3-setuptools" +checkdepends="py3-nose" +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/mattupstate/flask-principal/archive/$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver + +replaces="py-flask-principal" # Backwards compatibility +provides="py-flask-principal=$pkgver-r$pkgrel" # Backwards compatibility + +build() { + python3 setup.py build +} + +check() { + nosetests +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" +} + +sha512sums="ed8cb28c4e8d936de96db0bf9f7cb45b253dc204c4b8f8dd8022ef1552592ff6324b4a33d3ee862794a6e20eb8c32a0365e7b9397d427da5022c5ded3dfa308a py3-flask-principal-0.4.0.tar.gz" diff --git a/backports/py3-fuzzywuzzy/APKBUILD b/backports/py3-fuzzywuzzy/APKBUILD new file mode 100644 index 0000000..1c0c382 --- /dev/null +++ b/backports/py3-fuzzywuzzy/APKBUILD @@ -0,0 +1,32 @@ +# Contributor: Galen Abell +# Maintainer: Galen Abell +pkgname=py3-fuzzywuzzy +_pyname=fuzzywuzzy +pkgver=0.18.0 +pkgrel=5 +pkgdesc="Fuzzy string matching in python" +url="https://github.com/seatgeek/fuzzywuzzy" +arch="noarch" +license="GPL-2.0-only" +depends="python3 py3-levenshtein" +makedepends="py3-setuptools" +checkdepends="py3-pytest py3-pycodestyle py3-hypothesis" +subpackages="$pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/${_pyname%${_pyname#?}}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir/$_pyname-$pkgver" + +build() { + python3 setup.py build +} + +check() { + PYTHONPATH="$PWD/build/lib" pytest -v +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" +} + +sha512sums=" +4a21ea67278fa525842d48fed8db666d00eae6d13254e8844d11f63b47c3a305b3cac760f28c24c6347aebcf73e96180e0a7cfba29c75f01ece2f7751e0398c5 fuzzywuzzy-0.18.0.tar.gz +" diff --git a/backports/py3-gitlab/APKBUILD b/backports/py3-gitlab/APKBUILD new file mode 100644 index 0000000..28ba7f9 --- /dev/null +++ b/backports/py3-gitlab/APKBUILD @@ -0,0 +1,47 @@ +# Maintainer: Hoang Nguyen +pkgname=py3-gitlab +_pyname=${pkgname/py3/python} +pkgver=4.1.1 +pkgrel=0 +pkgdesc="Python wrapper for Gitlab's API" +url="https://github.com/python-gitlab/python-gitlab" +arch="noarch" +license="LGPL-3.0-or-later" +depends="python3 py3-requests py3-requests-toolbelt" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + py3-sphinx + py3-sphinxcontrib-autoprogram + py3-myst-parser + " +checkdepends="py3-pytest py3-responses py3-build" +subpackages="$pkgname-doc $pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/python-gitlab/python-gitlab/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir/$_pyname-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 + sphinx-build -W -b man docs/ man/ +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + .testenv/bin/python3 -m pytest --ignore=tests/functional/ +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl + install -Dm644 man/$_pyname.1 \ + "$pkgdir"/usr/share/man/man1/$_pyname.1 +} + +sha512sums=" +a536204fde999f570156498fffbdf357727279492740989aa02e2747473a8f492136a2eaff5a0c90ffc82081879d9b75891c76c6fcd00b6a53b81a8f0fd20045 py3-gitlab-4.1.1.tar.gz +" diff --git a/backports/py3-html5-parser/APKBUILD b/backports/py3-html5-parser/APKBUILD deleted file mode 100644 index 45e1415..0000000 --- a/backports/py3-html5-parser/APKBUILD +++ /dev/null @@ -1,41 +0,0 @@ -# Maintainer: Cowington Post -pkgname=py3-html5-parser -pkgver=0.4.12 -pkgrel=1 -pkgdesc="Fast C based HTML 5 parsing for python" -url="https://github.com/kovidgoyal/html5-parser" -arch="all" -license="Apache-2.0" -depends="py3-lxml py3-chardet" -makedepends=" - libxml2-dev - py3-gpep517 - py3-setuptools - py3-wheel - python3-dev - " -checkdepends="py3-beautifulsoup4" -subpackages="$pkgname-pyc" -source="https://github.com/kovidgoyal/html5-parser/archive/v$pkgver/py3-html5-parser-$pkgver.tar.gz" -builddir="$srcdir/html5-parser-$pkgver" - -build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 -} - -check() { - python3 -m venv --clear --without-pip --system-site-packages .testenv - .testenv/bin/python3 -m installer .dist/*.whl - .testenv/bin/python3 setup.py test -} - -package() { - python3 -m installer -d "$pkgdir" \ - .dist/*.whl -} - -sha512sums=" -d2c031225b74d01a1ae3455837ac09e9afad8a4ec6ab1b8f66cbea8a86188db271a72570ef06e05ac56d369b41d97fc6f382455e25ca346a1897f62a3696a252 py3-html5-parser-0.4.12.tar.gz -" diff --git a/backports/py3-httptools/APKBUILD b/backports/py3-httptools/APKBUILD new file mode 100644 index 0000000..21e2edc --- /dev/null +++ b/backports/py3-httptools/APKBUILD @@ -0,0 +1,31 @@ +# Contributor: Michał Polański +# Maintainer: Michał Polański +pkgname=py3-httptools +pkgver=0.6.1 +pkgrel=0 +pkgdesc="Fast HTTP parser" +url="https://github.com/MagicStack/httptools" +license="MIT" +arch="all" +makedepends="py3-setuptools python3-dev cython http-parser-dev llhttp-dev" +checkdepends="py3-pytest py3-aiohttp py3-openssl py3-psutil" +subpackages="$pkgname-pyc" +source="https://github.com/MagicStack/httptools/archive/v$pkgver/py3-httptools-$pkgver.tar.gz" +builddir="$srcdir/httptools-$pkgver" + +build() { + python3 setup.py build build_ext --inplace \ + --use-system-http-parser --use-system-llhttp +} + +check() { + PYTHONPATH="$(echo "$PWD"/build/lib.linux-*)" pytest +} + +package() { + python3 setup.py install --root="$pkgdir" --skip-build +} + +sha512sums=" +28dc7e91dd15d9b26b1136428b8de2aaaaa3746d40aafce8e4f8ee68ec4b7f7e95a2677904810e34cd2aa1dd3738c43eef7497cbb751648d41929dc38927c426 py3-httptools-0.6.1.tar.gz +" diff --git a/backports/py3-jwcrypto/APKBUILD b/backports/py3-jwcrypto/APKBUILD new file mode 100644 index 0000000..fa4fc1e --- /dev/null +++ b/backports/py3-jwcrypto/APKBUILD @@ -0,0 +1,37 @@ +# Contributor: prspkt +# Maintainer: prspkt +pkgname=py3-jwcrypto +_pkgname=jwcrypto +pkgver=1.5.0 +pkgrel=1 +pkgdesc="Python module implementing JOSE Web standards" +url="https://github.com/latchset/jwcrypto" +arch="noarch" +license="LGPL-3.0-only" +depends="python3 py3-deprecated py3-cryptography" +makedepends="py3-gpep517 py3-setuptools py3-wheel" +checkdepends="py3-pytest" +subpackages="$pkgname-doc $pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir/$_pkgname-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + .testenv/bin/python3 -m pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +8cb638203de32c5d63cc567069fc0ccf2195bb9a1f9783b747e7b77d38fb01d9512e82406f925010f70e4b7e73c8d699e0c32c5c89ee71cb99dd594a7e84c47e jwcrypto-1.5.0.tar.gz +" diff --git a/backports/py3-kombu/APKBUILD b/backports/py3-kombu/APKBUILD new file mode 100644 index 0000000..0b16369 --- /dev/null +++ b/backports/py3-kombu/APKBUILD @@ -0,0 +1,41 @@ +# Contributor: Stefan Wagner +# Maintainer: Drew DeVault +pkgname=py3-kombu +pkgver=5.2.4 +pkgrel=2 +pkgdesc="a message queue abstraction layer" +options="!check" # 3 Redis tests fail +url="https://pypi.org/project/kombu/" +arch="noarch !s390x" # Limited by py3-dill +license="BSD-3-Clause" +depends="py3-amqp py3-vine" +makedepends="py3-setuptools py3-gpep517 py3-wheel" +checkdepends="py3-pyro4 py3-case py3-nose py3-mock py3-tz py3-pytest py3-sqlalchemy py3-fakeredis" +subpackages="$pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/k/kombu/kombu-$pkgver.tar.gz + fix-requirements.patch + " +builddir="$srcdir/kombu-$pkgver" + +replaces="py-kombu" # Backwards compatibility +provides="py-kombu=$pkgver-r$pkgrel" # Backwards compatibility + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 setup.py test +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +695813bee71d627649e772b45b25494784a6a81bcad92331160705e34d8b2268fa90629983ebcfd04ec23208508d422f1834cc56895532911602d58ec0090a03 kombu-5.2.4.tar.gz +d296eba67b77d6a10176714facc45b3119a3c9dac1868cc281eea7cf3d0a6fceb4584836aea188db87eae3cae0f344a0f399e2fad248706c608ff3b1c28b3139 fix-requirements.patch +" diff --git a/backports/py3-kombu/fix-requirements.patch b/backports/py3-kombu/fix-requirements.patch new file mode 100644 index 0000000..6c69bf6 --- /dev/null +++ b/backports/py3-kombu/fix-requirements.patch @@ -0,0 +1,10 @@ +diff --git a/requirements/test.txt b/requirements/test.txt +index 9b8ca32..dd360da 100644 +--- a/requirements/test.txt ++++ b/requirements/test.txt +@@ -1,4 +1,4 @@ +-pytz>dev ++pytz + pytest~=7.0.1 + pytest-sugar + Pyro4 diff --git a/backports/py3-levenshtein/APKBUILD b/backports/py3-levenshtein/APKBUILD new file mode 100644 index 0000000..486f4c1 --- /dev/null +++ b/backports/py3-levenshtein/APKBUILD @@ -0,0 +1,45 @@ +# Contributor: Galen Abell +# Maintainer: Galen Abell +pkgname=py3-levenshtein +pkgver=0.23.0 +pkgrel=0 +pkgdesc="Python extension for computing string edit distances and similarities" +url="https://github.com/maxbachmann/Levenshtein" +arch="all" +license="GPL-2.0-only" +depends="py3-rapidfuzz" +makedepends=" + cmake + cython + py3-gpep517 + py3-scikit-build + python3-dev + rapidfuzz + samurai + " +checkdepends="py3-pytest" +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/maxbachmann/Levenshtein/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir/Levenshtein-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer \ + .dist/Levenshtein*.whl + .testenv/bin/python3 -m pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/Levenshtein*.whl +} + +sha512sums=" +137116f337f576534bf2c12dc49d35f81a3b267eb613e5e6cca6cb80e5701dd0adbfd97c1cec4ea8f1bb4dee2bc67deeb19553474348ea78af4e05b79ce01fdf py3-levenshtein-0.23.0.tar.gz +" diff --git a/backports/py3-limits/APKBUILD b/backports/py3-limits/APKBUILD index af4516d..13f5fba 100644 --- a/backports/py3-limits/APKBUILD +++ b/backports/py3-limits/APKBUILD @@ -1,7 +1,7 @@ # Contributor: lauren n. liberda # Maintainer: lauren n. liberda pkgname=py3-limits -pkgver=3.14.1 +pkgver=3.6.0 pkgrel=0 pkgdesc="Rate limiting using various strategies and storage backends such as redis & memcached" url="https://github.com/alisaifee/limits" @@ -11,7 +11,7 @@ depends=" py3-deprecated python3 " -makedepends="py3-setuptools py3-gpep517" +makedepends="py3-setuptools" checkdepends=" py3-flaky py3-mongo @@ -19,40 +19,33 @@ checkdepends=" py3-pytest-asyncio py3-pytest-benchmark py3-pytest-cov - py3-pytest-lazy-fixtures - py3-pymemcache + py3-pytest-lazy-fixture py3-redis " subpackages="$pkgname-pyc" +options="!check" # most tests are integration with db connections, assume all connectors installed source=" https://github.com/alisaifee/limits/archive/refs/tags/$pkgver/limits-$pkgver.tar.gz our-std-is-good-enough.patch - tests-drop-etcd3-and-k-argument.patch " builddir="$srcdir/limits-$pkgver" build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 + python3 setup.py build } check() { - python3 -m venv --clear --without-pip --system-site-packages .testenv - gpep517 install-wheel --destdir .testenv --prefix '' .dist/*.whl - .testenv/bin/python3 -m pytest -W ignore::DeprecationWarning \ + pytest \ -m 'not benchmark and not etcd and not integration and not memcached' \ -k 'not aio and not Storage and not strategy' -v } package() { - gpep517 install-wheel --destdir "$pkgdir" \ - .dist/*.whl + python3 setup.py install --prefix=/usr --root="$pkgdir" } sha512sums=" -f30c7ec19c2d1edad9ed77dc590ae35717efa3956a4d97e465793e1923a4af08dc9921d90ee95d3c54ce3364b867ca67a9de62c61d627e07a3f50da20bdabd0f limits-3.14.1.tar.gz -271e3b0501f9f144eda8d2e96c93b285714e339b9217385e38cdbce1f4dec88f9c949e9419f8be94885092e7977f7dca29b86b5499e9fead678b42a686c337db our-std-is-good-enough.patch -e84f4db49349a6feba0f701b9d4357c5f66d64c4a23f8ce512528b0f44b5bbef55041c02d92aae3a4cc8d5340846f9e909217beb869a5aeb49df166dd29ae9e3 tests-drop-etcd3-and-k-argument.patch +30cb675c801c770d266363e8367d4a0b2a98ad3e98b1088d1ab11d697b3694cf5318089cacd250fb964c205bcd571158035388bf0c52f536d937cbbb39465b1e limits-3.6.0.tar.gz +8db0d96f860a07bbc554504a6e94b61546a6be22c0b9736c6b5aca628db9b618efc30609fce3702ee8e3812e1e34329c04d2f34bd69fdaecaa7c7fa0a2bde8a7 our-std-is-good-enough.patch " diff --git a/backports/py3-limits/our-std-is-good-enough.patch b/backports/py3-limits/our-std-is-good-enough.patch index 32d7d73..f2247e7 100644 --- a/backports/py3-limits/our-std-is-good-enough.patch +++ b/backports/py3-limits/our-std-is-good-enough.patch @@ -1,11 +1,22 @@ +--- ./limits/util.py.orig ++++ ./limits/util.py +@@ -8,7 +8,7 @@ + from types import ModuleType + from typing import TYPE_CHECKING, cast + +-import importlib_resources ++from importlib import resources as importlib_resources + from packaging.version import Version + + from limits.typing import Dict, List, NamedTuple, Optional, Tuple, Type, Union --- ./limits/typing.py.orig +++ ./limits/typing.py -@@ -13,7 +13,7 @@ +@@ -11,7 +11,7 @@ Union, ) --from typing_extensions import ClassVar, Counter, ParamSpec, Protocol, TypeAlias -+from typing import ClassVar, Counter, ParamSpec, Protocol, TypeAlias +-from typing_extensions import ClassVar, Counter, ParamSpec, Protocol ++from typing import ClassVar, Counter, ParamSpec, Protocol Serializable = Union[int, str, float] - + diff --git a/backports/py3-limits/tests-drop-etcd3-and-k-argument.patch b/backports/py3-limits/tests-drop-etcd3-and-k-argument.patch deleted file mode 100644 index cab3a06..0000000 --- a/backports/py3-limits/tests-drop-etcd3-and-k-argument.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/tests/conftest.py.orig b/tests/conftest.py -index 2aeb758dda6..a9b2b8b2bd1 100644 ---- a/tests/conftest.py.orig -+++ b/tests/conftest.py -@@ -3,7 +3,6 @@ import platform - import socket - import time - --import etcd3 - import pymemcache - import pymemcache.client - import pymongo -diff --git a/pytest.ini.orig b/pytest.ini -index 38c40a713d0..8c6659e21c2 100644 ---- a/pytest.ini.orig -+++ b/pytest.ini -@@ -17,7 +17,6 @@ addopts = - -rfEsxX - --cov=limits - -m "not benchmark" -- -K - filterwarnings = - error - module::ResourceWarning diff --git a/backports/py3-pathvalidate/APKBUILD b/backports/py3-pathvalidate/APKBUILD new file mode 100644 index 0000000..31729d3 --- /dev/null +++ b/backports/py3-pathvalidate/APKBUILD @@ -0,0 +1,35 @@ +# Contributor: lauren n. liberda +# Maintainer: lauren n. liberda +pkgname=py3-pathvalidate +pkgver=3.2.0 +pkgrel=0 +pkgdesc="Python library to sanitize/validate a string such as filenames/file-paths/etc" +url="https://github.com/thombashi/pathvalidate" +arch="noarch" +license="MIT" +depends="python3" +makedepends=" + py3-gpep517 + py3-setuptools + py3-wheel + " +checkdepends="py3-pytest py3-click py3-faker" +options="!check" # tests require unpackaged unmaintained dependencies +subpackages="$pkgname-pyc" +source="https://github.com/thombashi/pathvalidate/archive/refs/tags/v$pkgver/pathvalidate-$pkgver.tar.gz" +builddir="$srcdir/pathvalidate-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +d1b0e49028bc5497558d9a0c15b4e3c301cacb439bebccffc467fc23001854877dbc81a214cc6eb34c5a905a88c4f9394f5865a4de42f354b2450a3bfe10bb9e pathvalidate-3.2.0.tar.gz +" diff --git a/backports/py3-pivy/APKBUILD b/backports/py3-pivy/APKBUILD new file mode 100644 index 0000000..ec0324e --- /dev/null +++ b/backports/py3-pivy/APKBUILD @@ -0,0 +1,41 @@ +# Contributor: Aiden Grossman +# Maintainer: Aiden Grossman +pkgname=py3-pivy +_pkgname=pivy +pkgver=0.6.8 +pkgrel=2 +pkgdesc="Python3 bindings for coin" +url="https://github.com/coin3d/pivy" +# riscv64 blocked by qt5-qtwebengine via py3-pyside2 +# py3-pyside2 is not available on armhf +arch="all !armhf !riscv64" +license="ISC" +depends="py3-pyside2" +makedepends="swig soqt-dev qt5-qtbase-dev python3-dev glu-dev cmake samurai" +checkdepends="py3-pytest" +options="!check" # test suite is interactive and requires full installation +source="$pkgname-$pkgver.tar.gz::https://github.com/coin3d/pivy/archive/refs/tags/$pkgver.tar.gz + qt5.patch + " +builddir="$srcdir/$_pkgname-$pkgver" + +build() { + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake -B build -G Ninja \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=None \ + $CMAKE_CROSSOPTS + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build +} + +sha512sums=" +723b09028f2e3075056b9588cebad0ddccbc98d0c15552b9565c177b0de764b9645f88ea2bc534ccf606f2e0b59f91e1d03551b55ece66c0654ce9cdf09a1a7c py3-pivy-0.6.8.tar.gz +7750ded3eb09da510ba5f84e7957c2ae1f92be0df280901fd9c9eba4164758a8f2d436e2d6ae7634a91aed12609f4eefd181922e6caed0b4906c6bc9dbd7b562 qt5.patch +" diff --git a/backports/py3-pivy/qt5.patch b/backports/py3-pivy/qt5.patch new file mode 100644 index 0000000..7dfdc97 --- /dev/null +++ b/backports/py3-pivy/qt5.patch @@ -0,0 +1,11 @@ +--- ./qtinfo.py ++++ ./qtinfo.py +@@ -7,7 +7,7 @@ + if qmake_command: + self._qmake_command = qmake_command + else: +- self._qmake_command = [find_executable("qmake"),] ++ self._qmake_command = [find_executable("qmake-qt5"),] + self._dict = {} + # bind all variables early at __init__ time. + for thing in self.__class__.__dict__: diff --git a/backports/py3-pycares/APKBUILD b/backports/py3-pycares/APKBUILD new file mode 100644 index 0000000..71b23e4 --- /dev/null +++ b/backports/py3-pycares/APKBUILD @@ -0,0 +1,30 @@ +# Contributor: Sam Whited +# Maintainer: Sam Whited +pkgname=py3-pycares +_pkgname=pycares +pkgver=4.3.0 +pkgrel=0 +pkgdesc="A library for performing DNS resolutions using c-ares." +url="https://pypi.org/project/pycares/" +arch="all" +license="MIT" +depends="python3 py3-idna py3-cffi" +makedepends="py3-setuptools c-ares-dev python3-dev" +subpackages="$pkgname-doc" +source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir/$_pkgname-$pkgver" +options="!check" # tests not included in source package. + +build() { + export PYCARES_USE_SYSTEM_LIB=1 + python3 setup.py build +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" + install -Dm644 LICENSE README.rst -t "$pkgdir"/usr/share/licenses/$pkgname +} + +sha512sums=" +ffabb9abf3f131a373302a7992af6335bc25013f119dce51731e5e04999948c62c42444adac4427c856b14fbaa481266449a39ff0715c5d8a45517cb22c9e539 pycares-4.3.0.tar.gz +" diff --git a/backports/py3-python-jwt/APKBUILD b/backports/py3-python-jwt/APKBUILD new file mode 100644 index 0000000..136ed68 --- /dev/null +++ b/backports/py3-python-jwt/APKBUILD @@ -0,0 +1,30 @@ +# Contributor: Rejah Rehim +# Maintainer: Rejah Rehim +pkgname=py3-python-jwt +_pkgname=python_jwt +pkgver=4.0.0 +pkgrel=1 +pkgdesc="Module for generating and verifying JSON Web Tokens" +options="!check" # no test suite +url="https://github.com/davedoesdev/python-jwt" +arch="noarch" +license="MIT" +depends="python3 py3-jwcrypto" +makedepends="py3-setuptools" +subpackages="$pkgname-doc $pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver + +build() { + python3 setup.py build +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" + install -Dm644 LICENCE "$pkgdir"/usr/share/licenses/$pkgname/LICENCE + install -Dm644 README.md "$pkgdir"/usr/share/licenses/$pkgname/README.md +} + +sha512sums=" +94c6ebd7738da3087b7192f3eff3e6af3aa7dce3f38cd0e001261e61a5aa42e03fa08d76bb56b7d033ee64723a428bfbad480b6d46934c9b1ef446f613b1cbe0 python_jwt-4.0.0.tar.gz +" diff --git a/backports/py3-rapidjson/APKBUILD b/backports/py3-rapidjson/APKBUILD new file mode 100644 index 0000000..6208593 --- /dev/null +++ b/backports/py3-rapidjson/APKBUILD @@ -0,0 +1,56 @@ +# Contributor: Marian Buschsieweke +# Maintainer: Marian Buschsieweke +pkgname=py3-rapidjson +pkgver=1.12 +pkgrel=0 +pkgdesc="Python3 wrapper around RapidJSON" +url="https://github.com/python-rapidjson/python-rapidjson" +arch="all" +license="MIT" +depends=" + python3 + " +makedepends=" + py3-gpep517 + py3-setuptools + py3-wheel + python3-dev + rapidjson-dev + " +checkdepends=" + py3-pytest + py3-tz + " +source="$pkgname-$pkgver.tar.gz::https://github.com/python-rapidjson/python-rapidjson/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir/"python-rapidjson-$pkgver + +prepare() { + default_prepare + + # workaround setup.py complaining about "sources not found" + mkdir -v rapidjson/include +} + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$(echo "$PWD"/build/lib.linux*)" pytest \ + --ignore benchmarks \ + --deselect tests/test_base_types.py::test_base_values \ + --deselect tests/test_unicode.py::test_unicode_decode_error \ + --deselect tests/test_validator.py::test_additional_and_pattern_properties_valid \ + # +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +15d021491c64db53352830d8f3f62c8b48476fcb001f97c174bcbb9053d973eb135ceb92f14290a58f6ad6c5dfb24d02f6385c8cad70f4a74f5a5726aa0728e7 py3-rapidjson-1.12.tar.gz +" diff --git a/backports/py3-sphinxcontrib-autoprogram/APKBUILD b/backports/py3-sphinxcontrib-autoprogram/APKBUILD new file mode 100644 index 0000000..15686d0 --- /dev/null +++ b/backports/py3-sphinxcontrib-autoprogram/APKBUILD @@ -0,0 +1,41 @@ +# Maintainer: Hoang Nguyen +pkgname=py3-sphinxcontrib-autoprogram +pkgver=0.1.8 +pkgrel=1 +pkgdesc="Sphinx extension to document CLI programs" +url="https://github.com/sphinx-contrib/autoprogram" +arch="noarch" +license="BSD-2-Clause" +depends="python3 py3-six py3-sphinx" +makedepends=" + py3-gpep517 + py3-setuptools + py3-wheel + " +subpackages="$pkgname-pyc" +source=" + $pkgname-$pkgver.tar.gz::https://github.com/sphinx-contrib/autoprogram/archive/refs/tags/$pkgver.tar.gz + " +builddir="$srcdir/autoprogram-$pkgver" +options="!check" # no tests + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages .testenv + .testenv/bin/python3 -m installer .dist/*.whl + .testenv/bin/python3 -m unittest discover +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +bc07f25c34884f8e3130bbe5d2d6fb645f45aca5794c6b11a772f0351d680380d3e63cfe4b60aabf05ad8c6f44bae72e592500454598d31cc3c98dcbc8dbf899 py3-sphinxcontrib-autoprogram-0.1.8.tar.gz +" diff --git a/backports/py3-structlog/APKBUILD b/backports/py3-structlog/APKBUILD new file mode 100644 index 0000000..898156a --- /dev/null +++ b/backports/py3-structlog/APKBUILD @@ -0,0 +1,50 @@ +# Maintainer: +pkgname=py3-structlog +pkgver=23.1.0 +pkgrel=1 +pkgdesc="Simple, powerful, and fast logging for Python" +url="https://github.com/hynek/structlog" +arch="noarch" +license="Apache-2.0 OR MIT" +makedepends=" + py3-gpep517 + py3-hatch-fancy-pypi-readme + py3-hatch-vcs + py3-hatchling + py3-wheel + " +checkdepends=" + py3-coverage + py3-freezegun + py3-pretend + py3-pytest + py3-pytest-asyncio + py3-pytest-xdist + py3-rich + py3-simplejson + " +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/hynek/structlog/archive/refs/tags/$pkgver.tar.gz" +builddir="$srcdir/structlog-$pkgver" + +build() { + SETUPTOOLS_SCM_PRETEND_VERSION=$pkgver \ + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 -m venv --clear --without-pip --system-site-packages testenv + testenv/bin/python3 -m installer dist/*.whl + testenv/bin/python3 -m pytest -n4 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +527f5811a3d2365490c55d8e1f1cc0537254d8667bfc56214769bd6aae9f5368a1534536f061dbc06213c32dd9253703f8535323466ddb66032c6c1f776814ac py3-structlog-23.1.0.tar.gz +" diff --git a/backports/py3-vine/APKBUILD b/backports/py3-vine/APKBUILD new file mode 100644 index 0000000..18dfa9d --- /dev/null +++ b/backports/py3-vine/APKBUILD @@ -0,0 +1,33 @@ +# Maintainer: Antoine Martin (ayakael) +pkgname=py3-vine +pkgver=5.0.0 +pkgrel=2 +pkgdesc="futures and promises implementation for python" +url="https://github.com/celery/vine" +arch="noarch" +license="BSD-3-Clause" +depends="python3" +makedepends="py3-setuptools" +checkdepends="py3-pytest py3-case py3-nose" +subpackages="$pkgname-pyc" +source="https://files.pythonhosted.org/packages/source/v/vine/vine-$pkgver.tar.gz" +builddir="$srcdir/vine-$pkgver" + +replaces="py-vine" # Backwards compatibility +provides="py-vine=$pkgver-r$pkgrel" # Backwards compatibility + +build() { + python3 setup.py build +} + +check() { + python3 -m pytest +} + +package() { + python3 setup.py install --skip-build --root="$pkgdir" +} + +sha512sums=" +ff8f4b3f675220772ed0523e468eedbaec4aca793877b984e9a215603d1288cc3cc71dfeb152219d22f98de0ac7e9f9fa0cc35c2424ff36044cfc8f28192c159 vine-5.0.0.tar.gz +" diff --git a/backports/rapidfuzz/APKBUILD b/backports/rapidfuzz/APKBUILD new file mode 100644 index 0000000..b68e491 --- /dev/null +++ b/backports/rapidfuzz/APKBUILD @@ -0,0 +1,42 @@ +# Maintainer: +pkgname=rapidfuzz +pkgver=2.2.3 +pkgrel=0 +pkgdesc="Rapid fuzzy string matching in C++ using the Levenshtein Distance" +url="https://github.com/maxbachmann/rapidfuzz-cpp" +arch="all" +license="MIT" +makedepends=" + cmake + samurai + " +checkdepends="catch2-3" +source="$pkgname-$pkgver.tar.gz::https://github.com/maxbachmann/rapidfuzz-cpp/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir/rapidfuzz-cpp-$pkgver" + +case "$CARCH" in +x86) + # float rounding + options="!check" + ;; +esac + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DRAPIDFUZZ_BUILD_TESTING="$(want_check && echo ON || echo OFF)" + cmake --build build +} + +check() { + ctest --test-dir build --output-on-failure +} + +package() { + DESTDIR="$pkgdir" cmake --install build +} + +sha512sums=" +5ef4833334ccc3309d43ae4a2644eb57fa2a382b797c791b150b8d78451d7e6d57a8af23d0b7645eecfe539a128d2d8585e2a7380b6772b23cf8fd71d6a7f38b rapidfuzz-2.2.3.tar.gz +" diff --git a/backports/shntool/APKBUILD b/backports/shntool/APKBUILD index 05cb959..60dd2b5 100644 --- a/backports/shntool/APKBUILD +++ b/backports/shntool/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Carlo Landmeter -# Maintainer: Jean-Louis Fuchs +# Maintainer: Jean-Louis Fuchs pkgname=shntool pkgver=3.0.10 -pkgrel=6 +pkgrel=4 pkgdesc="A multi-purpose WAVE data processing and reporting utility" url="http://shnutils.freeshell.org/shntool/" arch="all" @@ -13,7 +13,6 @@ source="http://shnutils.freeshell.org/shntool/dist/src/shntool-$pkgver.tar.gz shntool-3.0.10-large-size.patch shntool-3.0.10-large-times.patch 24bit.patch - no-cdquality-check.patch " build() { @@ -25,8 +24,7 @@ build() { --sysconfdir=/etc \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ - --localstatedir=/var \ - CFLAGS="--std=gnu17" + --localstatedir=/var make } @@ -65,5 +63,4 @@ sha512sums=" fc44bca63d79b279db6d275caaacdb73cbebd6b902276a9052f005146fa125f4674e3cf559d46405637a337192f4a38f9bec4836af46e7ae52e4f220352c1ba7 shntool-3.0.10-large-size.patch 9780f22d93e20dd01d18067978bdf6cbb0b460bb80f41c4f4752b3322c3d70182b3acf35b789e30fc36ca52af6127e24c00599fb49b916f01448613721a94ebe shntool-3.0.10-large-times.patch 3c9cdd7936a6572a3c9dfc7575f5ff9a0981dd557add8e1113454487091c7b161040d25d3266937449295a1bb5317ee3515a84c3d7168360bf84643ed828e202 24bit.patch -e5b5fe4894eea92e026eec666900bde2b10ea33d4b0ffbf74a231e443c476e11b50eebc21bc2ff2b844ca48af0a41a7b6af77fdc524d0b1bd33d03f133d99992 no-cdquality-check.patch " diff --git a/backports/shntool/no-cdquality-check.patch b/backports/shntool/no-cdquality-check.patch deleted file mode 100644 index 4ca3717..0000000 --- a/backports/shntool/no-cdquality-check.patch +++ /dev/null @@ -1,21 +0,0 @@ -Last-Update: 2014-11-15 -Forwarded: yes -Author: Dmitry Smirnov -Bug-Debian: http://bugs.debian.org/769585 -Description: disable CD-quality check, needed to process 24bit 96kHz files. - ---- a/src/core_mode.c -+++ b/src/core_mode.c -@@ -344,10 +344,10 @@ - - *colon = 0; - *dot = 0; - -- if (PROB_NOT_CD(info)) -- st_error("m:ss.ff format can only be used with CD-quality files"); -+// if (PROB_NOT_CD(info)) -+// st_error("m:ss.ff format can only be used with CD-quality files"); - - min = atoi((const char *)buf); - sec = atoi((const char *)(colon+1)); - frames = atoi((const char *)(dot+1)); diff --git a/backports/signal-desktop/APKBUILD b/backports/signal-desktop/APKBUILD index ede5795..85ccf68 100644 --- a/backports/signal-desktop/APKBUILD +++ b/backports/signal-desktop/APKBUILD @@ -1,15 +1,14 @@ # Contributor: lauren n. liberda -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) +# Maintainer: lauren n. liberda pkgname=signal-desktop -pkgver=7.76.0 -pkgrel=1 +pkgver=6.39.1 +pkgrel=0 pkgdesc="A messaging app for simple private communication with friends" url="https://github.com/signalapp/Signal-Desktop/" # same as electron -arch="aarch64 x86_64" +# aarch64: polyval-0.5.3 crate subdep uses unstable stdsimd feature +arch="x86_64" license="AGPL-3.0-only" -_llvmver=21 depends=" electron font-barlow @@ -25,7 +24,7 @@ makedepends=" cargo cargo-auditable cbindgen - clang$_llvmver-dev + clang-dev cmake crc32c-dev dav1d-dev @@ -36,27 +35,24 @@ makedepends=" glib-dev gn jsoncpp-dev + libavif-dev libjpeg-turbo-dev libepoxy-dev - libsecret-dev + libevent-dev libvpx-dev libwebp-dev - libxml2-dev lld - llvm$_llvmver-dev + llvm-dev mesa-dev nodejs npm - pnpm openh264-dev openssl-dev - opus-dev pipewire-dev protoc pulseaudio-dev py3-setuptools python3 - re2-dev samurai sqlcipher-dev vips-dev @@ -64,86 +60,62 @@ makedepends=" " options="net !check" -# use _check_depends to validate this -_libsignalver=0.83.0 -_ringrtcver=2.59.0 -_webrtcver=7339c -_sqlcipherver=2.4.4 +# follow signal-desktop package.json -> @signalapp/libsignal-client +_libsignalver=0.32.1 + +# follow signal-desktop package.json -> @signalapp/ringrtc +_ringrtcver=2.34.1 + +# follow ringrtc (on version above) -> config/version.properties -> webrtc.version +# downloading tarball generated with abuild snapshot (with gclient dependencies fetched) +_webrtcver=5845i + +# follow @signalapp/better-sqlite3 (on version in package.json) -> deps/download.js -> TOKENIZER_VERSION +# last bsqlite version: 8.5.2 +_stokenizerver=0.2.1 source=" https://github.com/signalapp/Signal-Desktop/archive/refs/tags/v$pkgver/Signal-Desktop-$pkgver.tar.gz https://github.com/signalapp/libsignal/archive/refs/tags/v$_libsignalver/libsignal-$_libsignalver.tar.gz https://github.com/signalapp/ringrtc/archive/refs/tags/v$_ringrtcver/ringrtc-$_ringrtcver.tar.gz - https://github.com/signalapp/node-sqlcipher/archive/refs/tags/v$_sqlcipherver/node-sqlcipher-$_sqlcipherver.tar.gz - https://ayakael.net/api/packages/mirrors/generic/webrtc/$_webrtcver/webrtc-$_webrtcver.tar.zst + https://s3.sakamoto.pl/lnl-aports-snapshots/webrtc-$_webrtcver.tar.zst + https://github.com/signalapp/Signal-FTS5-Extension/archive/refs/tags/v$_stokenizerver/stokenizer-$_stokenizerver.tar.gz + bettersqlite-use-system-sqlcipher.patch libsignal-auditable.patch - signal-use-system-sqlcipher.patch signal-disable-updates.patch signal-update-links.patch signal-show-window-please.patch - signal-rollback-locale-changes.patch - signal-do-not-package-sqlcipher-deps.patch - signal-do-not-package-desktop-entry.patch ringrtc-webrtc-renamed.patch - ringrtc-use-sh.patch - webrtc-shared-libs.patch - webrtc-compiler.patch - webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch - webrtc-fix-declaration-that-change-meaning-inside-class.patch - webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch + webrtc-shared-like-my-wife.patch + webrtc-use-alpine-target.patch + webrtc-clang-debug-info.patch + webrtc-gcc13.patch - signal-desktop.sh + signal-desktop " -builddir="$srcdir" +builddir="$srcdir/Signal-Desktop-$pkgver" -# webrtc broken on clang https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101227 -export CC=gcc -export CXX=g++ +export CC=clang +export CXX=clang++ # required to find the tools -export AR=ar -export NM=nm -export LD=g++ +export AR=llvm-ar +export NM=llvm-nm +export LD=clang++ # less log spam, reproducible, allow lto with rust export CFLAGS="${CFLAGS/-g/} -O2 -Wno-error -Wno-deprecated-builtins -Wno-unknown-warning-option -Wno-builtin-macro-redefined -Wno-deprecated-declarations" export CXXFLAGS="${CXXFLAGS/-g/} -O2 -Wno-error -Wno-deprecated-builtins -Wno-unknown-warning-option -Wno-builtin-macro-redefined -Wno-deprecated-declarations" export CPPFLAGS="$CPPFLAGS -D__DATE__= -D__TIME__= -D__TIMESTAMP__=" -# stdatomic from compiler-rt uses implicit function declaration -export CFLAGS="$CFLAGS -Wno-implicit-function-declaration" -export CXXFLAGS="$CXXFLAGS -Wno-implicit-function-declaration" - export CARGO_PROFILE_RELEASE_OPT_LEVEL=2 export CARGO_PROFILE_RELEASE_STRIP="symbols" -#export RUSTFLAGS="$RUSTFLAGS -C linker=clang" +export RUSTFLAGS="$RUSTFLAGS -C linker=clang" export YARN_CACHE_FOLDER="$srcdir/.yarn" -_update_depends() { - msg "Updating extra dependencies version information in $APKBUILD..." - # _libsignalver: follow signal-desktop package.json -> @signalapp/libsignal-client - # _ringrtcver: follow signal-desktop package.json -> @signalapp/ringrtc - # _webrtcver: follow ringrtc (on version above) -> config/version.properties -> webrtc.version - # downloading tarball generated with abuild snapshot (with gclient dependencies fetched) - # _sqlcipherver: follow signal-desktop package.json -> @signalapp/sqlcipher - - local _libsignalver=$(curl --silent https://raw.githubusercontent.com/signalapp/Signal-Desktop/v$pkgver/package.json | grep "@signalapp/libsignal-client\": \"" | awk '{print $2}' | tr -d ',' | tr -d '"' | head -n 1) - local _ringrtcver=$(curl --silent https://raw.githubusercontent.com/signalapp/Signal-Desktop/v$pkgver/package.json | grep "@signalapp/ringrtc\": \"" | awk '{print $2}' | tr -d ',' | tr -d '"' | head -n 1) - local _webrtcver=$(curl --silent https://raw.githubusercontent.com/signalapp/ringrtc/v$_ringrtcver/config/version.properties | awk -F '=' '{if($1 == "webrtc.version"){print $2}}' | head -n 1) - local _sqlcipherver=$(curl --silent https://raw.githubusercontent.com/signalapp/Signal-Desktop/v$pkgver/package.json | grep "@signalapp/sqlcipher\": \"" | awk '{print $2}' | tr -d ',' | tr -d '"' | head -n 1) - - sed -i \ - -e "s|^_libsignalver=.*|_libsignalver=$_libsignalver|" \ - -e "s|^_ringrtcver=.*|_ringrtcver=$_ringrtcver|" \ - -e "s|^_webrtcver=.*|_webrtcver=$_webrtcver|" \ - -e "s|^_sqlcipherver=.*|_sqlcipherver=$_sqlcipherver|" \ - $APKBUILD -} - # webrtc only, the other dependencies are fine with tarballs -_distbucket="sakamoto/lnl-aports-snapshots/" snapshot() { mkdir -p "$srcdir" cd "$srcdir" @@ -187,67 +159,77 @@ target_cpu_only = True --exclude-vcs \ webrtc-$_webrtcver - zstd --auto-threads=logical --ultra --long -22 -T"${ZSTD_LIMIT:-0}" -vv webrtc-$_webrtcver.tar -o "$SRCDEST"/webrtc-$_webrtcver.tar.zst - mcli cp "$SRCDEST"/webrtc-$_webrtcver.tar.zst "$_distbucket" + zstd --ultra --long -22 -T4 -vv webrtc-$_webrtcver.tar } +# manual patches +default_prepare() { :; } + prepare() { - # Moves to builddir to use abuild patch logics - for i in Signal-Desktop-$pkgver libsignal-$_libsignalver ringrtc-$_ringrtcver webrtc-$_webrtcver node-sqlcipher-$_sqlcipherver; do - mv "$srcdir"/$i "$builddir"/${i%-*} - done default_prepare - - cd "$builddir"/Signal-Desktop - - # puts node modules in the root node_modules instead of under .pnpm - echo "node-linker=hoisted" >> .npmrc + msg "Applying patches" + for x in $source; do + case "$x" in + signal-*.patch) + msg "$x" + patch -p1 -i "$srcdir"/$x -d "$srcdir"/Signal-Desktop-$pkgver + ;; + libsignal-*.patch) + msg "$x" + patch -p1 -i "$srcdir"/$x -d "$srcdir"/libsignal-$_libsignalver + ;; + ringrtc-*.patch) + msg "$x" + patch -p1 -i "$srcdir"/$x -d "$srcdir"/ringrtc-$_ringrtcver + ;; + webrtc-*.patch) + msg "$x" + patch -p1 -i "$srcdir"/$x -d "$srcdir"/webrtc-$_webrtcver + ;; + esac + done msg "Installing signal-desktop JS dependencies" - pnpm install --ignore-scripts - - # remove shipped fonts for system-provided (part 1) - rm -rf fonts/ + echo 'ignore-engines true' > .yarnrc + yarn --ignore-scripts --frozen-lockfile ( - cd "$builddir"/webrtc + cd "$srcdir"/webrtc-$_webrtcver + # opus - https://github.com/signalapp/opus/commit/593419e833acab4d15b4901fe156177fb7315468 local use_system=" brotli crc32c dav1d ffmpeg - flatbuffers fontconfig freetype harfbuzz-ng - highway icu jsoncpp libaom + libavif libdrm + libevent libjpeg libpng - libsecret libvpx libwebp libxml libxslt openh264 - opus re2 snappy woff2 zlib " - for _lib in $use_system double_conversion libjpeg_turbo; do + for _lib in $use_system libjpeg_turbo; do msg "Removing buildscripts for system provided $_lib" find . -type f -path "*{third_party,ringrtc}/$_lib/*" \ \! -path "*third_party/$_lib/chromium/*" \ \! -path "*third_party/$_lib/google/*" \ \! -path './base/third_party/icu/*' \ \! -path './third_party/libxml/*' \ - \! -path './third_party/re2/*' \ \! -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' \ @@ -259,9 +241,6 @@ prepare() { python3 build/linux/unbundle/replace_gn_files.py --system-libraries \ $use_system - # zlib depends on base for no reason - sed -i '/\/\/base/d' ./third_party/zlib/BUILD.gn - # allow system dependencies in "official builds" sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ tools/generate_shim_headers/generate_shim_headers.py @@ -271,45 +250,45 @@ prepare() { ) ( - cd "$builddir"/ringrtc/src/rust + cd "$srcdir"/ringrtc-$_ringrtcver/src/rust msg "Installing ringrtc rust dependencies" cargo fetch --target="$CTARGET" --locked ) ( - cd "$builddir"/libsignal + cd "$srcdir"/libsignal-$_libsignalver msg "Installing libsignal rust dependencies" cargo fetch --target="$CTARGET" --locked ) ( - cd "$builddir"/node-sqlcipher + cd "$srcdir"/Signal-FTS5-Extension-$_stokenizerver - # fix target - sed -i 's/unknown-linux-gnu/alpine-linux-musl/g' deps/extension/extension.gyp - - msg "Installing sqlcipher js dependencies" - pnpm install --ignore-scripts + msg "Installing signal tokenizer rust dependencies" + cargo fetch --target="$CTARGET" --locked ) ( - cd "$builddir"/ringrtc/src/node + cd "$srcdir"/ringrtc-$_ringrtcver/src/node msg "Installing ringrtc js dependencies" - npm ci --ignore-scripts + yarn --frozen-lockfile --ignore-scripts ) ( - cd "$builddir"/libsignal/node + cd "$srcdir"/libsignal-$_libsignalver/node # fix target - sed -i 's/unknown-linux-gnu/alpine-linux-musl/g' build_node_bridge.py + sed -i 's/unknown-linux-gnu/alpine-linux-musl/g' binding.gyp msg "Installing libsignal js dependencies" yarn --ignore-scripts --frozen-lockfile ) + + # remove shipped fonts for system-provided (part 1) + rm -rf fonts/ } build() { @@ -317,7 +296,7 @@ build() { # required dependency of ringrtc ( - cd "$builddir"/webrtc + cd "$srcdir"/webrtc-$_webrtcver export PATH="$PWD/path:$PATH" # shellcheck disable=2089 @@ -330,9 +309,6 @@ build() { rtc_include_ilbc=false rtc_libvpx_build_vp9=true rtc_use_x11=false - rustc_version=\"yes\" - rust_bindgen_root=\"/usr\" - rust_sysroot_absolute=\"/usr\" build_with_mozilla=false chrome_pgo_phase=0 @@ -340,7 +316,7 @@ build() { clang_base_path=\"/usr\" custom_toolchain=\"//build/toolchain/linux/unbundle:default\" is_cfi=false - is_clang=false + is_clang=true is_debug=false is_official_build=true host_toolchain=\"//build/toolchain/linux/unbundle:default\" @@ -349,21 +325,20 @@ build() { rtc_use_pipewire=true symbol_level=0 use_custom_libcxx=false - use_lld=true use_sysroot=false " - mkdir -p "$builddir"/ringrtc/out/release + mkdir -p "$srcdir"/ringrtc-$_ringrtcver/out/release msg "Building signal's webrtc" # shellcheck disable=2090,2116 - gn gen "$builddir"/ringrtc/out/release --args="$(echo $webrtc_args)" - ninja -C "$builddir"/ringrtc/out/release signaldeswebrtc + gn gen "$srcdir"/ringrtc-$_ringrtcver/out/release --args="$(echo $webrtc_args)" + ninja -C "$srcdir"/ringrtc-$_ringrtcver/out/release signaldeswebrtc ) ( - cd "$builddir"/ringrtc + cd "$srcdir"/ringrtc-$_ringrtcver msg "Building libringrtc" - OUTPUT_DIR="$builddir"/ringrtc/out \ + OUTPUT_DIR="$srcdir"/ringrtc-$_ringrtcver/out \ cargo auditable build --features electron --release -p ringrtc mkdir -p src/node/build/linux @@ -372,108 +347,114 @@ build() { ) ( - cd "$builddir"/ringrtc/src/node + cd "$srcdir"/ringrtc-$_ringrtcver/src/node msg "Building ringrtc JS glue code" - npm run build + yarn build msg "Cleaning dev dependencies for ringrtc" - npm prune --ignore-scripts --omit=dev + yarn --ignore-scripts --frozen-lockfile --production ) # module on npm intentionally unbuildable: https://github.com/signalapp/libsignal/issues/464#issuecomment-1160665052 ( - cd "$builddir"/libsignal/node + cd "$srcdir"/libsignal-$_libsignalver/node msg "Building libsignal" - npm_config_nodedir=/usr/include/electron/node_headers python3 build_node_bridge.py + yarn node-gyp configure --nodedir=/usr/include/electron/node_headers --build-from-source + yarn node-gyp build --nodedir=/usr/include/electron/node_headers --build-from-source mkdir -p prebuilds/linux-$chromium_arch mv build/Release/libsignal_client_linux_$chromium_arch.node prebuilds/linux-$chromium_arch/node.napi.node msg "Building libsignal glue code" - npm run tsc + yarn tsc msg "Cleaning dev dependencies for libsignal" - npm prune -ignore-scripts --omit=dev + yarn --ignore-scripts --frozen-lockfile --production ) ( - cd "$builddir"/node-sqlcipher + cd "$srcdir"/Signal-FTS5-Extension-$_stokenizerver - ( - cd deps/extension - msg "Building sqlcipher-extension" - cargo auditable build --release --target $CTARGET - ) - - msg "Building sqlcipher" - node-gyp configure --nodedir=/usr/include/electron/node_headers --build-from-source - node-gyp build --nodedir=/usr/include/electron/node_headers --build-from-source - - msg "Building sqlcipher glue code" - pnpm build - - mkdir -p prebuilds/linux-$chromium_arch - mv build/Release/obj.target/node_sqlcipher.node prebuilds/linux-$chromium_arch/node.napi.node - - msg "Cleaning dev dependencies for sqlcipher" - pnpm prune --ignore-scripts --prod + msg "Building signal tokenizer" + cargo auditable build --features extension --release --frozen + cbindgen --profile release . -o target/release/signal-tokenizer.h ) - msg "Building signal-desktop" - cd "$builddir"/Signal-Desktop - # from package.json postinstall - pnpm run build:acknowledgments + yarn build:acknowledgments + yarn patch-package rm -rf node_modules/dtrace-provider # get esbuild installed (needed for next step) - pnpm rebuild esbuild + npm rebuild esbuild # build front - # resets GIT_CEILING_DIRECTORIES as sometimes abuild sets this and breaks get-expire-time NODE_ENV=production \ SIGNAL_ENV=production \ NODE_OPTIONS=--openssl-legacy-provider \ - GIT_CEILING_DIRECTORIES= \ - pnpm run build:dev + yarn build:dev # purge non-production deps - pnpm prune --ignore-scripts --prod + yarn install --ignore-scripts --frozen-lockfile --production + + # XXX: the previous step undoes the patches. and removes the patch applier. + # please force me to just implement packaging without dev modules in tasje. -lnl + for x in patches/*.patch; do + # some of these patches are made for devDependencies + if [ -d "$(grep -Eo 'node_modules/(@[a-z\d_-]+/)?[a-z\d_-]+/' "$x" | head -n1)" ]; then + msg "$x" + patch -Np1 -i ./"$x" + fi + done # use our libsignal rm -rf node_modules/@signalapp/libsignal-client/ - cp -r "$builddir"/libsignal/node/ node_modules/@signalapp/libsignal-client + mv "$srcdir"/libsignal-$_libsignalver/node/ node_modules/@signalapp/libsignal-client # use our libringrtc rm -rf node_modules/@signalapp/ringrtc/ - cp -r "$builddir"/ringrtc/src/node/ node_modules/@signalapp/ringrtc + mv "$srcdir"/ringrtc-$_ringrtcver/src/node/ node_modules/@signalapp/ringrtc - # use our sqlcipher - rm -rf node_modules/@signalapp/sqlcipher/ - cp -r "$builddir"/node-sqlcipher node_modules/@signalapp/sqlcipher + # patch the sqlcipher module + for x in $source; do + case "$x" in + bettersqlite-*.patch) + msg "$x" + patch -Np1 -i "$srcdir"/$x -d "$srcdir"/Signal-Desktop-$pkgver/node_modules/@signalapp/better-sqlite3/ + ;; + esac + done + + mkdir node_modules/@signalapp/better-sqlite3/tokenizer + mv "$srcdir"/Signal-FTS5-Extension-$_stokenizerver/target/release/libsignal_tokenizer.a node_modules/@signalapp/better-sqlite3/tokenizer/ + mv "$srcdir"/Signal-FTS5-Extension-$_stokenizerver/target/release/signal-tokenizer.h node_modules/@signalapp/better-sqlite3/tokenizer/ + + npm rebuild \ + sharp @signalapp/better-sqlite3 spellchecker websocket \ + utf-8-validate bufferutil fs-xattr \ + --nodedir=/usr/include/electron/node_headers --build-from-source SIGNAL_ENV=production \ tasje pack } check() { - cd "$builddir"/Signal-Desktop # tests run against downloaded build of electron for glibc, probably can be patched - pnpm run test + yarn test } package() { - cd "$builddir"/Signal-Desktop/tasje_out + cd "$builddir"/tasje_out install -Dm644 resources/app.asar "$pkgdir"/usr/lib/$pkgname/app.asar cp -r resources/app.asar.unpacked "$pkgdir"/usr/lib/$pkgname/app.asar.unpacked install -Dm644 signal.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop # this should be in /usr/lib/signal-desktop. however, it does not simply work and I stopped to care - install -Dm755 "$builddir"/ringrtc/out/release/libsignaldeswebrtc.so "$pkgdir"/usr/lib/libsignaldeswebrtc.so + install -Dm755 "$srcdir"/ringrtc-$_ringrtcver/out/release/libsignaldeswebrtc.so "$pkgdir"/usr/lib/libsignaldeswebrtc.so - install -Dm755 "$srcdir"/signal-desktop.sh "$pkgdir"/usr/bin/signal-desktop + install -Dm755 "$srcdir"/$pkgname "$pkgdir"/usr/bin/$pkgname while read -r size; do install -Dm644 icons/$size.png "$pkgdir"/usr/share/icons/hicolor/$size/apps/$pkgname.png @@ -481,25 +462,20 @@ package() { } sha512sums=" -c847d3679df77ca137b4c3345b3b941a08639677efcd5eeea6613572fa90b8ad1b8d1d53e077902d4f47c05c480c408787024906d6917dcbf4a840838bf6d79d Signal-Desktop-7.76.0.tar.gz -43271a64f65a4cf0e7855fb84476ff811ef248665cb74fdaa9ce12b02d2039abdf8fca28554e7e884eabaa9bdd77e8f5383e6354e589436671675ddab7194d81 libsignal-0.83.0.tar.gz -ba4a1850bd096470a6370a0bf730550f64df4a2349cacca3b4864ef1a3a04713dd200307b9ad7ba47425322573148d6bd2ce85c11c2a49232d41e739ef5e788d ringrtc-2.59.0.tar.gz -79dd21548329b4ee409fa73b013c18ed4e85038aeef7a4cfe196fd6b5113279da8ad287a259fa6a6b546b52a5a6dd6ae2cb1050007043d25f76d7917dbbbc02d node-sqlcipher-2.4.4.tar.gz -06ffb4cdb82f818cc419d42ff2de03977d7e94c5f3eb8ac8a401bcb52ec38fa988c5d757f4bd79e5d9968fa83754fc9046180c950961c90a59eeb6130bf5552f webrtc-7339c.tar.zst -8d2d2d82c8546c2dd1fef161b61df79918f8c22235a56a46adb375a0beb4acef12c5fe53e67242a4be97f77adc522ff79b47949c352956c742a70d50f4179f7f libsignal-auditable.patch -7ee747c8aaa9d6e9149fe0a031e3d4cc9e9c08f22c42076bd05e2acb86952f8170032613d13a53716010edfa3f26ad97b530e82460318eb46a42e28cf5faeb9d signal-use-system-sqlcipher.patch -ef3622da416a5bd2d4bea4f2a4fbb21a985f660d4acc17bbe66ce51ac1180ab92c0c843a5414ff56ea1deda87c2b0f611a299ca8ebe4d6a24df53626b36ceea8 signal-disable-updates.patch -853de84d636f730694f17bcec63463fa7bfbdd0a7f7a64618a8fc6bc523ce1a9854b4c651753735af735c18101295d3efbe54f83ae0bccbed83c8c1fee3e7049 signal-update-links.patch -882d6889b23a3ebc6449c8b6acec8c3853674a7e94f066d65b57bab674ba8c11d582ba2c760825cb67b9202716e6d8b7123001d1e9f9229e49a0b77e9d978265 signal-show-window-please.patch -3dd3bf2f6925e2672a20ef56bbac519099d54e912e5a434a0649ea152db5039dbe1bbade3430b485ae9a6085d747dd88602d4efc5198d5a4dbf1b8359de11f94 signal-rollback-locale-changes.patch -961568777b86f8fbcc73360252123686c9d1e16b2650f23d8afbc6d7580d53024f81b62e9e9cbdcd0031b5cf99854bd47c6dd4580197f2b27b8b4cbb51c6c9c9 signal-do-not-package-sqlcipher-deps.patch -d8cafd4ae1f7438417f5c414d68a175c3d24b66a14b9f3b8ca9c9acae2b2eaa68985ee81c1df7d754a206ff1c9b02929803440fb0734db38b6ac9ab3e34205b0 signal-do-not-package-desktop-entry.patch -02a648bb8541a39c75fec2db39f024a27976afca41908eefa2fe1f2e30b05b5d59f980ccc930021c0b0c09ba8b0cbcae071e9f0dd530543c667adbc4272af552 ringrtc-webrtc-renamed.patch -19d2e07bdc0b160ec542fcb0a3d94ae1e37dcb1b3455e57b278cf074f8aac625341b47f4f06a1f7eb5a197cb0f11754de8785ffd10876852972cbfafdc2615db ringrtc-use-sh.patch -a9374040dcbc9203c8a3b4ad1cf97d58805cd4755f4f585a988b113697ea97d5900ad68f6a30aa0621f34ab54ae98984a8ce228a2d08186ee1bf3384abf3f364 webrtc-shared-libs.patch -8ba740f0552872ddf383545a6bb99bf7bcdd2610cee51c6e69dc667893006facd5d72f62274e25c1a58e1a58c8e8b0b5303b648e4c74a71925639cc9691c72c4 webrtc-compiler.patch -d44f62e4ccf2d9094d6ed217b24fa2cde276c7f64f4d6fd26e84dfc021ea667abcb21f9e4666cfd0d88d6ee0a6b1a20b6cc68c8720462711e3b5451e263f6c4a webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch -ace87a2be03c6965012a87a10918c5923b10d5e74a7169c1e1384c15b34a367d0c47e806764c368cc30dad01a3dce54b50587abea9831130178db3806619abc8 webrtc-fix-declaration-that-change-meaning-inside-class.patch -d17ecd89e867b24a21144d267e1bf7d09e3898018a0f9fcd87084b9de8091bc56f904a1cabdc487a8e46ab509c11ddd363c574d75d85a79e3c4d9424a13b2093 webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch -8e1de53ec1608fa05972af605213e8423b8f88cfd8d6a1989bdcaf77ed1420871c39efa15c56ffeccb6ff86677acc5bc436020f3554bee4f94930c7d9f4e16b6 signal-desktop.sh +dc15b9693f22c0e71a1ceebe2bb967b6034dc2e3e1ced1e9be7eeca30e9253ed4c4baa49c6f87536c55118cabf2bc16d6f65f7f1bfcb73640eeb9a9942406dad Signal-Desktop-6.39.1.tar.gz +855f053a1329d12e20f254f607db0c0db9f6e1a3eb10061996da75805bf462a5dee0f4f841ec679980c77da87d600f92a21cd643c36d44e017cb3cbf57003b09 libsignal-0.32.1.tar.gz +ba6cdfeeadab0bec9a10a0ce9bc19a58a060e8dc5b0007e59c38011454bebf112fda0bdc291cc3e995b3e1d468b96a1a85c840b058ed0f57f5cccb3050600dbc ringrtc-2.34.1.tar.gz +1d61be0ff5358251760d7916aced3e4a957c183f9f5313ebff266987d99ada4adec8d4d95a9a94a14539e4f182c3fb6fb574937494afb7a3ae1e9ad9c11871de webrtc-5845i.tar.zst +84a1f2fc29262a12842e94698d124a85b823128e72a493b0be8ea92fbb72c5c268499f4a6827cdedaae06ec73cce4039a39fe5c5d536cbef330e59ba0183da28 stokenizer-0.2.1.tar.gz +be5b4e823543b79175a12314f10c6326d9f0d59f470136962daed4665887006acc05b48b40dc1b67747396d8f6f7d23be298c1e110ccdd35ff9b09d5e6b80bab bettersqlite-use-system-sqlcipher.patch +90d47914e30f095515c47c9ef7c763a7a2583a281228d6ea7e2a3444be670b3ae506c82b4fcea8a228f88f688a43c23c8dcef52b65805d2105287234550718a5 libsignal-auditable.patch +60a45285d885922f5c21f64b761a10efbee9081baf3efa4c8c13abc6a43dc4d27662ed10e239b0fa2071ab9e3a0dbbb4b11d6e3d26fe2b74a19f39e72b74a5bd signal-disable-updates.patch +d50eb5724502df9ea4d795db8cfc27af767c25168d7db2af512e615be7cc2ca290210a9ae78e1abb153c0198677e858ad3d74926c958099d0319295e7d9e7f1d signal-update-links.patch +646d303fe58cae3f0896ae0275a66695b902fae6ddde7c568cc9798157dee9f45ceff907bc951fadc4c511d512a73d114b4e4f7c8914e2311c63929d29e1621a signal-show-window-please.patch +ab51b8fdcda1d8811213d2c5d8cb5d8457b478a02e23ce40f36b38ec56d45a3bd7a2d184720c27046f98a27771551cfad93c1290fe93856cc02695d318b33e47 ringrtc-webrtc-renamed.patch +9d92389637cdda83a0a7039fa6c52516d7bc491d0b1e42d5374b9d1f4fa7b9c930642f2dca896da17a2dc3344fa1bb97434c8dddd0539a4fedfd0dec809fc875 webrtc-shared-like-my-wife.patch +354f516a74c5491727afe084ef7688b3e1359d230daa720ffc30b33d3ea7579c9f37a50fbdc5fe2e8dc5322e42a0a39e4ae3449d4cf5b77daed2229bd743028c webrtc-use-alpine-target.patch +679b286d8f9f682d4de41402ffa6834d3085981ca5458cf0e02d3faa0c3c05b17f61b49b07b7fa42d9f91e737dc2f4e6086978332bb4111f8e9d3107736147ef webrtc-clang-debug-info.patch +83fe8a7d8514018f8b5c217d3513345842f6037e6877cd5129479f03d91729b32621e814b4bdb0906df1fe825146bc7f1f72664434985e5e93f6df641a019420 webrtc-gcc13.patch +87534e7b5ad7365509eab75629e6bd1a9ed61ee92f7e358405a0abaf0df57de14623fb3894eb082f8785422e5c087e1c50f9e2e5cafbb2529591fd7bf447f7f5 signal-desktop " diff --git a/backports/signal-desktop/README.md b/backports/signal-desktop/README.md deleted file mode 100644 index a23f037..0000000 --- a/backports/signal-desktop/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# signal-desktop - -This is the `signal-desktop` package for Alpine Linux. - -Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael - -## Building signal-desktop - -Signal-desktop is an electron application that is rather complex to build - -The first layer of complexity is the use of dependencies that are themselves -rather complex to build. Some are based on nodejs, others rust. Those -dependencies are built before signal-desktop, like ringrtc, webrtc and -libsignal. The versions of those dependencies are tracked in different files, -which adds complexity when maintaining the package. Executing `abuild -_update_depends` automatically fetches the expected versions and updates -the relevant variables. - -A second layer of complexity is that webrtc's source code isn't available as a -downloadable tarball. It is only fetchable using Google's `gclient` available -in `depot_tools` with a reimplemented version in the `teapot` package. By -executing, `abuild snapshot`, webrtc tarball can be fetched and packaged, as -long as `gclient` is in your path. For ease of maintenance, a workflow on -[Ayakael's Forge](https://ayakael.net/mirrors/signal-desktop) automatically -fetches and packages the source code and makes it available in a [generic -Forgejo repository](https://ayakael.net/mirrors/-/packages/generic/webrtc). - -## Updating signal-desktop - -In a nutshell: - -1. Set `pkgver` to up-to-date version - -2. Update the dependency versions using `abuild _update_depends` - -3. Optional: fetch webrtc using `abuild snapshot`, making sure `client` -is in your path - -4. Update source checksum using `abuild checksum` - -## Finding dependency version information - -Here is where the version information is stored. It is different for every -extra dependency. - -* _libsignalver: follow signal-desktop package.json -> -@signalapp/libsignal-client -* _ringrtcver: follow signal-desktop package.json -> @signalapp/ringrtc -* _webrtcver: follow ringrtc (on version above) -> config/version.properties -> -webrtc.version downloading tarball generated with abuild snapshot (with gclient -dependencies fetched) -* _stokenizerver: follow @signalapp/better-sqlite3 (on version in package.json) --> deps/download.js -> TOKENIZER_VERSION - -## Why is this package still in testing - -As `electron` is still in testing, this package cannot yet be moved to -`community`. Until that changes, this package is also kept-to-date against the -latest release of Alpine Linux (along with `electron`) in -[Ayakael's Forge](https://ayakael.net/forge/-/packages/alpine/signal-desktop). -This is true of all Ayakael's packages still in `testing`. diff --git a/backports/signal-desktop/bettersqlite-use-system-sqlcipher.patch b/backports/signal-desktop/bettersqlite-use-system-sqlcipher.patch new file mode 100644 index 0000000..f0dfe0d --- /dev/null +++ b/backports/signal-desktop/bettersqlite-use-system-sqlcipher.patch @@ -0,0 +1,56 @@ +--- a/binding.gyp ++++ b/binding.gyp +@@ -7,7 +7,16 @@ + 'targets': [ + { + 'target_name': 'better_sqlite3', +- 'dependencies': ['deps/sqlite3.gyp:sqlite3'], ++ 'include_dirs': [ ++ '/usr/include/sqlcipher', ++ 'tokenizer', ++ ], ++ 'link_settings': { ++ 'libraries': [ ++ '-lsqlcipher', ++ ' int: - if 'npm_config_libsignal_debug_level_logs' not in os.environ: - features.append('log/release_max_level_info') +--- ./node/build_node_bridge.py.orig ++++ ./node/build_node_bridge.py +@@ -63,7 +63,7 @@ -- cmdline = ['cargo', 'build', '--target', cargo_target, '-p', 'libsignal-node', '--features', ','.join(features)] -+ cmdline = ['cargo', 'auditable', 'build', '--target', cargo_target, '-p', 'libsignal-node', '--features', ','.join(features)] + out_dir = options.out_dir.strip('"') or os.path.join('build', configuration_name) + +- cmdline = ['cargo', 'build', '--target', cargo_target, '-p', 'libsignal-node'] ++ cmdline = ['cargo', 'auditable', 'build', '--target', cargo_target, '-p', 'libsignal-node'] if configuration_name == 'Release': cmdline.append('--release') print("Running '%s'" % (' '.join(cmdline))) diff --git a/backports/signal-desktop/libsignal-fix-build-rust-1.69.patch b/backports/signal-desktop/libsignal-fix-build-rust-1.69.patch new file mode 100644 index 0000000..765a447 --- /dev/null +++ b/backports/signal-desktop/libsignal-fix-build-rust-1.69.patch @@ -0,0 +1,44 @@ +diff --git a/rust/attest/src/dcap/sgx_report_body.rs b/rust/attest/src/dcap/sgx_report_body.rs +index 056bef2b..6d3f0d5d 100644 +--- a/rust/attest/src/dcap/sgx_report_body.rs ++++ b/rust/attest/src/dcap/sgx_report_body.rs +@@ -20,7 +20,7 @@ const SGX_HASH_SIZE: usize = 32; + + pub type MREnclave = [u8; SGX_HASH_SIZE]; + +-#[derive(Debug)] ++#[derive(Copy, Clone, Debug)] + #[repr(C, packed)] + // sgx_report_body_t + pub(crate) struct SgxReportBody { +diff --git a/rust/attest/src/endian.rs b/rust/attest/src/endian.rs +index ae9351eb..2e08c711 100644 +--- a/rust/attest/src/endian.rs ++++ b/rust/attest/src/endian.rs +@@ -7,7 +7,7 @@ use std::convert::{TryFrom, TryInto}; + + use hex::FromHex; + +-#[derive(Debug)] ++#[derive(Copy, Clone, Debug)] + #[repr(C, packed)] + pub(crate) struct UInt16LE { + bytes: [u8; 2], +@@ -27,7 +27,7 @@ impl From for UInt16LE { + } + } + +-#[derive(Debug)] ++#[derive(Copy, Clone, Debug)] + #[repr(C, packed)] + pub(crate) struct UInt32LE { + bytes: [u8; 4], +@@ -66,7 +66,7 @@ impl FromHex for UInt32LE { + } + } + +-#[derive(Debug)] ++#[derive(Copy, Clone, Debug)] + #[repr(C, packed)] + pub(crate) struct UInt64LE { + bytes: [u8; 8], diff --git a/backports/signal-desktop/libsignal-too-new-clang.patch b/backports/signal-desktop/libsignal-too-new-clang.patch new file mode 100644 index 0000000..8b88e29 --- /dev/null +++ b/backports/signal-desktop/libsignal-too-new-clang.patch @@ -0,0 +1,89 @@ +core issue: https://github.com/rust-lang/rust-bindgen/issues/2312 +upstream: https://github.com/signalapp/boring/pull/19 +upstream's upstream: https://github.com/cloudflare/boring/pull/110 + +--- ./Cargo.toml.orig ++++ ./Cargo.toml +@@ -25,3 +25,6 @@ + # Use our fork of curve25519-dalek for eventual zkgroup support. + curve25519-dalek = { git = 'https://github.com/signalapp/curve25519-dalek', branch = 'lizard2' } + boring = { git = 'https://github.com/signalapp/boring', branch = 'libsignal'} ++ ++[patch.'https://github.com/signalapp/boring'] ++boring-sys = { git = 'https://github.com/selfisekai/boring-cf', branch = 'i109-signal', package = 'boring-sys' } +--- ./Cargo.lock.orig ++++ ./Cargo.lock +@@ -206,9 +206,9 @@ + + [[package]] + name = "bindgen" +-version = "0.60.1" ++version = "0.62.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" ++checksum = "c6720a8b7b2d39dd533285ed438d458f65b31b5c257e6ac7bb3d7e82844dd722" + dependencies = [ + "bitflags", + "cexpr", +@@ -221,6 +221,7 @@ + "regex", + "rustc-hash", + "shlex", ++ "syn", + ] + + [[package]] +@@ -295,7 +296,7 @@ + [[package]] + name = "boring-sys" + version = "2.1.0" +-source = "git+https://github.com/signalapp/boring?branch=libsignal#25e1dd8fa519ae90772008fbd4a284582096fece" ++source = "git+https://github.com/selfisekai/boring-cf?branch=i109-signal#5c13f5c357c8b33c9978f2e447de2d6caf825d13" + dependencies = [ + "bindgen", + "cmake", +@@ -1398,11 +1399,11 @@ + + [[package]] + name = "proc-macro2" +-version = "1.0.29" ++version = "1.0.54" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" ++checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" + dependencies = [ +- "unicode-xid", ++ "unicode-ident", + ] + + [[package]] +@@ -1868,13 +1869,13 @@ + + [[package]] + name = "syn" +-version = "1.0.80" ++version = "1.0.109" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" + dependencies = [ + "proc-macro2", + "quote", +- "unicode-xid", ++ "unicode-ident", + ] + + [[package]] +@@ -1981,6 +1982,12 @@ + version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" ++ ++[[package]] ++name = "unicode-ident" ++version = "1.0.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + + [[package]] + name = "unicode-segmentation" diff --git a/backports/signal-desktop/ringrtc-use-sh.patch b/backports/signal-desktop/ringrtc-use-sh.patch deleted file mode 100644 index 53ec09c..0000000 --- a/backports/signal-desktop/ringrtc-use-sh.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/ringrtc/src/node/package.json.orig b/ringrtc/src/node/package.json -index 366caf2927f..eedeca3895e 100644 ---- a/ringrtc/src/node/package.json.orig -+++ b/ringrtc/src/node/package.json -@@ -16,7 +16,7 @@ - "virtual_audio": "dist/bin/virtual_audio.sh" - }, - "scripts": { -- "build": "tsc && bash scripts/build-help.sh", -+ "build": "tsc && sh scripts/build-help.sh", - "clean": "rimraf dist", - "test": "electron-mocha --renderer --recursive dist/test --timeout 10000 --require source-map-support/register", - "eslint": "eslint .", - diff --git a/backports/signal-desktop/ringrtc-webrtc-renamed.patch b/backports/signal-desktop/ringrtc-webrtc-renamed.patch index 6e5e6d1..2d2a61a 100644 --- a/backports/signal-desktop/ringrtc-webrtc-renamed.patch +++ b/backports/signal-desktop/ringrtc-webrtc-renamed.patch @@ -1,25 +1,19 @@ -diff --git a/ringrtc/src/rust/build.rs.orig b/ringrtc/src/rust/build.rs -index ff2ce04d1cf..ccdaaaef84d 100644 ---- a/ringrtc/src/rust/build.rs.orig -+++ b/ringrtc/src/rust/build.rs -@@ -61,6 +61,7 @@ fn main() { +--- ./src/rust/build.rs.orig ++++ ./src/rust/build.rs +@@ -41,15 +41,15 @@ if cfg!(feature = "native") { - let webrtc_dir = - if cfg!(feature = "prebuilt_webrtc") || cfg!(feature = "prebuilt_webrtc_sim") { -+ panic!("trying to download prebuild webrtc"); - if let Err(e) = fs::create_dir_all(&out_dir) { - panic!("Failed to create webrtc out directory: {:?}", e); - } -@@ -74,12 +75,12 @@ fn main() { - // Ignore build type since we only have release prebuilts - format!("{}/release/obj/", out_dir) - } else { -- format!("{}/{}/obj", out_dir, build_type) -+ format!("{}/{}", out_dir, build_type) - }; - println!("cargo:rerun-if-changed={}", webrtc_dir); - println!("cargo:rerun-if-changed={}", config_dir()); - println!("cargo:rustc-link-search=native={}", webrtc_dir); + if let Ok(out_dir) = out_dir { + println!( +- "cargo:rustc-link-search=native={}/{}/obj/", ++ "cargo:rustc-link-search=native={}/{}/", + out_dir, build_type, + ); +- println!("cargo:rerun-if-changed={}/{}/obj/", out_dir, build_type,); ++ println!("cargo:rerun-if-changed={}/{}/", out_dir, build_type,); + } else { + println!("cargo:warning=No WebRTC output directory (OUTPUT_DIR) defined!"); + } + - println!("cargo:rustc-link-lib=webrtc"); + println!("cargo:rustc-link-lib=dylib=signaldeswebrtc"); diff --git a/backports/signal-desktop/signal-desktop.sh b/backports/signal-desktop/signal-desktop similarity index 66% rename from backports/signal-desktop/signal-desktop.sh rename to backports/signal-desktop/signal-desktop index 3904d51..370469c 100755 --- a/backports/signal-desktop/signal-desktop.sh +++ b/backports/signal-desktop/signal-desktop @@ -3,4 +3,4 @@ # app chooses config (including used endpoints) based on this export NODE_ENV=production -exec electron /usr/lib/signal-desktop/app.asar "$@" +exec electron /usr/lib/signal-desktop/app.asar diff --git a/backports/signal-desktop/signal-disable-updates.patch b/backports/signal-desktop/signal-disable-updates.patch index 3d8fc38..fc83b51 100644 --- a/backports/signal-desktop/signal-disable-updates.patch +++ b/backports/signal-desktop/signal-disable-updates.patch @@ -1,11 +1,9 @@ -diff --git a/Signal-Desktop/config/production.json.orig b/Signal-Desktop/config/production.json -index ee1fc6523d8..6fcb97f3a36 100644 ---- a/Signal-Desktop/config/production.json.orig -+++ b/Signal-Desktop/config/production.json -@@ -16,5 +16,5 @@ - "genericServerPublicParams": "AByD873dTilmOSG0TjKrvpeaKEsUmIO8Vx9BeMmftwUs9v7ikPwM8P3OHyT0+X3EUMZrSe9VUp26Wai51Q9I8mdk0hX/yo7CeFGJyzoOqn8e/i4Ygbn5HoAyXJx5eXfIbqpc0bIxzju4H/HOQeOpt6h742qii5u/cbwOhFZCsMIbElZTaeU+BWMBQiZHIGHT5IE0qCordQKZ5iPZom0HeFa8Yq0ShuEyAl0WINBiY6xE3H/9WnvzXBbMuuk//eRxXgzO8ieCeK8FwQNxbfXqZm6Ro1cMhCOF3u7xoX83QhpN", - "backupServerPublicParams": "AJwNSU55fsFCbgaxGRD11wO1juAs8Yr5GF8FPlGzzvdJJIKH5/4CC7ZJSOe3yL2vturVaRU2Cx0n751Vt8wkj1bozK3CBV1UokxV09GWf+hdVImLGjXGYLLhnI1J2TWEe7iWHyb553EEnRb5oxr9n3lUbNAJuRmFM7hrr0Al0F0wrDD4S8lo2mGaXe0MJCOM166F8oYRQqpFeEHfiLnxA1O8ZLh7vMdv4g9jI5phpRBTsJ5IjiJrWeP0zdIGHEssUeprDZ9OUJ14m0v61eYJMKsf59Bn+mAT2a7YfB+Don9O", - "stripePublishableKey": "pk_live_6cmGZopuTsV8novGgJJW9JpC00vLIgtQ1D", +--- a/config/production.json ++++ b/config/production.json +@@ -11,5 +11,5 @@ + }, + "serverPublicParams": "AMhf5ywVwITZMsff/eCyudZx9JDmkkkbV6PInzG4p8x3VqVJSFiMvnvlEKWuRob/1eaIetR31IYeAbm0NdOuHH8Qi+Rexi1wLlpzIo1gstHWBfZzy1+qHRV5A4TqPp15YzBPm0WSggW6PbSn+F4lf57VCnHF7p8SvzAA2ZZJPYJURt8X7bbg+H3i+PEjH9DXItNEqs2sNcug37xZQDLm7X36nOoGPs54XsEGzPdEV+itQNGUFEjY6X9Uv+Acuks7NpyGvCoKxGwgKgE5XyJ+nNKlyHHOLb6N1NuHyBrZrgtY/JYJHRooo5CEqYKBqdFnmbTVGEkCvJKxLnjwKWf+fEPoWeQFj5ObDjcKMZf2Jm2Ae69x+ikU5gBXsRmoF94GXQ==", + "serverTrustRoot": "BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF", - "updatesEnabled": true + "updatesEnabled": false } diff --git a/backports/signal-desktop/signal-do-not-package-desktop-entry.patch b/backports/signal-desktop/signal-do-not-package-desktop-entry.patch deleted file mode 100644 index 7a973a1..0000000 --- a/backports/signal-desktop/signal-do-not-package-desktop-entry.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/Signal-Desktop/package.json.orig b/Signal-Desktop/package.json -index 832035e..e6ac14c 100644 ---- a/Signal-Desktop/package.json.orig -+++ b/Signal-Desktop/package.json -@@ -519,11 +519,6 @@ - }, - "linux": { - "category": "Network;InstantMessaging;Chat", -- "desktop": { -- "entry": { -- "StartupWMClass": "signal" -- } -- }, - "target": [ - "deb" - ], diff --git a/backports/signal-desktop/signal-do-not-package-sqlcipher-deps.patch b/backports/signal-desktop/signal-do-not-package-sqlcipher-deps.patch deleted file mode 100644 index c91209d..0000000 --- a/backports/signal-desktop/signal-do-not-package-sqlcipher-deps.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/Signal-Desktop/package.json.orig b/Signal-Desktop/package.json -index 5b7b015e20a..bb348fdb4c2 100644 ---- a/Signal-Desktop/package.json.orig -+++ b/Signal-Desktop/package.json -@@ -607,6 +607,7 @@ - "node_modules/socks/build/client/*.js", - "node_modules/smart-buffer/build/*.js", - "node_modules/@signalapp/sqlcipher/prebuilds/${platform}-${arch}/*.node", -+ "!node_modules/@signalapp/sqlcipher/deps/**", - "node_modules/@signalapp/libsignal-client/prebuilds/${platform}-${arch}/*.node", - "!node_modules/@signalapp/ringrtc/scripts/*", - "node_modules/@signalapp/ringrtc/build/${platform}/*${arch}*.node", diff --git a/backports/signal-desktop/signal-rollback-locale-changes.patch b/backports/signal-desktop/signal-rollback-locale-changes.patch deleted file mode 100644 index 97e2cf9..0000000 --- a/backports/signal-desktop/signal-rollback-locale-changes.patch +++ /dev/null @@ -1,225 +0,0 @@ -From a094a2ca2b6d8758b4aea24389c35fc4f142b715 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> -Date: Mon, 3 Mar 2025 19:10:01 -0800 -Subject: [PATCH] Compactify locales even more - -Rollback of Compactify locales even more. For some reason, (maybe tasje?), -these new locales aren't working - ---- - app/locale.ts | 56 ++++++++++++++++-- - package.json | 2 +- - ts/scripts/generate-compact-locales.ts | 82 +++++++++++++++++++------- - 3 files changed, 112 insertions(+), 28 deletions(-) - - -diff --git a/Signal-Desktop/package.json.orig b/Signal-Desktop/package.json -index 04dd9f9200b..e7b69ef963f 100644 ---- a/Signal-Desktop/package.json.orig -+++ b/Signal-Desktop/package.json -@@ -538,10 +538,7 @@ - { - "from": "build/compact-locales", - "to": "_locales", -- "filter": [ -- "**/values.json", -- "keys.json" -- ] -+ "filter": "**/messages.json" - }, - "js/**", - "libtextsecure/**", -diff --git a/Signal-Desktop/app/locale.ts.orig b/Signal-Desktop/app/locale.ts -index a63eef4079d..2a959da4d0d 100644 ---- a/Signal-Desktop/app/locale.ts.orig -+++ b/Signal-Desktop/app/locale.ts -@@ -1,9 +1,8 @@ - // Copyright 2017 Signal Messenger, LLC - // SPDX-License-Identifier: AGPL-3.0-only - --import { join } from 'node:path'; --import { readFileSync } from 'node:fs'; --import { app } from 'electron'; -+import { join } from 'path'; -+import { readFileSync } from 'fs'; - import lodash from 'lodash'; - import * as LocaleMatcher from '@formatjs/intl-localematcher'; - import { z } from 'zod'; -@@ -16,9 +15,6 @@ import type { LocalizerType } from '../ts/types/Util'; - import * as Errors from '../ts/types/errors'; - import { parseUnknown } from '../ts/util/schemas'; - --type CompactLocaleMessagesType = ReadonlyArray; --type CompactLocaleKeysType = ReadonlyArray; -- - const TextInfoSchema = z.object({ - direction: z.enum(['ltr', 'rtl']), - }); -@@ -29,17 +25,6 @@ function getLocaleMessages(locale: string): LocaleMessagesType { - return JSON.parse(readFileSync(targetFile, 'utf-8')); - } - --function getCompactLocaleKeys(): CompactLocaleKeysType { -- const targetFile = join(__dirname, '..', '_locales', 'keys.json'); -- return JSON.parse(readFileSync(targetFile, 'utf-8')); --} -- --function getCompactLocaleValues(locale: string): CompactLocaleMessagesType { -- const targetFile = join(__dirname, '..', '_locales', locale, 'values.json'); -- -- return JSON.parse(readFileSync(targetFile, 'utf-8')); --} -- - export type LocaleDisplayNames = Record>; - export type CountryDisplayNames = Record>; - -@@ -154,42 +139,13 @@ export function load({ - - logger.info(`locale: Matched locale: ${matchedLocale}`); - -+ const matchedLocaleMessages = getLocaleMessages(matchedLocale); -+ const englishMessages = getLocaleMessages('en'); - const localeDisplayNames = getLocaleDisplayNames(); - const countryDisplayNames = getCountryDisplayNames(); - -- let finalMessages: LocaleMessagesType; -- if (app.isPackaged) { -- const matchedLocaleMessages = getCompactLocaleValues(matchedLocale); -- const englishMessages = getCompactLocaleValues('en'); -- const keys = getCompactLocaleKeys(); -- if (matchedLocaleMessages.length !== keys.length) { -- throw new Error( -- `Invalid "${matchedLocale}" entry count, ` + -- `${matchedLocaleMessages.length} != ${keys.length}` -- ); -- } -- if (englishMessages.length !== keys.length) { -- throw new Error( -- `Invalid "en" entry count, ${englishMessages.length} != ${keys.length}` -- ); -- } -- -- // We start with english, then overwrite that with anything present in locale -- finalMessages = Object.create(null); -- for (const [i, key] of keys.entries()) { -- finalMessages[key] = { -- messageformat: -- matchedLocaleMessages[i] ?? englishMessages[i] ?? undefined, -- }; -- } -- } else { -- const matchedLocaleMessages = getLocaleMessages(matchedLocale); -- const englishMessages = getLocaleMessages('en'); -- -- // We start with english, then overwrite that with anything present in locale -- finalMessages = merge(englishMessages, matchedLocaleMessages); -- } -- -+ // We start with english, then overwrite that with anything present in locale -+ const finalMessages = merge(englishMessages, matchedLocaleMessages); - const i18n = setupI18n(matchedLocale, finalMessages, { - renderEmojify: shouldNeverBeCalled, - }); -diff --git a/Signal-Desktop/ts/scripts/generate-compact-locales.ts.orig b/Signal-Desktop/ts/scripts/generate-compact-locales.ts -index 7187d287acc..9a17d638f44 100644 ---- a/Signal-Desktop/ts/scripts/generate-compact-locales.ts.orig -+++ b/Signal-Desktop/ts/scripts/generate-compact-locales.ts -@@ -3,49 +3,6 @@ - - import { readdir, mkdir, readFile, writeFile } from 'node:fs/promises'; - import { join, dirname } from 'node:path'; --import pMap from 'p-map'; --import { isLocaleMessageType } from '../util/setupI18nMain.js'; -- --async function compact({ -- sourceDir, -- targetDir, -- locale, -- keys, --}: { -- sourceDir: string; -- targetDir: string; -- locale: string; -- keys: ReadonlyArray; --}): Promise> { -- const sourcePath = join(sourceDir, locale, 'messages.json'); -- const targetPath = join(targetDir, locale, 'values.json'); -- -- await mkdir(dirname(targetPath), { recursive: true }); -- -- const json = JSON.parse(await readFile(sourcePath, 'utf8')); -- -- const result = new Array(); -- for (const key of keys) { -- if (json[key] == null) { -- // Pull English translation, or leave blank (string was deleted) -- result.push(null); -- continue; -- } -- -- const value = json[key]; -- if (!isLocaleMessageType(value)) { -- continue; -- } -- if (value.messageformat == null) { -- continue; -- } -- result.push(value.messageformat); -- } -- -- await writeFile(targetPath, JSON.stringify(result)); -- -- return keys; --} - - async function main(): Promise { - const rootDir = join(__dirname, '..', '..'); -@@ -54,27 +11,30 @@ async function main(): Promise { - - const locales = await readdir(sourceDir); - -- const allKeys = await pMap( -- locales, -- async locale => { -+ await Promise.all( -+ locales.map(async locale => { - const sourcePath = join(sourceDir, locale, 'messages.json'); -- const json = JSON.parse(await readFile(sourcePath, 'utf8')); -- return Object.entries(json) -- .filter(([, value]) => isLocaleMessageType(value)) -- .map(([key]) => key); -- }, -- { concurrency: 10 } -- ); -+ const targetPath = join(targetDir, locale, 'messages.json'); - -- // Sort keys alphabetically for better incremental updates. -- const keys = Array.from(new Set(allKeys.flat())).sort(); -- await mkdir(targetDir, { recursive: true }); -- await writeFile(join(targetDir, 'keys.json'), JSON.stringify(keys)); -+ await mkdir(dirname(targetPath), { recursive: true }); - -- await pMap( -- locales, -- locale => compact({ sourceDir, targetDir, locale, keys }), -- { concurrency: 10 } -+ const json = JSON.parse(await readFile(sourcePath, 'utf8')); -+ for (const value of Object.values(json)) { -+ const typedValue = value as { description?: string }; -+ delete typedValue.description; -+ } -+ delete json.smartling; -+ -+ const entries = [...Object.entries(json)]; -+ -+ // Sort entries alphabetically for better incremental updates. -+ entries.sort(([a], [b]) => { -+ return a < b ? -1 : 1; -+ }); -+ -+ const result = Object.fromEntries(entries); -+ await writeFile(targetPath, JSON.stringify(result)); -+ }) - ); - } - diff --git a/backports/signal-desktop/signal-show-window-please.patch b/backports/signal-desktop/signal-show-window-please.patch index c8c5a65..39c8381 100644 --- a/backports/signal-desktop/signal-show-window-please.patch +++ b/backports/signal-desktop/signal-show-window-please.patch @@ -1,13 +1,11 @@ -diff --git a/Signal-Desktop/app/main.ts.orig b/Signal-Desktop/app/main.ts -index aa1bec8..bd7c1d5 100644 ---- a/Signal-Desktop/app/main.ts.orig -+++ b/Signal-Desktop/app/main.ts -@@ -690,7 +690,7 @@ async function createWindow() { - : DEFAULT_HEIGHT; +--- ./app/main.ts.orig ++++ ./app/main.ts +@@ -721,7 +721,7 @@ + const titleBarOverlay = await getTitleBarOverlay(); const windowOptions: Electron.BrowserWindowConstructorOptions = { - show: false, + show: true, - width, - height, + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, minWidth: MIN_WIDTH, diff --git a/backports/signal-desktop/signal-tasje-whatever-the-fuck-is-ignore-doing-here.patch b/backports/signal-desktop/signal-tasje-whatever-the-fuck-is-ignore-doing-here.patch new file mode 100644 index 0000000..ecb9075 --- /dev/null +++ b/backports/signal-desktop/signal-tasje-whatever-the-fuck-is-ignore-doing-here.patch @@ -0,0 +1,20 @@ +--- ./package.json.orig ++++ ./package.json +@@ -431,7 +431,6 @@ + "libtextsecure/**", + "ts/**/*.js", + "ts/*.js", +- "!build", + "!ts/{storybook,test-node,test-mock,test-both,test-electron}", + "!**/{tsconfig,bower,component}.json", + "!**/.{github,husky,grenrc,npmrc,nycrc,taprc,bithoundrc}", +@@ -468,9 +467,7 @@ + "!node_modules/spellchecker/vendor/hunspell/**/*", + "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme,test,__tests__,tests,powered-test,example,examples,*.d.ts,.snyk-*.flag,benchmark}", + "!**/node_modules/.bin", +- "!**/node_modules/**/build/**", + "node_modules/intl-tel-input/build/**", +- "!**/node_modules/**/prebuilds/**", + "!**/*.{o,hprof,orig,pyc,pyo,rbc,c,h,m}", + "!**/._*", + "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.yarn-metadata.json,.idea,appveyor.yml,.travis.yml,circle.yml,npm-debug.log,.nyc_output,yarn.lock,.yarn-integrity}", diff --git a/backports/signal-desktop/signal-update-links.patch b/backports/signal-desktop/signal-update-links.patch index afd0b6b..39ec819 100644 --- a/backports/signal-desktop/signal-update-links.patch +++ b/backports/signal-desktop/signal-update-links.patch @@ -1,5 +1,5 @@ ---- ./Signal-Desktop/ts/components/DialogExpiredBuild.tsx.orig -+++ ./Signal-Desktop/ts/components/DialogExpiredBuild.tsx +--- ./ts/components/DialogExpiredBuild.tsx.orig ++++ ./ts/components/DialogExpiredBuild.tsx @@ -23,9 +23,9 @@ containerWidthBreakpoint={containerWidthBreakpoint} type="error" @@ -12,8 +12,8 @@ hasAction > {i18n('icu:expiredWarning')}{' '} ---- ./Signal-Desktop/ts/types/support.ts.orig -+++ ./Signal-Desktop/ts/types/support.ts +--- ./ts/types/support.ts.orig ++++ ./ts/types/support.ts @@ -1,7 +1,7 @@ // Copyright 2023 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only diff --git a/backports/signal-desktop/signal-use-system-sqlcipher.patch b/backports/signal-desktop/signal-use-system-sqlcipher.patch deleted file mode 100644 index 576ee66..0000000 --- a/backports/signal-desktop/signal-use-system-sqlcipher.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/node-sqlcipher/binding.gyp.orig b/node-sqlcipher/binding.gyp -index 9a5caa2f713..8d3da54fea7 100644 ---- a/node-sqlcipher/binding.gyp.orig -+++ b/node-sqlcipher/binding.gyp -@@ -3,8 +3,15 @@ - 'targets': [ - { - 'target_name': 'node_sqlcipher', -+ 'include_dirs': [ -+ '/usr/include/sqlcipher', -+ ], -+ 'link_settings': { -+ 'libraries': [ -+ '-lsqlcipher', -+ ] -+ }, - 'dependencies': [ -- 'deps/sqlcipher/sqlcipher.gyp:sqlcipher', - 'deps/extension/extension.gyp:extension', - " SctpTransport() const { return sctp_transport_; } -+ scoped_refptr<::webrtc::SctpTransport> SctpTransport() const { -+ return sctp_transport_; -+ } - - // TODO(bugs.webrtc.org/9719): Delete method, update callers to use - // SctpTransport() instead. diff --git a/backports/signal-desktop/webrtc-gcc13.patch b/backports/signal-desktop/webrtc-gcc13.patch new file mode 100644 index 0000000..ee3199d --- /dev/null +++ b/backports/signal-desktop/webrtc-gcc13.patch @@ -0,0 +1,10 @@ +--- ./rtc_base/system/file_wrapper.h.orig ++++ ./rtc_base/system/file_wrapper.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + + #include + diff --git a/backports/signal-desktop/webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch b/backports/signal-desktop/webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch deleted file mode 100644 index c2279a0..0000000 --- a/backports/signal-desktop/webrtc-rtcbase-platform-thread-type-do-not-include-linux-prctl-header.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/webrtc/rtc_base/platform_thread_types.cc.orig b/webrtc/rtc_base/platform_thread_types.cc -index 20bf4af..482b15f 100644 ---- a/webrtc/rtc_base/platform_thread_types.cc.orig -+++ b/webrtc/rtc_base/platform_thread_types.cc -@@ -12,7 +12,6 @@ - - // IWYU pragma: begin_keep - #if defined(WEBRTC_LINUX) --#include - #include - #include - diff --git a/backports/signal-desktop/webrtc-shared-libs.patch b/backports/signal-desktop/webrtc-shared-libs.patch deleted file mode 100644 index 04b55c0..0000000 --- a/backports/signal-desktop/webrtc-shared-libs.patch +++ /dev/null @@ -1,78 +0,0 @@ ---- ./webrtc/BUILD.gn.orig -+++ ./webrtc/BUILD.gn -@@ -38,7 +38,7 @@ - # 'ninja default' and then 'ninja all', the second build should do no work. - group("default") { - testonly = true -- deps = [ ":webrtc" ] -+ deps = [ ":signaldeswebrtc" ] - if (rtc_build_examples) { - deps += [ "examples" ] - } -@@ -464,7 +464,7 @@ - - if (!build_with_chromium) { - # Target to build all the WebRTC production code. -- rtc_static_library("webrtc") { -+ rtc_shared_library("signaldeswebrtc") { - # Only the root target and the test should depend on this. - visibility = [ - "//:default", -@@ -530,7 +530,6 @@ if (!build_with_chromium) { - - sources = [] - -- complete_static_lib = true - suppressed_configs += [ "//build/config/compiler:thin_archive" ] - defines = [] - -diff --git a/webrtc/third_party/googletest/BUILD.gn.orig b/webrtc/third_party/googletest/BUILD.gn -index 14089f0..b7dc621 100644 ---- a/webrtc/third_party/googletest/BUILD.gn.orig -+++ b/webrtc/third_party/googletest/BUILD.gn -@@ -48,7 +48,6 @@ config("gtest_config") { - - configs = [ - "//third_party/abseil-cpp:absl_include_config", -- "//third_party/re2:re2_config", - ] - } - -diff --git a/webrtc/third_party/googletest/BUILD.gn.orig b/webrtc/third_party/googletest/BUILD.gn -index b7dc621..367f929 100644 ---- a/webrtc/third_party/googletest/BUILD.gn.orig -+++ b/webrtc/third_party/googletest/BUILD.gn -@@ -129,7 +128,6 @@ source_set("gtest") { - - # googletest only needs `absl`, but this makes gn check happier. - deps = [ "//third_party/abseil-cpp:absl_full" ] -- public_deps = [ "//third_party/re2" ] - if (!build_with_chromium) { - defines += [ "GTEST_DISABLE_PRINT_STACK_TRACE" ] - sources -= [ -diff --git a/webrtc/third_party/fuzztest/BUILD.gn.orig b/webrtc/third_party/fuzztest/BUILD.gn -index 57ee790..ba1d297 100644 ---- a/webrtc/third_party/fuzztest/BUILD.gn.orig -+++ b/webrtc/third_party/fuzztest/BUILD.gn -@@ -309,7 +309,6 @@ source_set("fuzztest_internal") { - # For RE2 mutators. It's questionable whether we want to pull this library - # into every fuzztest target, but this is the approach used in other - # fuzztest contexts so we'll do the same -- "//third_party/re2", - - # For protobuf mutators - "$protobuf_target_prefix:protobuf_lite", -diff --git a/webrtc/third_party/BUILD.gn b/webrtc/third_party/BUILD.gn -index 256fd092e2e..4ce797ebad7 100644 ---- a/webrtc/third_party/BUILD.gn -+++ b/webrtc/third_party/BUILD.gn -@@ -71,8 +69,5 @@ component("freetype_harfbuzz") { - - buildflag_header("freetype_buildflags") { - header = "freetype_buildflags.h" -- flags = [ -- "USE_SYSTEM_FREETYPE=$use_system_freetype", -- "ENABLE_FREETYPE=$enable_freetype", -- ] -+ flags = [ "USE_SYSTEM_FREETYPE=$use_system_freetype" ] - } diff --git a/backports/signal-desktop/webrtc-shared-like-my-wife.patch b/backports/signal-desktop/webrtc-shared-like-my-wife.patch new file mode 100644 index 0000000..bd7115a --- /dev/null +++ b/backports/signal-desktop/webrtc-shared-like-my-wife.patch @@ -0,0 +1,28 @@ +--- ./BUILD.gn.orig ++++ ./BUILD.gn +@@ -38,7 +38,7 @@ + # 'ninja default' and then 'ninja all', the second build should do no work. + group("default") { + testonly = true +- deps = [ ":webrtc" ] ++ deps = [ ":signaldeswebrtc" ] + if (rtc_build_examples) { + deps += [ "examples" ] + } +@@ -464,7 +464,7 @@ + + if (!build_with_chromium) { + # Target to build all the WebRTC production code. +- rtc_static_library("webrtc") { ++ rtc_shared_library("signaldeswebrtc") { + # Only the root target and the test should depend on this. + visibility = [ + "//:default", +@@ -472,7 +472,6 @@ + ] + + sources = [] +- complete_static_lib = true + suppressed_configs += [ "//build/config/compiler:thin_archive" ] + defines = [] + diff --git a/backports/signal-desktop/webrtc-toolhack.patch b/backports/signal-desktop/webrtc-toolhack.patch new file mode 100644 index 0000000..4028fe2 --- /dev/null +++ b/backports/signal-desktop/webrtc-toolhack.patch @@ -0,0 +1,22 @@ +this breaks the clang include path +-- +--- a/build/config/compiler/BUILD.gn ++++ a/build/config/compiler/BUILD.gn +@@ -1310,7 +1310,7 @@ + # paths to the tools it invokes. We don't want this because we don't + # really need it and it can mess up the goma cache entries. + if (is_clang && (!is_nacl || is_nacl_saigo)) { +- cflags += [ "-no-canonical-prefixes" ] ++ #cflags += [ "-no-canonical-prefixes" ] + + # Same for links: Let the compiler driver invoke the linker + # with a relative path and pass relative paths to built-in +@@ -1319,7 +1319,7 @@ + # We don't link on goma, so this change is just for cleaner + # internal linker invocations, for people who work on the build. + if (!is_win) { +- ldflags += [ "-no-canonical-prefixes" ] ++ #ldflags += [ "-no-canonical-prefixes" ] + } + } + } diff --git a/backports/signal-desktop/webrtc-use-alpine-target.patch b/backports/signal-desktop/webrtc-use-alpine-target.patch new file mode 100644 index 0000000..560bbcf --- /dev/null +++ b/backports/signal-desktop/webrtc-use-alpine-target.patch @@ -0,0 +1,13 @@ +--- ./build/config/compiler/BUILD.gn ++++ ./build/config/compiler/BUILD.gn +@@ -937,8 +937,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 diff --git a/backports/signal-desktop/webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch b/backports/signal-desktop/webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch deleted file mode 100644 index 1504f81..0000000 --- a/backports/signal-desktop/webrtc-use-only-payloadtypesuggester-for-pt-assignement.patch +++ /dev/null @@ -1,459 +0,0 @@ -diff --git a/webrtc/pc/codec_vendor.cc b/webrtc/pc/codec_vendor.cc -index 42d52f6..e45516c 100644 ---- a/webrtc/pc/codec_vendor.cc -+++ b/webrtc/pc/codec_vendor.cc -@@ -39,7 +39,6 @@ - #include "pc/rtp_media_utils.h" - #include "pc/session_description.h" - #include "pc/typed_codec_vendor.h" --#include "pc/used_ids.h" - #include "rtc_base/checks.h" - #include "rtc_base/logging.h" - #include "rtc_base/string_encode.h" -@@ -54,11 +53,6 @@ - - namespace { - --using webrtc::PayloadTypeSuggester; --using webrtc::RTCError; --using webrtc::RTCErrorOr; --using webrtc::RtpTransceiverDirection; -- - bool IsRtxCodec(const RtpCodecCapability& capability) { - return absl::EqualsIgnoreCase(capability.name, kRtxCodecName); - } -@@ -75,8 +69,7 @@ - std::optional FindMatchingCodec(const CodecList& codecs1, - const CodecList& codecs2, - const Codec& codec_to_match) { -- return webrtc::FindMatchingCodec(codecs1.codecs(), codecs2.codecs(), -- codec_to_match); -+ return FindMatchingCodec(codecs1.codecs(), codecs2.codecs(), codec_to_match); - } - - void StripCNCodecs(CodecList& audio_codecs) { -@@ -105,7 +98,7 @@ - } - - int associated_pt; -- if (!webrtc::FromString(associated_pt_str, &associated_pt)) { -+ if (!FromString(associated_pt_str, &associated_pt)) { - RTC_LOG(LS_WARNING) << "Couldn't convert payload type " << associated_pt_str - << " of RTX codec " << rtx_codec.id - << " to an integer."; -@@ -136,14 +129,14 @@ - return nullptr; - } - -- std::vector redundant_payloads = webrtc::split(fmtp, '/'); -+ std::vector redundant_payloads = split(fmtp, '/'); - if (redundant_payloads.size() < 2) { - return nullptr; - } - - absl::string_view associated_pt_str = redundant_payloads[0]; - int associated_pt; -- if (!webrtc::FromString(associated_pt_str, &associated_pt)) { -+ if (!FromString(associated_pt_str, &associated_pt)) { - RTC_LOG(LS_WARNING) << "Couldn't convert first payload type " - << associated_pt_str << " of RED codec " << red_codec.id - << " to an integer."; -@@ -182,7 +175,21 @@ - return suggestion.MoveError(); - } - codec.id = suggestion.value(); -- offered_codecs.push_back(codec); -+ // The rewrite of the parameter may have turned the codec into -+ // one that is already present. -+ bool skip = false; -+ for (const Codec& present_codec : offered_codecs) { -+ if (present_codec.id == codec.id) { -+ RTC_DCHECK(MatchesWithReferenceAttributes(present_codec, codec)) -+ << "Codec mismatch: present " << present_codec << ", new " -+ << codec; -+ skip = true; -+ break; -+ } -+ } -+ if (!skip) { -+ offered_codecs.push_back(codec); -+ } - } - } - -@@ -232,7 +239,7 @@ - } - std::string red_param = absl::StrCat(matching_codec->id); - red_codec.params[kCodecParamNotInNameValueFormat] = -- webrtc::StrJoin(std::vector{red_param, red_param}, "/"); -+ StrJoin(std::vector{red_param, red_param}, "/"); - } - RTCErrorOr suggestion = - pt_suggester.SuggestPayloadType(mid, red_codec); -@@ -240,84 +247,25 @@ - return suggestion.MoveError(); - } - red_codec.id = suggestion.value(); -- offered_codecs.push_back(red_codec); -+ // The rewrite of the parameter may have turned the RED codec into -+ // one that is already present. -+ bool skip = false; -+ for (const Codec& present_codec : offered_codecs) { -+ if (present_codec.id == red_codec.id) { -+ RTC_DCHECK(MatchesWithReferenceAttributes(present_codec, red_codec)); -+ skip = true; -+ break; -+ } -+ } -+ if (!skip) { -+ offered_codecs.push_back(red_codec); -+ } - } - } - offered_codecs.CheckConsistency(); - return RTCError::OK(); - } - --// Adds all codecs from `reference_codecs` to `offered_codecs` that don't --// already exist in `offered_codecs` and ensure the payload types don't --// collide. --// OLD VERSION - uses UsedPayloadTypes --void MergeCodecs(const CodecList& reference_codecs, -- CodecList& offered_codecs, -- UsedPayloadTypes* used_pltypes) { -- // Add all new codecs that are not RTX/RED codecs. -- // The two-pass splitting of the loops means preferring payload types -- // of actual codecs with respect to collisions. -- for (const Codec& reference_codec : reference_codecs) { -- if (reference_codec.GetResiliencyType() != Codec::ResiliencyType::kRtx && -- reference_codec.GetResiliencyType() != Codec::ResiliencyType::kRed && -- !FindMatchingCodec(reference_codecs, offered_codecs, reference_codec)) { -- Codec codec = reference_codec; -- used_pltypes->FindAndSetIdUsed(&codec); -- offered_codecs.push_back(codec); -- } -- } -- -- // Add all new RTX or RED codecs. -- for (const Codec& reference_codec : reference_codecs) { -- if (reference_codec.GetResiliencyType() == Codec::ResiliencyType::kRtx && -- !FindMatchingCodec(reference_codecs, offered_codecs, reference_codec)) { -- Codec rtx_codec = reference_codec; -- const Codec* associated_codec = -- GetAssociatedCodecForRtx(reference_codecs, rtx_codec); -- if (!associated_codec) { -- continue; -- } -- // Find a codec in the offered list that matches the reference codec. -- // Its payload type may be different than the reference codec. -- std::optional matching_codec = FindMatchingCodec( -- reference_codecs, offered_codecs, *associated_codec); -- if (!matching_codec) { -- RTC_LOG(LS_WARNING) -- << "Couldn't find matching " << associated_codec->name << " codec."; -- continue; -- } -- -- rtx_codec.params[kCodecParamAssociatedPayloadType] = -- absl::StrCat(matching_codec->id); -- used_pltypes->FindAndSetIdUsed(&rtx_codec); -- offered_codecs.push_back(rtx_codec); -- } else if (reference_codec.GetResiliencyType() == -- Codec::ResiliencyType::kRed && -- !FindMatchingCodec(reference_codecs, offered_codecs, -- reference_codec)) { -- Codec red_codec = reference_codec; -- const Codec* associated_codec = -- GetAssociatedCodecForRed(reference_codecs, red_codec); -- if (associated_codec) { -- std::optional matching_codec = FindMatchingCodec( -- reference_codecs, offered_codecs, *associated_codec); -- if (!matching_codec) { -- RTC_LOG(LS_WARNING) << "Couldn't find matching " -- << associated_codec->name << " codec."; -- continue; -- } -- -- red_codec.params[kCodecParamNotInNameValueFormat] = -- absl::StrCat(matching_codec->id) + "/" + -- absl::StrCat(matching_codec->id); -- } -- used_pltypes->FindAndSetIdUsed(&red_codec); -- offered_codecs.push_back(red_codec); -- } -- } -- offered_codecs.CheckConsistency(); --} -- - // `codecs` is a full list of codecs with correct payload type mappings, which - // don't conflict with mappings of the other media type; `supported_codecs` is - // a list filtered for the media section`s direction but with default payload -@@ -382,7 +330,7 @@ - codec.params.find(kCodecParamNotInNameValueFormat); - if (fmtp != codec.params.end()) { - std::vector redundant_payloads = -- webrtc::split(fmtp->second, '/'); -+ split(fmtp->second, '/'); - if (!redundant_payloads.empty() && - redundant_payloads[0] == id) { - if (!red_was_added) { -@@ -443,7 +391,7 @@ - for (const Codec& supported_codec : supported_codecs) { - if (absl::EqualsIgnoreCase(supported_codec.name, kH265CodecName)) { - std::optional supported_ptl = -- webrtc::ParseSdpForH265ProfileTierLevel(supported_codec.params); -+ ParseSdpForH265ProfileTierLevel(supported_codec.params); - if (supported_ptl.has_value()) { - supported_h265_profiles[supported_ptl->profile] = - supported_ptl->level; -@@ -458,14 +406,14 @@ - for (auto& filtered_codec : filtered_codecs) { - if (absl::EqualsIgnoreCase(filtered_codec.name, kH265CodecName)) { - std::optional filtered_ptl = -- webrtc::ParseSdpForH265ProfileTierLevel(filtered_codec.params); -+ ParseSdpForH265ProfileTierLevel(filtered_codec.params); - if (filtered_ptl.has_value()) { - auto it = supported_h265_profiles.find(filtered_ptl->profile); - - if (it != supported_h265_profiles.end() && - filtered_ptl->level != it->second) { - filtered_codec.params[kH265FmtpLevelId] = -- webrtc::H265LevelToString(it->second); -+ H265LevelToString(it->second); - } - } - } -@@ -506,13 +454,13 @@ - } - } - if (absl::EqualsIgnoreCase(ours.name, kH264CodecName)) { -- webrtc::H264GenerateProfileLevelIdForAnswer(ours.params, theirs->params, -- &negotiated.params); -+ H264GenerateProfileLevelIdForAnswer(ours.params, theirs->params, -+ &negotiated.params); - } - #ifdef RTC_ENABLE_H265 - if (absl::EqualsIgnoreCase(ours.name, kH265CodecName)) { -- webrtc::H265GenerateProfileTierLevelForAnswer( -- ours.params, theirs->params, &negotiated.params); -+ H265GenerateProfileTierLevelForAnswer(ours.params, theirs->params, -+ &negotiated.params); - NegotiateTxMode(ours, *theirs, &negotiated); - } - #endif -@@ -534,7 +482,7 @@ - continue; - } - int apt_value; -- if (!webrtc::FromString(apt_str, &apt_value)) { -+ if (!FromString(apt_str, &apt_value)) { - RTC_LOG(LS_WARNING) << "Unconvertable apt value"; - continue; - } -@@ -634,9 +582,11 @@ - } - // Add our codecs that are not in the current description. - if (media_description_options.type == MediaType::AUDIO) { -- MergeCodecs(all_audio_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(audio_recv_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(audio_send_codecs(), mid, codecs, pt_suggester); - } else { -- MergeCodecs(all_video_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(video_recv_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(video_send_codecs(), mid, codecs, pt_suggester); - } - CodecList filtered_codecs; - CodecList supported_codecs = -@@ -667,20 +617,11 @@ - const MediaContentDescription* mcd = - current_content->media_description(); - for (const Codec& codec : mcd->codecs()) { -- if (webrtc::FindMatchingCodec(mcd->codecs(), codecs.codecs(), -- codec)) { -+ if (FindMatchingCodec(mcd->codecs(), codecs.codecs(), codec)) { - filtered_codecs.push_back(codec); - } - } - } -- // Note what PTs are already in use. -- UsedPayloadTypes -- used_pltypes; // Used to avoid pt collisions in filtered_codecs -- for (auto& codec : filtered_codecs) { -- // Note: This may change PTs. Doing so woud indicate an error, but -- // UsedPayloadTypes doesn't offer a means to make the distinction. -- used_pltypes.FindAndSetIdUsed(&codec); -- } - // Add other supported codecs. - for (const Codec& codec : supported_codecs) { - std::optional found_codec = -@@ -707,8 +648,11 @@ - changed_referenced_codec->id); - } - } -- // Quick fix for b/395077842: Remap the codec if it collides. -- used_pltypes.FindAndSetIdUsed(&(*found_codec)); -+ auto pt_or_error = pt_suggester.SuggestPayloadType(mid, *found_codec); -+ if (!pt_or_error.ok()) { -+ return pt_or_error.MoveError(); -+ } -+ found_codec->id = pt_or_error.value(); - filtered_codecs.push_back(*found_codec); - } - } -@@ -763,9 +707,11 @@ - } - // Add all our supported codecs - if (media_description_options.type == MediaType::AUDIO) { -- MergeCodecs(all_audio_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(audio_recv_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(audio_send_codecs(), mid, codecs, pt_suggester); - } else { -- MergeCodecs(all_video_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(video_recv_codecs(), mid, codecs, pt_suggester); -+ MergeCodecs(video_send_codecs(), mid, codecs, pt_suggester); - } - CodecList filtered_codecs; - CodecList negotiated_codecs; -@@ -794,8 +740,8 @@ - const MediaContentDescription* mcd = - current_content->media_description(); - for (const Codec& codec : mcd->codecs()) { -- if (std::optional found_codec = webrtc::FindMatchingCodec( -- mcd->codecs(), codecs.codecs(), codec)) { -+ if (std::optional found_codec = -+ FindMatchingCodec(mcd->codecs(), codecs.codecs(), codec)) { - filtered_codecs.push_back(*found_codec); - } - } -@@ -913,8 +859,7 @@ - case RtpTransceiverDirection::kSendRecv: - case RtpTransceiverDirection::kStopped: - case RtpTransceiverDirection::kInactive: -- return GetVideoCodecsForOffer( -- webrtc::RtpTransceiverDirectionReversed(offer)); -+ return GetVideoCodecsForOffer(RtpTransceiverDirectionReversed(offer)); - case RtpTransceiverDirection::kSendOnly: - return video_send_codecs_.codecs(); - case RtpTransceiverDirection::kRecvOnly: -@@ -948,8 +893,7 @@ - case RtpTransceiverDirection::kSendRecv: - case RtpTransceiverDirection::kStopped: - case RtpTransceiverDirection::kInactive: -- return GetAudioCodecsForOffer( -- webrtc::RtpTransceiverDirectionReversed(offer)); -+ return GetAudioCodecsForOffer(RtpTransceiverDirectionReversed(offer)); - case RtpTransceiverDirection::kSendOnly: - return audio_send_codecs_.codecs(); - case RtpTransceiverDirection::kRecvOnly: -@@ -958,43 +902,6 @@ - RTC_CHECK_NOTREACHED(); - } - --CodecList CodecVendor::all_video_codecs() const { -- CodecList all_codecs; -- UsedPayloadTypes used_payload_types; -- for (const Codec& codec : video_recv_codecs_.codecs()) { -- Codec codec_mutable = codec; -- used_payload_types.FindAndSetIdUsed(&codec_mutable); -- all_codecs.push_back(codec_mutable); -- } -- -- // Use MergeCodecs to merge the second half of our list as it already checks -- // and fixes problems with duplicate payload types. -- MergeCodecs(video_send_codecs_.codecs(), all_codecs, &used_payload_types); -- -- return all_codecs; --} -- --CodecList CodecVendor::all_audio_codecs() const { -- // Compute the audio codecs union. -- CodecList codecs; -- for (const Codec& send : audio_send_codecs_.codecs()) { -- codecs.push_back(send); -- if (!FindMatchingCodec(audio_send_codecs_.codecs(), -- audio_recv_codecs_.codecs(), send)) { -- // It doesn't make sense to have an RTX codec we support sending but not -- // receiving. -- RTC_DCHECK(send.GetResiliencyType() != Codec::ResiliencyType::kRtx); -- } -- } -- for (const Codec& recv : audio_recv_codecs_.codecs()) { -- if (!FindMatchingCodec(audio_recv_codecs_.codecs(), -- audio_send_codecs_.codecs(), recv)) { -- codecs.push_back(recv); -- } -- } -- return codecs; --} -- - CodecList CodecVendor::audio_sendrecv_codecs() const { - // Use NegotiateCodecs to merge our codec lists, since the operation is - // essentially the same. Put send_codecs as the offered_codecs, which is the -diff --git a/webrtc/pc/wcodec_vendor.h b/webrtc/pc/codec_vendor.h -index 1472225..4a3a8d9 100644 ---- a/webrtc/pc/codec_vendor.h -+++ b/webrtc/pc/codec_vendor.h -@@ -102,9 +102,6 @@ - const RtpTransceiverDirection& offer, - const RtpTransceiverDirection& answer) const; - -- CodecList all_video_codecs() const; -- CodecList all_audio_codecs() const; -- - TypedCodecVendor audio_send_codecs_; - TypedCodecVendor audio_recv_codecs_; - -diff --git a/webrtc/pc/used_ids.h b/webrtc/pc/used_ids.h -index fe80531..f9d825c 100644 ---- a/webrtc/pc/used_ids.h -+++ b/webrtc/pc/used_ids.h -@@ -14,7 +14,6 @@ - #include - - #include "api/rtp_parameters.h" --#include "media/base/codec.h" - #include "rtc_base/checks.h" - - namespace webrtc { -@@ -88,41 +86,6 @@ - std::set id_set_; - }; - --// Helper class used for finding duplicate RTP payload types among audio, video --// and data codecs. When bundle is used the payload types may not collide. --class UsedPayloadTypes : public UsedIds { -- public: -- UsedPayloadTypes() -- : UsedIds(kFirstDynamicPayloadTypeLowerRange, -- kLastDynamicPayloadTypeUpperRange) {} -- -- // Check if a payload type is valid. The range [64-95] is forbidden -- // when rtcp-mux is used. -- static bool IsIdValid(Codec codec, bool rtcp_mux) { -- if (rtcp_mux && (codec.id > kLastDynamicPayloadTypeLowerRange && -- codec.id < kFirstDynamicPayloadTypeUpperRange)) { -- return false; -- } -- return codec.id >= 0 && codec.id <= kLastDynamicPayloadTypeUpperRange; -- } -- -- protected: -- bool IsIdUsed(int new_id) override { -- // Range marked for RTCP avoidance is "used". -- if (new_id > kLastDynamicPayloadTypeLowerRange && -- new_id < kFirstDynamicPayloadTypeUpperRange) -- return true; -- return UsedIds::IsIdUsed(new_id); -- } -- -- private: -- static const int kFirstDynamicPayloadTypeLowerRange = 35; -- static const int kLastDynamicPayloadTypeLowerRange = 63; -- -- static const int kFirstDynamicPayloadTypeUpperRange = 96; -- static const int kLastDynamicPayloadTypeUpperRange = 127; --}; -- - // Helper class used for finding duplicate RTP Header extension ids among - // audio and video extensions. - class UsedRtpHeaderExtensionIds : public UsedIds { diff --git a/backports/soqt/APKBUILD b/backports/soqt/APKBUILD new file mode 100644 index 0000000..778776e --- /dev/null +++ b/backports/soqt/APKBUILD @@ -0,0 +1,30 @@ +# Contributor: Aiden Grossman +# Maintainer: Aiden Grossman +pkgname=soqt +pkgver=1.6.0 +pkgrel=0 +pkgdesc="GUI binding library for coin" +url="https://github.com/coin3d/soqt" +arch="all" +license="BSD-3-Clause" +makedepends="coin-dev cmake mesa-dev qt5-qtbase-dev" +options="!check" # test suite consists only of interactive programs +subpackages="$pkgname-dev $pkgname-doc" +source="https://github.com/coin3d/soqt/releases/download/SoQt-$pkgver/soqt-$pkgver-src.tar.gz" +builddir="$srcdir/$pkgname" + +build() { + cmake -B build . \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DSOQT_BUILD_DOC_MAN=ON + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build +} + +sha512sums=" +4221e98f51cca4dda23043428e869b60ab4d994710f97c0f44cd82631ffad2bd8bbaf0b820434a4636892df663d66ecd2aec14b185972671b2d22c0fe242b553 soqt-1.6.0-src.tar.gz +" diff --git a/backports/thelounge/APKBUILD b/backports/thelounge/APKBUILD deleted file mode 100644 index 22b5565..0000000 --- a/backports/thelounge/APKBUILD +++ /dev/null @@ -1,84 +0,0 @@ -# Contributor: Kay Thomas -# Contributor: Fabricio Silva -# Maintainer: Fabricio Silva -pkgname=thelounge -pkgver=4.4.3 -pkgrel=0 -pkgdesc="Modern, responsive, cross-platform, self-hosted web IRC client" -url="https://thelounge.chat" -# build broken against node 24 -#arch="all !riscv64" # riscv64 gets SIGILL -license="MIT" -depends="nodejs" -makedepends="yarn py3-setuptools" -subpackages="$pkgname-openrc $pkgname-doc" -install="$pkgname.pre-install $pkgname.post-install" -source=" - $pkgname-$pkgver.tar.gz::https://github.com/thelounge/thelounge/archive/v$pkgver.tar.gz - thelounge.initd - thelounge.confd - " -options="net" # net for npm - -case $CARCH in - # loongarch64: 2 tests failed on the builder - # 1) SQLite Message Storage: should retrieve latest LIMIT messages in order - # 2) SQLite Message Storage: should search messages - loongarch64) options="$options !check";; -esac - -prepare() { - default_prepare - - export BROWSERSLIST_IGNORE_OLD_DATA=true - # to build npm/sqlite3 from source - export npm_config_build_from_source=true - yarn install --frozen-lockfile -} - -build() { - NODE_ENV=production yarn build - - # these are the same file - ln -sf ../package.json ./dist/package.json - # set home location - echo "/var/lib/thelounge" >.thelounge_home -} - -check() { - # skips tests that checks if version is using "source" and "git sha" - yarn test:mocha --grep "\#getVersion" --invert -} - -package() { - # cleanup unused files (cant be done before check) - yarn install --production --ignore-scripts --prefer-offline - find ./ -type f \( \ - -iname "*.ts" -o -iname "*.map" -o -iname "*.md" -o -iname "*.sh" -o \ - -iname "babel.config*" -o -iname "webpack.config*" -o -iname "tsconfig*" \ - \) -delete - find ./node_modules -type f \( \ - -iname "Makefile*" -o -iname "README*" -o -iname "LICENSE*" -o -iname "CHANGELOG*" \ - \) -delete - find ./node_modules -type d \( \ - -iname "test" -o -iname "node-gyp" -o -iname ".github" \ - \) -prune -exec rm -rf {} \; - - install -dm755 "$pkgdir"/usr/share/webapps/thelounge - install -Dm755 index.js -t "$pkgdir"/usr/share/webapps/thelounge/ - install -Dm644 package.json .thelounge_home -t "$pkgdir"/usr/share/webapps/thelounge/ - install -Dm644 client/index.html.tpl -t "$pkgdir"/usr/share/webapps/thelounge/client/ - cp -a node_modules public dist "$pkgdir"/usr/share/webapps/thelounge/ - mkdir -p "$pkgdir"/usr/bin - ln -sf ../share/webapps/thelounge/index.js "$pkgdir"/usr/bin/thelounge - - install -Dm644 LICENSE -t "$pkgdir"/usr/share/licenses/thelounge/ - install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname - install -Dm755 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname -} - -sha512sums=" -d1a873b15b5ac003c59257c591030ebeb8810609ea646477cc319ddb82fa2842b0b71f3edfe60eb5b54749ed90d55074d5b82ab6312b55cccee8281057b425f2 thelounge-4.4.3.tar.gz -126913f79c3eda7c0e6f2f792ce8a799e2100259b62de57c97329f079072e3d8d81c5591b08b99630803c9e320c85c8e34ac7ffe2ddba7f2982a5ba958960789 thelounge.initd -2c44963a1e4303a6045b80df0931bb636150cb7b1f14d536c3624bb6dacfabfa08d7ea4e261e40245b80eedbb53a47fbf73672a02c865295300c5121fb83a558 thelounge.confd -" diff --git a/backports/thelounge/thelounge.confd b/backports/thelounge/thelounge.confd deleted file mode 100644 index a7e59bd..0000000 --- a/backports/thelounge/thelounge.confd +++ /dev/null @@ -1,9 +0,0 @@ -# thelounge configuration options - -command_user="thelounge:thelounge" # user:group -supervisor="supervise-daemon" -directory="/var/lib/thelounge" - -logdir="/var/log/thelounge" -output_log="$logdir/output.log" -error_log="$logdir/error.log" diff --git a/backports/thelounge/thelounge.initd b/backports/thelounge/thelounge.initd deleted file mode 100644 index fc00ef8..0000000 --- a/backports/thelounge/thelounge.initd +++ /dev/null @@ -1,34 +0,0 @@ -#!/sbin/openrc-run - -# fallback values for /etc/conf.d/thelounge -: ${command_user:=thelounge:thelounge} -: ${directory:=/var/lib/thelounge} -: ${logdir:=/var/log/thelounge} - -name="thelounge" -command="/usr/bin/thelounge" -command_args="start" -command_background=true -pidfile="/run/thelounge.pid" - -depend() { - need net - use dns - after firewall -} - -start_pre() { - checkpath -d -o "$command_user" "$directory" - - if [ -n "$logdir" ]; then - checkpath -d -o "$command_user" "$logdir" - fi - - if [ -n "$output_log" ]; then - checkpath -f -o "$command_user" "$output_log" - fi - - if [ -n "$error_log" ]; then - checkpath -f -o "$command_user" "$error_log" - fi -} diff --git a/backports/thelounge/thelounge.post-install b/backports/thelounge/thelounge.post-install deleted file mode 100644 index b08cddb..0000000 --- a/backports/thelounge/thelounge.post-install +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cat >&2 <<-EOF -* -* The configuration will be placed at /var/lib/thelounge/config.js after first run -* To add users, use the cli: doas -u thelounge thelounge add myuser -* -EOF - -exit 0 diff --git a/backports/thelounge/thelounge.pre-install b/backports/thelounge/thelounge.pre-install deleted file mode 100644 index dd54b45..0000000 --- a/backports/thelounge/thelounge.pre-install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -addgroup -S thelounge 2>/dev/null -adduser -S -D -h /var/lib/thelounge -s /sbin/nologin -G thelounge -g thelounge thelounge 2>/dev/null - -exit 0 diff --git a/backports/uvicorn/APKBUILD b/backports/uvicorn/APKBUILD new file mode 100644 index 0000000..cbb8168 --- /dev/null +++ b/backports/uvicorn/APKBUILD @@ -0,0 +1,58 @@ +# Contributor: Michał Polański +# Maintainer: Michał Polański +pkgname=uvicorn +pkgver=0.22.0 +pkgrel=0 +pkgdesc="Lightning-fast ASGI server" +url="https://www.uvicorn.org/" +license="BSD-3-Clause" +arch="noarch" +depends=" + python3 + py3-asgiref + py3-click + py3-h11 + " +makedepends="py3-gpep517 py3-hatchling" +checkdepends=" + py3-a2wsgi + py3-dotenv + py3-httptools + py3-httpx + py3-pytest + py3-pytest-mock + py3-trustme + py3-watchfiles + py3-websockets + py3-wsproto + py3-yaml + " +options="!check" # Missing dependency for tests +subpackages="$pkgname-pyc" +source="https://github.com/encode/uvicorn/archive/$pkgver/uvicorn-$pkgver.tar.gz" + +case "$CARCH" in + # test suite blocked by py3-httpx + armhf|ppc64le) options="!check" ;; + # test failures + aarch64) options="!check" ;; +esac + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/uvicorn-$pkgver-py3-none-any.whl +} + +sha512sums=" +61af2df426a5bc060a32730ddf024ca8dd39ccea6800235bf48d7e0c694b9d363cbedd826f498063c6779061af84b6b56e8ab0a466e74291dbbaf5ae995e5587 uvicorn-0.22.0.tar.gz +" diff --git a/backports/yarn-berry/APKBUILD b/backports/yarn-berry/APKBUILD deleted file mode 100644 index 715d16c..0000000 --- a/backports/yarn-berry/APKBUILD +++ /dev/null @@ -1,33 +0,0 @@ -maintainer="Fabricio Silva " -pkgname=yarn-berry -pkgver=4.9.1 -pkgrel=0 -pkgdesc="Fast, reliable, and secure dependency management for Node.js - Active development version" -url="https://yarnpkg.com/" -license="BSD-2-Clause" -arch="noarch" -depends="!yarn nodejs" # not backward compatible with yarn classic (v1) -source="$pkgname-$pkgver.tgz::https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-$pkgver.tgz" -builddir="$srcdir/package" -replaces="yarn" - -check() { - ./bin/yarn.js --version - ./bin/yarn.js --help -} - -package() { - local destdir="usr/share/node_modules/@yarnpkg/cli-dist" - - mkdir -p "$pkgdir"/$destdir/bin - install -Dm0644 package.json -t "$pkgdir"/$destdir - install -Dm0755 bin/yarn.js -t "$pkgdir"/$destdir/bin - - mkdir -p "$pkgdir"/usr/bin - ln -s ../share/node_modules/@yarnpkg/cli-dist/bin/yarn.js "$pkgdir"/usr/bin/yarn - ln -s yarn "$pkgdir"/usr/bin/yarnpkg -} - -sha512sums=" -cae0bcb10349af010b472ef7fa1023c33c0afd60a54dc29d18797e6bb771bd6c0d3d06aefa801c56363bcc6ecf6133988d1f943543293e7335ede60618fb28e8 yarn-berry-4.9.1.tgz -" diff --git a/community/dotnet6-build/APKBUILD b/community/dotnet6-build/APKBUILD new file mode 100644 index 0000000..a267406 --- /dev/null +++ b/community/dotnet6-build/APKBUILD @@ -0,0 +1,588 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +# secfixes: +# 6.0.106-r0: +# - CVE-2022-30184 +# 6.0.108-r0: +# - CVE-2022-34716 +# 6.0.109-r0: +# - CVE-2022-38013 +# 6.0.110-r0: +# - CVE-2022-41032 +# 6.0.112-r0: +# - CVE-2022-41089 +# 6.0.113-r0: +# - CVE-2023-21538 +# 6.0.114-r0: +# - CVE-2023-21808 +# 6.0.116-r0: +# - CVE-2023-28260 +# 6.0.118-r0: +# - CVE-2023-24895 +# - CVE-2023-24897 +# - CVE-2023-24936 +# - CVE-2023-29331 +# - CVE-2023-29337 +# - CVE-2023-33126 +# - CVE-2023-33128 +# - CVE-2023-33135 +# 6.0.120-r0: +# - CVE-2023-33127 +# - CVE-2023-33170 +# 6.0.121-r0: +# - CVE-2023-35390 +# - CVE-2023-38180 +# - CVE-2023-35391 +# 6.0.122-r0: +# - CVE-2023-36792 +# - CVE-2023-36793 +# - CVE-2023-36794 +# - CVE-2023-36796 +# - CVE-2023-36799 +# 6.0.123-r0: +# - CVE-2023-44487 +# 6.0.124-r0: +# - CVE-2023-36792 +# - CVE-2023-36793 +# - CVE-2023-36794 +# - CVE-2023-36796 +# - CVE-2023-36799 +# - CVE-2023-44487 +# 6.0.125-r0: +# - CVE-2023-36049 +# - CVE-2023-36558 + + +pkgname=dotnet6-build +pkgver=6.0.125 +pkgrel=0 +_gittag=v$pkgver +_giturl="https://github.com/dotnet/installer" +_testtag=e1cc0f181ffd4d755756d30d985513897d592ba4 +_bunnytag=71880bd94711519f7b786248a88a827a401207a2 +_llvmver=16 +_patches=" + build_14816-non-portable-build.patch + build_14816-update-portable-rid-logic.patch + build_disable-apphost.diff + installer_14816-update-portable-rid-logic.patch + msbuild_optional-systemconfiguration.patch + msbuild_optional-systemsecurity.patch + roslyn_57003-mono-namedmutex.patch + runtime_76500-mono-musl-support.patch + runtime_82269-mono-thread-coop-undefine-fortify-source.patch + runtime_enable-system-libunwind.diff + runtime_remove-usage-of-off64-t.patch + sdk_14239-add-zsh-compdef-completion-script.patch + sdk_telemetry-optout.patch + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=${pkgver%.*.*} +_pkgver_name=${_pkgver_macro//[.0]} +pkgdesc="The .NET $_pkgver_macro bootstrap" +arch="x86_64 aarch64 armv7" +url=https://dotnet.microsoft.com +license="MIT" +# hack for dotnetx-build to be able to pull itself for bootstrapping +provides="dotnet$_pkgver_name-bootstrap" +provider_priority=$_pkgver_prior +checkdepends=" + babeltrace + binutils + coreutils + file + gawk + jq + lttng-tools + npm + procps + sed + strace + util-linux-misc + which + " +makedepends=" + alpine-release + bash + clang$_llvmver + cmake + dotnet$_pkgver_name-bootstrap + dotnet$_pkgver_name-bootstrap-artifacts + dotnet$_pkgver_name-stage0 + findutils + git + grep + icu-data-full + icu-dev + inetutils-syslogd + krb5-dev + libgit2-dev + libintl + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lldb-dev + llvm$_llvmver-dev + lttng-ust-dev + nodejs + numactl-dev + openssl-dev + pigz + rsync + tar + xz + zlib-dev + " +case $CARCH in + s390x|x86) ;; + *) makedepends="$makedepends lld-dev";; +esac + +subpackages=" + dotnet$_pkgver_name-artifacts:artifacts:noarch + dotnet$_pkgver_name-sdk + dotnet$_pkgver_name-templates:templates:noarch + dotnet-zsh-completion:zshcomp:noarch + dotnet-bash-completion:bashcomp:noarch + dotnet-doc + netstandard21-targeting-pack:netstandard_targeting_pack:noarch + " +source=" + https://lab.ilot.io/mirrors/installer/-/releases/$_gittag/downloads/tarball/dotnet-$_gittag.tar.xz + dotnet-testsuite-$_testtag.tar.gz::https://github.com/redhat-developer/dotnet-regular-tests/archive/$_testtag.tar.gz + dotnet-bunny-$_bunnytag.tar.gz::https://github.com/redhat-developer/dotnet-bunny/archive/$_bunnytag.tar.gz + $_patches + " +builddir="$srcdir"/dotnet-$_gittag +_checkdir="$srcdir"/dotnet-bunny-${_bunnytag/v} +_testdir="$srcdir"/dotnet-regular-tests-$_testtag +_cli_root="$srcdir"/bootstrap +_nugetdir="$srcdir"/nuget-cache +_artifactsdir="$_cli_root"/artifacts +_libdir="/usr/lib" +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +case $CARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7) _dotnet_arch="arm";; + armhf) _dotnet_arch="armv6";; + *) _dotnet_arch="$CARCH";; +esac + +# Build doesn't set all the right executable bits for the right file types +_fix_executable() { + # add executable bit + find "$1" -type f \( \ + -name 'apphost' -o \ + -name 'singlefilehost' -o \ + -name 'lib*so' \ + \) \ + -exec chmod +x '{}' \; + + # remove executable bit + find "$1" -type f \( \ + -name '*.a' -o \ + -name '*.dll' -o \ + -name '*.h' -o \ + -name '*.json' -o \ + -name '*.pdb' -o \ + -name '*.props' -o \ + -name '*.pubxml' -o \ + -name '*.targets' -o \ + -name '*.txt' -o \ + -name '*.xml' \ + \) \ + -exec chmod -x '{}' \; +} + +# generates tarball containing all components built by dotnet +snapshot() { + local _pkg="$srcdir"/${builddir##*/}.tar + + ulimit -n 4096 + export NUGET_PACKAGES=$_nugetdir + + if [ -d "$srcdir" ]; then + cd "$srcdir" + else + mkdir -p "$srcdir" && cd "$srcdir" + fi + if [ -d "installer" ]; then + cd "$srcdir"/installer + else + git clone $_giturl --branch $_gittag && cd "$srcdir"/installer + fi + + sed 's||' -i src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets + + if [ -d "$_libdir/dotnet/bootstrap" ]; then + local _cli_root="$(find /usr/lib/dotnet/bootstrap/6.0* -maxdepth 0 -type d | sort -r | head -n 1)" + else + local _cli_root="" + fi + + _InitializeDotNetCli="$_cli_root" DOTNET_INSTALL_DIR="$_cli_root" DotNetBuildFromSource=true ./build.sh \ + /p:ArcadeBuildTarball=true \ + /p:TarballDir=$builddir \ + /p:TarballFilePath=$_pkg + + msg "Compressing ${builddir##*/}.tar to $SRCDEST" + xz -T0 -9 -vv -e -c > "$SRCDEST"/${builddir##*/}.tar.xz < "$_pkg" + + cd "$startdir" + abuild checksum +} + +prepare() { + default_prepare + ulimit -n 4096 + + # Using system libunwind is broken on aarch64 and mono-based builds + # see https://github.com/dotnet/source-build/issues/2408, + case $CARCH in + x86_64) + msg "Using system libunwind" + patch -p1 -i "$srcdir"/runtime_enable-system-libunwind.diff + ;; + esac + + # For some reason, new s390x apphost isn't pulled, this disable it's use on s390x + case $CARCH in + s390x) + msg "Disabing use of apphost" + patch -p1 -i "$srcdir"/build_disable-apphost.diff + ;; + esac + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + # dotnet requires its bootstrap to be in a writable dir + msg "Setting up bootstrap" + local _bootstrapdir=$(find $_libdir/dotnet/bootstrap/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1) + if [ ! -d "$_cli_root" ]; then + cp -r "$_bootstrapdir" "$_cli_root" + fi + # ensure that dotnet does not download artifacts provided by dotnet-artifacts + rm -rf "$builddir"/packages/archive +} + +build() { + msg "Building $pkgname-$pkgver" + ulimit -n 4096 + + export PATH="$PATH:/usr/lib/llvm$_llvmver/bin" + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + export DOTNET_LTTng=0 + fi + + # looks for most recent recent version of _artifactsdir + local _artifactsdir=$(find $_libdir/dotnet/artifacts/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1) + + # ci args, else the output is forwarded to log files which isn't ideal in a + # pipeline environment, and build by defaults uses lots of space + local args=" + /v:minimal + /p:LogVerbosity=minimal + /p:MinimalConsoleLogOutput=true + /p:CleanWhileBuilding=true + " + # disable use of crossgen on arches platforms where its unsupported (mono) + # or broken (armv7, aarch64) + case $CARCH in + x86|aarch64|armv7|armhf|s390x) local args="$args /p:CrossgenOutput=false /p:DISABLE_CROSSGEN=True";; + esac + + # Sets TargetRid manually as dotnet cannot be trusted to reliably compute + # the machine's runtime ID between releases. + # shellcheck disable=SC2034 + . /etc/os-release + local VERSION_ID_DOT="${VERSION_ID//[^.]}" + while [ ${#VERSION_ID_DOT} -gt 1 ]; do + local VERSION_ID="${VERSION_ID%.*}" + local VERSION_ID_DOT="${VERSION_ID//[^.]}" + done + local VERSION_ID_DASH="${VERSION_ID//[^_]}" + while [ ${#VERSION_ID_DASH} -ge 1 ]; do + local VERSION_ID="${VERSION_ID%_*}" + local VERSION_ID_DASH="${VERSION_ID//[^_]}" + done + local args="$args /p:TargetRid=$ID.$VERSION_ID-$_dotnet_arch" + + case "$CARCH" in + x86*) ;; + *) + # clang doesn't implement this outside of x86, and it causes a later configure to fail + export CFLAGS="${CFLAGS/-fstack-clash-protection}" + export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection}" + ;; + esac + + ./build.sh \ + --with-sdk "$_cli_root" \ + --with-packages "$_artifactsdir" \ + -- $args +} + +check() { + ulimit -n 4096 + export NUGET_PACKAGES=$_nugetdir + + # Tests timeout (in seconds) + local _tests_timeout=600 + # Test suite disable flags + # following tests can only work after packaging step + local _disabled_tests="man-pages distribution-package bash-completion install-local release-version-sane" + # test broken on all but x86_64 and aarch64: no musl release for omnisharp + if [ "$CARCH" != "x86_64" ] && [ "$CARCH" != "aarch64" ]; then + local _disabled_tests="$_disabled_tests omnisharp" + fi + # test broken: permission issue on lxc / pipelines + local _disabled_tests="$_disabled_tests createdump-aspnet workload" + # liblttng-ust_sys-sdt.h: no 'NT_STAPSDT' on Alpine's lttng-ust package + # lttng: known issue, see https://github.com/dotnet/runtime/issues/57784 + local _disabled_tests="$_disabled_tests liblttng-ust_sys-sdt.h lttng" + # {bundled,system}-libunwind: use system version on all but aarch64/armv7, as broken + # see https://github.com/redhat-developer/dotnet-regular-tests/issues/113 + case $CARCH in + x86_64) local _disabled_tests="$_disabled_tests bundled-libunwind";; + *) local _disabled_tests="$_disabled_tests system-libunwind";; + esac + # publish-ready-to-run: broken due to crossgen2 nupkg on musl-arm64 / musl-arm platform being broken + # should be fixed with https://github.com/dotnet/runtime/pull/66814 + case $CARCH in + aarch64|armv7) local _disabled_tests="$_disabled_tests publish-ready-to-run publish-ready-to-run-linux";; + esac + # test unit hangs + local _disabled_tests="$_disabled_tests debugging-via-dotnet-dump" + + msg "Unpacking produced dotnet" + export DOTNET_ROOT="$_checkdir/release" + if [ ! -d "$DOTNET_ROOT" ]; then + mkdir -p "$DOTNET_ROOT" + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$DOTNET_ROOT" \ + --no-same-owner + fi + export PATH="$DOTNET_ROOT:$PATH" + # some files either should or should not have executable bits + # (done again during packaging - this is for tests) + _fix_executable "$DOTNET_ROOT" + + msg "Building turkey test suite" + mkdir "$_logdir"/check + if [ ! -d "$_checkdir"/turkey ]; then + cd "$_checkdir"/Turkey + dotnet publish -bl:$_logdir/check/turkey.binlog -f netcoreapp3.1 -c Release -p:VersionPrefix=1 -p:VersionSuffix="$(git rev-parse --short HEAD)" -o "$_checkdir"/turkey + fi + + msg "Running test suite" + cd "$_testdir" + for i in $_disabled_tests; do + if [ -d "$i" ]; then + sed -i 's|"enabled": true|"enabled": false|' $i/test.json + fi + done + dotnet "$_checkdir"/turkey/Turkey.dll -t $_tests_timeout -l "$_logdir"/check || local ERROR=true + if [ $ERROR ]; then + msg "Check error reported" + fi +} + +package() { + # directory creation + install -dm 755 \ + "$pkgdir"/$_libdir/dotnet/bootstrap/$pkgver \ + "$pkgdir"/usr/share/man/man1 \ + "$pkgdir"/$_libdir/dotnet/artifacts/$pkgver + + # unpack sdk to bootstrap + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$pkgdir"/$_libdir/dotnet/bootstrap/$pkgver/ \ + --no-same-owner + + # extract arch-specific artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \ + -C "$pkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ + --no-same-owner \ + --wildcards \ + '*alpine*' + + # assemble docs + find "$builddir" -iname 'dotnet*.1' -type f -exec cp '{}' "$pkgdir"/usr/share/man/man1/. \; + + # some files either should or should not have executable bits + _fix_executable "$pkgdir" + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + rm "$pkgdir"/$_libdir/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so + fi +} + +sdk() { + pkgdesc="The .NET $_pkgver_macro SDK" + depends=" + aspnetcore$_pkgver_name-runtime + aspnetcore$_pkgver_name-targeting-pack + dotnet$_pkgver_name-apphost-pack + dotnet$_pkgver_name-targeting-pack + dotnet$_pkgver_name-templates + netstandard21-targeting-pack + " + provides=" + dotnet-sdk-$_pkgver_macro=$pkgver-r$pkgrel + dotnet$_pkgver_name-dev=$pkgver-r$pkgrel + " + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + # sdk + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./sdk ./sdk-manifests + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" + + # See https://github.com/dotnet/source-build/issues/2579 + find "$subpkgdir" -type f -name 'testhost.x86' -delete + find "$subpkgdir" -type f -name 'vstest.console' -delete +} + +netstandard_targeting_pack() { + pkgdesc="The .NET 2.1 Standard targeting pack" + depends="dotnet-host" + provides="netstandard-targeting-pack-2.1=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./packs/NETStandard.Library.Ref + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +templates() { + pkgdesc="The .NET $_pkgver_macro templates" + depends="dotnet-host" + provides="dotnet-templates-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./templates + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver \ + "$subpkgdir"/usr/share/licenses + + # extract arch-agnostic artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ + --no-same-owner \ + --exclude '*Intermediate*' \ + --exclude '*alpine*' +} + +zshcomp() { + depends="" + pkgdesc="zsh completion for .NET" + # netstandard21-targeting-pack will always be pulled by any dotnetx-sdk + # thus pulling this with it for sdk + install_if="netstandard21-targeting-pack zsh" + depends="dotnet-host" + + install -dm 755 "$subpkgdir"/usr/share/zsh/site-functions + install -m 755 "$builddir"/src/sdk/scripts/register-completions.zsh "$subpkgdir"/usr/share/zsh/site-functions/_dotnet +} + +bashcomp() { + depends="" + pkgdesc="bash completion for .NET" + # netstandard21-targeting-pack will always be pulled by any dotnetx-sdk + # thus pulling this with it for sdk + install_if="netstandard21-targeting-pack bash-completion" + depends="dotnet-host" + + install -dm 755 "$subpkgdir"/usr/share/bash-completion/completions + install -m 755 "$builddir"/src/sdk/scripts/register-completions.bash "$subpkgdir"/usr/share/bash-completion/completions/_dotnet +} + +doc() { + default_doc + pkgdesc="Docs for .NET" + + # licenses + install -dm 755 "$subpkgdir"/usr/share/licenses/dotnet + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/usr/share/licenses/dotnet/ \ + --no-same-owner \ + ./LICENSE.txt ./ThirdPartyNotices.txt +} + +sha512sums=" +5f3626aac49cf29c924d30fa81c508be8a45b38914c08b67c1dbec44f7d2b3ff7b6a8126ff4af88d43b972e5e17a712757b762ecf5c99c5f6acd8284ee9b2a3f dotnet-v6.0.125.tar.xz +e9f3df13d093fac214778c1137857e065f58d4e0d2a48d540d8ed7bb41e2fd73b2b3f62a0aa5b0e80fa80a5b58ba77ff19b9d10a492802f8539e3a6ed79d299d dotnet-testsuite-e1cc0f181ffd4d755756d30d985513897d592ba4.tar.gz +fc281df5fcf0d31dc9ff7f5b0e870960cfbe3c4fa0f6a6bb50b22c4ee18d2c608c827205bc79bd7f686d77ac917582fc26f68432cdd86c4a33b910c0c7416d09 dotnet-bunny-71880bd94711519f7b786248a88a827a401207a2.tar.gz +bdc2617791fda07bcc87cf5f8727ac721756810880b14c5472998d6a3e238d85d5a12db7823d1237b17f40945e697a6c9104d1c43816c775cc03920e88572a37 build_14816-non-portable-build.patch +70d402d0bcaa98c8b09652365404238b67ed26eb9c3d510c7d6309fb61937d98c9144f1096e521c11b00e946d29585a9d474498ccc5223de32bd6471ab5a431f build_14816-update-portable-rid-logic.patch +a5a359af816595fbf19482e5dccf874c78d2fc4b59f38223118aac603b33e00c9fed22580eee3112519477205c2c8ed16177d100f09f45275e3da3c20b0ed7f7 build_disable-apphost.diff +e71f91d14873755bc2f227807d909e5260bd1f166a262eda0bf05d4a3975a7bce7fde457c1eba476a83b317aebdaaba25f1893d3385182428c08bba6243f21c8 installer_14816-update-portable-rid-logic.patch +86e14ecc0269c8b2c2a2a679790de4fa4e15ac06b2a831e1129c4a7de1499d60583fcdc79b3705652c3c4ced73afac2e0ee3edce2cfa3b00fddf94180fb26e10 msbuild_optional-systemconfiguration.patch +f4d27624f735ce77e0030fa791594fc12fb325a3ce8620791a7856bd5c0067a042df2196ec97ed4d0309db64bd51e6a48cafaad316d9ea45e34134214a7f3ca4 msbuild_optional-systemsecurity.patch +42779a7bf1004fe0f7054cfa4f09f49d7f2a57c0543ec994ffbd54fb349abb508295476098ed35d60e9676be8bcc15aa8a9ec5c814cd1e058357530b5cdfb2b6 roslyn_57003-mono-namedmutex.patch +e67e0114bd324dae65eb19f6fa8c74414bee77cd30e299931b0d82b4ca1b6b6f88358a0c47ffb180f46c5cb28f61f79bb4a59d43c1ae3011bfe491e757de293a runtime_76500-mono-musl-support.patch +827e899a83103f666dc3d57c1ec695bebc659a574f4a1d754da0cafe8c18d7db79c3950267e905fa078f94612ee1101fbddd0ea62b3c08947d8bcd7d9c8de41c runtime_82269-mono-thread-coop-undefine-fortify-source.patch +91f237afe642d0170dbf0e9a2706a4145c937d9d869d22959acaf092f1fd11941144b2b1d041102abe7b70349dd5869d558896e9d13d01f176cace39b21ef1ef runtime_enable-system-libunwind.diff +d972e77df27748a80c9b23eca12f9fbd78be97f9034b79cc5703ba58eb6750171d9a115314300f883620ccbca89c65a99ca7a45d54a421b028b590190b4bed80 runtime_remove-usage-of-off64-t.patch +d1b4ebcbb1a6815fc0ce4c471485c232618e60968a879309fb8336821a9351d2e0028d9f7726c0c041c750b497a0baa47400c78c9ceff550b91b4a6c2816fc41 sdk_14239-add-zsh-compdef-completion-script.patch +815de1dad37412579b16d763debe2ecceffb44f5c46bd3f4ac00b3e431b20c677db435794eac41cea5601030b4e0f03f19e2d53c7a1ead896de2ffbca787eb84 sdk_telemetry-optout.patch +" diff --git a/community/dotnet6-build/README.md b/community/dotnet6-build/README.md new file mode 100644 index 0000000..cc09eb4 --- /dev/null +++ b/community/dotnet6-build/README.md @@ -0,0 +1,131 @@ +# dotnet6-build + +This is the .NET 6.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* dotnet6-build (aimed for internal use as bootstrap) +* dotnet6-build-artifacts (aimed for internal use as bootstrap) +* dotnet6-sdk +* dotnet6-templates (required by sdk) +* dotnet-zsh-completion +* dotnet-bash-completion +* dotnet-doc +* netstandard21-targeting-pack + +## How to build dotnet6 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it requires a bootstrap +for the initial build. To solve this problem, this package follows the `stage0` proposal +outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as possible, thus allowing +seamless Alpine upgrades. Unfortunately, upstream only builds bootstraps for Alpine on `x86_64`, +`aarch64`, and `armv7`. Thus, `dotnet6-cross`, a non-standard (read: never to be included in aports) aport, was created to +faciliate cross-compiling bootstraps from `x86_64` to other dotnet supported platforms. +It is [available here](https://gitlab.alpinelinux.org/ayakael/dotnet6-cross) + +In summary, dotnet6 is built using four different aports, three of which are in aports proper: + +* `dotnet6-cross` [available here](https://gitlab.alpinelinux.org/ayakael/dotnet6-cross) +Builds minimum components for dotnet6, and packages these in a tar.gz that `dotnet6-stage0` then uses to build full bootstrap. +* `community/dotnet6-stage0` +Builds full bootstrap for dotnet6, and packages these in an initial `dotnet6-stage0-bootstrap` package that `dotnet6-build` +pulls if `dotnet6-build` has not been built before. +* `community/dotnet6-build +Builds full and packages dotnet6 fully using either stage0 or previoulsy built dotnet6 build. +* `community/dotnet6-runtime +As abuild does not allow different versions for subpackages, a different aport is required to +package runtime bits from dotnet6-build. + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet6` as opposed to `dotnet-6.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports + - `cd community/dotnet6-build` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet6/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet6-build: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports + - `cd community/dotnet6-build` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet6/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet6-build: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/community/dotnet6-build/build_14816-non-portable-build.patch b/community/dotnet6-build/build_14816-non-portable-build.patch new file mode 100644 index 0000000..8e65e16 --- /dev/null +++ b/community/dotnet6-build/build_14816-non-portable-build.patch @@ -0,0 +1,208 @@ +From 3008f7ef29e0a5593f6f0afbdc9343f573f1a375 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/installer/pull/14816 +From: Antoine Martin +Date: Tue, 15 Nov 2022 01:04:07 -0500 +Subject: [PATCH 1/3] Eliminate runtime portable build (backport dotnet#14549) + +--- + .../tarball/content/Directory.Build.props | 8 -- + .../tarball/content/repos/aspnetcore.proj | 1 + + .../tarball/content/repos/installer.proj | 2 +- + .../tarball/content/repos/known-good.proj | 1 - + .../content/repos/runtime-portable.proj | 47 ----------- + .../content/repos/runtime.common.props | 43 ---------- + .../content/repos/runtime.common.targets | 46 ----------- + .../tarball/content/repos/runtime.proj | 82 ++++++++++++++++++- + .../source-build-reference-packages.proj | 4 +- + src/redist/targets/Crossgen.targets | 2 +- + src/redist/targets/GenerateLayout.targets | 3 + + 11 files changed, 88 insertions(+), 151 deletions(-) + delete mode 100644 repos/runtime-portable.proj + delete mode 100644 repos/runtime.common.props + delete mode 100644 repos/runtime.common.targets + +diff --git a/Directory.Build.props b/Directory.Build.props +index 61cc6ff67..2e2d7e8bc 100644 +--- a/Directory.Build.props ++++ b/Directory.Build.props +@@ -22,14 +22,6 @@ + x64 + + false +- +- +- false +- false +- true +- false + + + +diff --git a/repos/aspnetcore.proj b/repos/aspnetcore.proj +index 480f3c713..52243024a 100644 +--- a/repos/aspnetcore.proj ++++ b/repos/aspnetcore.proj +@@ -9,6 +9,7 @@ + $(BuildCommandArgs) --no-build-repo-tasks + $(BuildCommandArgs) /p:BuildNodeJs=false + $(BuildCommandArgs) /p:PublishCompressedFilesPathPrefix=$(SourceBuiltAspNetCoreRuntime) ++ $(BuildCommandArgs) /p:PortableBuild=false /p:TargetRuntimeIdentifier=$(TargetRid) + + $(BuildCommandArgs) /p:MicrosoftNetFrameworkReferenceAssembliesVersion=1.0.0 +diff --git a/repos/installer.proj.orig b/repos/installer.proj +index 0df0c8f7c03..95d47c94152 100644 +--- a/repos/installer.proj.orig ++++ b/repos/installer.proj +@@ -30,7 +30,7 @@ + $(BuildCommandArgs) /p:Rid=$(TargetRid) + $(BuildCommandArgs) /p:DOTNET_INSTALL_DIR=$(DotNetCliToolDir) + +- $(BuildCommandArgs) /p:AspNetCoreInstallerRid=$(PortableRid) ++ $(BuildCommandArgs) /p:AspNetCoreInstallerRid=$(TargetRid) + + $(BuildCommandArgs) /p:CoreSetupRid=freebsd-x64 /p:PortableBuild=true + $(BuildCommandArgs) /p:CoreSetupRid=osx-x64 +diff --git a/repos/known-good.proj b/repos/known-good.proj +index eab516290..12d9943da 100644 +--- a/repos/known-good.proj ++++ b/repos/known-good.proj +@@ -44,7 +44,6 @@ + + + +- + + + +diff --git a/repos/runtime.proj b/repos/runtime.proj +index f3ed143f8..efd8b66fa 100644 +--- a/repos/runtime.proj ++++ b/repos/runtime.proj +@@ -1,18 +1,53 @@ + +- ++ + ++ + ++ true ++ ++ $(ProjectDirectory)/clean$(ShellExtension) ++ + $(TargetRid) + osx-x64 + freebsd-x64 + win-x64 + ++ <_platformIndex>$(NETCoreSdkRuntimeIdentifier.LastIndexOf('-')) ++ $(NETCoreSdkRuntimeIdentifier.Substring(0, $(_platformIndex))) ++ ++ <_platformIndex>$(NETCoreSdkPortableRuntimeIdentifier.LastIndexOf('-')) ++ $(NETCoreSdkPortableRuntimeIdentifier.Substring(0, $(_platformIndex))) ++ + $(StandardSourceBuildArgs) + $(BuildCommandArgs) /p:TargetRid=$(OverrideTargetRid) ++ $(BuildCommandArgs) /p:RuntimeOS=$(RuntimeOS) ++ $(BuildCommandArgs) /p:BaseOS=$(BaseOS) + $(BuildCommandArgs) /p:SourceBuildNonPortable=true + $(StandardSourceBuildCommand) $(BuildCommandArgs) + + ++ ++ ++ $(ProjectDirectory)global.json ++ $(ProjectDirectory)NuGet.config ++ false ++ true ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -20,8 +55,49 @@ + + + +- + + +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $(ProjectDirectory)pkg/Microsoft.NETCore.Platforms/runtime.json ++ ++ ++ ++ ++ ++ ++ ++ ++ <_builtRuntimePackages Include="$(SourceBuiltAssetsDir)*.symbols.nupkg" /> ++ <_builtRuntimePackages> ++ $([System.String]::Copy('%(FileName)').Replace('symbols', 'nupkg')) ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/repos/source-build-reference-packages.proj b/repos/source-build-reference-packages.proj +index 69ab564a2..9545b50e4 100644 +--- a/repos/source-build-reference-packages.proj ++++ b/repos/source-build-reference-packages.proj +@@ -2,7 +2,9 @@ + + + +- $(StandardSourceBuildCommand) $(StandardSourceBuildArgs) ++ $(StandardSourceBuildArgs) ++ $(BuildCommandArgs) /p:MicrosoftNetCoreIlasmPackageRuntimeId=$(NETCoreSdkRuntimeIdentifier) ++ $(StandardSourceBuildCommand) $(BuildCommandArgs) + + $(ProjectDirectory)NuGet.config + $(ProjectDirectory)global.json +-- +2.38.2 + diff --git a/community/dotnet6-build/build_14816-update-portable-rid-logic.patch b/community/dotnet6-build/build_14816-update-portable-rid-logic.patch new file mode 100644 index 0000000..3c411e3 --- /dev/null +++ b/community/dotnet6-build/build_14816-update-portable-rid-logic.patch @@ -0,0 +1,38 @@ +From 5ee269eef8bd02d066151deaa4d8c0fe6b6cbce4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/installer/pull/14816 +From: Antoine Martin +Date: Tue, 15 Nov 2022 01:04:46 -0500 +Subject: [PATCH 2/3] BundledVersions: update portable rid logic (backport + dotnet#14647) + +--- + .../tarball/content/repos/installer.proj | 5 +++++ + src/redist/targets/GetRuntimeInformation.targets | 16 ++++++++++------ + 2 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/repos/installer.proj b/repos/installer.proj +index 6c08a1f67..95d47c941 100644 +--- a/repos/installer.proj ++++ b/repos/installer.proj +@@ -10,6 +10,10 @@ + osx-x64 + $(OverrideTargetRid.Substring(0, $(OverrideTargetRid.IndexOf("-")))) + ++ ++ <_platformIndex>$(NETCoreSdkPortableRuntimeIdentifier.LastIndexOf('-')) ++ $(NETCoreSdkPortableRuntimeIdentifier.Substring(0, $(_platformIndex))) ++ + --runtime-id $(OverrideTargetRid) + --runtime-id $(TargetRid) + +@@ -22,6 +26,7 @@ + --> + $(BuildCommandArgs) /p:NETCoreAppMaximumVersion=99.9 + $(BuildCommandArgs) /p:OSName=$(OSNameOverride) ++ $(BuildCommandArgs) /p:PortableOSName=$(PortableOS) + $(BuildCommandArgs) /p:Rid=$(TargetRid) + $(BuildCommandArgs) /p:DOTNET_INSTALL_DIR=$(DotNetCliToolDir) + +-- +2.38.2 + diff --git a/community/dotnet6-build/build_disable-apphost.diff b/community/dotnet6-build/build_disable-apphost.diff new file mode 100644 index 0000000..317a915 --- /dev/null +++ b/community/dotnet6-build/build_disable-apphost.diff @@ -0,0 +1,79 @@ +From 75c3e74ea35219f257c80daf9a236e0f518a7875 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Wed, 9 Mar 2022 20:16:03 +0000 +Subject: [PATCH 1/1] Disable apphost + +Disables use of apphost + +--- + +--- a/src/fsharp/tests/benchmarks/MicroPerf/MicroPerf.fsproj ++++ b/src/fsharp/tests/benchmarks/MicroPerf/MicroPerf.fsproj +@@ -9,6 +9,7 @@ + $(OtherFlags) --nowarn:57 + $(OtherFlags) --langversion:preview + $(OtherFlags) --define:PREVIEW ++ false + + + + $(OtherFlags) --nowarn:1204 + +--- a/src/arcade/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj ++++ b/src/arcade/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj +@@ -5,6 +5,7 @@ + netcoreapp3.1 + latest + true ++ false + + + +--- a/src/arcade/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj ++++ b/src/arcade/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj +@@ -9,6 +9,7 @@ + dotnet-swaggergen + false + true ++ false + + + +--- a/src/arcade/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj ++++ b/src/arcade/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj +@@ -11,6 +11,7 @@ + 2.5.1 + true + Major ++ false + + + +--- a/src/roslyn-analyzers/src/Tools/ReleaseNotesUtil/ReleaseNotesUtil.csproj ++++ b/src/roslyn-analyzers/src/Tools/ReleaseNotesUtil/ReleaseNotesUtil.csproj +@@ -4,6 +4,7 @@ + netcoreapp3.1 + true + true ++ false + + + +--- a/src/roslyn/src/Workspaces/Remote/ServiceHub.CoreComponents/Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.csproj ++++ b/src/roslyn/src/Workspaces/Remote/ServiceHub.CoreComponents/Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.csproj +@@ -5,6 +5,7 @@ + Exe + netcoreapp3.1 + ++ false + false + + diff --git a/community/dotnet6-build/installer_14816-update-portable-rid-logic.patch b/community/dotnet6-build/installer_14816-update-portable-rid-logic.patch new file mode 100644 index 0000000..53f2335 --- /dev/null +++ b/community/dotnet6-build/installer_14816-update-portable-rid-logic.patch @@ -0,0 +1,51 @@ +From 5ee269eef8bd02d066151deaa4d8c0fe6b6cbce4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/installer/pull/14816 +From: Antoine Martin +Date: Tue, 15 Nov 2022 01:04:46 -0500 +Subject: [PATCH 2/3] BundledVersions: update portable rid logic (backport + dotnet#14647) + +--- + .../tarball/content/repos/installer.proj | 5 +++++ + src/redist/targets/GetRuntimeInformation.targets | 16 ++++++++++------ + 2 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/src/installer/src/redist/targets/GetRuntimeInformation.targets b/src/installer/src/redist/targets/GetRuntimeInformation.targets +index a99a7e9da..89f000119 100644 +--- a/src/installer/src/redist/targets/GetRuntimeInformation.targets ++++ b/src/installer/src/redist/targets/GetRuntimeInformation.targets +@@ -9,10 +9,15 @@ + osx + freebsd + linux +- ++ ++ $(Rid.Substring(0, $(Rid.LastIndexOf('-')))) + $(HostOSName) + +- $(OSName)-$(Architecture) ++ $(OSName) ++ ++ $(OSName)-$(Architecture) ++ ++ $(PortableOSName)-$(Architecture) + + + +@@ -23,10 +28,9 @@ + + + +- $(Rid) +- $(OSName)-$(Architecture) ++ $(Rid) ++ ++ $(PortableRid) + + $(HostOSName)-$(Architecture) + +-- +2.38.2 + diff --git a/community/dotnet6-build/msbuild_optional-systemconfiguration.patch b/community/dotnet6-build/msbuild_optional-systemconfiguration.patch new file mode 100644 index 0000000..b28c8be --- /dev/null +++ b/community/dotnet6-build/msbuild_optional-systemconfiguration.patch @@ -0,0 +1,69 @@ +From 26a12cb531161e1fc3d6ec1f2a241e1c516ca775 Mon Sep 17 00:00:00 2001 +Patch-Source: https://src.fedoraproject.org/rpms/dotnet6.0/blob/src/msbuild/rawhide/f/msbuild-no-systemconfiguration.patch +From: Antoine Martin +Date: Fri, 21 Oct 2022 14:13:04 -0400 +Subject: [PATCH 1/2] optional-systemconfiguration + +Fix mono-specific runtime crashes running msbuild. CoreCLR does not +load types that are not actually used/invoked at runtime, while mono +does. System.Configuration and System.Security are missing in +source-build builds, which breaks msbuild. + +--- + src/Build/Definition/ProjectCollection.cs | 4 ++++ + src/Build/Definition/ToolsetReader.cs | 8 ++++++++ + 2 files changed, 12 insertions(+) + +diff --git a/src/msbuild/src/Build/Definition/ProjectCollection.cs b/src/msbuild/src/Build/Definition/ProjectCollection.cs +index 8629bd943..6a550e32d 100644 +--- a/src/msbuild/src/Build/Definition/ProjectCollection.cs ++++ b/src/msbuild/src/Build/Definition/ProjectCollection.cs +@@ -1754,7 +1754,11 @@ namespace Microsoft.Build.Evaluation + #if FEATURE_WIN32_REGISTRY + ToolsetRegistryReader registryReader = null, + #endif ++#if FEATURE_SYSTEM_CONFIGURATION + ToolsetConfigurationReader configReader = null ++#else ++ object configReader = null ++#endif + ) + { + _toolsets = new Dictionary(StringComparer.OrdinalIgnoreCase); +diff --git a/src/msbuild/src/Build/Definition/ToolsetReader.cs b/src/msbuild/src/Build/Definition/ToolsetReader.cs +index 869b3318e..c6b95d3cf 100644 +--- a/src/msbuild/src/Build/Definition/ToolsetReader.cs ++++ b/src/msbuild/src/Build/Definition/ToolsetReader.cs +@@ -101,7 +101,11 @@ namespace Microsoft.Build.Evaluation + #if FEATURE_WIN32_REGISTRY + ToolsetRegistryReader registryReader, + #endif ++#if FEATURE_SYSTEM_CONFIGURATION + ToolsetConfigurationReader configurationReader, ++#else ++ object _configurationReader, ++#endif + PropertyDictionary environmentProperties, + PropertyDictionary globalProperties, + ToolsetDefinitionLocations locations +@@ -120,6 +124,7 @@ namespace Microsoft.Build.Evaluation + + if ((locations & ToolsetDefinitionLocations.ConfigurationFile) == ToolsetDefinitionLocations.ConfigurationFile) + { ++#if FEATURE_SYSTEM_CONFIGURATION + if (configurationReader == null) + { + configurationReader = new ToolsetConfigurationReader(environmentProperties, globalProperties); +@@ -129,6 +134,9 @@ namespace Microsoft.Build.Evaluation + defaultToolsVersionFromConfiguration = configurationReader.ReadToolsets(toolsets, globalProperties, + initialProperties, true /* accumulate properties */, out overrideTasksPathFromConfiguration, + out defaultOverrideToolsVersionFromConfiguration); ++#else ++ throw new InvalidOperationException("ToolsetDefinitionLocations.ConfigurationFile not supported"); ++#endif + } + + string defaultToolsVersionFromRegistry = null; +-- +2.36.3 + diff --git a/community/dotnet6-build/msbuild_optional-systemsecurity.patch b/community/dotnet6-build/msbuild_optional-systemsecurity.patch new file mode 100644 index 0000000..02429f9 --- /dev/null +++ b/community/dotnet6-build/msbuild_optional-systemsecurity.patch @@ -0,0 +1,32 @@ +From 06707ec777769f1756230caf54391302e4378777 Mon Sep 17 00:00:00 2001 +Patch-Source: https://src.fedoraproject.org/rpms/dotnet6.0/blob/src/msbuild/rawhide/f/msbuild-no-systemsecurity.patch +From: Antoine Martin +Date: Fri, 21 Oct 2022 14:13:29 -0400 +Subject: [PATCH 2/2] optional-systemsecurity + +Fix mono-specific runtime crashes running msbuild. CoreCLR does not +load types that are not actually used/invoked at runtime, while mono +does. System.Configuration and System.Security are missing in +source-build builds, which breaks msbuild. + +--- + src/Shared/ExceptionHandling.cs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/msbuild/src/Shared/ExceptionHandling.cs b/src/msbuild/src/Shared/ExceptionHandling.cs +index 16a0576b5..1c7cd5967 100644 +--- a/src/msbuild/src/Shared/ExceptionHandling.cs ++++ b/src/msbuild/src/Shared/ExceptionHandling.cs +@@ -153,7 +153,9 @@ namespace Microsoft.Build.Shared + internal static bool IsXmlException(Exception e) + { + return e is XmlException ++#if FEATURE_SECURITY_PERMISSIONS + || e is XmlSyntaxException ++#endif + || e is XmlSchemaException + || e is UriFormatException; // XmlTextReader for example uses this under the covers + } +-- +2.36.3 + diff --git a/community/dotnet6-build/roslyn_57003-mono-namedmutex.patch b/community/dotnet6-build/roslyn_57003-mono-namedmutex.patch new file mode 100644 index 0000000..74a19ce --- /dev/null +++ b/community/dotnet6-build/roslyn_57003-mono-namedmutex.patch @@ -0,0 +1,470 @@ +From 210c17ea60f525837a7525df73e7332598ad4089 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/roslyn/pull/57003 +From: Antoine Martin +Date: Sat, 27 Aug 2022 21:26:01 -0800 +Subject: [PATCH 1/1] mono-named-mutex + +--- + .../InternalUtilities/PlatformInformation.cs | 19 ++ + .../VBCSCompilerTests/BuildClientTests.cs | 2 +- + .../CompilerServerApiTest.cs | 4 +- + .../VBCSCompilerTests/CompilerServerTests.cs | 4 +- + .../VBCSCompilerServerTests.cs | 7 +- + src/Compilers/Shared/BuildServerConnection.cs | 251 +++++++++++------- + 6 files changed, 182 insertions(+), 105 deletions(-) + +diff --git a/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs b/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs +index 033e66cd2f2..d4fa56413fb 100644 +--- a/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs ++++ b/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs +@@ -31,5 +31,24 @@ public static bool IsRunningOnMono + } + } + } ++ /// ++ /// Are we running on .NET 5 or later using the Mono runtime? ++ /// Will also return true when running on Mono itself; if necessary ++ /// we can use IsRunningOnMono to distinguish. ++ /// ++ public static bool IsUsingMonoRuntime ++ { ++ get ++ { ++ try ++ { ++ return !(Type.GetType("Mono.RuntimeStructs", throwOnError: false) is null); ++ } ++ catch ++ { ++ return false; ++ } ++ } ++ } + } + } +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs +index 669d1bfb676..7f1d0468823 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs +@@ -79,7 +79,7 @@ public void ConnectToServerFails() + // to connect. When it fails it should fall back to in-proc + // compilation. + bool holdsMutex; +- using (var serverMutex = new Mutex(initiallyOwned: true, ++ using (var serverMutex = BuildServerConnection.OpenOrCreateMutex( + name: BuildServerConnection.GetServerMutexName(_pipeName), + createdNew: out holdsMutex)) + { +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs +index 0dbd1b2e143..c00b72e8434 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs +@@ -103,7 +103,7 @@ public void MutexStopsServerStarting() + var mutexName = BuildServerConnection.GetServerMutexName(pipeName); + + bool holdsMutex; +- using (var mutex = new Mutex(initiallyOwned: true, ++ using (var mutex = BuildServerConnection.OpenOrCreateMutex( + name: mutexName, + createdNew: out holdsMutex)) + { +@@ -119,7 +119,7 @@ public void MutexStopsServerStarting() + } + finally + { +- mutex.ReleaseMutex(); ++ mutex.Dispose(); + } + } + } +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs +index 3b6f4f291ff..e97a6bf923f 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs +@@ -304,7 +304,7 @@ public async Task ServerFailsWithLongTempPathUnix() + var newTempDir = _tempDirectory.CreateDirectory(new string('a', 100 - _tempDirectory.Path.Length)); + await ApplyEnvironmentVariables( + new[] { new KeyValuePair("TMPDIR", newTempDir.Path) }, +- async () => ++ async () => await Task.Run(async () => + { + using var serverData = await ServerUtil.CreateServer(_logger); + var result = RunCommandLineCompiler( +@@ -317,7 +317,7 @@ public async Task ServerFailsWithLongTempPathUnix() + + var listener = await serverData.Complete(); + Assert.Equal(CompletionData.RequestCompleted, listener.CompletionDataList.Single()); +- }); ++ })); + } + + [Fact] +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs +index d5f493fed8a..73941972e48 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs +@@ -101,7 +101,7 @@ public async Task NoServerConnection() + + var thread = new Thread(() => + { +- using (var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created)) ++ using (var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created)) + using (var stream = NamedPipeUtil.CreateServer(pipeName)) + { + readyMre.Set(); +@@ -112,7 +112,7 @@ public async Task NoServerConnection() + stream.Close(); + + doneMre.WaitOne(); +- mutex.ReleaseMutex(); ++ mutex.Dispose(); + } + }); + +@@ -153,7 +153,7 @@ public async Task ServerShutdownsDuringProcessing() + { + using (var stream = NamedPipeUtil.CreateServer(pipeName)) + { +- var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created); ++ var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created); + readyMre.Set(); + + stream.WaitForConnection(); +@@ -161,7 +161,6 @@ public async Task ServerShutdownsDuringProcessing() + + // Client is waiting for a response. Close the mutex now. Then close the connection + // so the client gets an error. +- mutex.ReleaseMutex(); + mutex.Dispose(); + stream.Close(); + +diff --git a/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs b/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs +index f67c2d83957..1fe609061ee 100644 +--- a/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs ++++ b/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs +@@ -543,19 +543,10 @@ internal static bool WasServerMutexOpen(string mutexName) + { + try + { +- if (PlatformInformation.IsRunningOnMono) ++ if (PlatformInformation.IsUsingMonoRuntime) + { +- IServerMutex? mutex = null; +- bool createdNew = false; +- try +- { +- mutex = new ServerFileMutexPair(mutexName, false, out createdNew); +- return !createdNew; +- } +- finally +- { +- mutex?.Dispose(); +- } ++ using var mutex = new ServerFileMutex(mutexName); ++ return !mutex.CouldLock(); + } + else + { +@@ -572,9 +563,11 @@ internal static bool WasServerMutexOpen(string mutexName) + + internal static IServerMutex OpenOrCreateMutex(string name, out bool createdNew) + { +- if (PlatformInformation.IsRunningOnMono) ++ if (PlatformInformation.IsUsingMonoRuntime) + { +- return new ServerFileMutexPair(name, initiallyOwned: true, out createdNew); ++ var mutex = new ServerFileMutex(name); ++ createdNew = mutex.TryLock(0); ++ return mutex; + } + else + { +@@ -648,19 +641,22 @@ internal interface IServerMutex : IDisposable + } + + /// +- /// An interprocess mutex abstraction based on OS advisory locking (FileStream.Lock/Unlock). ++ /// An interprocess mutex abstraction based on file sharing permission (FileShare.None). + /// If multiple processes running as the same user create FileMutex instances with the same name, + /// those instances will all point to the same file somewhere in a selected temporary directory. +- /// The TryLock method can be used to attempt to acquire the mutex, with Unlock or Dispose used to release. ++ /// The TryLock method can be used to attempt to acquire the mutex, with Dispose used to release. ++ /// The CouldLock method can be used to check whether an attempt to acquire the mutex would have ++ /// succeeded at the current time, without actually acquiring it. + /// Unlike Win32 named mutexes, there is no mechanism for detecting an abandoned mutex. The file + /// will simply revert to being unlocked but remain where it is. + /// +- internal sealed class FileMutex : IDisposable ++ internal sealed class ServerFileMutex : IServerMutex + { +- public readonly FileStream Stream; ++ public FileStream? Stream; + public readonly string FilePath; ++ public readonly string GuardPath; + +- public bool IsLocked { get; private set; } ++ public bool IsDisposed { get; private set; } + + internal static string GetMutexDirectory() + { +@@ -670,61 +666,176 @@ internal static string GetMutexDirectory() + return result; + } + +- public FileMutex(string name) ++ public ServerFileMutex(string name) + { +- FilePath = Path.Combine(GetMutexDirectory(), name); +- Stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); ++ var mutexDirectory = GetMutexDirectory(); ++ FilePath = Path.Combine(mutexDirectory, name); ++ GuardPath = Path.Combine(mutexDirectory, ".guard"); + } + +- public bool TryLock(int timeoutMs) ++ /// ++ /// Acquire the guard by opening the guard file with FileShare.None. The guard must only ever ++ /// be held for very brief amounts of time, so we can simply spin until it is acquired. The ++ /// guard must be released by disposing the FileStream returned from this routine. Note the ++ /// guard file is never deleted; this is a leak, but only of a single file. ++ /// ++ internal FileStream LockGuard() + { +- if (IsLocked) +- throw new InvalidOperationException("Lock already held"); +- +- var sw = Stopwatch.StartNew(); +- do ++ // We should be able to acquire the guard quickly. Limit the number of retries anyway ++ // by some arbitrary bound to avoid getting hung up in a possibly infinite loop. ++ for (var i = 0; i < 100; i++) + { + try + { +- Stream.Lock(0, 0); +- IsLocked = true; +- return true; ++ return new FileStream(GuardPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); + } + catch (IOException) + { +- // Lock currently held by someone else. ++ // Guard currently held by someone else. + // We want to sleep for a short period of time to ensure that other processes + // have an opportunity to finish their work and relinquish the lock. + // Spinning here (via Yield) would work but risks creating a priority + // inversion if the lock is held by a lower-priority process. + Thread.Sleep(1); + } ++ } ++ // Handle unexpected failure to acquire guard as error. ++ throw new InvalidOperationException("Unable to acquire guard"); ++ } ++ ++ /// ++ /// Attempt to acquire the lock by opening the lock file with FileShare.None. Sets "Stream" ++ /// and returns true if successful, returns false if the lock is already held by another ++ /// thread or process. Guard must be held when calling this routine. ++ /// ++ internal bool TryLockFile() ++ { ++ Debug.Assert(Stream is null); ++ FileStream? stream = null; ++ try ++ { ++ stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); ++ // On some targets, the file locking used to implement FileShare.None may not be ++ // atomic with opening/creating the file. This creates a race window when another ++ // thread holds the lock and is just about to unlock: we may be able to open the ++ // file here, then the other thread unlocks and deletes the file, and then we ++ // acquire the lock on our file handle - but the actual file is already deleted. ++ // To close this race, we verify that the file does in fact still exist now that ++ // we have successfull acquired the locked FileStream. (Note that this check is ++ // safe because we cannot race with an other attempt to create the file since we ++ // hold the guard, and after the FileStream constructor returned we can no race ++ // with file deletion because we hold the lock.) ++ if (!File.Exists(FilePath)) ++ { ++ // To simplify the logic, we treat this case as "unable to acquire the lock" ++ // because it we caught another process while it owned the lock and was just ++ // giving it up. If the caller retries, we'll likely acquire the lock then. ++ stream.Dispose(); ++ return false; ++ } ++ } ++ catch (Exception) ++ { ++ stream?.Dispose(); ++ return false; ++ } ++ Stream = stream; ++ return true; ++ } ++ ++ /// ++ /// Release the lock by deleting the lock file and disposing "Stream". ++ /// ++ internal void UnlockFile() ++ { ++ Debug.Assert(Stream is not null); ++ try ++ { ++ // Delete the lock file while the stream is not yet disposed ++ // and we therefore still hold the FileShare.None exclusion. ++ // There may still be a race with another thread attempting a ++ // TryLockFile in parallel, but that is safely handled there. ++ File.Delete(FilePath); ++ } ++ finally ++ { ++ Stream.Dispose(); ++ Stream = null; ++ } ++ } ++ ++ public bool TryLock(int timeoutMs) ++ { ++ if (IsDisposed) ++ throw new ObjectDisposedException("Mutex"); ++ if (Stream is not null) ++ throw new InvalidOperationException("Lock already held"); ++ ++ var sw = Stopwatch.StartNew(); ++ do ++ { ++ try ++ { ++ // Attempt to acquire lock while holding guard. ++ using var guard = LockGuard(); ++ if (TryLockFile()) ++ return true; ++ } + catch (Exception) + { +- // Something else went wrong. + return false; + } ++ ++ // See comment in LockGuard. ++ Thread.Sleep(1); + } while (sw.ElapsedMilliseconds < timeoutMs); + + return false; + } + +- public void Unlock() ++ public bool CouldLock() + { +- if (!IsLocked) +- return; +- Stream.Unlock(0, 0); +- IsLocked = false; ++ if (IsDisposed) ++ return false; ++ if (Stream is not null) ++ return false; ++ ++ try ++ { ++ // Attempt to acquire lock while holding guard, and if successful ++ // immediately unlock again while still holding guard. This ensures ++ // no other thread will spuriously observe the lock as held due to ++ // the lock attempt here. ++ using var guard = LockGuard(); ++ if (TryLockFile()) ++ { ++ UnlockFile(); ++ return true; ++ } ++ } ++ catch (Exception) ++ { ++ return false; ++ } ++ ++ return false; + } + + public void Dispose() + { +- var wasLocked = IsLocked; +- if (wasLocked) +- Unlock(); +- Stream.Dispose(); +- // We do not delete the lock file here because there is no reliable way to perform a +- // 'delete if no one has the file open' operation atomically on *nix. This is a leak. ++ if (IsDisposed) ++ return; ++ IsDisposed = true; ++ if (Stream is not null) ++ { ++ try ++ { ++ UnlockFile(); ++ } ++ catch (Exception) ++ { ++ } ++ } + } + } + +@@ -792,56 +903,4 @@ public void Dispose() + } + } + } +- +- /// +- /// Approximates a named mutex with 'locked', 'unlocked' and 'abandoned' states. +- /// There is no reliable way to detect whether a mutex has been abandoned on some target platforms, +- /// so we use the AliveMutex to manually track whether the creator of a mutex is still running, +- /// while the HeldMutex represents the actual lock state of the mutex. +- /// +- internal sealed class ServerFileMutexPair : IServerMutex +- { +- public readonly FileMutex AliveMutex; +- public readonly FileMutex HeldMutex; +- +- public bool IsDisposed { get; private set; } +- +- public ServerFileMutexPair(string mutexName, bool initiallyOwned, out bool createdNew) +- { +- AliveMutex = new FileMutex(mutexName + "-alive"); +- HeldMutex = new FileMutex(mutexName + "-held"); +- createdNew = AliveMutex.TryLock(0); +- if (initiallyOwned && createdNew) +- { +- if (!TryLock(0)) +- throw new Exception("Failed to lock mutex after creating it"); +- } +- } +- +- public bool TryLock(int timeoutMs) +- { +- if (IsDisposed) +- throw new ObjectDisposedException("Mutex"); +- return HeldMutex.TryLock(timeoutMs); +- } +- +- public void Dispose() +- { +- if (IsDisposed) +- return; +- IsDisposed = true; +- +- try +- { +- HeldMutex.Unlock(); +- AliveMutex.Unlock(); +- } +- finally +- { +- AliveMutex.Dispose(); +- HeldMutex.Dispose(); +- } +- } +- } +- + } +-- +2.36.2 diff --git a/community/dotnet6-build/runtime_75597-support-building-runtime-with-non-portable-runtime.patch b/community/dotnet6-build/runtime_75597-support-building-runtime-with-non-portable-runtime.patch new file mode 100644 index 0000000..64717d1 --- /dev/null +++ b/community/dotnet6-build/runtime_75597-support-building-runtime-with-non-portable-runtime.patch @@ -0,0 +1,48 @@ +From 9a05b184f74fc299ddd33bccb74d153e0692d8c8 Mon Sep 17 00:00:00 2001 +From: Tom Deseyn +Date: Wed, 14 Sep 2022 11:06:42 +0200 +Subject: [PATCH 1/8] source-build: support building runtime using non-portable + runtime packages. + +Currently source-build performs a 'runtime-portable' build that produces +'linux-{arch}' packages that are used when building target runtime (non-portable). + +With this change, we can use the non-portable packages that are produced by +a previous (non-portable) 'runtime' build. This helps eliminate the +'runtime-portable' build. + +--- + src/runtime/Directory.Build.targets | 15 ++++ + src/runtime/Directory.Build.targets.orig | 96 ++++++++++++++++++++++++ + 2 files changed, 111 insertions(+) + create mode 100644 src/runtime/Directory.Build.targets.orig + +diff --git a/src/runtime/Directory.Build.targets b/src/runtime/Directory.Build.targets +index d0c698797..4337207a4 100644 +--- a/src/runtime/Directory.Build.targets ++++ b/src/runtime/Directory.Build.targets +@@ -11,6 +11,21 @@ + + + ++ ++ ++ ++ $(PackageRID) ++ ++ ++ $(PackageRID) ++ ++ ++ ++ ++ + + + + <_MonoCFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoCFLAGS Include="-Wno-strict-prototypes" /> + <_MonoCXXFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoCXXFLAGS Include="-Wno-strict-prototypes" /> + + + <_MonoAOTCFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoAOTCFLAGS Include="-Wno-strict-prototypes" /> + <_MonoAOTCXXFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoAOTCXXFLAGS Include="-Wno-strict-prototypes" /> + + + +@@ -500,15 +504,15 @@ + darwin-x86_64 + windows-x86_64 + <_MonoRuntimeFilePath>$(MonoObjDir)out\lib\$(MonoFileName) +- <_LinuxAbi Condition="'$(TargetsAndroid)' != 'true'">gnu +- <_LinuxAbi Condition="'$(TargetsAndroid)' == 'true'">android ++ <_LinuxAbi Condition="'$(TargetsAndroid)' != 'true'">alpine-linux-musl ++ <_LinuxAbi Condition="'$(TargetsAndroid)' == 'true'">linux-android + <_LinuxFloatAbi Condition="'$(TargetsAndroid)' != 'true'">hf + <_Objcopy>objcopy +- <_Objcopy Condition="'$(Platform)' == 'arm'">arm-linux-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 'arm64'">aarch64-linux-$(_LinuxAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 's390x'">s390x-linux-$(_LinuxAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 'x64'">x86_64-linux-$(_LinuxAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 'x86'">i686-linux-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'arm' and '$(CrossBuild)' == 'true'">arm-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'arm64' and '$(CrossBuild)' == 'true'">aarch64-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 's390x' and '$(CrossBuild)' == 'true'">s390x-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'x64' and '$(CrossBuild)' == 'true'">x86_64-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'x86' and '$(CrossBuild)' == 'true'">i686-$(_LinuxAbi)-$(_Objcopy) + <_Objcopy Condition="'$(TargetsAndroid)' == 'true'">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(MonoToolchainPrebuiltOS)/bin/$(_Objcopy) + + +diff --git a/src/runtime/src/mono/mono/metadata/domain.c b/src/runtime/src/mono/mono/metadata/domain.c +index 4a8e06d28ae..e9868bd1b2c 100644 +--- a/src/runtime/src/mono/mono/metadata/domain.c ++++ b/src/runtime/src/mono/mono/metadata/domain.c +@@ -138,6 +138,14 @@ create_root_domain (void) + return domain; + } + ++static MONO_NO_OPTIMIZATION MONO_NEVER_INLINE void ++ensure_stack_size (void) ++{ ++ const int default_size = 5 * 1024 * 1024; ++ volatile uint8_t *s = (uint8_t *)g_alloca(default_size); ++ *s = 0; ++} ++ + /** + * mono_init_internal: + * +@@ -181,6 +189,8 @@ mono_init_internal (const char *filename, const char *exe_filename, const char * + + mono_counters_register ("Max HashTable Chain Length", MONO_COUNTER_INT|MONO_COUNTER_METADATA, &mono_g_hash_table_max_chain_length); + ++ ensure_stack_size (); ++ + mono_gc_base_init (); + mono_thread_info_attach (); + +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index 128ed08f45b..17cbe696c4b 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -364,6 +364,11 @@ if(NOT DISABLE_SHARED_LIBS) + set_target_properties(monosgen-shared PROPERTIES IMPORT_SUFFIX ".import.lib") + endif() + target_link_libraries(monosgen-shared PRIVATE ${OS_LIBS} ${ICONV_LIB} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) ++ # Alpine Linux implements ucontext in a different library ++ if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ target_link_libraries(monosgen-shared PRIVATE ucontext) ++ endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ + if(ICU_LDFLAGS) + set_property(TARGET monosgen-shared APPEND_STRING PROPERTY LINK_FLAGS " ${ICU_LDFLAGS}") + endif() +@@ -488,6 +493,11 @@ if(NOT DISABLE_EXECUTABLES) + set_target_properties(mono-sgen PROPERTIES OUTPUT_NAME mono-aot-cross) + endif() + target_link_libraries(mono-sgen PRIVATE monosgen-static ${OS_LIBS} ${ICONV_LIB} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) ++ # Alpine Linux implements ucontext in a different library ++ if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ target_link_libraries(mono-sgen PRIVATE ucontext) ++ endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") +diff --git a/src/runtime/src/mono/mono/utils/mono-context.h b/src/runtime/src/mono/mono/utils/mono-context.h +index bd1a3cd0104..db4ba452bcb 100644 +--- a/src/runtime/src/mono/mono/utils/mono-context.h ++++ b/src/runtime/src/mono/mono/utils/mono-context.h +@@ -11,6 +11,14 @@ + #ifndef __MONO_MONO_CONTEXT_H__ + #define __MONO_MONO_CONTEXT_H__ + ++/* ++ * Handle non-gnu libc versions with nothing in features.h ++ * We have no idea what they're compatible with, so always fail. ++ */ ++#ifndef __GLIBC_PREREQ ++# define __GLIBC_PREREQ(x,y) 0 ++#endif ++ + #include "mono-compiler.h" + #include "mono-sigcontext.h" + #include "mono-machine.h" +-- +2.36.3 + diff --git a/community/dotnet6-build/runtime_82269-mono-thread-coop-undefine-fortify-source.patch b/community/dotnet6-build/runtime_82269-mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..aa34ceb --- /dev/null +++ b/community/dotnet6-build/runtime_82269-mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +See: https://github.com/dotnet/runtime/issues/82269 + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/community/dotnet6-build/runtime_enable-system-libunwind.diff b/community/dotnet6-build/runtime_enable-system-libunwind.diff new file mode 100644 index 0000000..45358a0 --- /dev/null +++ b/community/dotnet6-build/runtime_enable-system-libunwind.diff @@ -0,0 +1,22 @@ +From 75c3e74ea35219f257c80daf9a236e0f518a7875 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/installer/pull/13378 +From: Antoine Martin +Date: Wed, 9 Mar 2022 20:16:03 +0000 +Subject: [PATCH 1/1] Enable system libunwind + +Forces use of system's libunwind + +--- + +diff --git a/src/runtime/eng/SourceBuild.props b/src/runtime/eng/SourceBuild.props +index f595e9b7d1..d90fd47dbd 100644 +--- a/src/runtime/eng/SourceBuild.props ++++ b/src/runtime/eng/SourceBuild.props +@@ -47,6 +47,7 @@ + $(InnerBuildArgs) /p:BuildDebPackage=false + $(InnerBuildArgs) /p:RuntimeOS=$(RuntimeOS) + $(InnerBuildArgs) /p:AdditionalRuntimeIdentifierParent=$(BaseOS) ++ $(InnerBuildArgs) --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE + + + diff --git a/community/dotnet6-build/runtime_remove-usage-of-off64-t.patch b/community/dotnet6-build/runtime_remove-usage-of-off64-t.patch new file mode 100644 index 0000000..a55dcde --- /dev/null +++ b/community/dotnet6-build/runtime_remove-usage-of-off64-t.patch @@ -0,0 +1,15 @@ +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +index 03712c3b684..99d8a457957 100644 +--- a/src/runtimr/src/coreclr/debug/createdump/crashinfounix.cpp ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -395,7 +395,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fd != -1); +- *read = pread64(m_fd, buffer, size, (off64_t)address); ++ *read = pread(m_fd, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) + + diff --git a/community/dotnet6-build/sdk_14239-add-zsh-compdef-completion-script.patch b/community/dotnet6-build/sdk_14239-add-zsh-compdef-completion-script.patch new file mode 100644 index 0000000..bdb120b --- /dev/null +++ b/community/dotnet6-build/sdk_14239-add-zsh-compdef-completion-script.patch @@ -0,0 +1,35 @@ +From 4c74721e1f5da9642adab03075dda2f55719ac7b Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/sdk/pull/14239 +From: Esgariot +Date: Mon, 19 Oct 2020 23:42:37 +0200 +Subject: [PATCH 1/1] Add zsh compdef completion script. + +Continuing off of PR 13384 in upstream. +This commit is ready to be rebased to include appropriate co-authors +before merging PR. + +--- + scripts/register-completions.zsh | 13 +++---------- + 1 file changed, 3 insertions(+), 10 deletions(-) + +diff --git a/src/sdk/scripts/register-completions.zsh b/src/sdk/scripts/register-completions.zsh +index 8eebe9a867..faa32fef71 100644 +--- a/src/sdk/scripts/register-completions.zsh ++++ b/src/sdk/scripts/register-completions.zsh +@@ -1,10 +1,3 @@ +-# zsh parameter completion for the dotnet CLI +- +-_dotnet_zsh_complete() +-{ +- local completions=("$(dotnet complete "$words")") +- +- reply=( "${(ps:\n:)completions}" ) +-} +- +-compctl -K _dotnet_zsh_complete dotnet ++#compdef dotnet ++local completions=("$(dotnet complete "$words")") ++[[ -n "$completions" ]] && compadd -- "${(ps:\n:)completions}" +-- +2.34.1 + diff --git a/community/dotnet6-build/sdk_telemetry-optout.patch b/community/dotnet6-build/sdk_telemetry-optout.patch new file mode 100644 index 0000000..435a57f --- /dev/null +++ b/community/dotnet6-build/sdk_telemetry-optout.patch @@ -0,0 +1,32 @@ +From eb7141ec561b9a2551d16ee661343b87c5e5f1b1 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Sun, 23 Jan 2022 15:47:27 +0000 +Subject: [PATCH 1/1] SDK telemetry optout + +Disables telemetry by default. + +--- + src/Cli/dotnet/Program.cs | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/sdk/src/Cli/dotnet/Program.cs b/src/sdk/src/Cli/dotnet/Program.cs +index c3be733b4a..2a157a75d5 100644 +--- a/src/sdk/src/Cli/dotnet/Program.cs ++++ b/src/sdk/src/Cli/dotnet/Program.cs +@@ -27,6 +27,13 @@ public class Program + + public static int Main(string[] args) + { ++ // opt out of telemetry by default if the env var is unset ++ string telemetryValue = Environment.GetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT"); ++ if (String.IsNullOrEmpty(telemetryValue)) ++ { ++ Environment.SetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1"); ++ } ++ + DebugHelper.HandleDebugSwitch(ref args); + + // Capture the current timestamp to calculate the host overhead. +-- +2.35.1 + diff --git a/community/dotnet6-runtime/APKBUILD b/community/dotnet6-runtime/APKBUILD new file mode 100644 index 0000000..b5ea59d --- /dev/null +++ b/community/dotnet6-runtime/APKBUILD @@ -0,0 +1,173 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +# secfixes: +# 6.0.6-r0: +# - CVE-2022-30184 +# 6.0.8-r0: +# - CVE-2022-34716 +# 6.0.9-r0: +# - CVE-2022-38013 +# 6.0.10-r0: +# - CVE-2022-41032 +# 6.0.12-r0: +# - CVE-2022-41089 +# 6.0.13-r0: +# - CVE-2023-21538 +# 6.0.14-r0: +# - CVE-2023-21808 +# 6.0.16-r0: +# - CVE-2023-28260 +# 6.0.18-r0: +# - CVE-2023-24895 +# - CVE-2023-24897 +# - CVE-2023-24936 +# - CVE-2023-29331 +# - CVE-2023-29337 +# - CVE-2023-33126 +# - CVE-2023-33128 +# - CVE-2023-33135 +# 6.0.20-r0: +# - CVE-2023-33127 +# - CVE-2023-33170 +# 6.0.21-r0: +# - CVE-2023-35390 +# - CVE-2023-38180 +# - CVE-2023-35391 +# 6.0.22-r0: +# - CVE-2023-36792 +# - CVE-2023-36793 +# - CVE-2023-36794 +# - CVE-2023-36796 +# - CVE-2023-36799 +# 6.0.23-r0: +# - CVE-2023-44487 +# 6.0.24-r0: +# - CVE-2023-36792 +# - CVE-2023-36793 +# - CVE-2023-36794 +# - CVE-2023-36796 +# - CVE-2023-36799 +# - CVE-2023-44487 +# 6.0.25-r0: +# - CVE-2023-36049 +# - CVE-2023-36558 + + +pkgname=dotnet6-runtime +pkgver=6.0.25 +_bldver=6.0.125-r0 +pkgrel=0 + +_pkgver_macro=${pkgver%.*} +_pkgver_name=${_pkgver_macro//[.0]} +_bldver_ver=${_bldver%%-*} +pkgdesc="The .NET $_pkgver_macro Core runtime" +arch="x86_64 aarch64 armv7" +url="https://dotnet.microsoft.com/" +license="MIT" +depends=" + dotnet$_pkgver_name-hostfxr + icu-data-full + icu-libs + " +makedepends="dotnet$_pkgver_name-build=$_bldver" +subpackages=" + aspnetcore$_pkgver_name-runtime:aspnetcore_runtime:noarch + aspnetcore$_pkgver_name-targeting-pack:aspnetcore_targeting_pack:noarch + dotnet$_pkgver_name-apphost-pack:apphost_pack + dotnet$_pkgver_name-hostfxr + dotnet$_pkgver_name-targeting-pack:targeting_pack:noarch + dotnet-host:host + " +provides="dotnet$_pkgver_name=$pkgver-r$pkgrel" +options="!check" # No test suite +source="dotnet.sh.in" +builddir="$srcdir" +_libdir="/usr/lib" + +case $CARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7) _dotnet_arch="arm";; + armhf) _dotnet_arch="armv6";; + *) _dotnet_arch="$CARCH";; +esac + +build() { + sed "s|%LIBDIR%|$_libdir/dotnet|" "$srcdir"/dotnet.sh.in > "$srcdir"/dotnet.sh +} + +package() { + install -dm 755 "$pkgdir"/$_libdir/dotnet/shared + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/shared/Microsoft.NETCore.App "$pkgdir"/$_libdir/dotnet/shared/. +} + +host() { + pkgdesc="A generic driver for the .NET Core Command Line Interface" + depends="" + + install -dm 755 \ + "$subpkgdir"/etc/profile.d \ + "$subpkgdir"/etc/dotnet \ + "$subpkgdir"/usr/bin \ + "$subpkgdir"/$_libdir/dotnet + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/dotnet "$subpkgdir"/$_libdir/dotnet/. + ln -s $_libdir/dotnet/dotnet "$subpkgdir"/usr/bin/dotnet + echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location + echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location_$_dotnet_arch + install -Dm 644 "$srcdir"/dotnet.sh -t "$subpkgdir"/etc/profile.d/ +} + +hostfxr() { + pkgdesc="The .NET host resolver contains the logic to resolve and select the right version of the .NET SDK or runtime to use." + depends="dotnet-host" + provides="dotnet-hostfxr-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/host "$subpkgdir"/$_libdir/dotnet/. +} + +aspnetcore_runtime() { + pkgdesc="The ASP.NET $_pkgver_macro Core runtime" + depends="dotnet$_pkgver_name-runtime" + provides="aspnetcore-runtime-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/shared + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/shared/Microsoft.AspNetCore.App "$subpkgdir"/$_libdir/dotnet/shared/. +} + +apphost_pack() { + pkgdesc="The .NET $_pkgver_macro Core apphost pack" + provides="dotnet-apphost-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/Microsoft.NETCore.App.Host.* "$subpkgdir"/$_libdir/dotnet/packs/. +} + +targeting_pack() { + pkgdesc="The .NET $_pkgver_macro Core targeting pack" + provides="dotnet-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/Microsoft.NETCore.App.Ref "$subpkgdir"/$_libdir/dotnet/packs/. +} + +aspnetcore_targeting_pack() { + pkgdesc="The ASP.NET $_pkgver_macro Core targeting pack" + provides="aspnetcore-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/Microsoft.AspNetCore.App.Ref "$subpkgdir"/$_libdir/dotnet/packs/. +} + +sha512sums=" +c3f31956976b77198e72a3fef3427338b6b2961f8c121416040c1105de0ce8073e46f4c2e9ef22a001aee69cbe39621c2ddac988522693110071dfae42f2e2b7 dotnet.sh.in +" diff --git a/community/dotnet6-runtime/README.md b/community/dotnet6-runtime/README.md new file mode 100644 index 0000000..59dadd2 --- /dev/null +++ b/community/dotnet6-runtime/README.md @@ -0,0 +1,144 @@ +# dotnet6-runtime + +This is the .NET 6.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `aspnetcore6-runtime` +* `aspnetcore6-targeting-pack` +* `dotnet6-apphost-pack` (used by dotnet6-runtime) +* `dotnet6-hostfxr` (used by dotnet-host) +* `dotnet6-runtime` +* `dotnet6-targeting-pack` +* `dotnet-host` + +## How to build dotnet6 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet6 is built using three different aports. + +* `community/dotnet6-stage0` +Builds minimum components for full build of dotnet6, and packages these in an initial +`dotnet6-stage0-bootstrap` package that `dotnet6-build` pulls. +* `community/dotnet6-build` +Builds full and packages dotnet6 fully using either stage0 or previoulsy built +dotnet6 build. +* `community/dotnet6-runtime` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet6-build. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet6-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet6` as opposed to `dotnet-6.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet6-runtime` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet6/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet6-runtime: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet6-runtime` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet6/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet6-runtime: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/community/dotnet6-runtime/dotnet.sh.in b/community/dotnet6-runtime/dotnet.sh.in new file mode 100644 index 0000000..f85eb29 --- /dev/null +++ b/community/dotnet6-runtime/dotnet.sh.in @@ -0,0 +1,12 @@ +# Set location for AppHost lookup +[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT=%LIBDIR% + +# Add dotnet tools directory to PATH +DOTNET_TOOLS_PATH="$HOME/.dotnet/tools" +case "$PATH" in + *"$DOTNET_TOOLS_PATH"* ) true ;; + * ) PATH="$PATH:$DOTNET_TOOLS_PATH" ;; +esac + +# Extract self-contained executables under HOME to avoid multi-user issues from using the default '/var/tmp' +[ -z "$DOTNET_BUNDLE_EXTRACT_BASE_DIR" ] && export DOTNET_BUNDLE_EXTRACT_BASE_DIR="${XDG_CACHE_HOME:-"$HOME"/.cache}/dotnet_bundle_extract" diff --git a/community/dotnet6-stage0/APKBUILD b/community/dotnet6-stage0/APKBUILD new file mode 100644 index 0000000..b94b7ce --- /dev/null +++ b/community/dotnet6-stage0/APKBUILD @@ -0,0 +1,514 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet6-stage0 +pkgver=6.0.116 +pkgrel=4 + +[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross="" + +# Tag of tarball generator. +_gittag=v$pkgver + +# Versions of prebuilt artifacts and bootstrap tar +_artifactsver=6.0.112 +_bootstrapver="6.0.116" +_bootstraprel=0 +_installerver=${_gittag/v} + +# Version of packages that aren't defined in git-info +_iltoolsver=6.0.12-servicing.22579.1 + +# Patches to be used. String before '_' refers to repo to patch +# Look for patch notes within each patch for what they fix / where they come from +# build_* patches applies directly to $builddir +_patches=" + roslyn_57003-mono-namedmutex.patch + roslyn_revert-lift-version-codeanalysis.patch + runtime_76500-mono-musl-support.patch + runtime_76500-properly-set-toolchain-for-crossbuilding-on-alpine.patch + runtime_82269-mono-thread-coop-undefine-fortify-source.patch + runtime_84442-support-adding-rids-with-dash-in-base-part.patch + runtime_84443-suppress-clang-16-warnings.patch + runtime_remove-usage-of-off64-t.patch + " +_extra_nupkgs=" + https://globalcdn.nuget.org/packages/system.reactive.core.4.1.1.nupkg + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=1 +_pkgver_name="${_pkgver_macro//[.0]}" +pkgdesc="The .NET Core stage0 bits for dotnet build" +arch="x86_64 aarch64 armv7" +url=https://www.microsoft.com/net/core +_giturl="https://github.com/dotnet/installer" +license="MIT" +options="!check" # Testsuite in main -build aport +subpackages=" + dotnet$_pkgver_name-stage0-artifacts:artifacts:noarch + dotnet$_pkgver_name-stage0-bootstrap + " +source=" + https://lab.ilot.io/dotnet/installer/-/releases/$_gittag/downloads/tarball/dotnet-$_gittag.tar.xz + dotnet-sdk-$_bootstrapver-linux-musl-x64.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-x64.tar.gz + dotnet-sdk-$_bootstrapver-linux-musl-arm64.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm64.tar.gz + dotnet-sdk-$_bootstrapver-linux-musl-arm.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm.tar.gz + Private.SourceBuilt.Artifacts.$_artifactsver.noextract::https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$_artifactsver.tar.gz + https://globalcdn.nuget.org/packages/runtime.linux-musl-x64.microsoft.netcore.ilasm.6.0.0.nupkg + https://globalcdn.nuget.org/packages/runtime.linux-musl-arm64.microsoft.netcore.ilasm.6.0.0.nupkg + https://globalcdn.nuget.org/packages/runtime.linux-musl-arm.microsoft.netcore.ilasm.6.0.0.nupkg + $_extra_nupkgs + $_patches + " +makedepends_host=" + bash + binutils + clang + cmake + findutils + g++ + gcc + grep + icu-dev + jq + krb5-dev + libintl + libstdc++ + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lttng-ust-dev + musl-dev + musl-utils + openssl-dev + pigz + unzip + zip + zlib-dev + " +case $CARCH in + s390x|x86) makedepends_host="$makedepends_host libucontext-dev";; + *) makedepends_host="$makedepends_host lld-dev";; +esac +makedepends_build=" + $makedepends_host + binutils$_cross + git + gcc$_cross + llvm + llvm-dev + python3 + xz + " +case $CBUILD_ARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7|armhf) _dotnet_arch="arm";; + i586) _dotnet_arch="x86";; + *) _dotnet_arch=$CBUILD_ARCH;; +esac +case $CTARGET_ARCH in + x86_64) _dotnet_target="x64";; + aarch64) _dotnet_target="arm64";; + armv7|armhf) _dotnet_target="arm";; + i586) _dotnet_target="x86";; + *) _dotnet_target=$CTARGET_ARCH;; +esac + +builddir="$srcdir"/dotnet-${_gittag/release\/} +_packagesdir="$srcdir"/local-packages +_libdir="/usr/lib" +_nugetdir="$srcdir"/nuget +_downloaddir="$srcdir"/local-downloads +_cli_root="$srcdir"/bootstrap +_nuget="$_cli_root/dotnet nuget" +_outputdir="$srcdir"/artifacts +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +# generates tarball containing all components built by dotnet +snapshot() { + local _pkg="$srcdir"/${builddir##*/}.tar + + ulimit -n 4096 + export NUGET_PACKAGES=$_nugetdir + + if [ -d "$srcdir" ]; then + cd "$srcdir" + else + mkdir -p "$srcdir" && cd "$srcdir" + fi + if [ -d "installer" ]; then + cd "$srcdir"/installer + else + git clone $_giturl --branch $_gittag && cd "$srcdir"/installer + fi + + sed 's||' -i src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets + + if [ -d "$_libdir/dotnet/bootstrap" ]; then + local _cli_root="$(find /usr/lib/dotnet/bootstrap/6.0* -maxdepth 0 -type d | sort -r | head -n 1)" + else + local _cli_root="" + fi + + _InitializeDotNetCli="$_cli_root" DOTNET_INSTALL_DIR="$_cli_root" DotNetBuildFromSource=true ./build.sh \ + /p:ArcadeBuildTarball=true \ + /p:TarballDir=$builddir \ + /p:TarballFilePath=$_pkg + + msg "Compressing ${builddir##*/}.tar to $SRCDEST" + xz -T0 -9 -vv -e -c > "$SRCDEST"/${builddir##*/}.tar.xz < "$_pkg" + + cd "$startdir" + abuild checksum +} + +prepare() { + default_prepare + + mkdir -p "$_cli_root" + mkdir -p $_packagesdir $_downloaddir $_outputdir $_nugetdir + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + unzip -po "$srcdir"/runtime.linux-musl-$_dotnet_arch.microsoft.netcore.ilasm.*.nupkg runtimes/linux-musl-$_dotnet_arch/native/ilasm > $_cli_root/ilasm + chmod +x "$_cli_root"/ilasm + + tar -xf "$srcdir"/dotnet-sdk-$_pkgver_macro*$_dotnet_arch.noextract -C "$_cli_root" --no-same-owner + + for i in $_extra_nupkgs; do + local filename=${i/::*} + local filename=${filename##*/} + $_nuget push "$srcdir"/$filename --source="$_packagesdir" + done + + # adjusts sdk version and packagedir to expected + for i in runtime sdk installer aspnetcore roslyn; do + $_nuget add source $_packagesdir --name local --configfile "$builddir"/src/$i/NuGet.config + tmp=$(mktemp) + jq ".sdk.version = \"$_bootstrapver\"" "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json + done +} + +_runtime() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_runtimever+x}" ]; then + local _runtimever=$(grep OutputPackageVersion "$builddir"/git-info/runtime.props | sed -E 's|||g' | tr -d ' ') + fi + local _runtimever_ns=$(awk '{if($2 ~ "Name=\"VS.Redist.Common.NetCore.SharedFramework.x64.*\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building runtime version $_runtimever" + cd "$builddir"/src/runtime + + local args=" + -c Release + -clang + -arch $_dotnet_target + -bl + /consoleLoggerParameters:ShowTimestamp + /p:NoPgoOptimize=true + /p:EnableNgenOptimization=false + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/git-info/runtime.props | sed -E 's|||g' | tr -d ' ') + /p:ILAsmToolPath=$_cli_root + " + if [ "$CBUILD" != "$CHOST" ]; then + local args="$args -cross" + # https://github.com/dotnet/runtime/pull/75597 broke crossbuilding when true + local DotNetBuildFromSource=false + # x86 build of mono broken, thus do not build mono + case $_dotnet_target in + x86) local args="$args /p:DefaultSubsets=clr+libs+host+packs";; + esac + fi + if [ "$_runtimever" != "${_runtimever##*-}" ]; then + local args="$args /p:VersionSuffix=${_runtimever##*-}" + fi + DotNetBuildFromSource=$DotNetBuildFromSource ROOTFS_DIR="$CBUILDROOT" ./build.sh $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Runtime/$_runtimever_ns + cp artifacts/packages/*/*/dotnet-runtime-*-*.tar.gz $_downloaddir/Runtime/$_runtimever_ns +} + +_roslyn() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_roslynver+x}" ]; then + local _roslynver=$(grep OutputPackageVersion "$builddir"/git-info/roslyn.props | sed -E 's|||g' | tr -d ' ') + fi + local _roslynver_ns=$(awk '{if($2 == "Name=\"Microsoft.Net.Compilers.Toolset\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building roslyn version $_roslynver" + cd "$builddir"/src/roslyn + + local args=" + -c Release + -bl + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/git-info/roslyn.props | sed -E 's|||g' | tr -d ' ') + " + if [ "$_roslynver" != "${_roslynver##*-}" ]; then + local args="$args /p:VersionSuffix=${_roslynver##*-}" + fi + DotNetBuildFromSource=false ./eng/build.sh --restore /p:UseAppHost=false + ./eng/build.sh --restore --build --pack $args + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done +} + +_sdk() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_sdkver+x}" ]; then + local _sdkver=$(grep OutputPackageVersion "$builddir"/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + fi + local _sdkver_ns=$(awk '{if($2 == "Name=\"Microsoft.NET.Sdk\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building sdk version $_sdkver" + cd "$builddir"/src/sdk + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + /p:Architecture=$_dotnet_target + " + if [ "$_sdkver" != "${_sdkver##*-}" ]; then + local args="$args /p:VersionSuffix=${_sdkver##*-}" + fi + ./build.sh --pack /p:Projects=$builddir/src/sdk/source-build.slnf $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Sdk/$_sdkver_ns + cp artifacts/packages/*/*/dotnet-toolset-internal-*.zip "$_downloaddir"/Sdk/$_sdkver_ns +} + +_aspnetcore() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_aspnetver+x}" ]; then + local _aspnetver=$(grep OutputPackageVersion "$builddir"/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + fi + local _aspnetver_ns=$(awk '{if($2 == "Name=\"Microsoft.AspNetCore.App.Ref.Internal\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Build aspnetcore version $_aspnetver" + cd "$builddir"/src/aspnetcore + local args=" + --os-name linux-musl + -arch $_dotnet_target + -c Release + -no-build-nodejs + -bl + /consoleLoggerParameters:ShowTimestamp + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + /p:DotNetAssetRootUrl=file://$_downloaddir/ + /p:BuildOSName=linux-musl + " + # x86 crossgen broken + case $CARCH in + x86) local args="$args /p:CrossgenOutput=false";; + esac + + if [ "$_aspnetver" != "${_aspnetver##*-}" ]; then + local args="$args /p:VersionSuffix=${_aspnetver##*-}" + fi + ./eng/build.sh --pack $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore-runtime-internal-*-linux-musl-$_dotnet_target.tar.gz "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore_base_runtime.version "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns +} + +_installer() { + "$_cli_root"/dotnet build-server shutdown + msg "[$(date)] Building installer version $_installerver" + cd "$builddir"/src/installer + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:OSName=linux-musl + /p:HostOSName=linux-musl + /p:Architecture=$_dotnet_target + /p:CoreSetupBlobRootUrl=file://$_downloaddir/ + /p:DotnetToolsetBlobRootUrl=file://$_downloaddir/ + /p:EnableSourceLink=false + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/git-info/installer.props | sed -E 's|||g' | tr -d ' ') + /p:GitCommitCount=$(grep GitCommitCount "$builddir"/git-info/installer.props | sed -E 's|||g' | tr -d ' ') + /p:PublicBaseURL=file://$_downloaddir/ + " + if [ "$_installerver" != "${_installerver##*-}" ]; then + local args="$args /p:VersionSuffix=${_installerver##*-}" + fi + + # x86 crossgen broken + case $CARCH in + x86) local args="$args /p:DISABLE_CROSSGEN=True";; + esac + ./build.sh $args + + mkdir -p "$_downloaddir"/installer/$_installerver + cp artifacts/packages/*/*/dotnet-sdk-$_pkgver_macro*.tar.gz "$_downloaddir"/installer/$_installerver +} + +build() { + export _InitializeDotNetCli=$_cli_root + export DOTNET_INSTALL_DIR=$_cli_root + export PATH="$_cli_root:$PATH" + export NUGET_PACKAGES=$_nugetdir + export DotNetBuildFromSource=true + export DOTNET_CLI_TELEMETRY_OPTOUT=true + export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true + export SHELL=/bin/bash + export EXTRA_CPPFLAGS="${CPPFLAGS/--sysroot=$CBUILDROOT}" + export EXTRA_CXXFLAGS="${CXXFLAGS/--sysroot=$CBUILDROOT}" + export EXTRA_CFLAGS="${CFLAGS/--sysroot=$CBUILDROOT}" + export EXTRA_LDFLAGS="$LDFLAGS" + unset CXXFLAGS CFLAGS LDFLAGS CPPFLAGS + + ulimit -n 4096 + + _runtime + _roslyn + _sdk + _aspnetcore + _installer +} + +package() { + # lua-aports / buildrepo doesn't know to always build stage0 first when dealing + # with virtual packages. Thus, we need to depend on an empty stage0 pkg that + # dotnetx-build will pull, thus forcing build of stage0 first + mkdir -p "$pkgdir" +} + +bootstrap() { + # allows stage0 to be pulled by dotnetx-build if first build of dotnetx + provides="dotnet$_pkgver_name-bootstrap" + provider_priority=$_pkgver_prior + + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/docs \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/comp \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver + + # unpack build artifacts to bootstrap subdir for use by future builds + tar --use-compress-program="pigz" \ + -xf "$_downloaddir"/installer/$_installerver/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/ \ + --no-same-owner + + local _iltoolsArray=" + runtime.*.Microsoft.NETCore.TestHost.*.nupkg + runtime.*.Microsoft.NETCore.ILAsm.*.nupkg + runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg + " + + local _nupkgsArray=" + $_iltoolsArray + Microsoft.NETCore.App.Host.*.*.nupkg + Microsoft.NETCore.App.Runtime.*.*.nupkg + Microsoft.NETCore.App.Crossgen2.*.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHost.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostPolicy.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostResolver.*.nupkg + runtime.*.Microsoft.NETCore.DotNetAppHost.*.nupkg + Microsoft.AspNetCore.App.Runtime.linux-musl-*.*.nupkg + " + + # copies artifacts to artifacts dir for use by future dotnet builds + for i in $_nupkgsArray; do install -Dm644 "$_packagesdir"/$i "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ || true; done + for i in $_extra_nupkgs; do + local filename=${i/::*} + local filename=${filename##*/} + install -Dm644 "$srcdir"/$filename "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ + done + + msg "Changing iltools version to $_iltoolsver" + # source-build expects a certain version of ilasm, ildasm and testhost + # following adjusts version + for i in $_iltoolsArray; do + local nupath="$subpkgdir"$_libdir/dotnet/artifacts/$pkgver/$i + local nupath=$(find $nupath || true) + if [ ! "$nupath" ]; then continue; fi + local nupkg="${nupath##*/}" + local nuname="${nupkg%-*}" + local nuname="${nuname%.*.*.*}" + local nuver="${nupkg/$nuname.}" + local nuver="${nuver/.nupkg}" + local nuspec="$nuname.nuspec" + # shellcheck disable=SC2094 + unzip -p "$nupath" $nuspec | sed "s|$nuver|$_iltoolsver|" > "$srcdir"/$nuspec + cd "$srcdir" + zip -u "$nupath" $nuspec + mv "$nupath" "${nupath/$nuver/$_iltoolsver}" + done +} + +# build relies on a plethora of nupkgs which are provided by this Artifacts file. +# stage0 sources these from Microsoft, which then allows bootstrap to build +# locally hosted versions. The following unpacks built tarball into directory +# for use by future builds. +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver \ + "$subpkgdir"/usr/share/licenses + + # extract artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ + --no-same-owner \ + --exclude '*x64*' +} + +sha512sums=" +8c03186212149ba38df996068d511c29bd9be31e40fd1d7d21fc15fd2c0f6272479e8145ccb9544bb48c2c90bc8001ba05af1a7d92a60018ba7a983bc6187731 dotnet-v6.0.116.tar.xz +3b6f37aee5698d7ef794c74a6d914b914f0220346a2f37e66e4a29db63e284747d02856ea6cd461c76f2a9e18ab047f40cc739e7f8227d69ea7316bce2020201 dotnet-sdk-6.0.116-linux-musl-x64.noextract +dd3ec888e0d6644f2d6ef17ca7ce540d62226bb459cc0bbfe938229e757a8f4a10fc314a078f9898143c2271b8a70de77ffbdaecfa8c4c87921421e729f53a64 dotnet-sdk-6.0.116-linux-musl-arm64.noextract +a35480c68e9f156a33225e80dc166db3a2fbe860f0f35497357fa6b5594df16dad9cbc8b5a7569ee4b6262070e100bf3c9d57721c68bac5bfc83abf61e4ace5d dotnet-sdk-6.0.116-linux-musl-arm.noextract +64fffa28143c28ceefbae08e8086746e177a11242f6a5b778bc5597190748c9d3e869020d7d3f4b74efaad7fbb73258765e227c9bdd098501fdbbc7e7e6ec05b Private.SourceBuilt.Artifacts.6.0.112.noextract +0eb771d7e23607a256f209c958a8025af6a7c1e20948b244f2903941aad5e1c0f130a9285ee29086d6188090e8692f5f129329a88da54d3f0a7e7e5b7e4257ef runtime.linux-musl-x64.microsoft.netcore.ilasm.6.0.0.nupkg +5ad26a79b5ba3ebdc6932dde50218d2c0669377dcb628debbb448e0dfc5d001d7e07b121f18ecd50b667ab372e10ec0bfe166a6e2103faf2f824995fdad0c355 runtime.linux-musl-arm64.microsoft.netcore.ilasm.6.0.0.nupkg +2a24e56ddf0f3e3ef7cb64523b7c6ebf02b91a73287c342783eb66e43a9bbe0cd23eb4b26f435e6b194bf1a40017e6aae60333ff087b18657672b243e8c8ce76 runtime.linux-musl-arm.microsoft.netcore.ilasm.6.0.0.nupkg +a24efb7578e2020e17c877ffe00b49f8f476b0845fdc55c16404008a9566d8628a72c2208bd23df745c88592ebe9c922b0cf1bc1f95f834b539bbcc2cbf516c5 system.reactive.core.4.1.1.nupkg +42779a7bf1004fe0f7054cfa4f09f49d7f2a57c0543ec994ffbd54fb349abb508295476098ed35d60e9676be8bcc15aa8a9ec5c814cd1e058357530b5cdfb2b6 roslyn_57003-mono-namedmutex.patch +cf40e37b4adfc61e24e3b48a397b4d813726d190f271869d946035279bf662a694a0fca448f5ae06ad2bb2300595223109ad64f60f65dac5cddf9308e12147a3 roslyn_revert-lift-version-codeanalysis.patch +e67e0114bd324dae65eb19f6fa8c74414bee77cd30e299931b0d82b4ca1b6b6f88358a0c47ffb180f46c5cb28f61f79bb4a59d43c1ae3011bfe491e757de293a runtime_76500-mono-musl-support.patch +6c614a48565c0e10f8714244e538bb453f7914ff58d01e9fd1255ad24698be916fd9e0a438c732737576fde6c0d68bec8f8958ce1b1b11b70c4a3b8663bdb8e2 runtime_76500-properly-set-toolchain-for-crossbuilding-on-alpine.patch +827e899a83103f666dc3d57c1ec695bebc659a574f4a1d754da0cafe8c18d7db79c3950267e905fa078f94612ee1101fbddd0ea62b3c08947d8bcd7d9c8de41c runtime_82269-mono-thread-coop-undefine-fortify-source.patch +bfa4fca9987b4a1369e59abb3f872841ae994d47e5f873db43d9a0563f5e720cd85714e73aada912997da55077262e01f1ae120f8d32043d661ba89d12384caa runtime_84442-support-adding-rids-with-dash-in-base-part.patch +153255e80c2d2a131c2985041132417573ee98fa4b90153a1417080dbfb4d9bd03db9d5e241e54f5e664c4136eaf7facca9d4dad7ededf99a8f9068f26283fdb runtime_84443-suppress-clang-16-warnings.patch +d972e77df27748a80c9b23eca12f9fbd78be97f9034b79cc5703ba58eb6750171d9a115314300f883620ccbca89c65a99ca7a45d54a421b028b590190b4bed80 runtime_remove-usage-of-off64-t.patch +" diff --git a/community/dotnet6-stage0/README.md b/community/dotnet6-stage0/README.md new file mode 100644 index 0000000..dbff8c6 --- /dev/null +++ b/community/dotnet6-stage0/README.md @@ -0,0 +1,140 @@ +# dotnet6-stage0 + +This is the .NET 6.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `dotnet6` (empty package to go around `buildrepo` build ordering bug) +* `dotnet6-stage0-bootstrap` (packages binary bootstrap artifacts) +* `dotnet6-stage0-artifacts` (packages non-binary bootstrap artifacts) + +## How to build dotnet6 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet6 is built using three different aports. + +* `community/dotnet6-stage0` +Builds minimum components for full build of dotnet6, and packages these in an initial +`dotnet6-stage0-bootstrap` package that `dotnet7-build` pulls. +* `community/dotnet6-build` +Builds full and packages dotnet6 fully using either stage0 or previoulsy built +dotnet6 build. +* `community/dotnet6-runtime` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet6-build. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet6-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet6` as opposed to `dotnet-6.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet6-stage0` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet6/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet6-stage0: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet6-stage0` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet6/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet6-stage0: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/community/dotnet6-stage0/roslyn_57003-mono-namedmutex.patch b/community/dotnet6-stage0/roslyn_57003-mono-namedmutex.patch new file mode 100644 index 0000000..74a19ce --- /dev/null +++ b/community/dotnet6-stage0/roslyn_57003-mono-namedmutex.patch @@ -0,0 +1,470 @@ +From 210c17ea60f525837a7525df73e7332598ad4089 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/roslyn/pull/57003 +From: Antoine Martin +Date: Sat, 27 Aug 2022 21:26:01 -0800 +Subject: [PATCH 1/1] mono-named-mutex + +--- + .../InternalUtilities/PlatformInformation.cs | 19 ++ + .../VBCSCompilerTests/BuildClientTests.cs | 2 +- + .../CompilerServerApiTest.cs | 4 +- + .../VBCSCompilerTests/CompilerServerTests.cs | 4 +- + .../VBCSCompilerServerTests.cs | 7 +- + src/Compilers/Shared/BuildServerConnection.cs | 251 +++++++++++------- + 6 files changed, 182 insertions(+), 105 deletions(-) + +diff --git a/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs b/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs +index 033e66cd2f2..d4fa56413fb 100644 +--- a/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs ++++ b/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs +@@ -31,5 +31,24 @@ public static bool IsRunningOnMono + } + } + } ++ /// ++ /// Are we running on .NET 5 or later using the Mono runtime? ++ /// Will also return true when running on Mono itself; if necessary ++ /// we can use IsRunningOnMono to distinguish. ++ /// ++ public static bool IsUsingMonoRuntime ++ { ++ get ++ { ++ try ++ { ++ return !(Type.GetType("Mono.RuntimeStructs", throwOnError: false) is null); ++ } ++ catch ++ { ++ return false; ++ } ++ } ++ } + } + } +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs +index 669d1bfb676..7f1d0468823 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs +@@ -79,7 +79,7 @@ public void ConnectToServerFails() + // to connect. When it fails it should fall back to in-proc + // compilation. + bool holdsMutex; +- using (var serverMutex = new Mutex(initiallyOwned: true, ++ using (var serverMutex = BuildServerConnection.OpenOrCreateMutex( + name: BuildServerConnection.GetServerMutexName(_pipeName), + createdNew: out holdsMutex)) + { +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs +index 0dbd1b2e143..c00b72e8434 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs +@@ -103,7 +103,7 @@ public void MutexStopsServerStarting() + var mutexName = BuildServerConnection.GetServerMutexName(pipeName); + + bool holdsMutex; +- using (var mutex = new Mutex(initiallyOwned: true, ++ using (var mutex = BuildServerConnection.OpenOrCreateMutex( + name: mutexName, + createdNew: out holdsMutex)) + { +@@ -119,7 +119,7 @@ public void MutexStopsServerStarting() + } + finally + { +- mutex.ReleaseMutex(); ++ mutex.Dispose(); + } + } + } +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs +index 3b6f4f291ff..e97a6bf923f 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs +@@ -304,7 +304,7 @@ public async Task ServerFailsWithLongTempPathUnix() + var newTempDir = _tempDirectory.CreateDirectory(new string('a', 100 - _tempDirectory.Path.Length)); + await ApplyEnvironmentVariables( + new[] { new KeyValuePair("TMPDIR", newTempDir.Path) }, +- async () => ++ async () => await Task.Run(async () => + { + using var serverData = await ServerUtil.CreateServer(_logger); + var result = RunCommandLineCompiler( +@@ -317,7 +317,7 @@ public async Task ServerFailsWithLongTempPathUnix() + + var listener = await serverData.Complete(); + Assert.Equal(CompletionData.RequestCompleted, listener.CompletionDataList.Single()); +- }); ++ })); + } + + [Fact] +diff --git a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs +index d5f493fed8a..73941972e48 100644 +--- a/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs ++++ b/src/roslyn/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs +@@ -101,7 +101,7 @@ public async Task NoServerConnection() + + var thread = new Thread(() => + { +- using (var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created)) ++ using (var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created)) + using (var stream = NamedPipeUtil.CreateServer(pipeName)) + { + readyMre.Set(); +@@ -112,7 +112,7 @@ public async Task NoServerConnection() + stream.Close(); + + doneMre.WaitOne(); +- mutex.ReleaseMutex(); ++ mutex.Dispose(); + } + }); + +@@ -153,7 +153,7 @@ public async Task ServerShutdownsDuringProcessing() + { + using (var stream = NamedPipeUtil.CreateServer(pipeName)) + { +- var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created); ++ var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created); + readyMre.Set(); + + stream.WaitForConnection(); +@@ -161,7 +161,6 @@ public async Task ServerShutdownsDuringProcessing() + + // Client is waiting for a response. Close the mutex now. Then close the connection + // so the client gets an error. +- mutex.ReleaseMutex(); + mutex.Dispose(); + stream.Close(); + +diff --git a/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs b/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs +index f67c2d83957..1fe609061ee 100644 +--- a/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs ++++ b/src/roslyn/src/Compilers/Shared/BuildServerConnection.cs +@@ -543,19 +543,10 @@ internal static bool WasServerMutexOpen(string mutexName) + { + try + { +- if (PlatformInformation.IsRunningOnMono) ++ if (PlatformInformation.IsUsingMonoRuntime) + { +- IServerMutex? mutex = null; +- bool createdNew = false; +- try +- { +- mutex = new ServerFileMutexPair(mutexName, false, out createdNew); +- return !createdNew; +- } +- finally +- { +- mutex?.Dispose(); +- } ++ using var mutex = new ServerFileMutex(mutexName); ++ return !mutex.CouldLock(); + } + else + { +@@ -572,9 +563,11 @@ internal static bool WasServerMutexOpen(string mutexName) + + internal static IServerMutex OpenOrCreateMutex(string name, out bool createdNew) + { +- if (PlatformInformation.IsRunningOnMono) ++ if (PlatformInformation.IsUsingMonoRuntime) + { +- return new ServerFileMutexPair(name, initiallyOwned: true, out createdNew); ++ var mutex = new ServerFileMutex(name); ++ createdNew = mutex.TryLock(0); ++ return mutex; + } + else + { +@@ -648,19 +641,22 @@ internal interface IServerMutex : IDisposable + } + + /// +- /// An interprocess mutex abstraction based on OS advisory locking (FileStream.Lock/Unlock). ++ /// An interprocess mutex abstraction based on file sharing permission (FileShare.None). + /// If multiple processes running as the same user create FileMutex instances with the same name, + /// those instances will all point to the same file somewhere in a selected temporary directory. +- /// The TryLock method can be used to attempt to acquire the mutex, with Unlock or Dispose used to release. ++ /// The TryLock method can be used to attempt to acquire the mutex, with Dispose used to release. ++ /// The CouldLock method can be used to check whether an attempt to acquire the mutex would have ++ /// succeeded at the current time, without actually acquiring it. + /// Unlike Win32 named mutexes, there is no mechanism for detecting an abandoned mutex. The file + /// will simply revert to being unlocked but remain where it is. + /// +- internal sealed class FileMutex : IDisposable ++ internal sealed class ServerFileMutex : IServerMutex + { +- public readonly FileStream Stream; ++ public FileStream? Stream; + public readonly string FilePath; ++ public readonly string GuardPath; + +- public bool IsLocked { get; private set; } ++ public bool IsDisposed { get; private set; } + + internal static string GetMutexDirectory() + { +@@ -670,61 +666,176 @@ internal static string GetMutexDirectory() + return result; + } + +- public FileMutex(string name) ++ public ServerFileMutex(string name) + { +- FilePath = Path.Combine(GetMutexDirectory(), name); +- Stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); ++ var mutexDirectory = GetMutexDirectory(); ++ FilePath = Path.Combine(mutexDirectory, name); ++ GuardPath = Path.Combine(mutexDirectory, ".guard"); + } + +- public bool TryLock(int timeoutMs) ++ /// ++ /// Acquire the guard by opening the guard file with FileShare.None. The guard must only ever ++ /// be held for very brief amounts of time, so we can simply spin until it is acquired. The ++ /// guard must be released by disposing the FileStream returned from this routine. Note the ++ /// guard file is never deleted; this is a leak, but only of a single file. ++ /// ++ internal FileStream LockGuard() + { +- if (IsLocked) +- throw new InvalidOperationException("Lock already held"); +- +- var sw = Stopwatch.StartNew(); +- do ++ // We should be able to acquire the guard quickly. Limit the number of retries anyway ++ // by some arbitrary bound to avoid getting hung up in a possibly infinite loop. ++ for (var i = 0; i < 100; i++) + { + try + { +- Stream.Lock(0, 0); +- IsLocked = true; +- return true; ++ return new FileStream(GuardPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); + } + catch (IOException) + { +- // Lock currently held by someone else. ++ // Guard currently held by someone else. + // We want to sleep for a short period of time to ensure that other processes + // have an opportunity to finish their work and relinquish the lock. + // Spinning here (via Yield) would work but risks creating a priority + // inversion if the lock is held by a lower-priority process. + Thread.Sleep(1); + } ++ } ++ // Handle unexpected failure to acquire guard as error. ++ throw new InvalidOperationException("Unable to acquire guard"); ++ } ++ ++ /// ++ /// Attempt to acquire the lock by opening the lock file with FileShare.None. Sets "Stream" ++ /// and returns true if successful, returns false if the lock is already held by another ++ /// thread or process. Guard must be held when calling this routine. ++ /// ++ internal bool TryLockFile() ++ { ++ Debug.Assert(Stream is null); ++ FileStream? stream = null; ++ try ++ { ++ stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); ++ // On some targets, the file locking used to implement FileShare.None may not be ++ // atomic with opening/creating the file. This creates a race window when another ++ // thread holds the lock and is just about to unlock: we may be able to open the ++ // file here, then the other thread unlocks and deletes the file, and then we ++ // acquire the lock on our file handle - but the actual file is already deleted. ++ // To close this race, we verify that the file does in fact still exist now that ++ // we have successfull acquired the locked FileStream. (Note that this check is ++ // safe because we cannot race with an other attempt to create the file since we ++ // hold the guard, and after the FileStream constructor returned we can no race ++ // with file deletion because we hold the lock.) ++ if (!File.Exists(FilePath)) ++ { ++ // To simplify the logic, we treat this case as "unable to acquire the lock" ++ // because it we caught another process while it owned the lock and was just ++ // giving it up. If the caller retries, we'll likely acquire the lock then. ++ stream.Dispose(); ++ return false; ++ } ++ } ++ catch (Exception) ++ { ++ stream?.Dispose(); ++ return false; ++ } ++ Stream = stream; ++ return true; ++ } ++ ++ /// ++ /// Release the lock by deleting the lock file and disposing "Stream". ++ /// ++ internal void UnlockFile() ++ { ++ Debug.Assert(Stream is not null); ++ try ++ { ++ // Delete the lock file while the stream is not yet disposed ++ // and we therefore still hold the FileShare.None exclusion. ++ // There may still be a race with another thread attempting a ++ // TryLockFile in parallel, but that is safely handled there. ++ File.Delete(FilePath); ++ } ++ finally ++ { ++ Stream.Dispose(); ++ Stream = null; ++ } ++ } ++ ++ public bool TryLock(int timeoutMs) ++ { ++ if (IsDisposed) ++ throw new ObjectDisposedException("Mutex"); ++ if (Stream is not null) ++ throw new InvalidOperationException("Lock already held"); ++ ++ var sw = Stopwatch.StartNew(); ++ do ++ { ++ try ++ { ++ // Attempt to acquire lock while holding guard. ++ using var guard = LockGuard(); ++ if (TryLockFile()) ++ return true; ++ } + catch (Exception) + { +- // Something else went wrong. + return false; + } ++ ++ // See comment in LockGuard. ++ Thread.Sleep(1); + } while (sw.ElapsedMilliseconds < timeoutMs); + + return false; + } + +- public void Unlock() ++ public bool CouldLock() + { +- if (!IsLocked) +- return; +- Stream.Unlock(0, 0); +- IsLocked = false; ++ if (IsDisposed) ++ return false; ++ if (Stream is not null) ++ return false; ++ ++ try ++ { ++ // Attempt to acquire lock while holding guard, and if successful ++ // immediately unlock again while still holding guard. This ensures ++ // no other thread will spuriously observe the lock as held due to ++ // the lock attempt here. ++ using var guard = LockGuard(); ++ if (TryLockFile()) ++ { ++ UnlockFile(); ++ return true; ++ } ++ } ++ catch (Exception) ++ { ++ return false; ++ } ++ ++ return false; + } + + public void Dispose() + { +- var wasLocked = IsLocked; +- if (wasLocked) +- Unlock(); +- Stream.Dispose(); +- // We do not delete the lock file here because there is no reliable way to perform a +- // 'delete if no one has the file open' operation atomically on *nix. This is a leak. ++ if (IsDisposed) ++ return; ++ IsDisposed = true; ++ if (Stream is not null) ++ { ++ try ++ { ++ UnlockFile(); ++ } ++ catch (Exception) ++ { ++ } ++ } + } + } + +@@ -792,56 +903,4 @@ public void Dispose() + } + } + } +- +- /// +- /// Approximates a named mutex with 'locked', 'unlocked' and 'abandoned' states. +- /// There is no reliable way to detect whether a mutex has been abandoned on some target platforms, +- /// so we use the AliveMutex to manually track whether the creator of a mutex is still running, +- /// while the HeldMutex represents the actual lock state of the mutex. +- /// +- internal sealed class ServerFileMutexPair : IServerMutex +- { +- public readonly FileMutex AliveMutex; +- public readonly FileMutex HeldMutex; +- +- public bool IsDisposed { get; private set; } +- +- public ServerFileMutexPair(string mutexName, bool initiallyOwned, out bool createdNew) +- { +- AliveMutex = new FileMutex(mutexName + "-alive"); +- HeldMutex = new FileMutex(mutexName + "-held"); +- createdNew = AliveMutex.TryLock(0); +- if (initiallyOwned && createdNew) +- { +- if (!TryLock(0)) +- throw new Exception("Failed to lock mutex after creating it"); +- } +- } +- +- public bool TryLock(int timeoutMs) +- { +- if (IsDisposed) +- throw new ObjectDisposedException("Mutex"); +- return HeldMutex.TryLock(timeoutMs); +- } +- +- public void Dispose() +- { +- if (IsDisposed) +- return; +- IsDisposed = true; +- +- try +- { +- HeldMutex.Unlock(); +- AliveMutex.Unlock(); +- } +- finally +- { +- AliveMutex.Dispose(); +- HeldMutex.Dispose(); +- } +- } +- } +- + } +-- +2.36.2 diff --git a/community/dotnet6-stage0/roslyn_revert-lift-version-codeanalysis.patch b/community/dotnet6-stage0/roslyn_revert-lift-version-codeanalysis.patch new file mode 100644 index 0000000..0faacd2 --- /dev/null +++ b/community/dotnet6-stage0/roslyn_revert-lift-version-codeanalysis.patch @@ -0,0 +1,32 @@ +From 3e75c1b17777befc94689de319fff7a40a1f86bc Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 23 Aug 2022 14:17:51 -0800 +Subject: [PATCH 1/1] Revert "lift version of Microsoft.CodeAnalysis.Common + dependencies to previously source built version" + +This reverts commit 7b504d40a3876ce14323d77e282f0fb7ea1ec758, a patch +applied by installer during tarball generation that only is only needed +when building the whole source-build stack. Within stage0, this is +breaks the build +--- + .../Source/CSharpSyntaxGenerator/CSharpSyntaxGenerator.csproj | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/roslyn/src/Tools/Source/CompilerGeneratorTools/Source/CSharpSyntaxGenerator/CSharpSyntaxGenerator.csproj b/src/roslyn/src/Tools/Source/CompilerGeneratorTools/Source/CSharpSyntaxGenerator/CSharpSyntaxGenerator.csproj +index a50822a6aeb..7eae8afa275 100644 +--- a/src/roslyn/src/Tools/Source/CompilerGeneratorTools/Source/CSharpSyntaxGenerator/CSharpSyntaxGenerator.csproj ++++ b/src/roslyn/src/Tools/Source/CompilerGeneratorTools/Source/CSharpSyntaxGenerator/CSharpSyntaxGenerator.csproj +@@ -27,9 +27,5 @@ + + + +- +- +- +- + + +\ No newline at end of file +-- +2.36.2 + diff --git a/community/dotnet6-stage0/runtime_76500-mono-musl-support.patch b/community/dotnet6-stage0/runtime_76500-mono-musl-support.patch new file mode 100644 index 0000000..6bc15a8 --- /dev/null +++ b/community/dotnet6-stage0/runtime_76500-mono-musl-support.patch @@ -0,0 +1,189 @@ +From f54977e2fc84527fe58024ed5537cb63244168e2 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/76500 +From: Antoine Martin +Date: Tue, 13 Sep 2022 14:17:35 +0200 +Subject: [PATCH 1/1] Mono musl support + +--- + src/coreclr/pal/src/misc/perfjitdump.cpp | 2 +- + src/mono/CMakeLists.txt | 29 ++++++++++++++++++++++++ + src/mono/mono.proj | 18 +++++++++------ + src/mono/mono/metadata/domain.c | 10 ++++++++ + src/mono/mono/mini/CMakeLists.txt | 10 ++++++++ + src/mono/mono/utils/mono-context.h | 8 +++++++ + 6 files changed, 69 insertions(+), 8 deletions(-) + +diff --git a/src/runtime/src/coreclr/pal/src/misc/perfjitdump.cpp b/src/runtime/src/coreclr/pal/src/misc/perfjitdump.cpp +index d80bd58038c..3488397b0da 100644 +--- a/src/runtime/src/coreclr/pal/src/misc/perfjitdump.cpp ++++ b/src/runtime/src/coreclr/pal/src/misc/perfjitdump.cpp +@@ -25,7 +25,7 @@ + #include + #include + #include +-#include ++#include + + #include "../inc/llvm/ELF.h" + +diff --git a/src/runtime/src/mono/CMakeLists.txt b/src/runtime/src/mono/CMakeLists.txt +index 49a73b1b709..7e596d69d35 100644 +--- a/src/runtime/src/mono/CMakeLists.txt ++++ b/src/runtime/src/mono/CMakeLists.txt +@@ -208,6 +208,35 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + # Enable the "full RELRO" options (RELRO & BIND_NOW) at link time + add_link_options(-Wl,-z,relro) + add_link_options(-Wl,-z,now) ++ # Detect Linux ID ++ # TODO: Eventually merge with eng/native/configureplatform.cmake ++ set(LINUX_ID_FILE "/etc/os-release") ++ if(CMAKE_CROSSCOMPILING) ++ set(LINUX_ID_FILE "${CMAKE_SYSROOT}${LINUX_ID_FILE}") ++ endif() ++ ++ if(EXISTS ${LINUX_ID_FILE}) ++ execute_process( ++ COMMAND bash -c "source ${LINUX_ID_FILE} && echo \$ID" ++ OUTPUT_VARIABLE CLR_CMAKE_LINUX_ID ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ execute_process( ++ COMMAND bash -c "if strings \"${CMAKE_SYSROOT}/usr/bin/ldd\" 2>&1 | grep -q musl; then echo musl; fi" ++ OUTPUT_VARIABLE CLR_CMAKE_LINUX_MUSL ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ endif() ++ ++ if(DEFINED CLR_CMAKE_LINUX_ID) ++ if(CLR_CMAKE_LINUX_ID STREQUAL alpine) ++ set(CLR_CMAKE_HOST_ALPINE_LINUX 1) ++ set(CLR_CMAKE_HOST_OS ${CLR_CMAKE_LINUX_ID}) ++ endif() ++ ++ if(CLR_CMAKE_LINUX_MUSL STREQUAL musl) ++ set(CLR_CMAKE_HOST_LINUX_MUSL 1) ++ endif() ++ endif(DEFINED CLR_CMAKE_LINUX_ID) + elseif(CMAKE_SYSTEM_NAME STREQUAL "Android") + set(HOST_LINUX 1) + add_definitions(-D_GNU_SOURCE -D_REENTRANT) +diff --git a/src/runtime/src/mono/mono.proj b/src/runtime/src/mono/mono.proj +index d6a0c9a8ec2..933ed60cea7 100644 +--- a/src/runtime/src/mono/mono.proj ++++ b/src/runtime/src/mono/mono.proj +@@ -417,11 +417,15 @@ + + + <_MonoCFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoCFLAGS Include="-Wno-strict-prototypes" /> + <_MonoCXXFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoCXXFLAGS Include="-Wno-strict-prototypes" /> + + + <_MonoAOTCFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoAOTCFLAGS Include="-Wno-strict-prototypes" /> + <_MonoAOTCXXFLAGS Include="-Wl,--build-id=sha1" /> ++ <_MonoAOTCXXFLAGS Include="-Wno-strict-prototypes" /> + + + +@@ -500,15 +504,15 @@ + darwin-x86_64 + windows-x86_64 + <_MonoRuntimeFilePath>$(MonoObjDir)out\lib\$(MonoFileName) +- <_LinuxAbi Condition="'$(TargetsAndroid)' != 'true'">gnu +- <_LinuxAbi Condition="'$(TargetsAndroid)' == 'true'">android ++ <_LinuxAbi Condition="'$(TargetsAndroid)' != 'true'">alpine-linux-musl ++ <_LinuxAbi Condition="'$(TargetsAndroid)' == 'true'">linux-android + <_LinuxFloatAbi Condition="'$(TargetsAndroid)' != 'true'">hf + <_Objcopy>objcopy +- <_Objcopy Condition="'$(Platform)' == 'arm'">arm-linux-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 'arm64'">aarch64-linux-$(_LinuxAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 's390x'">s390x-linux-$(_LinuxAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 'x64'">x86_64-linux-$(_LinuxAbi)-$(_Objcopy) +- <_Objcopy Condition="'$(Platform)' == 'x86'">i686-linux-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'arm' and '$(CrossBuild)' == 'true'">arm-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'arm64' and '$(CrossBuild)' == 'true'">aarch64-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 's390x' and '$(CrossBuild)' == 'true'">s390x-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'x64' and '$(CrossBuild)' == 'true'">x86_64-$(_LinuxAbi)-$(_Objcopy) ++ <_Objcopy Condition="'$(Platform)' == 'x86' and '$(CrossBuild)' == 'true'">i686-$(_LinuxAbi)-$(_Objcopy) + <_Objcopy Condition="'$(TargetsAndroid)' == 'true'">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(MonoToolchainPrebuiltOS)/bin/$(_Objcopy) + + +diff --git a/src/runtime/src/mono/mono/metadata/domain.c b/src/runtime/src/mono/mono/metadata/domain.c +index 4a8e06d28ae..e9868bd1b2c 100644 +--- a/src/runtime/src/mono/mono/metadata/domain.c ++++ b/src/runtime/src/mono/mono/metadata/domain.c +@@ -138,6 +138,14 @@ create_root_domain (void) + return domain; + } + ++static MONO_NO_OPTIMIZATION MONO_NEVER_INLINE void ++ensure_stack_size (void) ++{ ++ const int default_size = 5 * 1024 * 1024; ++ volatile uint8_t *s = (uint8_t *)g_alloca(default_size); ++ *s = 0; ++} ++ + /** + * mono_init_internal: + * +@@ -181,6 +189,8 @@ mono_init_internal (const char *filename, const char *exe_filename, const char * + + mono_counters_register ("Max HashTable Chain Length", MONO_COUNTER_INT|MONO_COUNTER_METADATA, &mono_g_hash_table_max_chain_length); + ++ ensure_stack_size (); ++ + mono_gc_base_init (); + mono_thread_info_attach (); + +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index 128ed08f45b..17cbe696c4b 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -364,6 +364,11 @@ if(NOT DISABLE_SHARED_LIBS) + set_target_properties(monosgen-shared PROPERTIES IMPORT_SUFFIX ".import.lib") + endif() + target_link_libraries(monosgen-shared PRIVATE ${OS_LIBS} ${ICONV_LIB} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) ++ # Alpine Linux implements ucontext in a different library ++ if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ target_link_libraries(monosgen-shared PRIVATE ucontext) ++ endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ + if(ICU_LDFLAGS) + set_property(TARGET monosgen-shared APPEND_STRING PROPERTY LINK_FLAGS " ${ICU_LDFLAGS}") + endif() +@@ -488,6 +493,11 @@ if(NOT DISABLE_EXECUTABLES) + set_target_properties(mono-sgen PROPERTIES OUTPUT_NAME mono-aot-cross) + endif() + target_link_libraries(mono-sgen PRIVATE monosgen-static ${OS_LIBS} ${ICONV_LIB} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) ++ # Alpine Linux implements ucontext in a different library ++ if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ target_link_libraries(mono-sgen PRIVATE ucontext) ++ endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") +diff --git a/src/runtime/src/mono/mono/utils/mono-context.h b/src/runtime/src/mono/mono/utils/mono-context.h +index bd1a3cd0104..db4ba452bcb 100644 +--- a/src/runtime/src/mono/mono/utils/mono-context.h ++++ b/src/runtime/src/mono/mono/utils/mono-context.h +@@ -11,6 +11,14 @@ + #ifndef __MONO_MONO_CONTEXT_H__ + #define __MONO_MONO_CONTEXT_H__ + ++/* ++ * Handle non-gnu libc versions with nothing in features.h ++ * We have no idea what they're compatible with, so always fail. ++ */ ++#ifndef __GLIBC_PREREQ ++# define __GLIBC_PREREQ(x,y) 0 ++#endif ++ + #include "mono-compiler.h" + #include "mono-sigcontext.h" + #include "mono-machine.h" +-- +2.36.3 + diff --git a/community/dotnet6-stage0/runtime_76500-properly-set-toolchain-for-crossbuilding-on-alpine.patch b/community/dotnet6-stage0/runtime_76500-properly-set-toolchain-for-crossbuilding-on-alpine.patch new file mode 100644 index 0000000..6b11ab8 --- /dev/null +++ b/community/dotnet6-stage0/runtime_76500-properly-set-toolchain-for-crossbuilding-on-alpine.patch @@ -0,0 +1,56 @@ +From d36fdab8d7ebc3dc18fddf6fd70af765b2717bd5 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/arcade/pull/11608 +From: Antoine Martin +Date: Thu, 6 Apr 2023 18:39:03 -0400 +Subject: [PATCH 1/1] properly set toolchain for crossbuilding on Alpine Linux + +--- + eng/common/cross/toolchain.cmake | 19 +- + 3 files changed, 325 insertions(+), 2 deletions(-) + +diff --git a/src/runtime/eng/common/cross/toolchain.cmake b/src/runtime/eng/common/cross/toolchain.cmake +index 51f30e53dd4..b1369a2aa37 100644 +--- a/src/runtime/eng/common/cross/toolchain.cmake ++++ b/src/runtime/eng/common/cross/toolchain.cmake +@@ -45,10 +45,18 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") + endif() + elseif(TARGET_ARCH_NAME STREQUAL "s390x") + set(CMAKE_SYSTEM_PROCESSOR s390x) +- set(TOOLCHAIN "s390x-linux-gnu") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/s390x-alpine-linux-musl) ++ set(TOOLCHAIN "s390x-alpine-linux-musl") ++ else() ++ set(TOOLCHAIN "s390x-linux-gnu") ++ endif() + elseif(TARGET_ARCH_NAME STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR i686) +- set(TOOLCHAIN "i686-linux-gnu") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) ++ set(TOOLCHAIN "i586-alpine-linux-musl") ++ else() ++ set(TOOLCHAIN "i686-linux-gnu") ++ endif() + elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(CMAKE_SYSTEM_PROCESSOR "x86_64") + set(triple "x86_64-unknown-freebsd11") +@@ -173,6 +181,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") + add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + endif() + elseif(TARGET_ARCH_NAME STREQUAL "x86") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) ++ add_toolchain_linker_flag("--target=${TOOLCHAIN}") ++ add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}") ++ endif() + add_toolchain_linker_flag(-m32) + elseif(ILLUMOS) + add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64") +@@ -204,6 +216,9 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") + add_compile_options(-mfloat-abi=softfp) + endif() + elseif(TARGET_ARCH_NAME STREQUAL "x86") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) ++ add_compile_options(--target=${TOOLCHAIN}) ++ endif() + add_compile_options(-m32) + add_compile_options(-Wno-error=unused-command-line-argument) + endif() diff --git a/community/dotnet6-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch b/community/dotnet6-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..aa34ceb --- /dev/null +++ b/community/dotnet6-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +See: https://github.com/dotnet/runtime/issues/82269 + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/community/dotnet6-stage0/runtime_84442-support-adding-rids-with-dash-in-base-part.patch b/community/dotnet6-stage0/runtime_84442-support-adding-rids-with-dash-in-base-part.patch new file mode 100644 index 0000000..8a36483 --- /dev/null +++ b/community/dotnet6-stage0/runtime_84442-support-adding-rids-with-dash-in-base-part.patch @@ -0,0 +1,164 @@ +From abc761c2c5694e4029fea1a60dc1934951c66e26 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/84442 +From: Tom Deseyn +Date: Thu, 6 Apr 2023 13:18:11 +0200 +Subject: [PATCH 1/2] Microsoft.NETCore.Platforms: support adding rids with '-' + in the base part. + +Currently when trying to add a rid like 'linux-musl-x64' +the rid is not understood to be base = 'linux-musl', arch = 'x64'. + +Instead the parser considers a potential optional qualifier. +This causes the rid to be parsed as base = 'linux', arch = 'musl', +and qualifier = 'x64'. + +We know the rids being added won't have a qualifier. If we take +this into account while parsing, we can parse the rid correctly. +--- + .../Microsoft.NETCore.Platforms/src/RID.cs | 11 +++- + .../src/RuntimeGroupCollection.cs | 2 +- + .../tests/RidTests.cs | 50 +++++++++++++------ + 3 files changed, 47 insertions(+), 16 deletions(-) + +diff --git a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RID.cs b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RID.cs +index 6457fd29cadf0..b464d5f0f54e3 100644 +--- a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RID.cs ++++ b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RID.cs +@@ -56,7 +56,7 @@ private enum RIDPart : int + Max = Qualifier + } + +- public static RID Parse(string runtimeIdentifier) ++ public static RID Parse(string runtimeIdentifier, bool noQualifier) + { + string[] parts = new string[(int)RIDPart.Max + 1]; + bool omitVersionDelimiter = true; +@@ -90,6 +90,15 @@ public static RID Parse(string runtimeIdentifier) + // version might be omitted + else if (current == ArchitectureDelimiter) + { ++ // The qualifier delimiter and architecture delimiter are the same. ++ // When there is no qualifier, there will be one delimiter past the base part ++ // for the architecture. ++ // So if we see another delimiter later in the string (for the architecture), ++ // extend the base part instead of starting the architecture part. ++ if (noQualifier && runtimeIdentifier.IndexOf(ArchitectureDelimiter, i + 1) != -1) ++ { ++ break; ++ } + // ensure there's no version later in the string + if (runtimeIdentifier.IndexOf(VersionDelimiter, i) != -1) + { +diff --git a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs +index e069508053105..31009a8d28e5e 100644 +--- a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs ++++ b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs +@@ -34,7 +34,7 @@ public RuntimeGroupCollection(ICollection runtimeGroups) + /// + public void AddRuntimeIdentifier(string runtimeIdentifier, string parent) + { +- RID rid = RID.Parse(runtimeIdentifier); ++ RID rid = RID.Parse(runtimeIdentifier, noQualifier: true); + + AddRuntimeIdentifier(rid, parent); + } +diff --git a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/tests/RidTests.cs b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/tests/RidTests.cs +index 227bcbdd10d4d..8dee0ebeda17a 100644 +--- a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/tests/RidTests.cs ++++ b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/tests/RidTests.cs +@@ -10,35 +10,57 @@ public class RidTests + { + public static IEnumerable ValidRIDData() + { +- yield return new object[] { "win10-x64", new RID() { BaseRID = "win", OmitVersionDelimiter = true, Version = new RuntimeVersion("10"), Architecture = "x64" } }; +- yield return new object[] { "win10", new RID() { BaseRID = "win", OmitVersionDelimiter = true, Version = new RuntimeVersion("10")} }; +- yield return new object[] { "linux", new RID() { BaseRID = "linux" } }; +- yield return new object[] { "linux-x64", new RID() { BaseRID = "linux", Architecture = "x64" } }; +- yield return new object[] { "linux-x64", new RID() { BaseRID = "linux", Architecture = "x64" } }; +- yield return new object[] { "debian.10-x64", new RID() { BaseRID = "debian", Version = new RuntimeVersion("10"), Architecture = "x64" } }; +- yield return new object[] { "linuxmint.19.2-x64", new RID() { BaseRID = "linuxmint", Version = new RuntimeVersion("19.2"), Architecture = "x64" } }; +- yield return new object[] { "ubuntu.14.04-x64", new RID() { BaseRID = "ubuntu", Version = new RuntimeVersion("14.04"), Architecture = "x64" } }; +- yield return new object[] { "foo-bar.42-arm", new RID() { BaseRID = "foo-bar", Version = new RuntimeVersion("42"), Architecture = "arm" } }; +- yield return new object[] { "foo-bar-arm", new RID() { BaseRID = "foo", Architecture = "bar", Qualifier = "arm" } }; // demonstrates ambiguity, avoid using `-` in base +- yield return new object[] { "linux-musl-x64", new RID() { BaseRID = "linux", Architecture = "musl", Qualifier = "x64" } }; // yes, we already have ambiguous RIDs ++ yield return new object[] { "win10-x64", new RID() { BaseRID = "win", OmitVersionDelimiter = true, Version = new RuntimeVersion("10"), Architecture = "x64" }, null }; ++ yield return new object[] { "win10", new RID() { BaseRID = "win", OmitVersionDelimiter = true, Version = new RuntimeVersion("10")}, null }; ++ yield return new object[] { "linux", new RID() { BaseRID = "linux" }, null }; ++ yield return new object[] { "linux-x64", new RID() { BaseRID = "linux", Architecture = "x64" }, null }; ++ yield return new object[] { "linux-x64", new RID() { BaseRID = "linux", Architecture = "x64" }, null }; ++ yield return new object[] { "debian.10-x64", new RID() { BaseRID = "debian", Version = new RuntimeVersion("10"), Architecture = "x64" }, null }; ++ yield return new object[] { "linuxmint.19.2-x64", new RID() { BaseRID = "linuxmint", Version = new RuntimeVersion("19.2"), Architecture = "x64" }, null }; ++ yield return new object[] { "ubuntu.14.04-x64", new RID() { BaseRID = "ubuntu", Version = new RuntimeVersion("14.04"), Architecture = "x64" }, null }; ++ yield return new object[] { "foo-bar.42-arm", new RID() { BaseRID = "foo-bar", Version = new RuntimeVersion("42"), Architecture = "arm" }, null }; ++ yield return new object[] { "foo-bar-arm", new RID() { BaseRID = "foo", Architecture = "bar", Qualifier = "arm" }, // demonstrates ambiguity, avoid using `-` in base ++ new RID() { BaseRID = "foo-bar", Architecture = "arm" } }; ++ yield return new object[] { "linux-musl-x64", new RID() { BaseRID = "linux", Architecture = "musl", Qualifier = "x64" }, // yes, we already have ambiguous RIDs ++ new RID() { BaseRID = "linux-musl", Architecture = "x64" } }; + } + + [Theory] + [MemberData(nameof(ValidRIDData))] +- internal void ParseCorrectly(string input, RID expected) ++ internal void ParseCorrectly(string input, RID expected, RID? expectedNoQualifier) + { +- RID actual = RID.Parse(input); ++ _ = expectedNoQualifier; // unused ++ ++ RID actual = RID.Parse(input, noQualifier: false); + + Assert.Equal(expected, actual); + } + + [Theory] + [MemberData(nameof(ValidRIDData))] +- internal void ToStringAsExpected(string expected, RID rid) ++ internal void ParseCorrectlyNoQualifier(string input, RID expected, RID? expectedNoQualifier) ++ { ++ expectedNoQualifier ??= expected; ++ ++ RID actual = RID.Parse(input, noQualifier: true); ++ ++ Assert.Equal(expectedNoQualifier, actual); ++ } ++ ++ [Theory] ++ [MemberData(nameof(ValidRIDData))] ++ internal void ToStringAsExpected(string expected, RID rid, RID? expectedNoQualifierRid) + { + string actual = rid.ToString(); + + Assert.Equal(expected, actual); ++ ++ if (expectedNoQualifierRid is not null) ++ { ++ actual = expectedNoQualifierRid.ToString(); ++ ++ Assert.Equal(expected, actual); ++ } + } + } + } + +From f70da467ca94291039e0ea5b0723cb9db5e090e7 Mon Sep 17 00:00:00 2001 +From: Tom Deseyn +Date: Thu, 6 Apr 2023 18:14:31 +0200 +Subject: [PATCH 2/2] Update + src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs + +Co-authored-by: Eric StJohn +--- + .../Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs +index 31009a8d28e5e..ec4762d71424c 100644 +--- a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs ++++ b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/RuntimeGroupCollection.cs +@@ -34,6 +34,7 @@ public RuntimeGroupCollection(ICollection runtimeGroups) + /// + public void AddRuntimeIdentifier(string runtimeIdentifier, string parent) + { ++ // don't parse qualifier since we don't use them and they are ambiguous with `-` in base RID + RID rid = RID.Parse(runtimeIdentifier, noQualifier: true); + + AddRuntimeIdentifier(rid, parent); diff --git a/community/dotnet6-stage0/runtime_84443-suppress-clang-16-warnings.patch b/community/dotnet6-stage0/runtime_84443-suppress-clang-16-warnings.patch new file mode 100644 index 0000000..6fbdda2 --- /dev/null +++ b/community/dotnet6-stage0/runtime_84443-suppress-clang-16-warnings.patch @@ -0,0 +1,217 @@ +From da120986f17d4016b44fdc91741ae1d999083eeb Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/84443 +From: Antoine Martin +Date: Thu, 6 Apr 2023 15:46:31 -0400 +Subject: [PATCH 1/2] Suppress clang-16 warnings (#81573) + +--- + eng/native/configurecompiler.cmake | 9 +++++++++ + eng/native/init-compiler.sh | 4 ++-- + src/coreclr/dlls/mscordbi/CMakeLists.txt | 5 +---- + src/coreclr/dlls/mscordbi/mscordbi.cpp | 15 +++++++++++++++ + src/libraries/Native/Unix/CMakeLists.txt | 9 +++++++++ + src/native/corehost/apphost/static/CMakeLists.txt | 4 ++-- + .../apphost/static/singlefilehost_OSXexports.src | 11 ----------- + .../apphost/static/singlefilehost_unixexports.src | 4 ---- + 8 files changed, 38 insertions(+), 23 deletions(-) + delete mode 100644 src/native/corehost/apphost/static/singlefilehost_OSXexports.src + +diff --git a/src/runtime/eng/native/configurecompiler.cmake b/src/runtime/eng/native/configurecompiler.cmake +index f3526deb19fa0..1a43b710c618b 100644 +--- a/src/runtime/eng/native/configurecompiler.cmake ++++ b/src/runtime/eng/native/configurecompiler.cmake +@@ -367,6 +367,15 @@ if (CLR_CMAKE_HOST_UNIX) + add_compile_options(-Wno-incompatible-ms-struct) + + add_compile_options(-Wno-reserved-identifier) ++ ++ # clang 16.0 introduced buffer hardening https://discourse.llvm.org/t/rfc-c-buffer-hardening/65734 ++ # which we are not conforming to yet. ++ add_compile_options(-Wno-unsafe-buffer-usage) ++ ++ # other clang 16.0 suppressions ++ add_compile_options(-Wno-single-bit-bitfield-constant-conversion) ++ add_compile_options(-Wno-cast-function-type-strict) ++ add_compile_options(-Wno-incompatible-function-pointer-types-strict) + else() + add_compile_options(-Wno-unknown-pragmas) + add_compile_options(-Wno-uninitialized) +diff --git a/src/runtime/eng/native/init-compiler.sh b/src/runtime/eng/native/init-compiler.sh +index 567d18da4747a..e215bd75ff158 100755 +--- a/src/runtime/eng/native/init-compiler.sh ++++ b/src/runtime/eng/native/init-compiler.sh +@@ -46,8 +46,8 @@ if [[ -z "$CLR_CC" ]]; then + # Set default versions + if [[ -z "$majorVersion" ]]; then + # note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero. +- if [[ "$compiler" == "clang" ]]; then versions=( 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 ) +- elif [[ "$compiler" == "gcc" ]]; then versions=( 11 10 9 8 7 6 5 4.9 ); fi ++ if [[ "$compiler" == "clang" ]]; then versions=( 16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 ) ++ elif [[ "$compiler" == "gcc" ]]; then versions=( 12 11 10 9 8 7 6 5 4.9 ); fi + + for version in "${versions[@]}"; do + parts=(${version//./ }) +diff --git a/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt b/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt +index c7a23c9923fe1..4a03a788a71a5 100644 +--- a/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt ++++ b/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt +@@ -99,10 +99,7 @@ elseif(CLR_CMAKE_HOST_UNIX) + mscordaccore + ) + +- # COREDBI_LIBRARIES is mentioned twice because ld is one pass linker and will not find symbols +- # if they are defined after they are used. Having all libs twice makes sure that ld will actually +- # find all symbols. +- target_link_libraries(mscordbi ${COREDBI_LIBRARIES} ${COREDBI_LIBRARIES}) ++ target_link_libraries(mscordbi ${COREDBI_LIBRARIES}) + + add_dependencies(mscordbi mscordaccore) + +diff --git a/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp b/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp +index afd2cfe800225..489c552a0bd3e 100644 +--- a/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp ++++ b/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp +@@ -26,3 +26,18 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) + // Defer to the main debugging code. + return DbgDllMain(hInstance, dwReason, lpReserved); + } ++ ++#if defined(HOST_LINUX) && defined(TARGET_LINUX) ++PALIMPORT HINSTANCE PALAPI DAC_PAL_RegisterModule(IN LPCSTR lpLibFileName); ++PALIMPORT VOID PALAPI DAC_PAL_UnregisterModule(IN HINSTANCE hInstance); ++ ++HINSTANCE PALAPI PAL_RegisterModule(IN LPCSTR lpLibFileName) ++{ ++ return DAC_PAL_RegisterModule(lpLibFileName); ++} ++ ++VOID PALAPI PAL_UnregisterModule(IN HINSTANCE hInstance) ++{ ++ DAC_PAL_UnregisterModule(hInstance); ++} ++#endif +diff --git a/src/runtime/src/libraries/Native/Unix/CMakeLists.txt b/src/runtime/src/libraries/Native/Unix/CMakeLists.txt +index 6931f62d24c87..e9ebefcf8243a 100644 +--- a/src/runtime/src/libraries/Native/Unix/CMakeLists.txt ++++ b/src/runtime/src/libraries/Native/Unix/CMakeLists.txt +@@ -51,6 +51,15 @@ if(CMAKE_C_COMPILER_ID STREQUAL Clang) + add_compile_options(-Wthread-safety) + add_compile_options(-Wno-thread-safety-analysis) + add_compile_options(-Wno-reserved-identifier) ++ ++ # clang 16.0 introduced buffer hardening https://discourse.llvm.org/t/rfc-c-buffer-hardening/65734 ++ # which we are not conforming to yet. ++ add_compile_options(-Wno-unsafe-buffer-usage) ++ ++ # other clang 16.0 suppressions ++ add_compile_options(-Wno-single-bit-bitfield-constant-conversion) ++ add_compile_options(-Wno-cast-function-type-strict) ++ add_compile_options(-Wno-incompatible-function-pointer-types-strict) + elseif(CMAKE_C_COMPILER_ID STREQUAL GNU) + add_compile_options(-Wno-stringop-truncation) + endif() +diff --git a/src/runtime/src/native/corehost/apphost/static/CMakeLists.txt b/src/runtime/src/native/corehost/apphost/static/CMakeLists.txt +index a00c79139863f..6d491c086da98 100644 +--- a/src/runtime/src/native/corehost/apphost/static/CMakeLists.txt ++++ b/src/runtime/src/native/corehost/apphost/static/CMakeLists.txt +@@ -73,8 +73,8 @@ if(CLR_CMAKE_TARGET_WIN32) + add_linker_flag("/DEF:${CMAKE_CURRENT_SOURCE_DIR}/singlefilehost.def") + + else() +- if(CLR_CMAKE_TARGET_OSX) +- set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/singlefilehost_OSXexports.src) ++ if(CLR_CMAKE_TARGET_FREEBSD) ++ set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/singlefilehost_freebsdexports.src) + else() + set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/singlefilehost_unixexports.src) + endif() +diff --git a/src/runtime/src/native/corehost/apphost/static/singlefilehost_OSXexports.src b/src/runtime/src/native/corehost/apphost/static/singlefilehost_OSXexports.src +deleted file mode 100644 +index 18d5697e84580..0000000000000 +--- a/src/runtime/src/native/corehost/apphost/static/singlefilehost_OSXexports.src ++++ /dev/null +@@ -1,11 +0,0 @@ +-; Licensed to the .NET Foundation under one or more agreements. +-; The .NET Foundation licenses this file to you under the MIT license. +- +-; needed by SOS +-DotNetRuntimeInfo +- +-; DAC table export +-g_dacTable +- +-; Used by profilers +-MetaDataGetDispenser +diff --git a/src/runtime/src/native/corehost/apphost/static/singlefilehost_unixexports.src b/src/runtime/src/native/corehost/apphost/static/singlefilehost_unixexports.src +index 1f9c517821855..18d5697e84580 100644 +--- a/src/runtime/src/native/corehost/apphost/static/singlefilehost_unixexports.src ++++ b/src/runtime/src/native/corehost/apphost/static/singlefilehost_unixexports.src +@@ -9,7 +9,3 @@ g_dacTable + + ; Used by profilers + MetaDataGetDispenser +- +-; FreeBSD needs to reexport these +-__progname +-environ + +From a6d9fbff551de1164ec9cc14bdd48f2ffad77d81 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Thu, 6 Apr 2023 16:39:27 -0400 +Subject: [PATCH 2/2] Fix DBI loading problem on Linux (#82461) + +--- + src/coreclr/dlls/mscordbi/CMakeLists.txt | 16 +++++++++++++++- + src/coreclr/dlls/mscordbi/mscordbi.cpp | 15 --------------- + 2 files changed, 15 insertions(+), 16 deletions(-) + +diff --git a/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt b/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt +index 4a03a788a71a5..b7618b324c260 100644 +--- a/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt ++++ b/src/runtime/src/coreclr/dlls/mscordbi/CMakeLists.txt +@@ -99,7 +99,21 @@ elseif(CLR_CMAKE_HOST_UNIX) + mscordaccore + ) + +- target_link_libraries(mscordbi ${COREDBI_LIBRARIES}) ++ # Before llvm 16, lld was setting `--undefined-version` by default. The default was ++ # flipped to `--no-undefined-version` in lld 16, so we will explicitly set it to ++ # `--undefined-version` for our use-case. ++ include(CheckLinkerFlag OPTIONAL) ++ if(COMMAND check_linker_flag) ++ check_linker_flag(CXX -Wl,--undefined-version LINKER_SUPPORTS_UNDEFINED_VERSION) ++ if (LINKER_SUPPORTS_UNDEFINED_VERSION) ++ add_linker_flag(-Wl,--undefined-version) ++ endif(LINKER_SUPPORTS_UNDEFINED_VERSION) ++ endif(COMMAND check_linker_flag) ++ ++ # COREDBI_LIBRARIES is mentioned twice because ld is one pass linker and will not find symbols ++ # if they are defined after they are used. Having all libs twice makes sure that ld will actually ++ # find all symbols. ++ target_link_libraries(mscordbi ${COREDBI_LIBRARIES} ${COREDBI_LIBRARIES}) + + add_dependencies(mscordbi mscordaccore) + +diff --git a/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp b/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp +index 489c552a0bd3e..afd2cfe800225 100644 +--- a/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp ++++ b/src/runtime/src/coreclr/dlls/mscordbi/mscordbi.cpp +@@ -26,18 +26,3 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) + // Defer to the main debugging code. + return DbgDllMain(hInstance, dwReason, lpReserved); + } +- +-#if defined(HOST_LINUX) && defined(TARGET_LINUX) +-PALIMPORT HINSTANCE PALAPI DAC_PAL_RegisterModule(IN LPCSTR lpLibFileName); +-PALIMPORT VOID PALAPI DAC_PAL_UnregisterModule(IN HINSTANCE hInstance); +- +-HINSTANCE PALAPI PAL_RegisterModule(IN LPCSTR lpLibFileName) +-{ +- return DAC_PAL_RegisterModule(lpLibFileName); +-} +- +-VOID PALAPI PAL_UnregisterModule(IN HINSTANCE hInstance) +-{ +- DAC_PAL_UnregisterModule(hInstance); +-} +-#endif diff --git a/community/dotnet6-stage0/runtime_remove-usage-of-off64-t.patch b/community/dotnet6-stage0/runtime_remove-usage-of-off64-t.patch new file mode 100644 index 0000000..a55dcde --- /dev/null +++ b/community/dotnet6-stage0/runtime_remove-usage-of-off64-t.patch @@ -0,0 +1,15 @@ +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +index 03712c3b684..99d8a457957 100644 +--- a/src/runtimr/src/coreclr/debug/createdump/crashinfounix.cpp ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -395,7 +395,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fd != -1); +- *read = pread64(m_fd, buffer, size, (off64_t)address); ++ *read = pread(m_fd, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) + + diff --git a/community/dotnet7-build/APKBUILD b/community/dotnet7-build/APKBUILD new file mode 100644 index 0000000..8eb690b --- /dev/null +++ b/community/dotnet7-build/APKBUILD @@ -0,0 +1,564 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-runtime +pkgver=8.0.0 +pkgrel=0 +_gittag=v8.0.0 +_giturl="https://github.com/dotnet/dotnet" +_testtag=d3d39e7c404c6e45c3e7ab6621c5f6cabf1540b0 +_bunnytag=v15 +_patches=" + aspnetcore_portable-build-workaround.patch + aspire_fix-gitinfo-target.patch + build_enable-timestamps.patch + installer_hard-dereference-tar-gz.patch + roslyn-analyzer_disable-apphost.patch + runtime_82269-mono-thread-coop-undefine-fortify-source.patch + runtime_90251-rename-mono-cmake-host-var.patch + runtime_enable-system-libunwind.diff + runtime_more-clang-16-suppression.patch + runtime_remove-usage-of-off64-t.patch + vstest_intent-net8.0.patch + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=${pkgver%.*.*} +_pkgver_name=${_pkgver_macro//[.0]} +_pkgver_sdk=${pkgver/0./0.10} +pkgdesc="The .NET $_pkgver_macro Core runtime" +# x86: blocked by https://github.com/dotnet/runtime/issues/77667 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# riscv64: blocked by https://github.com/dotnet/runtime/issues/84834 +arch="all !x86 !armhf !riscv64" +url=https://dotnet.microsoft.com +license="MIT" +provides="dotnet$_pkgver_name=$pkgver-r$pkgrel" +depends=" + dotnet$_pkgver_name-hostfxr + icu-data-full + icu-libs + " +checkdepends=" + babeltrace + binutils + coreutils + file + gawk + jq + lttng-tools + npm + procps + sed + strace + util-linux-misc + which + " +makedepends=" + bash + clang + cmake + dotnet$_pkgver_name-bootstrap + dotnet$_pkgver_name-bootstrap-artifacts + dotnet$_pkgver_name-stage0 + findutils + git + grep + icu-data-full + icu-dev + inetutils-syslogd + krb5-dev + libgit2-dev + libintl + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lldb-dev + llvm-dev + lttng-ust-dev + nodejs + numactl-dev + openssl-dev + pigz + rsync + samurai + tar + xz + zlib-dev + " +case $CARCH in + s390x|x86) ;; + *) makedepends="$makedepends lld-dev";; +esac + +subpackages=" + aspnetcore$_pkgver_name-runtime:aspnetcore_runtime:noarch + aspnetcore$_pkgver_name-runtime-dbg:aspnetcore_dbg:noarch + aspnetcore$_pkgver_name-targeting-pack:aspnetcore_targeting_pack:noarch + dotnet$_pkgver_name-runtime-artifacts::noarch + dotnet$_pkgver_name-runtime-bootstrap + dotnet$_pkgver_name-runtime-dbg:runtime_dbg:noarch + dotnet$_pkgver_name-apphost-pack:apphost_pack + dotnet$_pkgver_name-hostfxr + dotnet$_pkgver_name-targeting-pack:targeting_pack:noarch + dotnet-host:host + " +source=" + dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz + dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json + dotnet-testsuite-$_testtag.tar.gz::https://github.com/redhat-developer/dotnet-regular-tests/archive/$_testtag.tar.gz + dotnet-bunny-$_bunnytag.tar.gz::https://github.com/redhat-developer/dotnet-bunny/archive/$_bunnytag.tar.gz + dotnet.sh.in + $_patches + " +builddir="$srcdir"/dotnet-${_gittag/v} +_checkdir="$srcdir"/dotnet-bunny-${_bunnytag/v} +_testdir="$srcdir"/dotnet-regular-tests-$_testtag +_cli_root="$srcdir"/bootstrap +_libdir="/usr/lib" +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +case $CARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7) _dotnet_arch="arm";; + armhf) _dotnet_arch="armv6";; + *) _dotnet_arch="$CARCH";; +esac + +# Build doesn't set all the right executable bits for the right file types +_fix_executable() { + # add executable bit + find "$1" -type f \( \ + -name 'apphost' -o \ + -name 'singlefilehost' -o \ + -name 'lib*so' \ + \) \ + -exec chmod +x '{}' \; + + # remove executable bit + find "$1" -type f \( \ + -name '*.a' -o \ + -name '*.dll' -o \ + -name '*.h' -o \ + -name '*.json' -o \ + -name '*.pdb' -o \ + -name '*.props' -o \ + -name '*.pubxml' -o \ + -name '*.targets' -o \ + -name '*.txt' -o \ + -name '*.xml' \ + \) \ + -exec chmod -x '{}' \; +} + +prepare() { + default_prepare + + # Using system libunwind is broken on aarch64|armv7, and unused on mono-based builds + # see https://github.com/dotnet/source-build/issues/2408, + case $CARCH in + aarch64|armv7) msg "Using bundled libunwind";; + armhf|s390x|ppc64le) msg "No libunwind used";; + *) + msg "Using system libunwind" + patch -p1 -i "$srcdir"/runtime_enable-system-libunwind.diff + ;; + esac + + # ensure that dotnet does not download artifacts provided by dotnet-artifacts + rm -rf "$builddir"/packages/archive + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + # dotnet requires its bootstrap to be in a writable dir + msg "Setting up bootstrap" + local _bootstrapdir=$(find $_libdir/dotnet/bootstrap/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1) + if [ ! -d "$_cli_root" ]; then + cp -r "$_bootstrapdir" "$_cli_root" + fi +} + +build() { + msg "Building $pkgname-$pkgver" + + ulimit -n 4096 + + # Disable use of LTTng as tracing on lttng <=2.13.0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + export DOTNET_LTTng=0 + fi + + case "$CARCH" in + x86*) ;; + *) + # clang doesn't implement this outside of x86, and it causes a later configure to fail + export CFLAGS="${CFLAGS/-fstack-clash-protection}" + export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection}" + ;; + esac + + # looks for most recent recent version of _artifactsdir + local _artifactsdir=$(find $_libdir/dotnet/artifacts/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1) + + # ci args, else the output is forwarded to log files which isn't ideal in a + # pipeline environment, and build by defaults uses lots of space + local args=" + /v:minimal + /p:LogVerbosity=minimal + /p:MinimalConsoleLogOutput=true + /p:CleanWhileBuilding=true + " + + # part of https://github.com/dotnet/installer/pull/14792 that sets this flag + # was not integrated in 7.0.1xx yet + # UseSharedCompilation=false also reduces chances of hangups on mono-based builds + case $CARCH in + riscv64|s390x|ppc64le) local args="$args /p:SourceBuildUseMonoRuntime=true /p:UseSharedCompilation=false";; + esac + + # Sets TargetRid manually as dotnet cannot be trusted to reliably compute + # the machine's runtime ID between releases. + # shellcheck disable=SC2034 + . /etc/os-release + local VERSION_ID_DOT="${VERSION_ID//[^.]}" + while [ ${#VERSION_ID_DOT} -gt 1 ]; do + local VERSION_ID="${VERSION_ID%.*}" + local VERSION_ID_DOT="${VERSION_ID//[^.]}" + done + local VERSION_ID_DASH="${VERSION_ID//[^_]}" + while [ ${#VERSION_ID_DASH} -ge 1 ]; do + local VERSION_ID="${VERSION_ID%_*}" + local VERSION_ID_DASH="${VERSION_ID//[^_]}" + done + local args="$args /p:TargetRid=$ID.$VERSION_ID-$_dotnet_arch" + + ./build.sh \ + --with-sdk "$_cli_root" \ + --with-packages "$_artifactsdir" \ + --release-manifest "$srcdir"/dotnet-release-$_gittag.json \ + -- $args +} + +check() { + ulimit -n 4096 + # Tests timeout (in seconds) + local _tests_timeout=1000 + # Test suite disable flags + # following tests can only work after packaging step + local _disabled_tests="man-pages distribution-package bash-completion install-location release-version-sane managed-symbols-available tools-in-path" + # test broken: permission issue on lxc / pipelines + local _disabled_tests="$_disabled_tests createdump-aspnet" + # test broken: cannot pg_ctl can't create postgresql server + local _disabled_tests="$_disabled_tests system-data-odbc" + # test broken: no such file or directory bug + local _disabled_tests="$_disabled_tests limits" + # {bundled,system}-libunwind: use system version on all but aarch64/armv7, as broken + # see https://github.com/redhat-developer/dotnet-regular-tests/issues/113 + # disable on mono-flavored runtime as mono does not use libunwind + case $CARCH in + armv7|aarch64) local _disabled_tests="$_disabled_tests system-libunwind";; + s390x|ppc64le|armhf) local _disabled_tests="$_disabled_tests bundled-libunwind system-libunwind";; + *) local _disabled_tests="$_disabled_tests bundled-libunwind";; + esac + # nativeaot is not supported on armv7 + case $CARCH in + armv7) local _disabled_tests="$_disabled_tests nativeaot" + esac + + msg "Unpacking produced dotnet" + export DOTNET_ROOT="$_checkdir/release" + if [ ! -d "$DOTNET_ROOT" ]; then + mkdir -p "$DOTNET_ROOT" + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$DOTNET_ROOT" \ + --no-same-owner + fi + export PATH="$DOTNET_ROOT:$PATH" + # some files either should or should not have executable bits + # (done again during packaging - this is for tests) + _fix_executable "$DOTNET_ROOT" + + msg "Building turkey test suite" + if [ ! -d "$_logdir/check" ]; then + mkdir -p "$_logdir"/check + fi + if [ ! -d "$_checkdir"/turkey ]; then + cd "$_checkdir"/Turkey + dotnet publish -bl:"$_logdir"/check/turkey.binlog -f net6.0 -c Release -p:VersionPrefix=1 -p:VersionSuffix="$(git rev-parse --short HEAD)" -o "$_checkdir"/turkey + fi + + msg "Running test suite" + cd "$_testdir" + for i in $_disabled_tests; do + if [ -d "$i" ]; then + sed -i 's|"enabled": true|"enabled": false|' $i/test.json + fi + done + dotnet "$_checkdir"/turkey/Turkey.dll -t $_tests_timeout -l "$_logdir"/check || local ERROR=true + if [ $ERROR ]; then + msg "Check error reported, please check logs" + fi +} + +package() { + install -dm 755 "$pkgdir"/$_libdir/dotnet/shared + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$pkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./shared/Microsoft.NETCore.App + + # some files either should or should not have executable bits + _fix_executable "$pkgdir" + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + rm "$pkgdir"/$_libdir/dotnet/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so + fi +} + +runtime_dbg() { + pkgdesc="The .NET $_pkgver_macro Core runtime - pdb debug files" + depends="dotnet$_pkgver_name-runtime" + provides="dotnet-runtime-dbg-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/shared + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-symbols-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + shared/Microsoft.NETCore.App + +} + +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk \ + "$subpkgdir"/usr/share/licenses + + # extract arch-agnostic artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \ + --no-same-owner \ + --exclude '*Intermediate*' \ + --exclude '*alpine*' +} + +bootstrap() { + pkgdesc="The .NET $_pkgver_macro Core bootstrap" + depends="" + + # hack for dotnetx-runtime to be able to pull itself for bootstrapping + provides="dotnet$_pkgver_name-bootstrap" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk + + # unpack sdk to bootstrap + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/ \ + --no-same-owner + + # unpack sdk symbols to bootstrap + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-symbols-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/ \ + --no-same-owner + + # extract arch-specific artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \ + --no-same-owner \ + --wildcards \ + '*alpine*' + + # assemble docs + find "$builddir" -iname 'dotnet*.1' -type f -exec cp '{}' "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs/. \; + + # completions + install -m 755 "$builddir"/src/sdk/scripts/register-completions.bash "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/. + install -m 755 "$builddir"/src/sdk/scripts/register-completions.zsh "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/. + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + rm "$subpkgdir"/$_libdir/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so + fi +} + +host() { + pkgdesc="A generic driver for the .NET Core Command Line Interface" + depends="" + + install -dm 755 \ + "$subpkgdir"/etc/profile.d \ + "$subpkgdir"/etc/dotnet \ + "$subpkgdir"/usr/bin \ + "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./dotnet + + ln -s $_libdir/dotnet/dotnet "$subpkgdir"/usr/bin/dotnet + echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location + echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location_$_dotnet_arch + sed "s|%LIBDIR%|$_libdir/dotnet|" "$srcdir"/dotnet.sh.in > "$subpkgdir"/etc/profile.d/dotnet.sh +} + +hostfxr() { + pkgdesc="The .NET host resolver contains the logic to resolve and select the right version of the .NET SDK or runtime to use." + depends="dotnet-host" + provides="dotnet-hostfxr-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./host + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +aspnetcore_runtime() { + pkgdesc="The ASP.NET $_pkgver_macro Core runtime" + depends="dotnet$_pkgver_name-runtime" + provides="aspnetcore-runtime-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./shared/Microsoft.AspNetCore.App + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +aspnetcore_dbg() { + pkgdesc="The ASP.NET $_pkgver_macro Core runtime - pdb debug files" + depends="aspnetcore$_pkgver_name-runtime" + provides="aspnetcore-runtime-dbg-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-symbols-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + shared/Microsoft.AspNetCore.App +} + +apphost_pack() { + pkgdesc="The .NET $_pkgver_macro Core apphost pack" + provides="dotnet-apphost-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + --wildcards \ + './packs/Microsoft.NETCore.App.Host.*' + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +targeting_pack() { + pkgdesc="The .NET $_pkgver_macro Core targeting pack" + provides="dotnet-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./packs/Microsoft.NETCore.App.Ref + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +aspnetcore_targeting_pack() { + pkgdesc="The ASP.NET $_pkgver_macro Core targeting pack" + provides="aspnetcore-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./packs/Microsoft.AspNetCore.App.Ref + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +sha512sums=" +094265462d66d97b51ebfbe5fb06d4a679b97881f1f5a07a87a282a96eeaabfe97ca42061d59aac71dd8861c07f07dda16a72e29ae03167407e51d3fd2767562 dotnet-tarball-v8.0.0.tar.gz +55f2c56f7fbed4137ebe5e81c7b86d199d7ff91c6e19fbc9a4af8cd5d0f0195273356ead8b80aedfff56a3d704a541a7c2a7395bec3fa5d6585f3afd056b1220 dotnet-release-v8.0.0.json +8fe41ddd03c1b98dc9eec5e337ca0dcc8fbeff65b67ac1a383bd7d1e5fd3c21b820dacd498d1c2268445bb634cfb9dba3e8924e71a98f2ccd8221b17fb079044 dotnet-testsuite-d3d39e7c404c6e45c3e7ab6621c5f6cabf1540b0.tar.gz +7f59b10878aa90a6953ee4d88d08fa932910a24018dace92b173ee87c847d14734f93dc5fc031982a3d0a5cb4ac223b83d0e548531c23c4e3326dc83510989a9 dotnet-bunny-v15.tar.gz +c3f31956976b77198e72a3fef3427338b6b2961f8c121416040c1105de0ce8073e46f4c2e9ef22a001aee69cbe39621c2ddac988522693110071dfae42f2e2b7 dotnet.sh.in +ad7373a112acc07a6a7bbc522d417b26d90b3e3ae9c1e66a6cc70af16af7e7111d9764e7758062d0a5e67f026cc44f2b111051c3d484bd56917f2144db88588b aspnetcore_portable-build-workaround.patch +e5b9b947226456844f705e66f3f19d4519ce88f360e3f3413999c2867c31d9008db78f5806bfee7185d7548c6279ef6492a40ff24c20ed9d58b6ef66b167d7a8 aspire_fix-gitinfo-target.patch +eed7a7481a967f6938de956a6df485efa6dd61bf36ae4a768493cb1f7da0296dc91e0f2f89f7c302083ba9cf0c778e28228ec1b52e902077a00072d7d9957ef3 build_enable-timestamps.patch +ab362bdbbea8d8116b6bf7bf58e330ce6d7d171b42613ac03514f76afa2574b75d6566148d1b72047fbfe61b40ac67b3f2d8af87a7074c790bf882a5b7e73960 installer_hard-dereference-tar-gz.patch +097db705c787501782a1b203e8c453453075dfcadc4f5282849c6ffdda4d7832f75c56089bced4542cc83704fe33842cc725084dac2ba261cacdaf54ae468b3c roslyn-analyzer_disable-apphost.patch +d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch +3354fa721809f1b94c579408ee78004ff3ca2ba79212c1a0ecc424a9955bb5d5a80c115d4c30dd257526f356ea76f0562db6f83d8dd0b6135f8c689886b3348d runtime_90251-rename-mono-cmake-host-var.patch +39e1b848d1ae81e4b81758522de7d3e36b11d2ab626565efb8e4cceae8da29018277709f0af8fcfa75be8da79f8d6432eb6aac49a5e82510c3aca34632df4d8e runtime_enable-system-libunwind.diff +887112eb2b103eadd6887529ebae7f9a75df2c2cb168e84fd40cc09f9bcd20917d428bbba06968b07b0a463890da82b1b2b1d033a3dd016e6494067464ae6f74 runtime_more-clang-16-suppression.patch +0c25319125ef5b0ad490b37a643c0c5257c796d5ed24f9ac404f698710b07de790bcbb0b6336d4a50025b94c3bff99b214951bd8f0a79a8d6f543ebaa300740f runtime_remove-usage-of-off64-t.patch +5c74abbd7ea71ba6164f71b866c9da564db9ccd95f1a9a8b82f5b0b599fab6d59d64ba1157ec13d7ac36d23145f3d9de2189ed6c40f56e46555ab378c161948b vstest_intent-net8.0.patch +" diff --git a/community/dotnet7-build/README.md b/community/dotnet7-build/README.md new file mode 100644 index 0000000..14cde12 --- /dev/null +++ b/community/dotnet7-build/README.md @@ -0,0 +1,149 @@ +# dotnet8-runtime + +This is the .NET 8.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `aspnetcore8-runtime` +* `aspnetcore8-targeting-pack` +* `dotnet8-apphost-pack` (used by dotnet8-runtime) +* `dotnet8-hostfxr` (used by dotnet-host) +* `dotnet8-runtime` +* `dotnet8-runtime-artifacts` (aimed for internal use as bootstrap) +* `dotnet8-runtime-bootstrap` (aimed for internal use as bootstrap) +* `dotnet8-targeting-pack` +* `dotnet-host` + +## How to build dotnet8 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet8 is built using three different aports. + +* `community/dotnet8-stage0` +Builds minimum components for full build of dotnet8, and packages these in an initial +`dotnet8-stage0-bootstrap` package that `dotnet8-runtime` pulls. +* `community/dotnet8-runtime` +Builds full and packages dotnet8 fully using either stage0 or previoulsy built +dotnet8 build. +* `community/dotnet8-sdk` +As abuild does not allow different versions for subpackages, a different aport +is required to package sdk bits from dotnet8-runtime. dotnet8-runtime only +builds 8.0.1xx feature branch of SDK. Thus, when a new feature branch of sdk is +released, the updated components are to be built on dotnet8-sdk rather than +simply repackaging dotnet8-runtime artifacts. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet8-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet8` as opposed to `dotnet-8.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-runtime` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-runtime: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-runtime` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-runtime: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/community/dotnet7-build/aspire_fix-gitinfo-target.patch b/community/dotnet7-build/aspire_fix-gitinfo-target.patch new file mode 100644 index 0000000..7066d02 --- /dev/null +++ b/community/dotnet7-build/aspire_fix-gitinfo-target.patch @@ -0,0 +1,20 @@ +diff --git a/src/aspire/Directory.Build.targets.orig b/src/aspire/Directory.Build.targets +index 511adb03a5d..d62a050caab 100644 +--- a/src/aspire/Directory.Build.targets.orig ++++ b/src/aspire/Directory.Build.targets +@@ -6,13 +6,12 @@ + README.md + + +- +- ++ + + + + + + +- ++ + diff --git a/community/dotnet7-build/aspnetcore_portable-build-workaround.patch b/community/dotnet7-build/aspnetcore_portable-build-workaround.patch new file mode 100644 index 0000000..43f2ce0 --- /dev/null +++ b/community/dotnet7-build/aspnetcore_portable-build-workaround.patch @@ -0,0 +1,43 @@ +From 451aa3e9544b0214d0e8e844c27af3847f5bf391 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/installer/pull/13410 +From: Antoine Martin +Date: Fri, 18 Feb 2022 05:14:39 +0000 +Subject: [PATCH 1/1] musl build fix + +Line causes build of aspnetcore on arm to look for linux version of +CrossGen2 rather than linux-musl. This removes the line so that +BuildOsName is pulled from TargetOsName as expected + +This is now only necessary for portable +builds, as https://github.com/dotnet/installer/pull/14549 has fixed +issues relating to musl build on full source-build + +--- + .../App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj.orig b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +index 77dce00..b31b36d 100644 +--- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj.orig ++++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +@@ -103,8 +103,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant + Special case the crossgen2 package reference on Windows to avoid the x86 package when building in Visual Studio. + --> + $(TargetOsName) +- linux + $(TargetRuntimeIdentifier.Substring(0,$(TargetRuntimeIdentifier.IndexOf('-')))) + x64 + $(BuildArchitecture) + PkgMicrosoft_NETCore_App_Crossgen2_$(BuildOsName.Replace('.', '_'))-$(Crossgen2BuildArchitecture) +diff --git a/repo-projects/aspnetcore.proj.orig b/repo-projects/aspnetcore.proj +index 289b506..fadcc0d 100644 +--- a/repo-projects/aspnetcore.proj.orig ++++ b/repo-projects/aspnetcore.proj +@@ -13,6 +13,7 @@ + $(StandardSourceBuildArgs.Replace('--publish', '')) + + $(BuildCommandArgs) --arch $(Platform) ++ $(BuildCommandArgs) --os-name linux-musl + $(BuildCommandArgs) --no-build-repo-tasks + $(BuildCommandArgs) --no-build-nodejs + $(BuildCommandArgs) /p:PublishCompressedFilesPathPrefix=$(SourceBuiltAspNetCoreRuntime) diff --git a/community/dotnet7-build/build_enable-timestamps.patch b/community/dotnet7-build/build_enable-timestamps.patch new file mode 100644 index 0000000..5977a41 --- /dev/null +++ b/community/dotnet7-build/build_enable-timestamps.patch @@ -0,0 +1,40 @@ +diff --git a/repo-projects/Directory.Build.props b/repo-projects/Directory.Build.props +index b70a3161fef..d57f9393299 100644 +--- a/repo-projects/Directory.Build.props ++++ b/repo-projects/Directory.Build.props +@@ -134,6 +134,7 @@ + $(StandardSourceBuildArgs) $(FlagParameterPrefix)pack + $(StandardSourceBuildArgs) $(FlagParameterPrefix)publish + $(StandardSourceBuildArgs) -bl ++ $(StandardSourceBuildArgs) /consoleLoggerParameters:ShowTimestamp + + $(StandardSourceBuildArgs) /p:ArcadeBuildFromSource=true + $(StandardSourceBuildArgs) /p:CopyWipIntoInnerSourceBuildRepo=true + $(StandardSourceBuildArgs) /p:DotNetBuildOffline=true + +diff --git a/src/fsharp/eng/build.sh b/src/fsharp/eng/build.sh +index fff8414b3ef..d470fc6ed56 100755 +--- a/src/fsharp/eng/build.sh ++++ b/src/fsharp/eng/build.sh +@@ -144,7 +144,7 @@ while [[ $# > 0 ]]; do + --sourcebuild) + source_build=true + ;; +- /p:*) ++ /*) + properties="$properties $1" + ;; + *) +diff --git a/src/roslyn/eng/build.sh b/src/roslyn/eng/build.sh +index a08cbea099d..d3ec235732f 100755 +--- a/src/roslyn/eng/build.sh ++++ b/src/roslyn/eng/build.sh +@@ -167,7 +167,7 @@ while [[ $# > 0 ]]; do + args="$args $1" + shift + ;; +- /p:*) ++ /*) + properties="$properties $1" + ;; + *) diff --git a/community/dotnet7-build/dotnet.sh.in b/community/dotnet7-build/dotnet.sh.in new file mode 100644 index 0000000..f85eb29 --- /dev/null +++ b/community/dotnet7-build/dotnet.sh.in @@ -0,0 +1,12 @@ +# Set location for AppHost lookup +[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT=%LIBDIR% + +# Add dotnet tools directory to PATH +DOTNET_TOOLS_PATH="$HOME/.dotnet/tools" +case "$PATH" in + *"$DOTNET_TOOLS_PATH"* ) true ;; + * ) PATH="$PATH:$DOTNET_TOOLS_PATH" ;; +esac + +# Extract self-contained executables under HOME to avoid multi-user issues from using the default '/var/tmp' +[ -z "$DOTNET_BUNDLE_EXTRACT_BASE_DIR" ] && export DOTNET_BUNDLE_EXTRACT_BASE_DIR="${XDG_CACHE_HOME:-"$HOME"/.cache}/dotnet_bundle_extract" diff --git a/community/dotnet7-build/installer_hard-dereference-tar-gz.patch b/community/dotnet7-build/installer_hard-dereference-tar-gz.patch new file mode 100644 index 0000000..4f92e2c --- /dev/null +++ b/community/dotnet7-build/installer_hard-dereference-tar-gz.patch @@ -0,0 +1,13 @@ +diff --git a/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs.orig b/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs +index 06b9857..066d595 100644 +--- a/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs.orig ++++ b/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs +@@ -131,7 +131,7 @@ private string GetSourceSpecification() + + private string GetDestinationArchive() + { +- return $"-czf {DestinationArchive}"; ++ return $"--hard-dereference -czf {DestinationArchive}"; + } + + private string GetExcludes() diff --git a/community/dotnet7-build/installer_set-crossgen2rid-using-buildarchitecture.patch b/community/dotnet7-build/installer_set-crossgen2rid-using-buildarchitecture.patch new file mode 100644 index 0000000..309e092 --- /dev/null +++ b/community/dotnet7-build/installer_set-crossgen2rid-using-buildarchitecture.patch @@ -0,0 +1,13 @@ +diff --git a/src/installer/src/redist/targets/GenerateLayout.targets.orig b/src/installer/src/redist/targets/GenerateLayout.targets +index a27834f..0c899d4 100644 +--- a/src/installer/src/redist/targets/GenerateLayout.targets.orig ++++ b/src/installer/src/redist/targets/GenerateLayout.targets +@@ -85,7 +85,7 @@ + windowsdesktop-runtime-$(MicrosoftWindowsDesktopAppRuntimePackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension) + + $(HostOSName)-$(BuildArchitecture) +- $(SharedFrameworkRid) ++ $(SharedFrameworkRid.SubString(0, $(SharedFrameworkRid.LastIndexOf('-'))))-$(BuildArchitecture) + + $(SharedFrameworkRid) + linux-x64 diff --git a/community/dotnet7-build/roslyn-analyzer_disable-apphost.patch b/community/dotnet7-build/roslyn-analyzer_disable-apphost.patch new file mode 100644 index 0000000..6d5d57c --- /dev/null +++ b/community/dotnet7-build/roslyn-analyzer_disable-apphost.patch @@ -0,0 +1,28 @@ +From 79f02a53316f90543d60269d7c06727c376f423b Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Wed, 24 Aug 2022 18:41:08 +0000 +Subject: [PATCH 1/1] disable apphost usage + +Roslyn-analyzer can't seem to find apphost produced by runtime build on ppc64le +This disables its use as it isn't necessary + +--- +diff --git a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj.orig b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj +index 7b454a4..bbe18ae 100644 +--- a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj.orig ++++ b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj +@@ -16,6 +16,7 @@ + false + true + $(MicrosoftCodeAnalysisVersionForTests) ++ false + + + +@@ -28,4 +29,4 @@ + + + +- +\ No newline at end of file ++ diff --git a/community/dotnet7-build/runtime_82269-mono-thread-coop-undefine-fortify-source.patch b/community/dotnet7-build/runtime_82269-mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..d4cbe4d --- /dev/null +++ b/community/dotnet7-build/runtime_82269-mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/14105. Alpine Linux +now sets this by default since https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/43463, +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/community/dotnet7-build/runtime_83682-specify-notext-on-linux-musl-x86.patch b/community/dotnet7-build/runtime_83682-specify-notext-on-linux-musl-x86.patch new file mode 100644 index 0000000..6dfefc0 --- /dev/null +++ b/community/dotnet7-build/runtime_83682-specify-notext-on-linux-musl-x86.patch @@ -0,0 +1,24 @@ +From 65877a9c1260c1c37d1c3355703b1951b6754cdf Mon Sep 17 00:00:00 2001 +From: Adeel <3840695+am11@users.noreply.github.com> +Date: Mon, 20 Mar 2023 19:36:14 +0200 +Subject: [PATCH] Specify -z notext on linux-musl-x86 + +--- + src/coreclr/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/runtime/src/coreclr/CMakeLists.txt b/src/runtime/src/coreclr/CMakeLists.txt +index 67b773bf78787..87d862a541ae6 100644 +--- a/src/runtime/src/coreclr/CMakeLists.txt ++++ b/src/runtime/src/coreclr/CMakeLists.txt +@@ -109,6 +109,10 @@ if(CLR_CMAKE_HOST_UNIX) + endif() + endif() + ++ if(CLR_CMAKE_TARGET_ALPINE_LINUX AND CLR_CMAKE_TARGET_ARCH_I386) ++ add_linker_flag(-Wl,-z,notext) ++ endif() ++ + if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS) + add_subdirectory(pal) + add_subdirectory(hosts) diff --git a/community/dotnet7-build/runtime_90251-rename-mono-cmake-host-var.patch b/community/dotnet7-build/runtime_90251-rename-mono-cmake-host-var.patch new file mode 100644 index 0000000..6a5fadd --- /dev/null +++ b/community/dotnet7-build/runtime_90251-rename-mono-cmake-host-var.patch @@ -0,0 +1,80 @@ +From 828269b7e68039f8bc0bdac66e2fd5c58b6d3471 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/90251 +From: Antoine Martin +Date: Wed, 9 Aug 2023 11:36:39 -0400 +Subject: [PATCH 1/1] Rename CMAKE var for mono on libc-musl + +--- + src/mono/CMakeLists.txt | 6 +++--- + src/mono/mono/mini/CMakeLists.txt | 12 ++++++------ + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/runtime/src/coreclr/pgosupport.cmake b/src/runtime/src/coreclr/pgosupport.cmake +index 719ac14ad99..34a42781ab2 100644 +--- a/src/runtime/src/coreclr/pgosupport.cmake ++++ b/src/runtime/src/coreclr/pgosupport.cmake +@@ -25,13 +25,13 @@ function(add_pgo TargetName) + target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fprofile-instr-generate") + if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") +- if (CLR_CMAKE_HOST_ALPINE_LINUX) ++ if (CLR_CMAKE_TARGET_LINUX_MUSL) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- else(CLR_CMAKE_HOST_ALPINE_LINUX) ++ else(CLR_CMAKE_TARGET_LINUX_MUSL) + string(REPLACE "." ";" CLANG_VERSION "${CMAKE_C_COMPILER_VERSION}") + list(POP_FRONT CLANG_VERSION CLANG_VERSION_MAJOR) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/llvm-${CLANG_VERSION_MAJOR}/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- endif(CLR_CMAKE_HOST_ALPINE_LINUX) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL) + endif(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") + if(NOT LD_LLVM) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -fuse-ld=gold") +diff --git a/src/runtime/src/mono/CMakeLists.txt b/src/runtime/src/mono/CMakeLists.txt +index e04d9e9d364..00e54a25d69 100644 +--- a/src/runtime/src/mono/CMakeLists.txt ++++ b/src/runtime/src/mono/CMakeLists.txt +@@ -943,10 +943,10 @@ else() + set(DISABLE_DLLMAP 1) + endif() + +-if(CLR_CMAKE_HOST_ALPINE_LINUX) +- # Setting RLIMIT_NOFILE breaks debugging of coreclr on Alpine Linux for some reason ++if(CLR_CMAKE_TARGET_LINUX_MUSL) ++ # Setting RLIMIT_NOFILE breaks debugging of coreclr on musl-libc for some reason + add_definitions(-DDONT_SET_RLIMIT_NOFILE) +- # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is ++ # On musl-libc, we need to ensure that the reported stack range for the primary thread is + # larger than the initial committed stack size. + add_definitions(-DENSURE_PRIMARY_STACK_SIZE) + endif() +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt.orig b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index 5d6ef3d..c3e5414 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt.orig ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -400,9 +400,9 @@ if(NOT DISABLE_SHARED_LIBS) + endif() + target_compile_definitions(monosgen-shared PRIVATE -DMONO_DLL_EXPORT) + # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(monosgen-shared PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + set_target_properties(monosgen-shared PROPERTIES OUTPUT_NAME ${MONO_SHARED_LIB_NAME}) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(monosgen-shared PROPERTIES INSTALL_RPATH "$ORIGIN") +@@ -601,10 +601,10 @@ if(NOT DISABLE_EXECUTABLES) + target_link_libraries(mono-sgen PRIVATE icu_shim_objects) + endif() + target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) +- # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ # musl-libc implements ucontext in a different library ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(mono-sgen PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") diff --git a/community/dotnet7-build/runtime_enable-system-libunwind.diff b/community/dotnet7-build/runtime_enable-system-libunwind.diff new file mode 100644 index 0000000..e88e5cf --- /dev/null +++ b/community/dotnet7-build/runtime_enable-system-libunwind.diff @@ -0,0 +1,12 @@ +diff --git a/src/runtime/eng/SourceBuild.props.orig b/src/runtime/eng/SourceBuild.props +index 1e9d5cf..c40e4fa 100644 +--- a/src/runtime/eng/SourceBuild.props.orig ++++ b/src/runtime/eng/SourceBuild.props +@@ -48,6 +48,7 @@ + $(InnerBuildArgs) /p:OfficialBuildId=$(OfficialBuildId) + $(InnerBuildArgs) /p:ContinuousIntegrationBuild=$(ContinuousIntegrationBuild) + $(InnerBuildArgs) --usemonoruntime ++ $(InnerBuildArgs) --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE + + + diff --git a/community/dotnet7-build/runtime_more-clang-16-suppression.patch b/community/dotnet7-build/runtime_more-clang-16-suppression.patch new file mode 100644 index 0000000..1e94419 --- /dev/null +++ b/community/dotnet7-build/runtime_more-clang-16-suppression.patch @@ -0,0 +1,13 @@ +diff --git a/src/runtime/eng/native/configurecompiler.cmake b/src/runtime/eng/native/configurecompiler.cmake +index c9a54547c0a..931da2cae5b 100644 +--- a/src/runtime/eng/native/configurecompiler.cmake ++++ b/src/runtime/eng/native/configurecompiler.cmake +@@ -488,6 +488,8 @@ if (CLR_CMAKE_HOST_UNIX) + # other clang 16.0 suppressions + add_compile_options(-Wno-single-bit-bitfield-constant-conversion) + add_compile_options(-Wno-cast-function-type-strict) ++ add_compile_options(-Wno-incompatible-function-pointer-types-strict) ++ add_compile_options(-Wno-ignored-attributes) + else() + add_compile_options(-Wno-uninitialized) + add_compile_options(-Wno-strict-aliasing) diff --git a/community/dotnet7-build/runtime_remove-usage-of-off64-t.patch b/community/dotnet7-build/runtime_remove-usage-of-off64-t.patch new file mode 100644 index 0000000..cec5877 --- /dev/null +++ b/community/dotnet7-build/runtime_remove-usage-of-off64-t.patch @@ -0,0 +1,26 @@ +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +index 20b2494..165b190 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -469,7 +469,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fdMem != -1); +- *read = pread64(m_fdMem, buffer, size, (off64_t)address); ++ *read = pread(m_fdMem, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +index 5addb79..79655d1 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +@@ -760,7 +760,7 @@ CrashInfo::PageMappedToPhysicalMemory(uint64_t start) + } + + uint64_t pagemapOffset = (start / PAGE_SIZE) * sizeof(uint64_t); +- uint64_t seekResult = lseek64(m_fdPagemap, (off64_t) pagemapOffset, SEEK_SET); ++ uint64_t seekResult = lseek(m_fdPagemap, (off_t) pagemapOffset, SEEK_SET); + if (seekResult != pagemapOffset) + { + int seekErrno = errno; diff --git a/community/dotnet7-build/vstest_intent-net8.0.patch b/community/dotnet7-build/vstest_intent-net8.0.patch new file mode 100644 index 0000000..6a51807 --- /dev/null +++ b/community/dotnet7-build/vstest_intent-net8.0.patch @@ -0,0 +1,13 @@ +diff --git a/src/vstest/test/Intent/Intent.csproj b/src/vstest/test/Intent/Intent.csproj +index bb711c9256..6d0b199a9b 100644 +--- a/src/vstest/test/Intent/Intent.csproj ++++ b/src/vstest/test/Intent/Intent.csproj +@@ -2,7 +2,7 @@ + + + Exe +- net6.0 ++ net8.0 + enable + enable + diff --git a/community/dotnet7-runtime/APKBUILD b/community/dotnet7-runtime/APKBUILD new file mode 100644 index 0000000..9075df5 --- /dev/null +++ b/community/dotnet7-runtime/APKBUILD @@ -0,0 +1,152 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-sdk +pkgver=8.0.100 +_bldver=8.0.0-r0 +pkgrel=0 + +# Following for dotnet build version 6.0 and up +_pkgver_macro=${pkgver%.*} +_pkgver_name=${_pkgver_macro//[.0]} +_bldver_ver=${_bldver%%-*} +_bldver_ver=${_bldver_ver/0./0.10} +pkgdesc="The .NET $_pkgver_macro SDK" +# x86: blocked by https://github.com/dotnet/runtime/issues/77667 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# riscv64: blocked by https://github.com/dotnet/runtime/issues/84834 +arch="all !x86 !armhf !riscv64" +url=https://dotnet.microsoft.com +license="MIT" +makedepends="dotnet$_pkgver_name-runtime-bootstrap=$_bldver" +subpackages=" + dotnet$_pkgver_name-templates:templates:noarch + dotnet$_pkgver_name-sdk-dbg:dbg:noarch + dotnet-zsh-completion:zshcomp:noarch + dotnet-bash-completion:bashcomp:noarch + dotnet-doc + netstandard21-targeting-pack:netstandard_targeting_pack:noarch + " +provides="dotnet$_pkgver_name=$pkgver-r$pkgrel" +options="!check" # No test suite +builddir="$srcdir" +_libdir="/usr/lib" + +case $CARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7) _dotnet_arch="arm";; + armhf) _dotnet_arch="armv6";; + *) _dotnet_arch="$CARCH";; +esac + +package() { + # libucontext isn't automatically detected on all platforms + depends=" + aspnetcore$_pkgver_name-runtime + aspnetcore$_pkgver_name-targeting-pack + dotnet$_pkgver_name-apphost-pack + dotnet$_pkgver_name-targeting-pack + dotnet$_pkgver_name-templates + netstandard21-targeting-pack + libucontext + " + provides=" + dotnet-sdk-$_pkgver_macro=$pkgver-r$pkgrel + dotnet$_pkgver_name-dev=$pkgver-r$pkgrel + " + + install -dm 755 "$pkgdir"/$_libdir/dotnet + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/sdk "$pkgdir"/$_libdir/dotnet/. + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/sdk-manifests "$pkgdir"/$_libdir/dotnet/. + + # See https://github.com/dotnet/source-build/issues/2579 + find "$pkgdir" -type f -name 'vstest.console' -delete + find "$pkgdir" -type f -name 'testhost.x86' -delete + + # docs + install -dm 755 "$pkgdir"/usr/share/man/man1 + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/docs/* "$pkgdir"/usr/share/man/man1/. +} + +dbg() { + pkgdesc="The .NET $_pkgver_macro SDK - debug pdb files" + depends="dotnet$_pkgver_name-sdk" + provides="dotnet-sdk-pdb-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + # move pdb files + cd "$pkgdir" || return 0 + find . -type f ! -name "$(printf "*\n*")" -name '*.pdb' > tmp + while IFS= read -r i; do + d="$subpkgdir/${i%/*}" # dirname $i + mkdir -p "$d" + mv "$pkgdir/$i" "$d" + rmdir "$pkgdir/${i%/*}" 2>/dev/null || : + done < tmp + rm tmp +} + +netstandard_targeting_pack() { + pkgdesc="The .NET 2.1 Standard targeting pack" + depends="dotnet-host" + provides="netstandard-targeting-pack-2.1=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/NETStandard.Library.Ref "$subpkgdir"/$_libdir/dotnet/packs/ + + # remove pdb files + find "$subpkgdir" -type f -name '*.pdb' -delete +} + +templates() { + pkgdesc="The .NET $_pkgver_macro templates" + depends="dotnet-host" + provides="dotnet-templates-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/templates "$subpkgdir"/$_libdir/dotnet/. + + # remove pdb files + find "$subpkgdir" -type f -name '*.pdb' -delete +} + +zshcomp() { + depends="" + pkgdesc="zsh completion for .NET" + # netstandard21-targeting-pack will always be pulled by any dotnetx-sdk + # thus pulling this with it for sdk + install_if="netstandard21-targeting-pack zsh" + depends="dotnet-host" + + install -dm 755 "$subpkgdir"/usr/share/zsh/site-functions + + install -m 755 "$_libdir"/dotnet/bootstrap/$_bldver_ver/register-completions.zsh "$subpkgdir"/usr/share/zsh/site-functions/_dotnet +} + +bashcomp() { + depends="" + pkgdesc="bash completion for .NET" + # netstandard21-targeting-pack will always be pulled by any dotnetx-sdk + # thus pulling this with it for sdk + install_if="netstandard21-targeting-pack bash-completion" + depends="dotnet-host" + + install -dm 755 "$subpkgdir"/usr/share/bash-completion/completions + + install -m 755 "$_libdir"/dotnet/bootstrap/$_bldver_ver/register-completions.bash "$subpkgdir"/usr/share/bash-completion/completions/_dotnet +} + +doc() { + default_doc + pkgdesc="Docs for .NET" + + # licenses + install -dm 755 "$subpkgdir"/usr/share/licenses/dotnet + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/LICENSE.txt "$subpkgdir"/usr/share/licenses/dotnet/. + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/ThirdPartyNotices.txt "$subpkgdir"/usr/share/licenses/dotnet/. +} diff --git a/community/dotnet7-runtime/README.md b/community/dotnet7-runtime/README.md new file mode 100644 index 0000000..26d3107 --- /dev/null +++ b/community/dotnet7-runtime/README.md @@ -0,0 +1,148 @@ +# dotnet8-sdk + +This is the .NET 8.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `dotnet8-sdk` +* `dotnet8-templates` (required by sdk) +* `dotnet-zsh-completion` +* `dotnet-bash-completion` +* `dotnet-doc` +* `netstandard21-targeting-pack` + +## How to build dotnet8 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet8 is built using three different aports. + +* `community/dotnet8-stage0` +Builds minimum components for full build of dotnet8, and packages these in an initial +`dotnet8-stage0-bootstrap` package that `dotnet8-runtime` pulls. +* `community/dotnet8-runtime +Builds full and packages dotnet8 fully using either stage0 or previoulsy built +dotnet8 build. +* `community/dotnet8-sdk` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet8-runtime. dotnet8-runtime only +builds 8.0.1xx feature branch of SDK. Thus, when a new feature branch of sdk is +released, the updated components are to be built on dotnet8-sdk rather than +simply repackaging dotnet8-runtime artifacts. + + + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet8-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet8` as opposed to `dotnet-8.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-sdk` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-sdk: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the merge-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-sdk` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-sdk: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the merge-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/community/dotnet7-stage0/APKBUILD b/community/dotnet7-stage0/APKBUILD new file mode 100644 index 0000000..b78fc31 --- /dev/null +++ b/community/dotnet7-stage0/APKBUILD @@ -0,0 +1,463 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-stage0 +pkgver=8.0.100 +pkgrel=0 + +[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross="" + +# Tag of tarball generator. +_gittag=v8.0.0 + +# Versions of prebuilt artifacts and bootstrap tar +_artifactsver="8.0.100-rtm.23551.1.centos.8-x64" +_bootstrapver="8.0.100" +_bootstraprel=0 +_installerver=8.0.100 + +# Patches to be used. String before '_' refers to repo to patch +# Look for patch notes within each patch for what they fix / where they come from +# build_* patches applies directly to $builddir +_patches=" + build_fix-ga-versions.patch + installer_aspire-manifest-version-fix.patch + installer_set-crossgen2rid-using-buildarchitecture.patch + runtime_82269-mono-thread-coop-undefine-fortify-source.patch + runtime_83682-specify-notext-on-linux-musl-x86.patch + runtime_90251-rename-mono-cmake-host-var.patch + runtime_more-clang-16-suppression.patch + runtime_remove-usage-of-off64-t.patch + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=1 +_pkgver_name="${_pkgver_macro//[.0]}" +pkgdesc="The .NET Core stage0 bits for dotnet build" +# x86: blocked by https://github.com/dotnet/runtime/issues/83509 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# riscv64: port WIP https://github.com/dotnet/runtime/issues/84834 +arch="all !x86 !armhf !riscv64" +_giturl=https://github.com/dotnet/dotnet +url=https://dotnet.microsoft.com +license="MIT" +options="!check net" # Testsuite in main -build aport +subpackages=" + dotnet$_pkgver_name-stage0-artifacts:artifacts:noarch + dotnet$_pkgver_name-stage0-bootstrap + " +source=" + dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz + dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json + dotnet-sdk-$_bootstrapver-linux-musl-x64.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-x64.tar.gz + dotnet-sdk-$_bootstrapver-linux-musl-arm64.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm64.tar.gz + dotnet-sdk-$_bootstrapver-linux-musl-arm.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm.tar.gz + dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-s390x.noextract::https://lab.ilot.io/ayakael/dotnet-stage0/-/releases/$_bootstrapver-r$_bootstraprel/downloads/sdk/dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-s390x.tar.xz + dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-ppc64le.noextract::https://lab.ilot.io/ayakael/dotnet-stage0/-/releases/$_bootstrapver-r$_bootstraprel/downloads/sdk/dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-ppc64le.tar.xz + Private.SourceBuilt.Artifacts.$_artifactsver.noextract::https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$_artifactsver.tar.gz + $_patches + " + +makedepends_host=" + alpine-release + autoconf + automake + bash + binutils + clang + cmake + findutils + g++ + gcc + grep + icu-dev + krb5-dev + libintl + libstdc++ + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lttng-ust-dev + musl-dev + musl-utils + openssl-dev + pigz + unzip + zip + zlib-dev + " +case $CARCH in + s390x) ;; + *) makedepends_host="$makedepends_host lld-dev";; +esac +makedepends_build=" + $makedepends_host + binutils$_cross + git + gcc$_cross + jq + llvm + llvm-dev + python3 + sed + xz + " +case $CBUILD_ARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7|armhf) _dotnet_arch="arm";; + i586) _dotnet_arch="x86";; + *) _dotnet_arch=$CBUILD_ARCH;; +esac +case $CTARGET_ARCH in + x86_64) _dotnet_target="x64";; + aarch64) _dotnet_target="arm64";; + armv7|armhf) _dotnet_target="arm";; + i586) _dotnet_target="x86";; + *) _dotnet_target=$CTARGET_ARCH;; +esac + +builddir="$srcdir"/dotnet-${_gittag/v} +_packagesdir="$srcdir"/local-packages +_libdir="/usr/lib" +_nugetdir="$srcdir"/nuget +_downloaddir="$srcdir"/local-downloads +_cli_root="$srcdir"/bootstrap +_nuget="$_cli_root/dotnet nuget" +_outputdir="$srcdir"/artifacts +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +prepare() { + default_prepare + + mkdir -p "$_cli_root" + mkdir -p $_packagesdir $_downloaddir $_outputdir $_nugetdir $_logdir + + # sdk insists on downloading its own dotnet unless ArcadeBuildFromSource + # is true, which opens up a can of worms + sed 's|ArcadeBuildFromSource=true|Architecture|' -i src/sdk/eng/restore-toolset.sh + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + tar -xf "$srcdir"/dotnet-sdk-$_pkgver_macro*$_dotnet_arch.noextract -C "$_cli_root" --no-same-owner + + # adjusts sdk version and packagedir to expected + for i in runtime sdk installer aspnetcore roslyn; do + $_nuget add source $_packagesdir --name local --configfile "$builddir"/src/$i/NuGet.config + tmp=$(mktemp) + jq ".sdk.version = \"$_bootstrapver\"" "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json + done + + # extracting PackageVersions.props as some version information is there + tar -xzf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract PackageVersions.props + + # sdk looks for TestCli at wrong place + sed '/||g' | tr -d ' ') + fi + local _runtimever_ns=$(awk '{if($2 ~ "Name=\"VS.Redist.Common.NetCore.SharedFramework.x64.*\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building runtime version $_runtimever" + cd "$builddir"/src/runtime + + local args=" + -c Release + -bl + -clang + -arch $_dotnet_target + /consoleLoggerParameters:ShowTimestamp + /p:NoPgoOptimize=true + /p:EnableNgenOptimization=false + /p:ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch=none + /p:_toolsRID=linux-musl-$_dotnet_arch + /p:OutputRid=linux-musl-$_dotnet_target + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/runtime.props | sed -E 's|||g' | tr -d ' ') + " + if [ "$CBUILD" != "$CHOST" ]; then + local args="$args -cross" + # https://github.com/dotnet/runtime/pull/75597 broke crossbuilding when true + local DotNetBuildFromSource=false + # x86 build of mono broken, thus do not build mono + case $_dotnet_target in + x86) local args="$args /p:DefaultSubsets=clr+libs+host+packs";; + esac + fi + if [ "$_runtimever" != "${_runtimever##*-}" ]; then + local args="$args /p:VersionSuffix=${_runtimever##*-}" + fi + DotNetBuildFromSource=$DotNetBuildFromSource ROOTFS_DIR="$CBUILDROOT" ./build.sh $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Runtime/$_runtimever_ns + cp artifacts/packages/*/*/dotnet-runtime-*-*.tar.gz $_downloaddir/Runtime/$_runtimever_ns +} + +_sdk() { + _init + if [ -z "${_sdkver+x}" ]; then + local _sdkver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + fi + local _sdkver_ns=$(awk '{if($2 == "Name=\"Microsoft.NET.Sdk\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building sdk version $_sdkver" + cd "$builddir"/src/sdk + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + /p:Architecture=$_dotnet_target + /p:TestCliNuGetDirectoryTargetFramework=netcoreapp3.1 + " + if [ "$_sdkver" != "${_sdkver##*-}" ]; then + local args="$args /p:VersionSuffix=${_sdkver##*-}" + fi + ./build.sh --pack /p:Projects=$builddir/src/sdk/source-build.slnf $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Sdk/$_sdkver_ns + cp artifacts/packages/*/*/dotnet-toolset-internal-*.zip "$_downloaddir"/Sdk/$_sdkver_ns +} + +_aspnetcore() { + _init + if [ -z "${_aspnetver+x}" ]; then + local _aspnetver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + fi + local _aspnetver_ns=$(awk '{if($2 == "Name=\"Microsoft.AspNetCore.App.Ref.Internal\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Build aspnetcore version $_aspnetver" + cd "$builddir"/src/aspnetcore + local args=" + -c Release + -bl + --os-name linux-musl + -arch $_dotnet_target + -no-build-nodejs + /consoleLoggerParameters:ShowTimestamp + /p:BuildNodeJs=false + /p:BuildOSName=linux-musl + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + /p:DotNetAssetRootUrl=file://$_downloaddir/ + /p:EnablePackageValidation=false + " + if [ "$_aspnetver" != "${_aspnetver##*-}" ]; then + local args="$args /p:VersionSuffix=${_aspnetver##*-}" + fi + + # aspnetcore can't find newly created Microsoft.NETCore.App.Runtime.linux-musl-x86 for some reason + case $_dotnet_target in + riscv64|x86) local args="$args /p:CrossgenOutput=false";; + esac + + ./eng/build.sh --pack $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + + mkdir -p "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore-runtime-*-linux-musl-$_dotnet_target.tar.gz "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore_base_runtime.version "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns +} + +_installer() { + _init + msg "[$(date)] Building installer version $_installerver" + cd "$builddir"/src/installer + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:EnableSourceLink=false + /p:OSName=linux-musl + /p:HostOSName=linux-musl + /p:Architecture=$_dotnet_target + /p:CoreSetupBlobRootUrl=file://$_downloaddir/ + /p:DotnetToolsetBlobRootUrl=file://$_downloaddir/ + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/installer.props | sed -E 's|||g' | tr -d ' ') + /p:GitCommitCount=1 + /p:PublicBaseURL=file://$_downloaddir/ + " + if [ "$_installerver" != "${_installerver##*-}" ]; then + local args="$args /p:VersionSuffix=${_installerver##*-}" + fi + # crossgen broken on x86 + case $_dotnet_target in + riscv64|x86) local args="$args /p:DISABLE_CROSSGEN=True";; + esac + + ./build.sh $args + + mkdir -p "$_downloaddir"/installer/$_installerver + cp artifacts/packages/*/*/dotnet-sdk-$_pkgver_macro*.tar.gz "$_downloaddir"/installer/$_installerver +} + +build() { + _runtime + _sdk + _aspnetcore + _installer +} + +package() { + # lua-aports / buildrepo doesn't know to always build stage0 first when dealing + # with virtual packages. Thus, we need to depend on an empty stage0 pkg that + # dotnetx-build will pull, thus forcing build of stage0 first + mkdir -p "$pkgdir" +} + +bootstrap() { + # allows stage0 to be pulled by dotnetx-build if first build of dotnetx + provides="dotnet$_pkgver_name-bootstrap" + provider_priority=$_pkgver_prior + + local _iltoolsver=$(grep \||g' | tr -d ' ') + + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/docs \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/comp \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver + + # unpack build artifacts to bootstrap subdir for use by future builds + tar --use-compress-program="pigz" \ + -xf "$_downloaddir"/installer/$_installerver/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/ \ + --no-same-owner + + local _iltoolsArray=" + runtime.*.Microsoft.NETCore.TestHost.*.nupkg + runtime.*.Microsoft.NETCore.ILAsm.*.nupkg + runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg + " + + local _nupkgsArray=" + $_iltoolsArray + Microsoft.NETCore.App.Host.*.*.nupkg + Microsoft.NETCore.App.Runtime.*.*.nupkg + Microsoft.NETCore.App.Crossgen2.*.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHost.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostPolicy.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostResolver.*.nupkg + runtime.*.Microsoft.NETCore.DotNetAppHost.*.nupkg + Microsoft.AspNetCore.App.Runtime.linux-musl-*.*.nupkg + " + + # copies artifacts to artifacts dir for use by future dotnet builds + for i in $_nupkgsArray; do install -Dm644 "$_packagesdir"/$i "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ || true; done + + msg "Changing iltools version to $_iltoolsver" + # source-build expects a certain version of ilasm, ildasm and testhost + # following adjusts version + for i in $_iltoolsArray; do + local nupath="$subpkgdir"$_libdir/dotnet/artifacts/$pkgver/$i + local nupath=$(find $nupath || true) + local nupkg="${nupath##*/}" + local nuname="${nupkg/.nupkg}" + if [ -z "${nuname/*rtm*}" ] || [ -z "${nuname/*servicing*}" ] || [ -z "${nuname/*preview*}" ]; then + nuname=${nuname%-*} + fi + local nuname="${nuname%.*.*.*}" + local nuver="${nupkg/$nuname.}" + local nuver="${nuver/.nupkg}" + local nuspec="$nuname.nuspec" + + if [ ! "$nupath" ] || [ "$nupath" = "${nupath/$nuver/$_iltoolsver}" ]; then + continue + fi + # shellcheck disable=SC2094 + unzip -p "$nupath" $nuspec | sed "s|$nuver|$_iltoolsver|" > "$srcdir"/$nuspec + cd "$srcdir" + zip -u "$nupath" $nuspec + mv "$nupath" "${nupath/$nuver/$_iltoolsver}" + done +} + +# build relies on a plethora of nupkgs which are provided by this Artifacts file. +# stage0 sources these from Microsoft, which then allows bootstrap to build +# locally hosted versions. The following unpacks built tarball into directory +# for use by future builds. +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver \ + "$subpkgdir"/usr/share/licenses + + # extract artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ + --no-same-owner +} + +sha512sums=" +094265462d66d97b51ebfbe5fb06d4a679b97881f1f5a07a87a282a96eeaabfe97ca42061d59aac71dd8861c07f07dda16a72e29ae03167407e51d3fd2767562 dotnet-tarball-v8.0.0.tar.gz +55f2c56f7fbed4137ebe5e81c7b86d199d7ff91c6e19fbc9a4af8cd5d0f0195273356ead8b80aedfff56a3d704a541a7c2a7395bec3fa5d6585f3afd056b1220 dotnet-release-v8.0.0.json +a904491cf1fe27603cfc21aa234b2f4da7517929fa9dad0eaa2233d010ef1e890339ca4b8e3c4c0d463f3015d7020a0c37ece97319b061cd92a5fc51cd8a7f4c dotnet-sdk-8.0.100-linux-musl-x64.noextract +1d8e54ab8d2b7b83972c1ecd7a23073bf83d39c258e993e54ab91a383ad2aa44276dfc28938f7b162cf79010187005e42a665933dff021ffa5e5d9cfadb5e2b6 dotnet-sdk-8.0.100-linux-musl-arm64.noextract +a8c08c4eaaa1ade3a1521750c62af92ab8fe91bfdd0f4767f8c0469ebfef091f3a68a443d4566bbfe53c49866d72a104c7aea309cabb36148f9aef9cb950ea64 dotnet-sdk-8.0.100-linux-musl-arm.noextract +d0bebb6179e679dea5704ca59acb2260a3dde2d22727b8116b57fbcfc3cba7b31581ed785279eec2836e3916608f39fa45a8e26dfa27063928355ccda83b3d09 dotnet-sdk-8.0.100-r0-linux-musl-s390x.noextract +14fdc6c8225010a6028609ed2b7c942abc770a50167429116ab9d5f0cabfe8038aedb89b7cc984d89c3366351302a86e10c2d5cfccd57399cc42b3c838bc37a0 dotnet-sdk-8.0.100-r0-linux-musl-ppc64le.noextract +a9933d8de614e914d42cf4953ac60a0a6e83e4276328b838fb369fb3036073fd08d2bcbcee07386f65f802f2f2374e45b44b8f8410396a7d93d20e53646d72f0 Private.SourceBuilt.Artifacts.8.0.100-rtm.23551.1.centos.8-x64.noextract +48d155f11c4594eeb72b2d80a6e110ab2b093fd2379e9ddcca755072f4a3e64990ef2620709e0b10ea4b979d8909de56d89f970c349c6fee58621a8f6b415a1c build_fix-ga-versions.patch +6f23b53b1408dc676434d3ee417b735af033f2717057589e93d26021ca2513d13f40ba7ea3312413f2ed79cda2991538f64b4c835e75f40f5a5e5a0e469c4ec0 installer_aspire-manifest-version-fix.patch +b6a2dfeccac329546f87f1019c1f2cf07e2f294dd33914449ad08d92269c8713b6fa1e330ef257c24e189023fd0b824df97688b0ba6e578a6d0292b07a72b4c1 installer_set-crossgen2rid-using-buildarchitecture.patch +d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch +c983a1ab7f06ac86691e0fa7a61fcad69a074d984ef4a4116bee43f20be918215963c7ec8ddd7edd70432b29b160ff78288183acc89fda15ce4a75bfdbf99ee3 runtime_83682-specify-notext-on-linux-musl-x86.patch +3354fa721809f1b94c579408ee78004ff3ca2ba79212c1a0ecc424a9955bb5d5a80c115d4c30dd257526f356ea76f0562db6f83d8dd0b6135f8c689886b3348d runtime_90251-rename-mono-cmake-host-var.patch +887112eb2b103eadd6887529ebae7f9a75df2c2cb168e84fd40cc09f9bcd20917d428bbba06968b07b0a463890da82b1b2b1d033a3dd016e6494067464ae6f74 runtime_more-clang-16-suppression.patch +0c25319125ef5b0ad490b37a643c0c5257c796d5ed24f9ac404f698710b07de790bcbb0b6336d4a50025b94c3bff99b214951bd8f0a79a8d6f543ebaa300740f runtime_remove-usage-of-off64-t.patch +" diff --git a/community/dotnet7-stage0/README.md b/community/dotnet7-stage0/README.md new file mode 100644 index 0000000..b055bb1 --- /dev/null +++ b/community/dotnet7-stage0/README.md @@ -0,0 +1,143 @@ +# dotnet8-stage0 + +This is the .NET 8.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `dotnet8` (empty package to go around `buildrepo` build ordering bug) +* `dotnet8-stage0-bootstrap` (packages binary bootstrap artifacts) +* `dotnet8-stage0-artifacts` (packages non-binary bootstrap artifacts) + +## How to build dotnet8 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet8 is built using three different aports. + +* `community/dotnet8-stage0` +Builds minimum components for full build of dotnet8, and packages these in an initial +`dotnet8-stage0-bootstrap` package that `dotnet8-runtime` pulls. +* `community/dotnet8-runtime` +Builds full and packages dotnet8 fully using either stage0 or previoulsy built +dotnet8 build. +* `community/dotnet8-sdk` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet8-runtime. dotnet8-runtime only +builds 8.0.1xx feature branch of SDK. Thus, when a new feature branch of sdk is +released, the updated components are to be built on dotnet8-sdk rather than +simply repackaging dotnet8-runtime artifacts. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet8-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet8` as opposed to `dotnet-8.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-runtime` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-runtime: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-runtime` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-runtime: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/community/dotnet7-stage0/build_fix-ga-versions.patch b/community/dotnet7-stage0/build_fix-ga-versions.patch new file mode 100644 index 0000000..31fe745 --- /dev/null +++ b/community/dotnet7-stage0/build_fix-ga-versions.patch @@ -0,0 +1,32 @@ +diff --git a/prereqs/git-info/runtime.props.orig b/prereqs/git-info/runtime.props +index f9dc4d6..093bd00 100644 +--- a/prereqs/git-info/runtime.props.orig ++++ b/prereqs/git-info/runtime.props +@@ -3,8 +3,8 @@ + + 5535e31a712343a63f5d7d796cd874e563e5ac14 + 20231031.3 +- 8.0.0-rtm.23531.3 ++ 8.0.0 + rtm + false + +- +\ No newline at end of file ++ +diff --git a/prereqs/git-info/aspnetcore.props.orig b/prereqs/git-info/aspnetcore.props +index d1494e8..b83649d 100644 +--- a/prereqs/git-info/aspnetcore.props.orig ++++ b/prereqs/git-info/aspnetcore.props +@@ -3,8 +3,8 @@ + + 3f1acb59718cadf111a0a796681e3d3509bb3381 + 20231031.12 +- 8.0.0-rtm.23531.12 ++ 8.0.0 + rtm + false + +- +\ No newline at end of file ++ diff --git a/community/dotnet7-stage0/installer_aspire-manifest-version-fix.patch b/community/dotnet7-stage0/installer_aspire-manifest-version-fix.patch new file mode 100644 index 0000000..d4623f7 --- /dev/null +++ b/community/dotnet7-stage0/installer_aspire-manifest-version-fix.patch @@ -0,0 +1,26 @@ +diff --git a/./src/installer/eng/Version.Details.xml.orig b/./src/installer/eng/Version.Details.xml +index a1cebfe..3f47a7f 100644 +--- a/./src/installer/eng/Version.Details.xml.orig ++++ b/./src/installer/eng/Version.Details.xml +@@ -172,7 +172,7 @@ + https://github.com/dotnet/emsdk + 2406616d0e3a31d80b326e27c156955bfa41c791 + +- ++ + https://dev.azure.com/dnceng/internal/_git/dotnet-aspire + 4b00c57d7ccf9a4c7e2aef211ab6bd8af3ee2324 + +diff --git a/./src/installer/eng/Versions.props.orig b/./src/installer/eng/Versions.props +index 329ab4e..897263d 100644 +--- a/./src/installer/eng/Versions.props.orig ++++ b/./src/installer/eng/Versions.props +@@ -238,7 +238,7 @@ + + + 8.0.100 +- 8.0.0-preview.1.23551.7 ++ 8.0.0-preview.1.23557.2 + 8.0.100-rc.2 + 8.0.0-rc.2.9373 + 34.0.0-rc.2.468 diff --git a/community/dotnet7-stage0/installer_set-crossgen2rid-using-buildarchitecture.patch b/community/dotnet7-stage0/installer_set-crossgen2rid-using-buildarchitecture.patch new file mode 100644 index 0000000..309e092 --- /dev/null +++ b/community/dotnet7-stage0/installer_set-crossgen2rid-using-buildarchitecture.patch @@ -0,0 +1,13 @@ +diff --git a/src/installer/src/redist/targets/GenerateLayout.targets.orig b/src/installer/src/redist/targets/GenerateLayout.targets +index a27834f..0c899d4 100644 +--- a/src/installer/src/redist/targets/GenerateLayout.targets.orig ++++ b/src/installer/src/redist/targets/GenerateLayout.targets +@@ -85,7 +85,7 @@ + windowsdesktop-runtime-$(MicrosoftWindowsDesktopAppRuntimePackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension) + + $(HostOSName)-$(BuildArchitecture) +- $(SharedFrameworkRid) ++ $(SharedFrameworkRid.SubString(0, $(SharedFrameworkRid.LastIndexOf('-'))))-$(BuildArchitecture) + + $(SharedFrameworkRid) + linux-x64 diff --git a/community/dotnet7-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch b/community/dotnet7-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..d4cbe4d --- /dev/null +++ b/community/dotnet7-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/14105. Alpine Linux +now sets this by default since https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/43463, +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/community/dotnet7-stage0/runtime_83682-specify-notext-on-linux-musl-x86.patch b/community/dotnet7-stage0/runtime_83682-specify-notext-on-linux-musl-x86.patch new file mode 100644 index 0000000..6dfefc0 --- /dev/null +++ b/community/dotnet7-stage0/runtime_83682-specify-notext-on-linux-musl-x86.patch @@ -0,0 +1,24 @@ +From 65877a9c1260c1c37d1c3355703b1951b6754cdf Mon Sep 17 00:00:00 2001 +From: Adeel <3840695+am11@users.noreply.github.com> +Date: Mon, 20 Mar 2023 19:36:14 +0200 +Subject: [PATCH] Specify -z notext on linux-musl-x86 + +--- + src/coreclr/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/runtime/src/coreclr/CMakeLists.txt b/src/runtime/src/coreclr/CMakeLists.txt +index 67b773bf78787..87d862a541ae6 100644 +--- a/src/runtime/src/coreclr/CMakeLists.txt ++++ b/src/runtime/src/coreclr/CMakeLists.txt +@@ -109,6 +109,10 @@ if(CLR_CMAKE_HOST_UNIX) + endif() + endif() + ++ if(CLR_CMAKE_TARGET_ALPINE_LINUX AND CLR_CMAKE_TARGET_ARCH_I386) ++ add_linker_flag(-Wl,-z,notext) ++ endif() ++ + if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS) + add_subdirectory(pal) + add_subdirectory(hosts) diff --git a/community/dotnet7-stage0/runtime_90251-rename-mono-cmake-host-var.patch b/community/dotnet7-stage0/runtime_90251-rename-mono-cmake-host-var.patch new file mode 100644 index 0000000..6a5fadd --- /dev/null +++ b/community/dotnet7-stage0/runtime_90251-rename-mono-cmake-host-var.patch @@ -0,0 +1,80 @@ +From 828269b7e68039f8bc0bdac66e2fd5c58b6d3471 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/90251 +From: Antoine Martin +Date: Wed, 9 Aug 2023 11:36:39 -0400 +Subject: [PATCH 1/1] Rename CMAKE var for mono on libc-musl + +--- + src/mono/CMakeLists.txt | 6 +++--- + src/mono/mono/mini/CMakeLists.txt | 12 ++++++------ + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/runtime/src/coreclr/pgosupport.cmake b/src/runtime/src/coreclr/pgosupport.cmake +index 719ac14ad99..34a42781ab2 100644 +--- a/src/runtime/src/coreclr/pgosupport.cmake ++++ b/src/runtime/src/coreclr/pgosupport.cmake +@@ -25,13 +25,13 @@ function(add_pgo TargetName) + target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fprofile-instr-generate") + if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") +- if (CLR_CMAKE_HOST_ALPINE_LINUX) ++ if (CLR_CMAKE_TARGET_LINUX_MUSL) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- else(CLR_CMAKE_HOST_ALPINE_LINUX) ++ else(CLR_CMAKE_TARGET_LINUX_MUSL) + string(REPLACE "." ";" CLANG_VERSION "${CMAKE_C_COMPILER_VERSION}") + list(POP_FRONT CLANG_VERSION CLANG_VERSION_MAJOR) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/llvm-${CLANG_VERSION_MAJOR}/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- endif(CLR_CMAKE_HOST_ALPINE_LINUX) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL) + endif(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") + if(NOT LD_LLVM) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -fuse-ld=gold") +diff --git a/src/runtime/src/mono/CMakeLists.txt b/src/runtime/src/mono/CMakeLists.txt +index e04d9e9d364..00e54a25d69 100644 +--- a/src/runtime/src/mono/CMakeLists.txt ++++ b/src/runtime/src/mono/CMakeLists.txt +@@ -943,10 +943,10 @@ else() + set(DISABLE_DLLMAP 1) + endif() + +-if(CLR_CMAKE_HOST_ALPINE_LINUX) +- # Setting RLIMIT_NOFILE breaks debugging of coreclr on Alpine Linux for some reason ++if(CLR_CMAKE_TARGET_LINUX_MUSL) ++ # Setting RLIMIT_NOFILE breaks debugging of coreclr on musl-libc for some reason + add_definitions(-DDONT_SET_RLIMIT_NOFILE) +- # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is ++ # On musl-libc, we need to ensure that the reported stack range for the primary thread is + # larger than the initial committed stack size. + add_definitions(-DENSURE_PRIMARY_STACK_SIZE) + endif() +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt.orig b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index 5d6ef3d..c3e5414 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt.orig ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -400,9 +400,9 @@ if(NOT DISABLE_SHARED_LIBS) + endif() + target_compile_definitions(monosgen-shared PRIVATE -DMONO_DLL_EXPORT) + # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(monosgen-shared PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + set_target_properties(monosgen-shared PROPERTIES OUTPUT_NAME ${MONO_SHARED_LIB_NAME}) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(monosgen-shared PROPERTIES INSTALL_RPATH "$ORIGIN") +@@ -601,10 +601,10 @@ if(NOT DISABLE_EXECUTABLES) + target_link_libraries(mono-sgen PRIVATE icu_shim_objects) + endif() + target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) +- # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ # musl-libc implements ucontext in a different library ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(mono-sgen PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") diff --git a/community/dotnet7-stage0/runtime_91008-handle-enum-return-type-when-inlining.patch b/community/dotnet7-stage0/runtime_91008-handle-enum-return-type-when-inlining.patch new file mode 100644 index 0000000..c72bc6b --- /dev/null +++ b/community/dotnet7-stage0/runtime_91008-handle-enum-return-type-when-inlining.patch @@ -0,0 +1,30 @@ +From a73b8bacfcc5819926bc05173ab2f7850eb00da3 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/91008 +From: Ulrich Weigand +Date: Wed, 23 Aug 2023 21:11:37 +0200 +Subject: [PATCH] [mono] Handle enum return type when inlining CreateInstance + +Use underlying base type when deciding how to inline a +CreateInstance invocation in mini_emit_inst_for_method. + +Fixes https://github.com/dotnet/runtime/issues/90292 +(Mono abort causing .NET 8 msbuild regression). +--- + src/mono/mono/mini/intrinsics.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/runtime/src/mono/mono/mini/intrinsics.c b/src/runtime/src/mono/mono/mini/intrinsics.c +index b1e5e76723147..ef77b7dc89f2e 100644 +--- a/src/runtime/src/mono/mono/mini/intrinsics.c ++++ b/src/runtime/src/mono/mono/mini/intrinsics.c +@@ -2079,7 +2079,9 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign + MonoType *t = method_context->method_inst->type_argv [0]; + MonoClass *arg0 = mono_class_from_mono_type_internal (t); + if (m_class_is_valuetype (arg0) && !mono_class_has_default_constructor (arg0, FALSE)) { +- if (m_class_is_primitive (arg0)) { ++ if (m_class_is_primitive (arg0) || m_class_is_enumtype (arg0)) { ++ if (m_class_is_enumtype (arg0)) ++ t = mono_class_enum_basetype_internal (arg0); + int dreg = alloc_dreg (cfg, mini_type_to_stack_type (cfg, t)); + mini_emit_init_rvar (cfg, dreg, t); + ins = cfg->cbb->last_ins; diff --git a/community/dotnet7-stage0/runtime_more-clang-16-suppression.patch b/community/dotnet7-stage0/runtime_more-clang-16-suppression.patch new file mode 100644 index 0000000..1e94419 --- /dev/null +++ b/community/dotnet7-stage0/runtime_more-clang-16-suppression.patch @@ -0,0 +1,13 @@ +diff --git a/src/runtime/eng/native/configurecompiler.cmake b/src/runtime/eng/native/configurecompiler.cmake +index c9a54547c0a..931da2cae5b 100644 +--- a/src/runtime/eng/native/configurecompiler.cmake ++++ b/src/runtime/eng/native/configurecompiler.cmake +@@ -488,6 +488,8 @@ if (CLR_CMAKE_HOST_UNIX) + # other clang 16.0 suppressions + add_compile_options(-Wno-single-bit-bitfield-constant-conversion) + add_compile_options(-Wno-cast-function-type-strict) ++ add_compile_options(-Wno-incompatible-function-pointer-types-strict) ++ add_compile_options(-Wno-ignored-attributes) + else() + add_compile_options(-Wno-uninitialized) + add_compile_options(-Wno-strict-aliasing) diff --git a/community/dotnet7-stage0/runtime_remove-usage-of-off64-t.patch b/community/dotnet7-stage0/runtime_remove-usage-of-off64-t.patch new file mode 100644 index 0000000..cec5877 --- /dev/null +++ b/community/dotnet7-stage0/runtime_remove-usage-of-off64-t.patch @@ -0,0 +1,26 @@ +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +index 20b2494..165b190 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -469,7 +469,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fdMem != -1); +- *read = pread64(m_fdMem, buffer, size, (off64_t)address); ++ *read = pread(m_fdMem, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +index 5addb79..79655d1 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +@@ -760,7 +760,7 @@ CrashInfo::PageMappedToPhysicalMemory(uint64_t start) + } + + uint64_t pagemapOffset = (start / PAGE_SIZE) * sizeof(uint64_t); +- uint64_t seekResult = lseek64(m_fdPagemap, (off64_t) pagemapOffset, SEEK_SET); ++ uint64_t seekResult = lseek(m_fdPagemap, (off_t) pagemapOffset, SEEK_SET); + if (seekResult != pagemapOffset) + { + int seekErrno = errno; diff --git a/community/git-annex/APKBUILD b/community/git-annex/APKBUILD new file mode 100644 index 0000000..07daf8a --- /dev/null +++ b/community/git-annex/APKBUILD @@ -0,0 +1,112 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +pkgname=git-annex +pkgver=10.20230926 +pkgrel=0 +pkgdesc="Manage files with git, without checking their contents into git" +url="http://git-annex.branchable.com" +arch="x86_64 aarch64" # limited by ghc +license="AGPL-3.0-or-later" +options="net" +depends=" + curl + git + rsync + " +makedepends=" + alex + cabal + dbus-dev + file-dev + ghc + gmp-dev + gnutls-dev + happy + libffi-dev + libgsasl-dev + libxml2-dev + ncurses-dev + zlib-dev + " +source=" + https://git.joeyh.name/index.cgi/git-annex.git/snapshot/git-annex-$pkgver.tar.gz + https://lab.ilot.io/mirrors/git-annex/-/releases/$pkgver/downloads/config/git-annex-$pkgver-edge.config + fix-makefile.patch + " +subpackages="$pkgname-doc $pkgname-bash-completion $pkgname-fish-completion $pkgname-zsh-completion" + +# Add / remove '-' between "-f" and "FeatureName" to adjust feature build +_feature_flags=" + -fAssistant \ + -fWebApp \ + -fPairing \ + -fProduction \ + -fTorrentParser \ + -fMagicMime \ + -fBenchmark \ + -f-DebugLocks \ + -fDbus \ + -fNetworkBSD \ + -fGitLfs \ + -fHttpClientRestricted \ + " +_cabal_home="$srcdir/dist" + +cabal_update() { + default_prepare + msg "Freezing $pkgname dependencies" + + # Resolve deps and generate fresh cabal.config with version constraints. + HOME="$_cabal_home" cabal update + cd "$srcdir/git-annex"* + HOME="$_cabal_home" cabal v1-freeze --shadow-installed-packages + + mv "cabal.config" "$startdir/git-annex-$pkgver.config" + cd "$startdir" + + if ! abuild checksum; then + die "Failed to update checksum, run 'abuild checksum' manually" + fi +} + +prepare() { + default_prepare + + ln -sf "$srcdir"/git-annex-*.config cabal.config + + # ghc version path + export PATH="$PATH:/usr/lib/llvm14/bin" + + # problematic depend install + HOME="$_cabal_home" cabal update +} + +build() { + # ghc version path + export PATH="$PATH:/usr/lib/llvm14/bin" + + msg "Building git-annex-$pkgver" + HOME="$_cabal_home" cabal update + HOME="$_cabal_home" cabal v1-install \ + --only-dependencies \ + --allow-newer=feed:base-compat \ + $_feature_flags + HOME="$_cabal_home" cabal v1-configure $_feature_flags + HOME="$_cabal_home" cabal v1-build -j + mv dist/build/git-annex/git-annex . + ln -s git-annex git-annex-shell +} + +check() { + "$builddir"/git-annex test +} + +package() { + HOME="$_cabal_home" make DESTDIR="$pkgdir" install +} + +sha512sums=" +e59f41485d30cd824c4405bb8b73f2f2f1a3b6b10fcd5af1ad504093fce22ebb2f9280fc559e19a92c6247222cce137937143e72b9abf8c2b480d728518f02b5 git-annex-10.20230926.tar.gz +6842f63a97b60317690fcc9561cd05c262faa7bd02193c58d55ca2028095f34c8dabcb8601b2944dcbee6e8c3a01038b274c490aaf19ce368b56e188f7713acb git-annex-10.20230926-edge.config +9300f883746d8726f47be6d194b5ac9550e2894669097f3202eca944221665bd3087a81b3f97b21f013eccaa6b5b1fb050e253ac18999c136db20056fadf2ed8 fix-makefile.patch +" diff --git a/community/git-annex/fix-makefile.patch b/community/git-annex/fix-makefile.patch new file mode 100644 index 0000000..25c8a5f --- /dev/null +++ b/community/git-annex/fix-makefile.patch @@ -0,0 +1,24 @@ +diff --git a/Makefile b/Makefile +index 5688430..54fe3c8 100644 +--- a/Makefile ++++ b/Makefile +@@ -87,16 +87,16 @@ install-docs: docs install-mans + rsync -a --delete html/ $(DESTDIR)$(PREFIX)/$(SHAREDIR)/doc/git-annex/html/; \ + fi + +-install-bins: build ++install-bins: + install -d $(DESTDIR)$(PREFIX)/bin + install git-annex $(DESTDIR)$(PREFIX)/bin + ln -sf git-annex $(DESTDIR)$(PREFIX)/bin/git-annex-shell + ln -sf git-annex $(DESTDIR)$(PREFIX)/bin/git-remote-tor-annex + +-install-desktop: build Build/InstallDesktopFile ++install-desktop: Build/InstallDesktopFile + ./Build/InstallDesktopFile $(PREFIX)/bin/git-annex || true + +-install-completions: build ++install-completions: + install -d $(DESTDIR)$(PREFIX)/$(SHAREDIR)/bash-completion/completions + install -m 0644 bash-completion.bash $(DESTDIR)$(PREFIX)/$(SHAREDIR)/bash-completion/completions/git-annex + install -d $(DESTDIR)$(ZSH_COMPLETIONS_PATH) diff --git a/community/powershell/APKBUILD b/community/powershell/APKBUILD new file mode 100644 index 0000000..7319b56 --- /dev/null +++ b/community/powershell/APKBUILD @@ -0,0 +1,130 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +pkgname=powershell +pkgver=7.3.9 +pkgrel=0 +pkgdesc="A cross-platform automation and configuration tool/framework" +arch="x86_64 aarch64 armv7" # blocked by dotnet runtime +url="https://github.com/PowerShell/PowerShell" +license="MIT" +depends=" + dotnet7-runtime + libpsl-native + " +makedepends=" + dotnet7-sdk + git + " +source=" + $pkgname-$pkgver.tar.gz::https://github.com/PowerShell/PowerShell/archive/v$pkgver.tar.gz + dependency-gatherer.targets + fix-filesystem-test.patch + update-sdk-test-ppc64le.patch + " +builddir="$srcdir/PowerShell-$pkgver" +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs +else + _logdir="$srcdir"/logs +fi + +# mono-flavored runtime does not support crossgen2 +case $CARCH in + armhf|s390x|ppc64le) _use_crossgen2=false;; +esac + +prepare() { + default_prepare + # build expects to be in git directory + git init + git config user.name "example" + git config user.email "example@example.com" + git add ./* + git commit -m 'Initial' + git tag -a "v$pkgver" -m "Initial" + rm "global.json" + mkdir -p "$_logdir" +} + +build() { + msg "Building $pkgname" + # change nuget cache + export NUGET_PACKAGES="$srcdir"/nuget_cache + + # Restore + dotnet restore src/powershell-unix + dotnet restore src/ResGen + dotnet restore src/TypeCatalogGen + + # Setup the build target to gather dependency information + cp "$srcdir/dependency-gatherer.targets" \ + "src/Microsoft.PowerShell.SDK/obj/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets" + dotnet msbuild src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj \ + /t:_GetDependencies \ + "/property:DesignTimeBuild=true;_DependencyFile=$PWD/src/TypeCatalogGen/powershell.inc" \ + /nologo + + # Generate 'powershell.version' + echo "v$pkgver" > powershell.version + + # Generate resource binding C# files + cd "$builddir"/src/ResGen + dotnet run + + # Generate 'CorePsTypeCatalog.cs' + cd "$builddir"/src/TypeCatalogGen + dotnet run ../System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs powershell.inc + + # Build powershell core + cd "$builddir" + + dotnet build-server shutdown + dotnet publish --configuration Linux "src/powershell-unix/" \ + --output bin \ + --no-self-contained \ + --runtime "$(dotnet --info | awk '$1=="RID:"{print $2}')" \ + -p:PublishReadyToRun=$_use_crossgen2 \ + /bl:"$_logdir"/powershell-build.binlog \ + /consoleLoggerParameters:ShowTimestamp +} + +check() { + msg "Checking $pkgname" + cd "$builddir"/test/xUnit + dotnet build-server shutdown + dotnet test \ + -c Release \ + --runtime "$(dotnet --info | awk '$1=="RID:"{print $2}')" \ + -p:PublishReadyToRun=$_use_crossgen2 \ + /bl:"$_logdir"/powershell-check.binlog \ + /consoleLoggerParameters:ShowTimestamp +} + +package() { + # directory creation + install -dm 755 \ + "$pkgdir"/usr/lib \ + "$pkgdir"/usr/bin + + # libary copy + cp -ar "$builddir"/src/powershell-unix/bin/Linux/*/alpine* "$pkgdir"/usr/lib/$pkgname + + # already provided by 'libpsl-native' aport + rm -f "$pkgdir"/usr/lib/$pkgname/libpsl-native.so + + # does not build for linux-musl, thus points to libc.so rather than musl + # see https://github.com/dotnet/runtime/issues/63187 + rm -f "$pkgdir"/usr/lib/$pkgname/libSystem.IO.Ports.Native.so + + # binary link + ln -s "/usr/lib/$pkgname/pwsh" "$pkgdir"/usr/bin/pwsh +} + +sha512sums=" +8d17899925b037e1c7a9a6a77a8a6fd15b9f1418ab6342854f7452614c4c2cecb98710fb5e30c52334493d54e53164b60182c60b07a0937ed232c798fa888588 powershell-7.3.9.tar.gz +e9c4aeebd4fead1542b2c48c70134efcdb6c573273d8d05b1f8a2ece070e26899876b30264749992beac3044059716ca8c07b3bf970a419e525057c422f843c6 dependency-gatherer.targets +0e7550d8b702eeb9ebbd42100b32cbf7a0be676c5922cd6ee03ecdd3ba11d20d42a468f73ee428c6c92c8b7b18f9b022591a368191c2a358034ba4d7e78d2b84 fix-filesystem-test.patch +1aa10d32a37da0e7fd9d587105833d0a7ed9b71701018259d3efa2be90977808eb54a7d3e2d8bf03b693eeeac469f2e9ee88aa93006b7a2c22ae4720a8f62561 update-sdk-test-ppc64le.patch +" diff --git a/community/powershell/dependency-gatherer.targets b/community/powershell/dependency-gatherer.targets new file mode 100644 index 0000000..85ece3e --- /dev/null +++ b/community/powershell/dependency-gatherer.targets @@ -0,0 +1,9 @@ + + + + <_RefAssemblyPath Include="%(_ReferencesFromRAR.HintPath)%3B" Condition=" '%(_ReferencesFromRAR.NuGetPackageId)' != 'Microsoft.Management.Infrastructure' "/> + + + + diff --git a/community/powershell/fix-filesystem-test.patch b/community/powershell/fix-filesystem-test.patch new file mode 100644 index 0000000..640d942 --- /dev/null +++ b/community/powershell/fix-filesystem-test.patch @@ -0,0 +1,40 @@ +From 04b0c8b1274918015c91f609cd63fdda6099ab95 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/PowerShell/PowerShell/issues/17889 +From: Antoine Martin +Date: Tue, 26 Jul 2022 20:34:30 -0400 +Subject: [PATCH 1/1] Neutralize PSTests.Parallel.FileSystemProviderTests.TestMode + +PSTests.Parallel.FileSystemProviderTests.TestMode prints error: +[xUnit.net 00:00:06.26] PSTests.Parallel.FileSystemProviderTests.TestMode [FAIL] + Failed PSTests.Parallel.FileSystemProviderTests.TestMode [5 ms] + Error Message: + Assert.Equal() Failure + ↓ (pos 0) +Expected: ----- +Actual: l---- + ↑ (pos 0) + Stack Trace: + at PSTests.Parallel.FileSystemProviderTests.TestMode() in /home/user/projects/powershell/testing/powershell/src/PowerShell-7.2.5/test/xUnit/csharp/test_FileSystemProvider.cs:line 123 + +This patch fixes this failed test by pointing the to-be-tested file to +/bin/busybox rather than /bin/echo, as the latter is a symbolic link + +--- + test/xUnit/csharp/test_FileSystemProvider.cs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/xUnit/csharp/test_FileSystemProvider.cs b/test/xUnit/csharp/test_FileSystemProvider.cs +index 85ab0b2ee..160862146 100644 +--- a/test/xUnit/csharp/test_FileSystemProvider.cs ++++ b/test/xUnit/csharp/test_FileSystemProvider.cs +@@ -109,7 +109,7 @@ namespace PSTests.Parallel + { + directoryObject = new DirectoryInfo(@"/"); + fileObject = new FileInfo(@"/etc/hosts"); +- executableObject = new FileInfo(@"/bin/echo"); ++ executableObject = new FileInfo(@"/bin/busybox"); + } + else + { +-- +2.36.2 diff --git a/community/powershell/update-sdk-test-ppc64le.patch b/community/powershell/update-sdk-test-ppc64le.patch new file mode 100644 index 0000000..05ff2cf --- /dev/null +++ b/community/powershell/update-sdk-test-ppc64le.patch @@ -0,0 +1,13 @@ +diff --git a/test/xUnit/xUnit.tests.csproj.orig b/test/xUnit/xUnit.tests.csproj +index 2dff043..8a28dc0 100644 +--- a/test/xUnit/xUnit.tests.csproj.orig ++++ b/test/xUnit/xUnit.tests.csproj +@@ -28,7 +28,7 @@ + + + +- ++ + + + diff --git a/community/yadm/APKBUILD b/community/yadm/APKBUILD new file mode 100644 index 0000000..541e887 --- /dev/null +++ b/community/yadm/APKBUILD @@ -0,0 +1,35 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=yadm +pkgver=3.2.2 +pkgrel=1 +pkgdesc="Yet Another Dotfiles Manager" +arch="noarch" +url="https://github.com/TheLocehiliosan/yadm" +license="GPL-3.0-only" +depends=" + bash + git + gawk + " +options="!check" # No testsuite +subpackages=" + $pkgname-bash-completion + $pkgname-doc + $pkgname-fish-completion + $pkgname-zsh-completion + " +source="$pkgname-$pkgver.tar.gz::https://github.com/TheLocehiliosan/yadm/archive/$pkgver.tar.gz" + +package() { + install -vDm755 yadm -t "$pkgdir/usr/bin" + install -vDm644 yadm.1 -t "$pkgdir/usr/share/man/man1" + install -vDm644 completion/bash/yadm -t "$pkgdir/usr/share/bash-completion/completions" + install -vDm644 completion/zsh/_yadm -t "$pkgdir/usr/share/zsh/site-functions" + install -vDm644 completion/fish/yadm.fish -t "$pkgdir/usr/share/fish/vendor_completions.d" +} + +sha512sums=" +c61da3f644c2f587079fd717d4ef566861f20224f287906ef5b6d07169bc5f02aef7974afd8d4441267a92417a4fd0c7edda562b8f0cf2fc104c91fc0f5f85ff yadm-3.2.2.tar.gz +" diff --git a/testing/freetube/APKBUILD b/testing/freetube/APKBUILD new file mode 100644 index 0000000..d10ea9e --- /dev/null +++ b/testing/freetube/APKBUILD @@ -0,0 +1,52 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +pkgname=freetube +pkgver=0.19.1 +pkgrel=0 +pkgdesc="An open source desktop YouTube player built with privacy in mind." +arch="x86_64 aarch64" # blocked by electron +license="AGPL-3.0-only" +depends=" + electron + font-roboto + " +makedepends=" + npm + yarn + " +url="https://freetubeapp.io" +source=" + $pkgname-$pkgver.tar.gz::https://github.com/FreeTubeApp/FreeTube/archive/v$pkgver-beta.tar.gz + freetube.sh + freetube.desktop + electron27.patch + package-only-necessary.patch + disable-asar.patch + " +options="net !check" # No testsuite +builddir="$srcdir"/FreeTube-$pkgver-beta + +build() { + yarn --cache-folder "$srcdir"/yarn-cache install + yarn --cache-folder "$srcdir"/yarn-cache --frozen-lockfile build +} + +package() { + # directory creation + program copy + install -dm755 "$pkgdir"/usr/lib + cp -r "$builddir"/build/linux-unpacked/resources/app "$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 "$srcdir"/freetube.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop +} + +sha512sums=" +2b607754092af7239e7afcc441d86009dba1295bf6f836ab0f2fe9ceffb3045c7da1e4d175a25aa72179241ea62d4905185c6990641213e8e66573d4daa74bfe freetube-0.19.1.tar.gz +8508af3d983b305b9e3c8ffb478c723feb4f8301a69cd1ad588854ce13e9b51bab1b68599c2f7f8a6005e9aa8949d36d057a3660d70e4acf2f4d125e5f8ef136 freetube.sh +0b74e115852e71f665730a09e4d06a07fd3ae68fbc9bf8aaf280a32b70298910c692c99535cd2294df95394ad9b3b9f4a127bb6c9d50824946895dbb54649872 freetube.desktop +f12c19969981fe22c05d14007d6d9900e854757119ab16b5af8185d94850f3d96b0e22ef03bddc776e47088bc3de88d86bcd631e5e15fb74616f26b021b2a93f electron27.patch +0869c3de3b93b92b8964d3baffa3dc3cf584cd1185af29104cad7bd928c39d9bc30209ed6113053afe96ca624f72fd3cc44de241f96f1cb757f16908b037ad0f package-only-necessary.patch +67107797825cbb98cc3a46e288fe92e06e0cc91b1a44a10edcf68045d06c9679c587bd2706051ce0b109091295247b5e8ec572297cd0c72532afd529cf56449d disable-asar.patch +" diff --git a/testing/freetube/disable-asar.patch b/testing/freetube/disable-asar.patch new file mode 100644 index 0000000..db6c913 --- /dev/null +++ b/testing/freetube/disable-asar.patch @@ -0,0 +1,26 @@ +From 913f1a251bee06fc8e8380b9c5e5ac3ceadcb876 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Fri, 12 Aug 2022 22:34:57 -0400 +Subject: [PATCH 1/1] disable-asar + +--- + package.json | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/package.json b/package.json +index 842bdda8..a82a1ec3 100644 +--- a/package.json ++++ b/package.json +@@ -18,6 +18,9 @@ + "bugs": { + "url": "https://github.com/FreeTubeApp/FreeTube/issues" + }, ++ "build": { ++ "asar" : false ++ }, + "scripts": { + "build": "run-s rebuild:electron pack build-release", + "build:arm64": "run-s rebuild:electron pack build-release:arm64", +-- +2.36.2 + diff --git a/testing/freetube/electron27.patch b/testing/freetube/electron27.patch new file mode 100644 index 0000000..72e065b --- /dev/null +++ b/testing/freetube/electron27.patch @@ -0,0 +1,6303 @@ +diff --git a/package.json.orig b/package.json +index e51a34f..5f9e4b8 100644 +--- a/package.json.orig ++++ b/package.json +@@ -90,7 +90,7 @@ + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", +- "electron": "^22.3.25", ++ "electron": "^27.0.0", + "electron-builder": "^24.6.4", + "eslint": "^8.50.0", + "eslint-config-prettier": "^9.0.0", +diff --git a/yarn.lock.orig b/yarn.lock +index f82875a..48b7310 100644 +--- a/yarn.lock.orig ++++ b/yarn.lock +@@ -2,10 +2,10 @@ + # yarn lockfile v1 + + +-"7zip-bin@~5.1.1": +- version "5.1.1" +- resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" +- integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== ++"7zip-bin@~5.2.0": ++ version "5.2.0" ++ resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.2.0.tgz#7a03314684dd6572b7dfa89e68ce31d60286854d" ++ integrity sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A== + + "@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" +@@ -13,41 +13,41 @@ + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + + "@ampproject/remapping@^2.2.0": +- version "2.2.0" +- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" +- integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== ++ version "2.2.1" ++ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" ++ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: +- "@jridgewell/gen-mapping" "^0.1.0" ++ "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13": +- version "7.22.13" +- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" +- integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== ++"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" ++ integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== + dependencies: +- "@babel/highlight" "^7.22.13" ++ "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +-"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": +- version "7.22.20" +- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" +- integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== ++"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" ++ integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== + + "@babel/core@^7.23.0": +- version "7.23.0" +- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" +- integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" ++ integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" +- "@babel/generator" "^7.23.0" ++ "@babel/generator" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" +- "@babel/helper-module-transforms" "^7.23.0" +- "@babel/helpers" "^7.23.0" +- "@babel/parser" "^7.23.0" ++ "@babel/helper-module-transforms" "^7.23.3" ++ "@babel/helpers" "^7.23.2" ++ "@babel/parser" "^7.23.3" + "@babel/template" "^7.22.15" +- "@babel/traverse" "^7.23.0" +- "@babel/types" "^7.23.0" ++ "@babel/traverse" "^7.23.3" ++ "@babel/types" "^7.23.3" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" +@@ -55,31 +55,24 @@ + semver "^6.3.1" + + "@babel/eslint-parser@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" +- integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca" ++ integrity sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +-"@babel/generator@^7.23.0": +- version "7.23.0" +- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" +- integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== ++"@babel/generator@^7.23.3", "@babel/generator@^7.23.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.4.tgz#4a41377d8566ec18f807f42962a7f3551de83d1c" ++ integrity sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ== + dependencies: +- "@babel/types" "^7.23.0" ++ "@babel/types" "^7.23.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +-"@babel/helper-annotate-as-pure@^7.18.6": +- version "7.18.6" +- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" +- integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== +- dependencies: +- "@babel/types" "^7.18.6" +- + "@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" +@@ -87,14 +80,14 @@ + dependencies: + "@babel/types" "^7.22.5" + +-"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" +- integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== ++"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": ++ version "7.22.15" ++ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" ++ integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: +- "@babel/types" "^7.22.5" ++ "@babel/types" "^7.22.15" + +-"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": ++"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== +@@ -105,70 +98,34 @@ + lru-cache "^5.1.1" + semver "^6.3.1" + +-"@babel/helper-create-class-features-plugin@^7.18.6": +- version "7.18.13" +- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298" +- integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== +- dependencies: +- "@babel/helper-annotate-as-pure" "^7.18.6" +- "@babel/helper-environment-visitor" "^7.18.9" +- "@babel/helper-function-name" "^7.18.9" +- "@babel/helper-member-expression-to-functions" "^7.18.9" +- "@babel/helper-optimise-call-expression" "^7.18.6" +- "@babel/helper-replace-supers" "^7.18.9" +- "@babel/helper-split-export-declaration" "^7.18.6" +- +-"@babel/helper-create-class-features-plugin@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz#4078686740459eeb4af3494a273ac09148dfb213" +- integrity sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ== ++"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15": ++ version "7.22.15" ++ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" ++ integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" +- "@babel/helper-member-expression-to-functions" "^7.22.5" ++ "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +-"@babel/helper-create-class-features-plugin@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz#2192a1970ece4685fbff85b48da2c32fcb130b7c" +- integrity sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q== +- dependencies: +- "@babel/helper-annotate-as-pure" "^7.22.5" +- "@babel/helper-environment-visitor" "^7.22.5" +- "@babel/helper-function-name" "^7.22.5" +- "@babel/helper-member-expression-to-functions" "^7.22.5" +- "@babel/helper-optimise-call-expression" "^7.22.5" +- "@babel/helper-replace-supers" "^7.22.5" +- "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +- "@babel/helper-split-export-declaration" "^7.22.5" +- semver "^6.3.0" +- +-"@babel/helper-create-regexp-features-plugin@^7.18.6": +- version "7.18.6" +- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" +- integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== +- dependencies: +- "@babel/helper-annotate-as-pure" "^7.18.6" +- regexpu-core "^5.1.0" +- +-"@babel/helper-create-regexp-features-plugin@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz#bb2bf0debfe39b831986a4efbf4066586819c6e4" +- integrity sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A== ++"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": ++ version "7.22.15" ++ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" ++ integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" +- semver "^6.3.0" ++ semver "^6.3.1" + +-"@babel/helper-define-polyfill-provider@^0.4.2": +- version "0.4.2" +- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" +- integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== ++"@babel/helper-define-polyfill-provider@^0.4.3": ++ version "0.4.3" ++ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" ++ integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" +@@ -176,38 +133,12 @@ + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +-"@babel/helper-environment-visitor@^7.18.9": +- version "7.18.9" +- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" +- integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +- +-"@babel/helper-environment-visitor@^7.22.20": ++"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +-"@babel/helper-environment-visitor@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" +- integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +- +-"@babel/helper-function-name@^7.18.9": +- version "7.18.9" +- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" +- integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== +- dependencies: +- "@babel/template" "^7.18.6" +- "@babel/types" "^7.18.9" +- +-"@babel/helper-function-name@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" +- integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +- dependencies: +- "@babel/template" "^7.22.5" +- "@babel/types" "^7.22.5" +- +-"@babel/helper-function-name@^7.23.0": ++"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== +@@ -222,19 +153,12 @@ + dependencies: + "@babel/types" "^7.22.5" + +-"@babel/helper-member-expression-to-functions@^7.18.9": +- version "7.18.9" +- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" +- integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== ++"@babel/helper-member-expression-to-functions@^7.22.15": ++ version "7.23.0" ++ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" ++ integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: +- "@babel/types" "^7.18.9" +- +-"@babel/helper-member-expression-to-functions@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" +- integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== +- dependencies: +- "@babel/types" "^7.22.5" ++ "@babel/types" "^7.23.0" + + "@babel/helper-module-imports@^7.22.15": + version "7.22.15" +@@ -243,17 +167,10 @@ + dependencies: + "@babel/types" "^7.22.15" + +-"@babel/helper-module-imports@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" +- integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +- dependencies: +- "@babel/types" "^7.22.5" +- +-"@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.23.0": +- version "7.23.0" +- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" +- integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== ++"@babel/helper-module-transforms@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" ++ integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" +@@ -261,13 +178,6 @@ + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +-"@babel/helper-optimise-call-expression@^7.18.6": +- version "7.18.6" +- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" +- integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== +- dependencies: +- "@babel/types" "^7.18.6" +- + "@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" +@@ -280,55 +190,22 @@ + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +-"@babel/helper-remap-async-to-generator@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz#14a38141a7bf2165ad38da61d61cf27b43015da2" +- integrity sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g== ++"@babel/helper-remap-async-to-generator@^7.22.20": ++ version "7.22.20" ++ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" ++ integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" +- "@babel/helper-environment-visitor" "^7.22.5" +- "@babel/helper-wrap-function" "^7.22.5" +- "@babel/types" "^7.22.5" ++ "@babel/helper-environment-visitor" "^7.22.20" ++ "@babel/helper-wrap-function" "^7.22.20" + +-"@babel/helper-remap-async-to-generator@^7.22.9": +- version "7.22.9" +- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" +- integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== ++"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": ++ version "7.22.20" ++ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" ++ integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: +- "@babel/helper-annotate-as-pure" "^7.22.5" +- "@babel/helper-environment-visitor" "^7.22.5" +- "@babel/helper-wrap-function" "^7.22.9" +- +-"@babel/helper-replace-supers@^7.18.9": +- version "7.18.9" +- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" +- integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== +- dependencies: +- "@babel/helper-environment-visitor" "^7.18.9" +- "@babel/helper-member-expression-to-functions" "^7.18.9" +- "@babel/helper-optimise-call-expression" "^7.18.6" +- "@babel/traverse" "^7.18.9" +- "@babel/types" "^7.18.9" +- +-"@babel/helper-replace-supers@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz#71bc5fb348856dea9fdc4eafd7e2e49f585145dc" +- integrity sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg== +- dependencies: +- "@babel/helper-environment-visitor" "^7.22.5" +- "@babel/helper-member-expression-to-functions" "^7.22.5" +- "@babel/helper-optimise-call-expression" "^7.22.5" +- "@babel/template" "^7.22.5" +- "@babel/traverse" "^7.22.5" +- "@babel/types" "^7.22.5" +- +-"@babel/helper-replace-supers@^7.22.9": +- version "7.22.9" +- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" +- integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== +- dependencies: +- "@babel/helper-environment-visitor" "^7.22.5" +- "@babel/helper-member-expression-to-functions" "^7.22.5" ++ "@babel/helper-environment-visitor" "^7.22.20" ++ "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + + "@babel/helper-simple-access@^7.22.5": +@@ -345,20 +222,6 @@ + dependencies: + "@babel/types" "^7.22.5" + +-"@babel/helper-split-export-declaration@^7.18.6": +- version "7.18.6" +- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" +- integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== +- dependencies: +- "@babel/types" "^7.18.6" +- +-"@babel/helper-split-export-declaration@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08" +- integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ== +- dependencies: +- "@babel/types" "^7.22.5" +- + "@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" +@@ -366,83 +229,76 @@ + dependencies: + "@babel/types" "^7.22.5" + +-"@babel/helper-string-parser@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" +- integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== ++"@babel/helper-string-parser@^7.23.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" ++ integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +-"@babel/helper-validator-identifier@^7.22.20": ++"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +-"@babel/helper-validator-identifier@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" +- integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +- + "@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +-"@babel/helper-wrap-function@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz#44d205af19ed8d872b4eefb0d2fa65f45eb34f06" +- integrity sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw== ++"@babel/helper-wrap-function@^7.22.20": ++ version "7.22.20" ++ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" ++ integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" +- "@babel/template" "^7.22.5" +- "@babel/traverse" "^7.22.5" +- "@babel/types" "^7.22.5" +- +-"@babel/helper-wrap-function@^7.22.9": +- version "7.22.10" +- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" +- integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ== +- dependencies: +- "@babel/helper-function-name" "^7.22.5" +- "@babel/template" "^7.22.5" +- "@babel/types" "^7.22.10" ++ "@babel/template" "^7.22.15" ++ "@babel/types" "^7.22.19" + +-"@babel/helpers@^7.23.0": +- version "7.23.1" +- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" +- integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== ++"@babel/helpers@^7.23.2": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.4.tgz#7d2cfb969aa43222032193accd7329851facf3c1" ++ integrity sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw== + dependencies: + "@babel/template" "^7.22.15" +- "@babel/traverse" "^7.23.0" +- "@babel/types" "^7.23.0" ++ "@babel/traverse" "^7.23.4" ++ "@babel/types" "^7.23.4" + +-"@babel/highlight@^7.22.13": +- version "7.22.13" +- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16" +- integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ== ++"@babel/highlight@^7.23.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" ++ integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: +- "@babel/helper-validator-identifier" "^7.22.5" ++ "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +-"@babel/parser@^7.18.4", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": +- version "7.23.0" +- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" +- integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== ++"@babel/parser@^7.18.4", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3", "@babel/parser@^7.23.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" ++ integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== + +-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" +- integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== ++"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" ++ integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" +- integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== ++"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" ++ integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +- "@babel/plugin-transform-optional-chaining" "^7.22.15" ++ "@babel/plugin-transform-optional-chaining" "^7.23.3" ++ ++"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" ++ integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== ++ dependencies: ++ "@babel/helper-environment-visitor" "^7.22.20" ++ "@babel/helper-plugin-utils" "^7.22.5" + + "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" +@@ -492,17 +348,17 @@ + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +-"@babel/plugin-syntax-import-assertions@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" +- integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== ++"@babel/plugin-syntax-import-assertions@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" ++ integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-syntax-import-attributes@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" +- integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== ++"@babel/plugin-syntax-import-attributes@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" ++ integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +@@ -584,211 +440,211 @@ + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +-"@babel/plugin-transform-arrow-functions@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" +- integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== ++"@babel/plugin-transform-arrow-functions@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" ++ integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-async-generator-functions@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" +- integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== ++"@babel/plugin-transform-async-generator-functions@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz#93ac8e3531f347fba519b4703f9ff2a75c6ae27a" ++ integrity sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== + dependencies: +- "@babel/helper-environment-visitor" "^7.22.5" ++ "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" +- "@babel/helper-remap-async-to-generator" "^7.22.9" ++ "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +-"@babel/plugin-transform-async-to-generator@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" +- integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== ++"@babel/plugin-transform-async-to-generator@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" ++ integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: +- "@babel/helper-module-imports" "^7.22.5" ++ "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" +- "@babel/helper-remap-async-to-generator" "^7.22.5" ++ "@babel/helper-remap-async-to-generator" "^7.22.20" + +-"@babel/plugin-transform-block-scoped-functions@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" +- integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== ++"@babel/plugin-transform-block-scoped-functions@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" ++ integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-block-scoping@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz#494eb82b87b5f8b1d8f6f28ea74078ec0a10a841" +- integrity sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw== ++"@babel/plugin-transform-block-scoping@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" ++ integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-class-properties@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" +- integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== ++"@babel/plugin-transform-class-properties@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" ++ integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: +- "@babel/helper-create-class-features-plugin" "^7.22.5" ++ "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-class-static-block@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" +- integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== ++"@babel/plugin-transform-class-static-block@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" ++ integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== + dependencies: +- "@babel/helper-create-class-features-plugin" "^7.22.11" ++ "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +-"@babel/plugin-transform-classes@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" +- integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== ++"@babel/plugin-transform-classes@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" ++ integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" +- "@babel/helper-environment-visitor" "^7.22.5" +- "@babel/helper-function-name" "^7.22.5" ++ "@babel/helper-environment-visitor" "^7.22.20" ++ "@babel/helper-function-name" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" +- "@babel/helper-replace-supers" "^7.22.9" ++ "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +-"@babel/plugin-transform-computed-properties@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" +- integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== ++"@babel/plugin-transform-computed-properties@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" ++ integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" +- "@babel/template" "^7.22.5" ++ "@babel/template" "^7.22.15" + +-"@babel/plugin-transform-destructuring@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz#e7404ea5bb3387073b9754be654eecb578324694" +- integrity sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ== ++"@babel/plugin-transform-destructuring@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" ++ integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-dotall-regex@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" +- integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== ++"@babel/plugin-transform-dotall-regex@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" ++ integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== + dependencies: +- "@babel/helper-create-regexp-features-plugin" "^7.22.5" ++ "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-duplicate-keys@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" +- integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== ++"@babel/plugin-transform-duplicate-keys@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" ++ integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-dynamic-import@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" +- integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== ++"@babel/plugin-transform-dynamic-import@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" ++ integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +-"@babel/plugin-transform-exponentiation-operator@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" +- integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== ++"@babel/plugin-transform-exponentiation-operator@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" ++ integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== + dependencies: +- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" ++ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-export-namespace-from@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" +- integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== ++"@babel/plugin-transform-export-namespace-from@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" ++ integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +-"@babel/plugin-transform-for-of@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" +- integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== ++"@babel/plugin-transform-for-of@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" ++ integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-function-name@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" +- integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== ++"@babel/plugin-transform-function-name@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" ++ integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== + dependencies: +- "@babel/helper-compilation-targets" "^7.22.5" +- "@babel/helper-function-name" "^7.22.5" ++ "@babel/helper-compilation-targets" "^7.22.15" ++ "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-json-strings@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" +- integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== ++"@babel/plugin-transform-json-strings@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" ++ integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +-"@babel/plugin-transform-literals@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" +- integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== ++"@babel/plugin-transform-literals@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" ++ integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-logical-assignment-operators@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" +- integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== ++"@babel/plugin-transform-logical-assignment-operators@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" ++ integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +-"@babel/plugin-transform-member-expression-literals@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" +- integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== ++"@babel/plugin-transform-member-expression-literals@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" ++ integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-modules-amd@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" +- integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== ++"@babel/plugin-transform-modules-amd@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" ++ integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== + dependencies: +- "@babel/helper-module-transforms" "^7.22.5" ++ "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-modules-commonjs@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz#b11810117ed4ee7691b29bd29fd9f3f98276034f" +- integrity sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg== ++"@babel/plugin-transform-modules-commonjs@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" ++ integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: +- "@babel/helper-module-transforms" "^7.22.15" ++ "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +-"@babel/plugin-transform-modules-systemjs@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz#3386be5875d316493b517207e8f1931d93154bb1" +- integrity sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA== ++"@babel/plugin-transform-modules-systemjs@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" ++ integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" +- "@babel/helper-module-transforms" "^7.22.9" ++ "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" +- "@babel/helper-validator-identifier" "^7.22.5" ++ "@babel/helper-validator-identifier" "^7.22.20" + +-"@babel/plugin-transform-modules-umd@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" +- integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== ++"@babel/plugin-transform-modules-umd@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" ++ integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: +- "@babel/helper-module-transforms" "^7.22.5" ++ "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + + "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": +@@ -799,198 +655,199 @@ + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-new-target@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" +- integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== ++"@babel/plugin-transform-new-target@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" ++ integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" +- integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== ++"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" ++ integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +-"@babel/plugin-transform-numeric-separator@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" +- integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== ++"@babel/plugin-transform-numeric-separator@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" ++ integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +-"@babel/plugin-transform-object-rest-spread@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" +- integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== ++"@babel/plugin-transform-object-rest-spread@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" ++ integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== + dependencies: +- "@babel/compat-data" "^7.22.9" ++ "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" +- "@babel/plugin-transform-parameters" "^7.22.15" ++ "@babel/plugin-transform-parameters" "^7.23.3" + +-"@babel/plugin-transform-object-super@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" +- integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== ++"@babel/plugin-transform-object-super@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" ++ integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" +- "@babel/helper-replace-supers" "^7.22.5" ++ "@babel/helper-replace-supers" "^7.22.20" + +-"@babel/plugin-transform-optional-catch-binding@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" +- integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== ++"@babel/plugin-transform-optional-catch-binding@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" ++ integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +-"@babel/plugin-transform-optional-chaining@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz#d7a5996c2f7ca4ad2ad16dbb74444e5c4385b1ba" +- integrity sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A== ++"@babel/plugin-transform-optional-chaining@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" ++ integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +-"@babel/plugin-transform-parameters@^7.22.15": +- version "7.22.15" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" +- integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== ++"@babel/plugin-transform-parameters@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" ++ integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-private-methods@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" +- integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== ++"@babel/plugin-transform-private-methods@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" ++ integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: +- "@babel/helper-create-class-features-plugin" "^7.22.5" ++ "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-private-property-in-object@^7.22.11": +- version "7.22.11" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" +- integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== ++"@babel/plugin-transform-private-property-in-object@^7.23.3": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" ++ integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" +- "@babel/helper-create-class-features-plugin" "^7.22.11" ++ "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +-"@babel/plugin-transform-property-literals@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" +- integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== ++"@babel/plugin-transform-property-literals@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" ++ integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-regenerator@^7.22.10": +- version "7.22.10" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" +- integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== ++"@babel/plugin-transform-regenerator@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" ++ integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +-"@babel/plugin-transform-reserved-words@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" +- integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== ++"@babel/plugin-transform-reserved-words@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" ++ integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-shorthand-properties@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" +- integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== ++"@babel/plugin-transform-shorthand-properties@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" ++ integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-spread@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" +- integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== ++"@babel/plugin-transform-spread@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" ++ integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +-"@babel/plugin-transform-sticky-regex@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" +- integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== ++"@babel/plugin-transform-sticky-regex@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" ++ integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-template-literals@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" +- integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== ++"@babel/plugin-transform-template-literals@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" ++ integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-typeof-symbol@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" +- integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== ++"@babel/plugin-transform-typeof-symbol@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" ++ integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-unicode-escapes@^7.22.10": +- version "7.22.10" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" +- integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== ++"@babel/plugin-transform-unicode-escapes@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" ++ integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-unicode-property-regex@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" +- integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== ++"@babel/plugin-transform-unicode-property-regex@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" ++ integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: +- "@babel/helper-create-regexp-features-plugin" "^7.22.5" ++ "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-unicode-regex@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" +- integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== ++"@babel/plugin-transform-unicode-regex@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" ++ integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: +- "@babel/helper-create-regexp-features-plugin" "^7.22.5" ++ "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/plugin-transform-unicode-sets-regex@^7.22.5": +- version "7.22.5" +- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" +- integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== ++"@babel/plugin-transform-unicode-sets-regex@^7.23.3": ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" ++ integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: +- "@babel/helper-create-regexp-features-plugin" "^7.22.5" ++ "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + + "@babel/preset-env@^7.22.20": +- version "7.22.20" +- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" +- integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== ++ version "7.23.3" ++ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" ++ integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== + dependencies: +- "@babel/compat-data" "^7.22.20" ++ "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" +- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" +- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" ++ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" ++ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" ++ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +- "@babel/plugin-syntax-import-assertions" "^7.22.5" +- "@babel/plugin-syntax-import-attributes" "^7.22.5" ++ "@babel/plugin-syntax-import-assertions" "^7.23.3" ++ "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +@@ -1002,59 +859,58 @@ + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" +- "@babel/plugin-transform-arrow-functions" "^7.22.5" +- "@babel/plugin-transform-async-generator-functions" "^7.22.15" +- "@babel/plugin-transform-async-to-generator" "^7.22.5" +- "@babel/plugin-transform-block-scoped-functions" "^7.22.5" +- "@babel/plugin-transform-block-scoping" "^7.22.15" +- "@babel/plugin-transform-class-properties" "^7.22.5" +- "@babel/plugin-transform-class-static-block" "^7.22.11" +- "@babel/plugin-transform-classes" "^7.22.15" +- "@babel/plugin-transform-computed-properties" "^7.22.5" +- "@babel/plugin-transform-destructuring" "^7.22.15" +- "@babel/plugin-transform-dotall-regex" "^7.22.5" +- "@babel/plugin-transform-duplicate-keys" "^7.22.5" +- "@babel/plugin-transform-dynamic-import" "^7.22.11" +- "@babel/plugin-transform-exponentiation-operator" "^7.22.5" +- "@babel/plugin-transform-export-namespace-from" "^7.22.11" +- "@babel/plugin-transform-for-of" "^7.22.15" +- "@babel/plugin-transform-function-name" "^7.22.5" +- "@babel/plugin-transform-json-strings" "^7.22.11" +- "@babel/plugin-transform-literals" "^7.22.5" +- "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" +- "@babel/plugin-transform-member-expression-literals" "^7.22.5" +- "@babel/plugin-transform-modules-amd" "^7.22.5" +- "@babel/plugin-transform-modules-commonjs" "^7.22.15" +- "@babel/plugin-transform-modules-systemjs" "^7.22.11" +- "@babel/plugin-transform-modules-umd" "^7.22.5" ++ "@babel/plugin-transform-arrow-functions" "^7.23.3" ++ "@babel/plugin-transform-async-generator-functions" "^7.23.3" ++ "@babel/plugin-transform-async-to-generator" "^7.23.3" ++ "@babel/plugin-transform-block-scoped-functions" "^7.23.3" ++ "@babel/plugin-transform-block-scoping" "^7.23.3" ++ "@babel/plugin-transform-class-properties" "^7.23.3" ++ "@babel/plugin-transform-class-static-block" "^7.23.3" ++ "@babel/plugin-transform-classes" "^7.23.3" ++ "@babel/plugin-transform-computed-properties" "^7.23.3" ++ "@babel/plugin-transform-destructuring" "^7.23.3" ++ "@babel/plugin-transform-dotall-regex" "^7.23.3" ++ "@babel/plugin-transform-duplicate-keys" "^7.23.3" ++ "@babel/plugin-transform-dynamic-import" "^7.23.3" ++ "@babel/plugin-transform-exponentiation-operator" "^7.23.3" ++ "@babel/plugin-transform-export-namespace-from" "^7.23.3" ++ "@babel/plugin-transform-for-of" "^7.23.3" ++ "@babel/plugin-transform-function-name" "^7.23.3" ++ "@babel/plugin-transform-json-strings" "^7.23.3" ++ "@babel/plugin-transform-literals" "^7.23.3" ++ "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" ++ "@babel/plugin-transform-member-expression-literals" "^7.23.3" ++ "@babel/plugin-transform-modules-amd" "^7.23.3" ++ "@babel/plugin-transform-modules-commonjs" "^7.23.3" ++ "@babel/plugin-transform-modules-systemjs" "^7.23.3" ++ "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" +- "@babel/plugin-transform-new-target" "^7.22.5" +- "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" +- "@babel/plugin-transform-numeric-separator" "^7.22.11" +- "@babel/plugin-transform-object-rest-spread" "^7.22.15" +- "@babel/plugin-transform-object-super" "^7.22.5" +- "@babel/plugin-transform-optional-catch-binding" "^7.22.11" +- "@babel/plugin-transform-optional-chaining" "^7.22.15" +- "@babel/plugin-transform-parameters" "^7.22.15" +- "@babel/plugin-transform-private-methods" "^7.22.5" +- "@babel/plugin-transform-private-property-in-object" "^7.22.11" +- "@babel/plugin-transform-property-literals" "^7.22.5" +- "@babel/plugin-transform-regenerator" "^7.22.10" +- "@babel/plugin-transform-reserved-words" "^7.22.5" +- "@babel/plugin-transform-shorthand-properties" "^7.22.5" +- "@babel/plugin-transform-spread" "^7.22.5" +- "@babel/plugin-transform-sticky-regex" "^7.22.5" +- "@babel/plugin-transform-template-literals" "^7.22.5" +- "@babel/plugin-transform-typeof-symbol" "^7.22.5" +- "@babel/plugin-transform-unicode-escapes" "^7.22.10" +- "@babel/plugin-transform-unicode-property-regex" "^7.22.5" +- "@babel/plugin-transform-unicode-regex" "^7.22.5" +- "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" ++ "@babel/plugin-transform-new-target" "^7.23.3" ++ "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" ++ "@babel/plugin-transform-numeric-separator" "^7.23.3" ++ "@babel/plugin-transform-object-rest-spread" "^7.23.3" ++ "@babel/plugin-transform-object-super" "^7.23.3" ++ "@babel/plugin-transform-optional-catch-binding" "^7.23.3" ++ "@babel/plugin-transform-optional-chaining" "^7.23.3" ++ "@babel/plugin-transform-parameters" "^7.23.3" ++ "@babel/plugin-transform-private-methods" "^7.23.3" ++ "@babel/plugin-transform-private-property-in-object" "^7.23.3" ++ "@babel/plugin-transform-property-literals" "^7.23.3" ++ "@babel/plugin-transform-regenerator" "^7.23.3" ++ "@babel/plugin-transform-reserved-words" "^7.23.3" ++ "@babel/plugin-transform-shorthand-properties" "^7.23.3" ++ "@babel/plugin-transform-spread" "^7.23.3" ++ "@babel/plugin-transform-sticky-regex" "^7.23.3" ++ "@babel/plugin-transform-template-literals" "^7.23.3" ++ "@babel/plugin-transform-typeof-symbol" "^7.23.3" ++ "@babel/plugin-transform-unicode-escapes" "^7.23.3" ++ "@babel/plugin-transform-unicode-property-regex" "^7.23.3" ++ "@babel/plugin-transform-unicode-regex" "^7.23.3" ++ "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" +- "@babel/types" "^7.22.19" +- babel-plugin-polyfill-corejs2 "^0.4.5" +- babel-plugin-polyfill-corejs3 "^0.8.3" +- babel-plugin-polyfill-regenerator "^0.5.2" ++ babel-plugin-polyfill-corejs2 "^0.4.6" ++ babel-plugin-polyfill-corejs3 "^0.8.5" ++ babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + +@@ -1073,13 +929,13 @@ + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + + "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +- version "7.17.9" +- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" +- integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e" ++ integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg== + dependencies: +- regenerator-runtime "^0.13.4" ++ regenerator-runtime "^0.14.0" + +-"@babel/template@^7.18.6", "@babel/template@^7.22.15", "@babel/template@^7.22.5": ++"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +@@ -1088,45 +944,45 @@ + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +-"@babel/traverse@^7.18.9", "@babel/traverse@^7.22.5", "@babel/traverse@^7.23.0": +- version "7.23.0" +- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" +- integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== ++"@babel/traverse@^7.23.3", "@babel/traverse@^7.23.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.4.tgz#c2790f7edf106d059a0098770fe70801417f3f85" ++ integrity sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg== + dependencies: +- "@babel/code-frame" "^7.22.13" +- "@babel/generator" "^7.23.0" ++ "@babel/code-frame" "^7.23.4" ++ "@babel/generator" "^7.23.4" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" +- "@babel/parser" "^7.23.0" +- "@babel/types" "^7.23.0" ++ "@babel/parser" "^7.23.4" ++ "@babel/types" "^7.23.4" + debug "^4.1.0" + globals "^11.1.0" + +-"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.22.10", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": +- version "7.23.0" +- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" +- integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== ++"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.4.4": ++ version "7.23.4" ++ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e" ++ integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== + dependencies: +- "@babel/helper-string-parser" "^7.22.5" ++ "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + + "@csstools/css-parser-algorithms@^2.3.1": +- version "2.3.1" +- resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz#ec4fc764ba45d2bb7ee2774667e056aa95003f3a" +- integrity sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA== ++ version "2.3.2" ++ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.2.tgz#1e0d581dbf4518cb3e939c3b863cb7180c8cedad" ++ integrity sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA== + + "@csstools/css-tokenizer@^2.2.0": +- version "2.2.0" +- resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz#9d70e6dcbe94e44c7400a2929928db35c4de32b5" +- integrity sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA== ++ version "2.2.1" ++ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.2.1.tgz#9dc431c9a5f61087af626e41ac2a79cce7bb253d" ++ integrity sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg== + + "@csstools/media-query-list-parser@^2.1.4": +- version "2.1.4" +- resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz#0017f99945f6c16dd81a7aacf6821770933c3a5c" +- integrity sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw== ++ version "2.1.5" ++ resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.5.tgz#94bc8b3c3fd7112a40b7bf0b483e91eba0654a0f" ++ integrity sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ== + + "@csstools/selector-specificity@^3.0.0": + version "3.0.0" +@@ -1154,19 +1010,18 @@ + postcss "^8.4.19" + + "@electron/asar@^3.2.1": +- version "3.2.4" +- resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.4.tgz#7e8635a3c4f6d8b3f8ae6efaf5ecb9fbf3bd9864" +- integrity sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g== ++ version "3.2.8" ++ resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.8.tgz#2ea722f3452583dbd4ffdcc4b4f5dc903f1d8178" ++ integrity sha512-cmskk5M06ewHMZAplSiF4AlME3IrnnZhKnWbtwKVLRkdJkKyUVjMLhDIiPIx/+6zQWVlKX/LtmK9xDme7540Sg== + dependencies: +- chromium-pickle-js "^0.2.0" + commander "^5.0.0" + glob "^7.1.6" + minimatch "^3.0.4" + + "@electron/get@^2.0.0": +- version "2.0.2" +- resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e" +- integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g== ++ version "2.0.3" ++ resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960" ++ integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" +@@ -1219,15 +1074,15 @@ + dependencies: + eslint-visitor-keys "^3.3.0" + +-"@eslint-community/regexpp@^4.5.0", "@eslint-community/regexpp@^4.6.1": +- version "4.6.2" +- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" +- integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== ++"@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": ++ version "4.10.0" ++ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" ++ integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +-"@eslint/eslintrc@^2.1.2": +- version "2.1.2" +- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" +- integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== ++"@eslint/eslintrc@^2.1.3": ++ version "2.1.3" ++ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" ++ integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" +@@ -1239,10 +1094,15 @@ + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +-"@eslint/js@8.50.0": +- version "8.50.0" +- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" +- integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== ++"@eslint/js@8.54.0": ++ version "8.54.0" ++ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.54.0.tgz#4fab9a2ff7860082c304f750e94acd644cf984cf" ++ integrity sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ== ++ ++"@fastify/busboy@^2.0.0": ++ version "2.1.0" ++ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" ++ integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + + "@fortawesome/fontawesome-common-types@6.4.2": + version "6.4.2" +@@ -1275,12 +1135,12 @@ + resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.10.tgz#b10721425d7efdee6d83fba21c64cad86fa51904" + integrity sha512-OTETSXz+3ygD2OK2/vy82cmUBpuJqeOAg4gfnnv+f2Rir1tDIhQg026Q3NQxznq83ZLz8iNqGG9XJm26inpDeg== + +-"@humanwhocodes/config-array@^0.11.11": +- version "0.11.11" +- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" +- integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== ++"@humanwhocodes/config-array@^0.11.13": ++ version "0.11.13" ++ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" ++ integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + dependencies: +- "@humanwhocodes/object-schema" "^1.2.1" ++ "@humanwhocodes/object-schema" "^2.0.1" + debug "^4.1.1" + minimatch "^3.0.5" + +@@ -1289,10 +1149,10 @@ + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +-"@humanwhocodes/object-schema@^1.2.1": +- version "1.2.1" +- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" +- integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== ++"@humanwhocodes/object-schema@^2.0.1": ++ version "2.0.1" ++ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" ++ integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + + "@isaacs/cliui@^8.0.2": + version "8.0.2" +@@ -1306,77 +1166,64 @@ + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +-"@jest/schemas@^29.4.3": +- version "29.4.3" +- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" +- integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== ++"@jest/schemas@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" ++ integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: +- "@sinclair/typebox" "^0.25.16" ++ "@sinclair/typebox" "^0.27.8" + +-"@jest/types@^29.5.0": +- version "29.5.0" +- resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" +- integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== ++"@jest/types@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" ++ integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: +- "@jest/schemas" "^29.4.3" ++ "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +-"@jridgewell/gen-mapping@^0.1.0": +- version "0.1.1" +- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" +- integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== +- dependencies: +- "@jridgewell/set-array" "^1.0.0" +- "@jridgewell/sourcemap-codec" "^1.4.10" +- + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +- version "0.3.2" +- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" +- integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== ++ version "0.3.3" ++ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" ++ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +-"@jridgewell/resolve-uri@3.1.0": +- version "3.1.0" +- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" +- integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +- +-"@jridgewell/set-array@^1.0.0": +- version "1.1.1" +- resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" +- integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== ++"@jridgewell/resolve-uri@^3.1.0": ++ version "3.1.1" ++ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" ++ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + + "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +-"@jridgewell/source-map@^0.3.2": +- version "0.3.2" +- resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" +- integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== ++"@jridgewell/source-map@^0.3.3": ++ version "0.3.5" ++ resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" ++ integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +-"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +- version "1.4.14" +- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" +- integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== ++"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": ++ version "1.4.15" ++ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" ++ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + + "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": +- version "0.3.18" +- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" +- integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== ++ version "0.3.20" ++ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" ++ integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: +- "@jridgewell/resolve-uri" "3.1.0" +- "@jridgewell/sourcemap-codec" "1.4.14" ++ "@jridgewell/resolve-uri" "^3.1.0" ++ "@jridgewell/sourcemap-codec" "^1.4.14" + + "@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" +@@ -1460,16 +1307,16 @@ + util "^0.12.4" + + "@silvermine/videojs-quality-selector@^1.3.0": +- version "1.3.0" +- resolved "https://registry.yarnpkg.com/@silvermine/videojs-quality-selector/-/videojs-quality-selector-1.3.0.tgz#6527d73929edea60419b0a189d4babbc21cb2600" +- integrity sha512-Ps63kVXHyod0vNEEtogkVtE+8I6ozMTcRowAPqKF1Ggjr0yl7d8L2fGCnHL919MV2tBRVxnGpYaMmVVcRq6Hjw== ++ version "1.3.1" ++ resolved "https://registry.yarnpkg.com/@silvermine/videojs-quality-selector/-/videojs-quality-selector-1.3.1.tgz#23307dd3d5be442f7aa127c01820f16a3d9476a3" ++ integrity sha512-uo6gs2HVG2TD0bpZAl0AT6RkDXzk9PnAxtmmW5zXexa2uJvkdFT64QvJoMlEUd2FUUwqYqqAuWGFDJdBh5+KcQ== + dependencies: + underscore "1.13.1" + +-"@sinclair/typebox@^0.25.16": +- version "0.25.24" +- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" +- integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== ++"@sinclair/typebox@^0.27.8": ++ version "0.27.8" ++ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" ++ integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + + "@sindresorhus/is@^4.0.0": + version "4.6.0" +@@ -1494,17 +1341,17 @@ + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + + "@types/body-parser@*": +- version "1.19.2" +- resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" +- integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== ++ version "1.19.5" ++ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" ++ integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + + "@types/bonjour@^3.5.9": +- version "3.5.10" +- resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" +- integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== ++ version "3.5.13" ++ resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" ++ integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +@@ -1519,64 +1366,65 @@ + "@types/responselike" "^1.0.0" + + "@types/connect-history-api-fallback@^1.3.5": +- version "1.3.5" +- resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" +- integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== ++ version "1.5.4" ++ resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" ++ integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + + "@types/connect@*": +- version "3.4.35" +- resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" +- integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== ++ version "3.4.38" ++ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" ++ integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + + "@types/debug@^4.1.6": +- version "4.1.7" +- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" +- integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== ++ version "4.1.12" ++ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" ++ integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + + "@types/eslint-scope@^3.7.3": +- version "3.7.3" +- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" +- integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== ++ version "3.7.7" ++ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" ++ integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + + "@types/eslint@*": +- version "8.4.2" +- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" +- integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== ++ version "8.44.7" ++ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.7.tgz#430b3cc96db70c81f405e6a08aebdb13869198f5" ++ integrity sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + + "@types/estree@*", "@types/estree@^1.0.0": +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" +- integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== ++ version "1.0.5" ++ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" ++ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +-"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": +- version "4.17.28" +- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" +- integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== ++"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": ++ version "4.17.41" ++ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" ++ integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" ++ "@types/send" "*" + + "@types/express@*", "@types/express@^4.17.13": +- version "4.17.13" +- resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" +- integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== ++ version "4.17.21" ++ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" ++ integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" +- "@types/express-serve-static-core" "^4.17.18" ++ "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +@@ -1593,45 +1441,50 @@ + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + + "@types/http-cache-semantics@*": +- version "4.0.1" +- resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" +- integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== ++ version "4.0.4" ++ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" ++ integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== ++ ++"@types/http-errors@*": ++ version "2.0.4" ++ resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" ++ integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + + "@types/http-proxy@^1.17.8": +- version "1.17.9" +- resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" +- integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== ++ version "1.17.14" ++ resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" ++ integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +- version "2.0.4" +- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" +- integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== ++ version "2.0.6" ++ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" ++ integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + + "@types/istanbul-lib-report@*": +- version "3.0.0" +- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" +- integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== ++ version "3.0.3" ++ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" ++ integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + + "@types/istanbul-reports@^3.0.0": +- version "3.0.1" +- resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" +- integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== ++ version "3.0.4" ++ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" ++ integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + + "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +- version "7.0.11" +- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" +- integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== ++ version "7.0.15" ++ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" ++ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + + "@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" +- integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= ++ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + + "@types/keyv@^3.1.4": + version "3.1.4" +@@ -1641,57 +1494,73 @@ + "@types/node" "*" + + "@types/mime@*": +- version "3.0.1" +- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" +- integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== ++ version "3.0.4" ++ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" ++ integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== ++ ++"@types/mime@^1": ++ version "1.3.5" ++ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" ++ integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + + "@types/minimist@^1.2.2": +- version "1.2.2" +- resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" +- integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== ++ version "1.2.5" ++ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" ++ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + + "@types/ms@*": +- version "0.7.31" +- resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" +- integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== ++ version "0.7.34" ++ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" ++ integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== ++ ++"@types/node-forge@^1.3.0": ++ version "1.3.10" ++ resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.10.tgz#62a19d4f75a8b03290578c2b04f294b1a5a71b07" ++ integrity sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw== ++ dependencies: ++ "@types/node" "*" + + "@types/node@*": +- version "17.0.33" +- resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.33.tgz#3c1879b276dc63e73030bb91165e62a4509cd506" +- integrity sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ== ++ version "20.10.0" ++ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" ++ integrity sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ== ++ dependencies: ++ undici-types "~5.26.4" + +-"@types/node@^16.11.26": +- version "16.11.45" +- resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810" +- integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ== ++"@types/node@^18.11.18": ++ version "18.18.13" ++ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.13.tgz#ae0f76c0bfe79d8fad0f910b78ae3e59b333c6e8" ++ integrity sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g== ++ dependencies: ++ undici-types "~5.26.4" + + "@types/normalize-package-data@^2.4.0": +- version "2.4.1" +- resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" +- integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== ++ version "2.4.4" ++ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" ++ integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + + "@types/plist@^3.0.1": +- version "3.0.2" +- resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" +- integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== ++ version "3.0.5" ++ resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.5.tgz#9a0c49c0f9886c8c8696a7904dd703f6284036e0" ++ integrity sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA== + dependencies: + "@types/node" "*" + xmlbuilder ">=11.0.1" + + "@types/qs@*": +- version "6.9.7" +- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" +- integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== ++ version "6.9.10" ++ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8" ++ integrity sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw== + + "@types/range-parser@*": +- version "1.2.4" +- resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" +- integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== ++ version "1.2.7" ++ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" ++ integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + + "@types/responselike@^1.0.0": +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" +- integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== ++ version "1.0.3" ++ resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" ++ integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + +@@ -1700,59 +1569,73 @@ + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + ++"@types/send@*": ++ version "0.17.4" ++ resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" ++ integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== ++ dependencies: ++ "@types/mime" "^1" ++ "@types/node" "*" ++ + "@types/serve-index@^1.9.1": +- version "1.9.1" +- resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" +- integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== ++ version "1.9.4" ++ resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" ++ integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + + "@types/serve-static@*", "@types/serve-static@^1.13.10": +- version "1.15.0" +- resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" +- integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== ++ version "1.15.5" ++ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" ++ integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== + dependencies: ++ "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + + "@types/sockjs@^0.3.33": +- version "0.3.33" +- resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" +- integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== ++ version "0.3.36" ++ resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" ++ integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + + "@types/verror@^1.10.3": +- version "1.10.5" +- resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" +- integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== ++ version "1.10.9" ++ resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.9.tgz#420c32adb9a2dd50b3db4c8f96501e05a0e72941" ++ integrity sha512-MLx9Z+9lGzwEuW16ubGeNkpBDE84RpB/NyGgg6z2BTpWzKkGU451cAY3UkUzZEp72RHF585oJ3V8JVNqIplcAQ== + + "@types/ws@^8.5.5": +- version "8.5.5" +- resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" +- integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== ++ version "8.5.10" ++ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" ++ integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + + "@types/yargs-parser@*": +- version "21.0.0" +- resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" +- integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== ++ version "21.0.3" ++ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" ++ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + + "@types/yargs@^17.0.8": +- version "17.0.13" +- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" +- integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== ++ version "17.0.32" ++ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" ++ integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + + "@types/yauzl@^2.9.1": +- version "2.10.0" +- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" +- integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== ++ version "2.10.3" ++ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" ++ integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + ++"@ungap/structured-clone@^1.2.0": ++ version "1.2.0" ++ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" ++ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== ++ + "@videojs/http-streaming@2.16.2": + version "2.16.2" + resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-2.16.2.tgz#a9be925b4e368a41dbd67d49c4f566715169b84b" +@@ -1767,6 +1650,20 @@ + mux.js "6.0.1" + video.js "^6 || ^7" + ++"@videojs/http-streaming@3.7.0": ++ version "3.7.0" ++ resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-3.7.0.tgz#48ece0582602e24a3b403c2410bbcdf320bfcccd" ++ integrity sha512-5uLFKBL8CvD56dxxJyuxqB5CY0tdoa4SE9KbXakeiAy6iFBUEPvTr2YGLKEWvQ8Lojs1wl+FQndLdv+GO7t9Fw== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@videojs/vhs-utils" "4.0.0" ++ aes-decrypter "4.0.1" ++ global "^4.4.0" ++ m3u8-parser "^7.1.0" ++ mpd-parser "^1.2.2" ++ mux.js "7.0.1" ++ video.js "^7 || ^8" ++ + "@videojs/vhs-utils@3.0.5", "@videojs/vhs-utils@^3.0.4", "@videojs/vhs-utils@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz#665ba70d78258ba1ab977364e2fe9f4d4799c46c" +@@ -1776,6 +1673,15 @@ + global "^4.4.0" + url-toolkit "^2.2.1" + ++"@videojs/vhs-utils@4.0.0", "@videojs/vhs-utils@^4.0.0": ++ version "4.0.0" ++ resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz#4d4dbf5d61a9fbd2da114b84ec747c3a483bc60d" ++ integrity sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ global "^4.4.0" ++ url-toolkit "^2.2.1" ++ + "@videojs/xhr@2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80" +@@ -1785,10 +1691,10 @@ + global "~4.4.0" + is-function "^1.0.1" + +-"@vue/compiler-sfc@2.7.14": +- version "2.7.14" +- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd" +- integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA== ++"@vue/compiler-sfc@2.7.15": ++ version "2.7.15" ++ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz#62135fb2f69559fc723fd9c56b8e8b0ac7864a0b" ++ integrity sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg== + dependencies: + "@babel/parser" "^7.18.4" + postcss "^8.4.14" +@@ -1810,125 +1716,125 @@ + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + +-"@webassemblyjs/ast@1.11.5", "@webassemblyjs/ast@^1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c" +- integrity sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ== ++"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" ++ integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: +- "@webassemblyjs/helper-numbers" "1.11.5" +- "@webassemblyjs/helper-wasm-bytecode" "1.11.5" ++ "@webassemblyjs/helper-numbers" "1.11.6" ++ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +-"@webassemblyjs/floating-point-hex-parser@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz#e85dfdb01cad16b812ff166b96806c050555f1b4" +- integrity sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ== ++"@webassemblyjs/floating-point-hex-parser@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" ++ integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +-"@webassemblyjs/helper-api-error@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz#1e82fa7958c681ddcf4eabef756ce09d49d442d1" +- integrity sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA== ++"@webassemblyjs/helper-api-error@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" ++ integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +-"@webassemblyjs/helper-buffer@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz#91381652ea95bb38bbfd270702351c0c89d69fba" +- integrity sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg== ++"@webassemblyjs/helper-buffer@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" ++ integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +-"@webassemblyjs/helper-numbers@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz#23380c910d56764957292839006fecbe05e135a9" +- integrity sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA== ++"@webassemblyjs/helper-numbers@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" ++ integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: +- "@webassemblyjs/floating-point-hex-parser" "1.11.5" +- "@webassemblyjs/helper-api-error" "1.11.5" ++ "@webassemblyjs/floating-point-hex-parser" "1.11.6" ++ "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +-"@webassemblyjs/helper-wasm-bytecode@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz#e258a25251bc69a52ef817da3001863cc1c24b9f" +- integrity sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA== ++"@webassemblyjs/helper-wasm-bytecode@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" ++ integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +-"@webassemblyjs/helper-wasm-section@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz#966e855a6fae04d5570ad4ec87fbcf29b42ba78e" +- integrity sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA== ++"@webassemblyjs/helper-wasm-section@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" ++ integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: +- "@webassemblyjs/ast" "1.11.5" +- "@webassemblyjs/helper-buffer" "1.11.5" +- "@webassemblyjs/helper-wasm-bytecode" "1.11.5" +- "@webassemblyjs/wasm-gen" "1.11.5" ++ "@webassemblyjs/ast" "1.11.6" ++ "@webassemblyjs/helper-buffer" "1.11.6" ++ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" ++ "@webassemblyjs/wasm-gen" "1.11.6" + +-"@webassemblyjs/ieee754@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz#b2db1b33ce9c91e34236194c2b5cba9b25ca9d60" +- integrity sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg== ++"@webassemblyjs/ieee754@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" ++ integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +-"@webassemblyjs/leb128@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.5.tgz#482e44d26b6b949edf042a8525a66c649e38935a" +- integrity sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ== ++"@webassemblyjs/leb128@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" ++ integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +-"@webassemblyjs/utf8@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.5.tgz#83bef94856e399f3740e8df9f63bc47a987eae1a" +- integrity sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ== ++"@webassemblyjs/utf8@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" ++ integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + + "@webassemblyjs/wasm-edit@^1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz#93ee10a08037657e21c70de31c47fdad6b522b2d" +- integrity sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ== ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" ++ integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: +- "@webassemblyjs/ast" "1.11.5" +- "@webassemblyjs/helper-buffer" "1.11.5" +- "@webassemblyjs/helper-wasm-bytecode" "1.11.5" +- "@webassemblyjs/helper-wasm-section" "1.11.5" +- "@webassemblyjs/wasm-gen" "1.11.5" +- "@webassemblyjs/wasm-opt" "1.11.5" +- "@webassemblyjs/wasm-parser" "1.11.5" +- "@webassemblyjs/wast-printer" "1.11.5" ++ "@webassemblyjs/ast" "1.11.6" ++ "@webassemblyjs/helper-buffer" "1.11.6" ++ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" ++ "@webassemblyjs/helper-wasm-section" "1.11.6" ++ "@webassemblyjs/wasm-gen" "1.11.6" ++ "@webassemblyjs/wasm-opt" "1.11.6" ++ "@webassemblyjs/wasm-parser" "1.11.6" ++ "@webassemblyjs/wast-printer" "1.11.6" + +-"@webassemblyjs/wasm-gen@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz#ceb1c82b40bf0cf67a492c53381916756ef7f0b1" +- integrity sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA== ++"@webassemblyjs/wasm-gen@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" ++ integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: +- "@webassemblyjs/ast" "1.11.5" +- "@webassemblyjs/helper-wasm-bytecode" "1.11.5" +- "@webassemblyjs/ieee754" "1.11.5" +- "@webassemblyjs/leb128" "1.11.5" +- "@webassemblyjs/utf8" "1.11.5" ++ "@webassemblyjs/ast" "1.11.6" ++ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" ++ "@webassemblyjs/ieee754" "1.11.6" ++ "@webassemblyjs/leb128" "1.11.6" ++ "@webassemblyjs/utf8" "1.11.6" + +-"@webassemblyjs/wasm-opt@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz#b52bac29681fa62487e16d3bb7f0633d5e62ca0a" +- integrity sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw== ++"@webassemblyjs/wasm-opt@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" ++ integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: +- "@webassemblyjs/ast" "1.11.5" +- "@webassemblyjs/helper-buffer" "1.11.5" +- "@webassemblyjs/wasm-gen" "1.11.5" +- "@webassemblyjs/wasm-parser" "1.11.5" ++ "@webassemblyjs/ast" "1.11.6" ++ "@webassemblyjs/helper-buffer" "1.11.6" ++ "@webassemblyjs/wasm-gen" "1.11.6" ++ "@webassemblyjs/wasm-parser" "1.11.6" + +-"@webassemblyjs/wasm-parser@1.11.5", "@webassemblyjs/wasm-parser@^1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz#7ba0697ca74c860ea13e3ba226b29617046982e2" +- integrity sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew== ++"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" ++ integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: +- "@webassemblyjs/ast" "1.11.5" +- "@webassemblyjs/helper-api-error" "1.11.5" +- "@webassemblyjs/helper-wasm-bytecode" "1.11.5" +- "@webassemblyjs/ieee754" "1.11.5" +- "@webassemblyjs/leb128" "1.11.5" +- "@webassemblyjs/utf8" "1.11.5" ++ "@webassemblyjs/ast" "1.11.6" ++ "@webassemblyjs/helper-api-error" "1.11.6" ++ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" ++ "@webassemblyjs/ieee754" "1.11.6" ++ "@webassemblyjs/leb128" "1.11.6" ++ "@webassemblyjs/utf8" "1.11.6" + +-"@webassemblyjs/wast-printer@1.11.5": +- version "1.11.5" +- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz#7a5e9689043f3eca82d544d7be7a8e6373a6fa98" +- integrity sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA== ++"@webassemblyjs/wast-printer@1.11.6": ++ version "1.11.6" ++ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" ++ integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: +- "@webassemblyjs/ast" "1.11.5" ++ "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + + "@webpack-cli/configtest@^2.1.1": +@@ -1946,12 +1852,7 @@ + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +-"@xmldom/xmldom@^0.8.3": +- version "0.8.6" +- resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.6.tgz#8a1524eb5bd5e965c1e3735476f0262469f71440" +- integrity sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg== +- +-"@xmldom/xmldom@^0.8.8": ++"@xmldom/xmldom@^0.8.3", "@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== +@@ -1984,10 +1885,10 @@ acorn-jsx@^5.3.2: + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +-acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.9.0: +- version "8.9.0" +- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" +- integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== ++acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2, acorn@^8.9.0: ++ version "8.11.2" ++ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" ++ integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== + + aes-decrypter@3.1.3: + version "3.1.3" +@@ -1999,6 +1900,16 @@ aes-decrypter@3.1.3: + global "^4.4.0" + pkcs7 "^1.0.4" + ++aes-decrypter@4.0.1, aes-decrypter@^4.0.1: ++ version "4.0.1" ++ resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz#c1a81d0bde0e96fed0674488d2a31a6d7ab9b7a7" ++ integrity sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@videojs/vhs-utils" "^3.0.5" ++ global "^4.4.0" ++ pkcs7 "^1.0.4" ++ + agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" +@@ -2080,9 +1991,9 @@ ansi-styles@^6.1.0: + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + + anymatch@~3.1.2: +- version "3.1.2" +- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" +- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== ++ version "3.1.3" ++ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" ++ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" +@@ -2092,12 +2003,12 @@ app-builder-bin@4.0.0: + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" + integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== + +-app-builder-lib@24.6.4: +- version "24.6.4" +- resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-24.6.4.tgz#5bf77dd89d3ee557bc615b9ddfaf383f3e51577b" +- integrity sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg== ++app-builder-lib@24.9.1: ++ version "24.9.1" ++ resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-24.9.1.tgz#bf3568529298b4de8595ed1acbb351fe27db5ba4" ++ integrity sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g== + dependencies: +- "7zip-bin" "~5.1.1" ++ "7zip-bin" "~5.2.0" + "@develar/schema-utils" "~2.6.5" + "@electron/notarize" "2.1.0" + "@electron/osx-sign" "1.0.5" +@@ -2106,12 +2017,12 @@ app-builder-lib@24.6.4: + "@types/fs-extra" "9.0.13" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.9" +- builder-util "24.5.0" +- builder-util-runtime "9.2.1" ++ builder-util "24.8.1" ++ builder-util-runtime "9.2.3" + chromium-pickle-js "^0.2.0" + debug "^4.3.4" + ejs "^3.1.8" +- electron-publish "24.5.0" ++ electron-publish "24.8.1" + form-data "^4.0.0" + fs-extra "^10.1.0" + hosted-git-info "^4.1.0" +@@ -2149,22 +2060,22 @@ array-buffer-byte-length@^1.0.0: + array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= ++ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + + array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +-array-includes@^3.1.6: +- version "3.1.6" +- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" +- integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== ++array-includes@^3.1.7: ++ version "3.1.7" ++ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" ++ integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" +- get-intrinsic "^1.1.3" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" ++ get-intrinsic "^1.2.1" + is-string "^1.0.7" + + array-union@^2.1.0: +@@ -2172,45 +2083,46 @@ array-union@^2.1.0: + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +-array.prototype.findlastindex@^1.2.2: +- version "1.2.2" +- resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" +- integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== ++array.prototype.findlastindex@^1.2.3: ++ version "1.2.3" ++ resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" ++ integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" +- get-intrinsic "^1.1.3" ++ get-intrinsic "^1.2.1" + +-array.prototype.flat@^1.3.1: +- version "1.3.1" +- resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" +- integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== ++array.prototype.flat@^1.3.2: ++ version "1.3.2" ++ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" ++ integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +-array.prototype.flatmap@^1.3.1: +- version "1.3.1" +- resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" +- integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== ++array.prototype.flatmap@^1.3.2: ++ version "1.3.2" ++ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" ++ integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +-arraybuffer.prototype.slice@^1.0.1: +- version "1.0.1" +- resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" +- integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== ++arraybuffer.prototype.slice@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" ++ integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" ++ es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" +@@ -2230,7 +2142,7 @@ asn1@~0.2.3: + assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +- integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= ++ integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + + astral-regex@^2.0.0: + version "2.0.0" +@@ -2243,14 +2155,14 @@ async-exit-hook@^2.0.1: + integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== + + async@^3.2.3: +- version "3.2.3" +- resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" +- integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== ++ version "3.2.5" ++ resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" ++ integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + + asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +- integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= ++ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + + at-least-node@^1.0.0: + version "1.0.0" +@@ -2272,12 +2184,12 @@ available-typed-arrays@^1.0.5: + aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" +- integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= ++ integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + + aws4@^1.8.0: +- version "1.11.0" +- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" +- integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== ++ version "1.12.0" ++ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" ++ integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + + babel-loader@^9.1.3: + version "9.1.3" +@@ -2287,29 +2199,29 @@ babel-loader@^9.1.3: + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" + +-babel-plugin-polyfill-corejs2@^0.4.5: +- version "0.4.5" +- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" +- integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== ++babel-plugin-polyfill-corejs2@^0.4.6: ++ version "0.4.6" ++ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" ++ integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== + dependencies: + "@babel/compat-data" "^7.22.6" +- "@babel/helper-define-polyfill-provider" "^0.4.2" ++ "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" + +-babel-plugin-polyfill-corejs3@^0.8.3: +- version "0.8.3" +- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" +- integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== ++babel-plugin-polyfill-corejs3@^0.8.5: ++ version "0.8.6" ++ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" ++ integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== + dependencies: +- "@babel/helper-define-polyfill-provider" "^0.4.2" +- core-js-compat "^3.31.0" ++ "@babel/helper-define-polyfill-provider" "^0.4.3" ++ core-js-compat "^3.33.1" + +-babel-plugin-polyfill-regenerator@^0.5.2: +- version "0.5.2" +- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" +- integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== ++babel-plugin-polyfill-regenerator@^0.5.3: ++ version "0.5.3" ++ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" ++ integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== + dependencies: +- "@babel/helper-define-polyfill-provider" "^0.4.2" ++ "@babel/helper-define-polyfill-provider" "^0.4.3" + + balanced-match@^1.0.0: + version "1.0.2" +@@ -2329,19 +2241,19 @@ base64-js@^1.3.1, base64-js@^1.5.1: + batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" +- integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= ++ integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + + bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" +- integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= ++ integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + + big-integer@^1.6.44: +- version "1.6.51" +- resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" +- integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== ++ version "1.6.52" ++ resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" ++ integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + + big.js@^5.2.2: + version "5.2.2" +@@ -2365,10 +2277,10 @@ bluebird@^3.1.1, bluebird@^3.5.5: + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +-body-parser@1.20.0: +- version "1.20.0" +- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" +- integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== ++body-parser@1.20.1: ++ version "1.20.1" ++ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" ++ integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" +@@ -2378,25 +2290,25 @@ body-parser@1.20.0: + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" +- qs "6.10.3" ++ qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + + bonjour-service@^1.0.11: +- version "1.0.12" +- resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" +- integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== ++ version "1.1.1" ++ resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" ++ integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" +- multicast-dns "^7.2.4" ++ multicast-dns "^7.2.5" + + boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" +- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= ++ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + + boolean@^3.0.1: + version "3.2.0" +@@ -2432,20 +2344,20 @@ braces@^3.0.2, braces@~3.0.2: + dependencies: + fill-range "^7.0.1" + +-browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.9: +- version "4.21.9" +- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" +- integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== ++browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: ++ version "4.22.1" ++ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" ++ integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: +- caniuse-lite "^1.0.30001503" +- electron-to-chromium "^1.4.431" +- node-releases "^2.0.12" +- update-browserslist-db "^1.0.11" ++ caniuse-lite "^1.0.30001541" ++ electron-to-chromium "^1.4.535" ++ node-releases "^2.0.13" ++ update-browserslist-db "^1.0.13" + + buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" +- integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= ++ integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + + buffer-equal@^1.0.0: + version "1.0.1" +@@ -2465,24 +2377,24 @@ buffer@^5.1.0: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +-builder-util-runtime@9.2.1: +- version "9.2.1" +- resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz#3184dcdf7ed6c47afb8df733813224ced4f624fd" +- integrity sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA== ++builder-util-runtime@9.2.3: ++ version "9.2.3" ++ resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz#0a82c7aca8eadef46d67b353c638f052c206b83c" ++ integrity sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw== + dependencies: + debug "^4.3.4" + sax "^1.2.4" + +-builder-util@24.5.0: +- version "24.5.0" +- resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-24.5.0.tgz#8683c9a7a1c5c9f9a4c4d2789ecca0e47dddd3f9" +- integrity sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ== ++builder-util@24.8.1: ++ version "24.8.1" ++ resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-24.8.1.tgz#594d45b0c86d1d17f5c7bebbb77405080b2571c2" ++ integrity sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw== + dependencies: +- "7zip-bin" "~5.1.1" ++ "7zip-bin" "~5.2.0" + "@types/debug" "^4.1.6" + app-builder-bin "4.0.0" + bluebird-lst "^1.0.9" +- builder-util-runtime "9.2.1" ++ builder-util-runtime "9.2.3" + chalk "^4.1.2" + cross-spawn "^7.0.3" + debug "^4.3.4" +@@ -2514,17 +2426,10 @@ bundle-name@^3.0.0: + dependencies: + run-applescript "^5.0.0" + +-busboy@^1.6.0: +- version "1.6.0" +- resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" +- integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== +- dependencies: +- streamsearch "^1.1.0" +- + bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" +- integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= ++ integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + + bytes@3.1.2: + version "3.1.2" +@@ -2537,9 +2442,9 @@ cacheable-lookup@^5.0.3: + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + + cacheable-request@^7.0.2: +- version "7.0.2" +- resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" +- integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== ++ version "7.0.4" ++ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" ++ integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" +@@ -2549,13 +2454,14 @@ cacheable-request@^7.0.2: + normalize-url "^6.0.1" + responselike "^2.0.0" + +-call-bind@^1.0.0, call-bind@^1.0.2: +- version "1.0.2" +- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" +- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== ++call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: ++ version "1.0.5" ++ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" ++ integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: +- function-bind "^1.1.1" +- get-intrinsic "^1.0.2" ++ function-bind "^1.1.2" ++ get-intrinsic "^1.2.1" ++ set-function-length "^1.1.1" + + callsites@^3.0.0: + version "3.1.0" +@@ -2595,20 +2501,15 @@ caniuse-api@^3.0.0: + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +-caniuse-lite@^1.0.0: +- version "1.0.30001431" +- resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz" +- integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== +- +-caniuse-lite@^1.0.30001503: +- version "1.0.30001514" +- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001514.tgz#e2a7e184a23affc9367b7c8d734e7ec4628c1309" +- integrity sha512-ENcIpYBmwAAOm/V2cXgM7rZUrKKaqisZl4ZAI520FIkqGXUxJjmaIssbRW5HVVR5tyV6ygTLIm15aU8LUmQSaQ== ++caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001541: ++ version "1.0.30001564" ++ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz#eaa8bbc58c0cbccdcb7b41186df39dd2ba591889" ++ integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== + + caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" +- integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ++ integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + + chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" +@@ -2655,17 +2556,17 @@ chrome-trace-event@^1.0.2: + chromium-pickle-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" +- integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU= ++ integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== + + ci-info@^3.2.0, ci-info@^3.8.0: +- version "3.8.0" +- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" +- integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== ++ version "3.9.0" ++ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" ++ integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + + clean-css@^5.2.2: +- version "5.3.0" +- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" +- integrity sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ== ++ version "5.3.2" ++ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" ++ integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + +@@ -2703,9 +2604,9 @@ clone-deep@^4.0.1: + shallow-clone "^3.0.0" + + clone-response@^1.0.2: +- version "1.0.2" +- resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" +- integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= ++ version "1.0.3" ++ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" ++ integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +@@ -2726,7 +2627,7 @@ color-convert@^2.0.1: + color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= ++ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + + color-name@~1.1.4: + version "1.1.4" +@@ -2739,9 +2640,9 @@ colord@^2.9.1, colord@^2.9.3: + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + + colorette@^2.0.10, colorette@^2.0.14: +- version "2.0.16" +- resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" +- integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== ++ version "2.0.20" ++ resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" ++ integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" +@@ -2783,7 +2684,7 @@ common-path-prefix@^3.0.0: + compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" +- integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA= ++ integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== + + compressible@~2.0.16: + version "2.0.18" +@@ -2808,7 +2709,7 @@ compression@^1.7.4: + concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= ++ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + + config-file-ts@^0.2.4: + version "0.2.4" +@@ -2838,9 +2739,9 @@ content-disposition@0.5.4: + safe-buffer "5.2.1" + + content-type@~1.0.4: +- version "1.0.4" +- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== ++ version "1.0.5" ++ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" ++ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + + convert-source-map@^2.0.0: + version "2.0.0" +@@ -2850,7 +2751,7 @@ convert-source-map@^2.0.0: + cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" +- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= ++ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + + cookie@0.5.0: + version "0.5.0" +@@ -2869,17 +2770,17 @@ copy-webpack-plugin@^11.0.0: + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +-core-js-compat@^3.31.0: +- version "3.31.1" +- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" +- integrity sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA== ++core-js-compat@^3.31.0, core-js-compat@^3.33.1: ++ version "3.33.3" ++ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.3.tgz#ec678b772c5a2d8a7c60a91c3a81869aa704ae01" ++ integrity sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow== + dependencies: +- browserslist "^4.21.9" ++ browserslist "^4.22.1" + + core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= ++ integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + + core-util-is@~1.0.0: + version "1.0.3" +@@ -2887,13 +2788,13 @@ core-util-is@~1.0.0: + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + + cosmiconfig@^8.2.0: +- version "8.2.0" +- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.2.0.tgz#f7d17c56a590856cd1e7cee98734dca272b0d8fd" +- integrity sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== ++ version "8.3.6" ++ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" ++ integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: +- import-fresh "^3.2.1" ++ import-fresh "^3.3.0" + js-yaml "^4.1.0" +- parse-json "^5.0.0" ++ parse-json "^5.2.0" + path-type "^4.0.0" + + crc@^3.8.0: +@@ -2924,14 +2825,14 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + which "^2.0.1" + + css-declaration-sorter@^6.3.1: +- version "6.4.0" +- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" +- integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== ++ version "6.4.1" ++ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" ++ integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +-css-functions-list@^3.2.0: +- version "3.2.0" +- resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.0.tgz#8290b7d064bf483f48d6559c10e98dc4d1ad19ee" +- integrity sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg== ++css-functions-list@^3.2.1: ++ version "3.2.1" ++ resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.1.tgz#2eb205d8ce9f9ce74c5c1d7490b66b77c45ce3ea" ++ integrity sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ== + + css-loader@^6.8.1: + version "6.8.1" +@@ -3055,7 +2956,7 @@ cssnano@^6.0.1: + cssnano-preset-default "^6.0.1" + lilconfig "^2.1.0" + +-csso@^5.0.5: ++csso@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== +@@ -3063,14 +2964,14 @@ csso@^5.0.5: + css-tree "~2.2.0" + + csstype@^3.1.0: +- version "3.1.1" +- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" +- integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== ++ version "3.1.2" ++ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" ++ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + + dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" +- integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= ++ integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +@@ -3155,6 +3056,15 @@ defer-to-connect@^2.0.0: + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + ++define-data-property@^1.0.1, define-data-property@^1.1.1: ++ version "1.1.1" ++ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" ++ integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== ++ dependencies: ++ get-intrinsic "^1.2.1" ++ gopd "^1.0.1" ++ has-property-descriptors "^1.0.0" ++ + define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" +@@ -3165,26 +3075,19 @@ define-lazy-prop@^3.0.0: + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +-define-properties@^1.1.3, define-properties@^1.1.4: +- version "1.1.4" +- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" +- integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== +- dependencies: +- has-property-descriptors "^1.0.0" +- object-keys "^1.1.1" +- +-define-properties@^1.2.0: +- version "1.2.0" +- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" +- integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== ++define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: ++ version "1.2.1" ++ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" ++ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: ++ define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + + delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +- integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= ++ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + + depd@2.0.0: + version "2.0.0" +@@ -3194,7 +3097,7 @@ depd@2.0.0: + depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" +- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= ++ integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + + dequal@^2.0.3: + version "2.0.3" +@@ -3226,14 +3129,14 @@ dir-glob@^3.0.1: + dependencies: + path-type "^4.0.0" + +-dmg-builder@24.6.4: +- version "24.6.4" +- resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-24.6.4.tgz#e19b8305f7e1ea0b4faaa30382c81b9d6de39863" +- integrity sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw== ++dmg-builder@24.9.1: ++ version "24.9.1" ++ resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-24.9.1.tgz#04bf6c0dcd235f6214511f2358a78ed2b9379421" ++ integrity sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ== + dependencies: +- app-builder-lib "24.6.4" +- builder-util "24.5.0" +- builder-util-runtime "9.2.1" ++ app-builder-lib "24.9.1" ++ builder-util "24.8.1" ++ builder-util-runtime "9.2.3" + fs-extra "^10.1.0" + iconv-lite "^0.6.2" + js-yaml "^4.1.0" +@@ -3257,12 +3160,12 @@ dmg-license@^1.0.11: + dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" +- integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= ++ integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + + dns-packet@^5.2.2: +- version "5.4.0" +- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" +- integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== ++ version "5.6.1" ++ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" ++ integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +@@ -3322,7 +3225,7 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + dependencies: + domelementtype "^2.2.0" + +-domhandler@^5.0.1, domhandler@^5.0.2: ++domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== +@@ -3339,13 +3242,13 @@ domutils@^2.5.2, domutils@^2.8.0: + domhandler "^4.2.0" + + domutils@^3.0.1: +- version "3.0.1" +- resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" +- integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== ++ version "3.1.0" ++ resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" ++ integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" +- domhandler "^5.0.1" ++ domhandler "^5.0.3" + + dot-case@^3.0.4: + version "3.0.4" +@@ -3373,7 +3276,7 @@ eastasianwidth@^0.2.0: + ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" +- integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= ++ integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" +@@ -3381,7 +3284,7 @@ ecc-jsbn@~0.1.1: + ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= ++ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + + ejs@^3.1.8: + version "3.1.9" +@@ -3391,15 +3294,15 @@ ejs@^3.1.8: + jake "^10.8.5" + + electron-builder@^24.6.4: +- version "24.6.4" +- resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-24.6.4.tgz#c51271e49b9a02c9a3ec444f866b6008c4d98a1d" +- integrity sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA== ++ version "24.9.1" ++ resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-24.9.1.tgz#4aee03947963b829a7f48a850fe02c219311ef63" ++ integrity sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg== + dependencies: +- app-builder-lib "24.6.4" +- builder-util "24.5.0" +- builder-util-runtime "9.2.1" ++ app-builder-lib "24.9.1" ++ builder-util "24.8.1" ++ builder-util-runtime "9.2.3" + chalk "^4.1.2" +- dmg-builder "24.6.4" ++ dmg-builder "24.9.1" + fs-extra "^10.1.0" + is-ci "^3.0.0" + lazy-val "^1.0.5" +@@ -3417,9 +3320,9 @@ electron-context-menu@^3.6.1: + electron-is-dev "^2.0.0" + + electron-dl@^3.2.1: +- version "3.3.1" +- resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-3.3.1.tgz#14164595bebcc636c671eb791b2a3265003f76c4" +- integrity sha512-kmcSYZyHVEHHHFKlZWW58GiCmu2NSu3Rdwnl3+/fr/ftQYHJULVf1QkrCBPFE2bp/Ly113Za7c8wJZs1nBy04A== ++ version "3.5.1" ++ resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-3.5.1.tgz#781287c0c8537e707f034eb3415f4adaded8a7de" ++ integrity sha512-5Yb9s/iPVJ5mW5x3j6XkKxt7WEqREr/AhYxZmtEfW1ffQHs1+aGoiQ2fXCAU6UIXMnWog2MXK82vrxJsjA3nbQ== + dependencies: + ext-name "^5.0.0" + pupa "^2.0.1" +@@ -3430,37 +3333,37 @@ electron-is-dev@^2.0.0: + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" + integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== + +-electron-publish@24.5.0: +- version "24.5.0" +- resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-24.5.0.tgz#492a4d7caa232e88ee3c18f5c3b4dc637e5e1b3a" +- integrity sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA== ++electron-publish@24.8.1: ++ version "24.8.1" ++ resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-24.8.1.tgz#4216740372bf4297a429543402a1a15ce8c3560b" ++ integrity sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw== + dependencies: + "@types/fs-extra" "^9.0.11" +- builder-util "24.5.0" +- builder-util-runtime "9.2.1" ++ builder-util "24.8.1" ++ builder-util-runtime "9.2.3" + chalk "^4.1.2" + fs-extra "^10.1.0" + lazy-val "^1.0.5" + mime "^2.5.2" + +-electron-to-chromium@^1.4.431: +- version "1.4.454" +- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.454.tgz#774dc7cb5e58576d0125939ec34a4182f3ccc87d" +- integrity sha512-pmf1rbAStw8UEQ0sr2cdJtWl48ZMuPD9Sto8HVQOq9vx9j2WgDEN6lYoaqFvqEHYOmGA9oRGn7LqWI9ta0YugQ== ++electron-to-chromium@^1.4.535: ++ version "1.4.594" ++ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz#f69f207fba80735a44a988df42f3f439115d0515" ++ integrity sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ== + +-electron@^22.3.25: +- version "22.3.25" +- resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.25.tgz#a9a70b63a6712c658cd7fab343129b2a78450f80" +- integrity sha512-AjrP7bebMs/IPsgmyowptbA7jycTkrJC7jLZTb5JoH30PkBC6pZx/7XQ0aDok82SsmSiF4UJDOg+HoLrEBiqmg== ++electron@^27.0.0: ++ version "27.1.2" ++ resolved "https://registry.yarnpkg.com/electron/-/electron-27.1.2.tgz#d3074c91cce94c1e19b5904b1cdf78c830f2558d" ++ integrity sha512-Dy6BUuGLiIJv+zfsXwr78TV2TNppi24rXF4PIIS+OjDblEKdkI9r1iM8JUd3/x3sbGUy5mdLMSPhvmu//IhkgA== + dependencies: + "@electron/get" "^2.0.0" +- "@types/node" "^16.11.26" ++ "@types/node" "^18.11.18" + extract-zip "^2.0.1" + + emoji-regex@^10.0.0: +- version "10.2.1" +- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" +- integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== ++ version "10.3.0" ++ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" ++ integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + + emoji-regex@^8.0.0: + version "8.0.0" +@@ -3480,7 +3383,7 @@ emojis-list@^3.0.0: + encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= ++ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + + end-of-stream@^1.1.0: + version "1.4.4" +@@ -3503,9 +3406,9 @@ entities@^2.0.0: + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + + entities@^4.2.0: +- version "4.4.0" +- resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" +- integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== ++ version "4.5.0" ++ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" ++ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + + env-paths@^2.2.0: + version "2.2.1" +@@ -3513,9 +3416,9 @@ env-paths@^2.2.0: + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + + envinfo@^7.7.3: +- version "7.8.1" +- resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" +- integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== ++ version "7.11.0" ++ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" ++ integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== + + err-code@^2.0.2: + version "2.0.3" +@@ -3529,124 +3432,26 @@ error-ex@^1.3.1: + dependencies: + is-arrayish "^0.2.1" + +-es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.5: +- version "1.20.0" +- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.0.tgz#b2d526489cceca004588296334726329e0a6bfb6" +- integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== +- dependencies: +- call-bind "^1.0.2" +- es-to-primitive "^1.2.1" +- function-bind "^1.1.1" +- function.prototype.name "^1.1.5" +- get-intrinsic "^1.1.1" +- get-symbol-description "^1.0.0" +- has "^1.0.3" +- has-property-descriptors "^1.0.0" +- has-symbols "^1.0.3" +- internal-slot "^1.0.3" +- is-callable "^1.2.4" +- is-negative-zero "^2.0.2" +- is-regex "^1.1.4" +- is-shared-array-buffer "^1.0.2" +- is-string "^1.0.7" +- is-weakref "^1.0.2" +- object-inspect "^1.12.0" +- object-keys "^1.1.1" +- object.assign "^4.1.2" +- regexp.prototype.flags "^1.4.1" +- string.prototype.trimend "^1.0.5" +- string.prototype.trimstart "^1.0.5" +- unbox-primitive "^1.0.2" +- +-es-abstract@^1.20.0: +- version "1.20.3" +- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1" +- integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== +- dependencies: +- call-bind "^1.0.2" +- es-to-primitive "^1.2.1" +- function-bind "^1.1.1" +- function.prototype.name "^1.1.5" +- get-intrinsic "^1.1.3" +- get-symbol-description "^1.0.0" +- has "^1.0.3" +- has-property-descriptors "^1.0.0" +- has-symbols "^1.0.3" +- internal-slot "^1.0.3" +- is-callable "^1.2.6" +- is-negative-zero "^2.0.2" +- is-regex "^1.1.4" +- is-shared-array-buffer "^1.0.2" +- is-string "^1.0.7" +- is-weakref "^1.0.2" +- object-inspect "^1.12.2" +- object-keys "^1.1.1" +- object.assign "^4.1.4" +- regexp.prototype.flags "^1.4.3" +- safe-regex-test "^1.0.0" +- string.prototype.trimend "^1.0.5" +- string.prototype.trimstart "^1.0.5" +- unbox-primitive "^1.0.2" +- +-es-abstract@^1.20.4: +- version "1.21.1" +- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" +- integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== +- dependencies: +- available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" +- es-set-tostringtag "^2.0.1" +- es-to-primitive "^1.2.1" +- function-bind "^1.1.1" +- function.prototype.name "^1.1.5" +- get-intrinsic "^1.1.3" +- get-symbol-description "^1.0.0" +- globalthis "^1.0.3" +- gopd "^1.0.1" +- has "^1.0.3" +- has-property-descriptors "^1.0.0" +- has-proto "^1.0.1" +- has-symbols "^1.0.3" +- internal-slot "^1.0.4" +- is-array-buffer "^3.0.1" +- is-callable "^1.2.7" +- is-negative-zero "^2.0.2" +- is-regex "^1.1.4" +- is-shared-array-buffer "^1.0.2" +- is-string "^1.0.7" +- is-typed-array "^1.1.10" +- is-weakref "^1.0.2" +- object-inspect "^1.12.2" +- object-keys "^1.1.1" +- object.assign "^4.1.4" +- regexp.prototype.flags "^1.4.3" +- safe-regex-test "^1.0.0" +- string.prototype.trimend "^1.0.6" +- string.prototype.trimstart "^1.0.6" +- typed-array-length "^1.0.4" +- unbox-primitive "^1.0.2" +- which-typed-array "^1.1.9" +- +-es-abstract@^1.21.2: +- version "1.22.1" +- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" +- integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== ++es-abstract@^1.22.1: ++ version "1.22.3" ++ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" ++ integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" +- arraybuffer.prototype.slice "^1.0.1" ++ arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" ++ call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" +- function.prototype.name "^1.1.5" +- get-intrinsic "^1.2.1" ++ function.prototype.name "^1.1.6" ++ get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" +- has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" ++ hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" +@@ -3654,44 +3459,44 @@ es-abstract@^1.21.2: + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" +- is-typed-array "^1.1.10" ++ is-typed-array "^1.1.12" + is-weakref "^1.0.2" +- object-inspect "^1.12.3" ++ object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" +- regexp.prototype.flags "^1.5.0" +- safe-array-concat "^1.0.0" ++ regexp.prototype.flags "^1.5.1" ++ safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" +- string.prototype.trim "^1.2.7" +- string.prototype.trimend "^1.0.6" +- string.prototype.trimstart "^1.0.6" ++ string.prototype.trim "^1.2.8" ++ string.prototype.trimend "^1.0.7" ++ string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" +- which-typed-array "^1.1.10" ++ which-typed-array "^1.1.13" + + es-module-lexer@^1.2.1: +- version "1.2.1" +- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" +- integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== ++ version "1.4.1" ++ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" ++ integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + + es-set-tostringtag@^2.0.1: +- version "2.0.1" +- resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" +- integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== ++ version "2.0.2" ++ resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" ++ integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: +- get-intrinsic "^1.1.3" +- has "^1.0.3" ++ get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" ++ hasown "^2.0.0" + + es-shim-unscopables@^1.0.0: +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" +- integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== ++ version "1.0.2" ++ resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" ++ integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: +- has "^1.0.3" ++ hasown "^2.0.0" + + es-to-primitive@^1.2.1: + version "1.2.1" +@@ -3720,18 +3525,23 @@ escape-goat@^2.0.0: + escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" +- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= ++ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + + escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= ++ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + + escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + ++eslint-compat-utils@^0.1.0, eslint-compat-utils@^0.1.2: ++ version "0.1.2" ++ resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz#f45e3b5ced4c746c127cf724fb074cd4e730d653" ++ integrity sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg== ++ + eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" +@@ -3742,14 +3552,14 @@ eslint-config-standard@^17.1.0: + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== + +-eslint-import-resolver-node@^0.3.7: +- version "0.3.7" +- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" +- integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== ++eslint-import-resolver-node@^0.3.9: ++ version "0.3.9" ++ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" ++ integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" +- is-core-module "^2.11.0" +- resolve "^1.22.1" ++ is-core-module "^2.13.0" ++ resolve "^1.22.4" + + eslint-module-utils@^2.8.0: + version "2.8.0" +@@ -3759,64 +3569,67 @@ eslint-module-utils@^2.8.0: + debug "^3.2.7" + + eslint-plugin-es-x@^7.1.0: +- version "7.1.0" +- resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.1.0.tgz#f0d5421e658cca95c1cfb2355831851bdc83322d" +- integrity sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw== ++ version "7.4.0" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.4.0.tgz#ae3132b5502c28821e3e6eb80314123a4143a87c" ++ integrity sha512-WJa3RhYzBtl8I37ebY9p76s61UhZyi4KaFOnX2A5r32RPazkXj5yoT6PGnD02dhwzEUj0KwsUdqfKDd/OuvGsw== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" +- "@eslint-community/regexpp" "^4.5.0" ++ "@eslint-community/regexpp" "^4.6.0" ++ eslint-compat-utils "^0.1.2" + + eslint-plugin-import@^2.28.1: +- version "2.28.1" +- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" +- integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== ++ version "2.29.0" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" ++ integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: +- array-includes "^3.1.6" +- array.prototype.findlastindex "^1.2.2" +- array.prototype.flat "^1.3.1" +- array.prototype.flatmap "^1.3.1" ++ array-includes "^3.1.7" ++ array.prototype.findlastindex "^1.2.3" ++ array.prototype.flat "^1.3.2" ++ array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" +- eslint-import-resolver-node "^0.3.7" ++ eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" +- has "^1.0.3" +- is-core-module "^2.13.0" ++ hasown "^2.0.0" ++ is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" +- object.fromentries "^2.0.6" +- object.groupby "^1.0.0" +- object.values "^1.1.6" ++ object.fromentries "^2.0.7" ++ object.groupby "^1.0.1" ++ object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + + eslint-plugin-jsonc@^2.9.0: +- version "2.9.0" +- resolved "https://registry.yarnpkg.com/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.9.0.tgz#df3bff1339e10bdef72aafef3b2c132a1a08c23f" +- integrity sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA== ++ version "2.10.0" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.10.0.tgz#4286fd49a79ee3dd86f9c6c61b6f3c65f30b954f" ++ integrity sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" ++ eslint-compat-utils "^0.1.2" + jsonc-eslint-parser "^2.0.4" + natural-compare "^1.4.0" + + eslint-plugin-n@^16.1.0: +- version "16.1.0" +- resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.1.0.tgz#73d24fe3e37d04519c1f9230bdbd3aa567c66799" +- integrity sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg== ++ version "16.3.1" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.3.1.tgz#6cd377d1349fed10854b6535392e91fb4123193b" ++ integrity sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + builtins "^5.0.1" + eslint-plugin-es-x "^7.1.0" + get-tsconfig "^4.7.0" + ignore "^5.2.4" ++ is-builtin-module "^3.2.1" + is-core-module "^2.12.1" + minimatch "^3.1.2" + resolve "^1.22.2" + semver "^7.5.3" + + eslint-plugin-prettier@^5.0.0: +- version "5.0.0" +- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" +- integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== ++ version "5.0.1" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" ++ integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" +@@ -3848,9 +3661,9 @@ eslint-plugin-unicorn@^48.0.1: + strip-indent "^3.0.0" + + eslint-plugin-vue@^9.17.0: +- version "9.17.0" +- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz#4501547373f246547083482838b4c8f4b28e5932" +- integrity sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ== ++ version "9.18.1" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c" ++ integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + natural-compare "^1.4.0" +@@ -3870,11 +3683,12 @@ eslint-plugin-vuejs-accessibility@^2.2.0: + vue-eslint-parser "^9.0.1" + + eslint-plugin-yml@^1.9.0: +- version "1.9.0" +- resolved "https://registry.yarnpkg.com/eslint-plugin-yml/-/eslint-plugin-yml-1.9.0.tgz#4daa4137a38fa26e38e28e847c490991326c9010" +- integrity sha512-ayuC57WyVQ5+QZ02y62GiB//5+zsiyzUGxUX/mrhLni+jfsKA4KoITjkbR65iUdjjhWpyTJHPcAIFLKQIOwgsw== ++ version "1.10.0" ++ resolved "https://registry.yarnpkg.com/eslint-plugin-yml/-/eslint-plugin-yml-1.10.0.tgz#0c750253825ff352fb11b824d80864d8a2df3408" ++ integrity sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ== + dependencies: + debug "^4.3.2" ++ eslint-compat-utils "^0.1.0" + lodash "^4.17.21" + natural-compare "^1.4.0" + yaml-eslint-parser "^1.2.1" +@@ -3906,17 +3720,18 @@ eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4 + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + + eslint@^8.50.0: +- version "8.50.0" +- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" +- integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== ++ version "8.54.0" ++ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.54.0.tgz#588e0dd4388af91a2e8fa37ea64924074c783537" ++ integrity sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" +- "@eslint/eslintrc" "^2.1.2" +- "@eslint/js" "8.50.0" +- "@humanwhocodes/config-array" "^0.11.11" ++ "@eslint/eslintrc" "^2.1.3" ++ "@eslint/js" "8.54.0" ++ "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ++ "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" +@@ -3989,7 +3804,7 @@ esutils@^2.0.2: + etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" +- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= ++ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + + eventemitter3@^4.0.0: + version "4.0.7" +@@ -4032,13 +3847,13 @@ execa@^7.1.1: + strip-final-newline "^3.0.0" + + express@^4.17.3: +- version "4.18.1" +- resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" +- integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== ++ version "4.18.2" ++ resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" ++ integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" +- body-parser "1.20.0" ++ body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" +@@ -4057,7 +3872,7 @@ express@^4.17.3: + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" +- qs "6.10.3" ++ qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" +@@ -4102,7 +3917,7 @@ extract-zip@^2.0.1: + extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +- integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= ++ integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + + extsprintf@^1.2.0: + version "1.4.1" +@@ -4115,14 +3930,14 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + + fast-diff@^1.1.2: +- version "1.2.0" +- resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" +- integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== ++ version "1.3.0" ++ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" ++ integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + + fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +- version "3.3.1" +- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" +- integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== ++ version "3.3.2" ++ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" ++ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" +@@ -4138,7 +3953,7 @@ fast-json-stable-stringify@^2.0.0: + fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +- integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= ++ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + + fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.16: + version "1.0.16" +@@ -4146,9 +3961,9 @@ fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.16: + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + + fastq@^1.6.0: +- version "1.13.0" +- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" +- integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== ++ version "1.15.0" ++ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" ++ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +@@ -4162,7 +3977,7 @@ faye-websocket@^0.11.3: + fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" +- integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= ++ integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +@@ -4173,7 +3988,14 @@ file-entry-cache@^6.0.1: + dependencies: + flat-cache "^3.0.4" + +-filelist@^1.0.1: ++file-entry-cache@^7.0.0: ++ version "7.0.2" ++ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-7.0.2.tgz#2d61bb70ba89b9548e3035b7c9173fe91deafff0" ++ integrity sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g== ++ dependencies: ++ flat-cache "^3.2.0" ++ ++filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== +@@ -4232,23 +4054,29 @@ find-up@^6.3.0: + locate-path "^7.1.0" + path-exists "^5.0.0" + +-flat-cache@^3.0.4: +- version "3.0.4" +- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" +- integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== ++flat-cache@^3.0.4, flat-cache@^3.2.0: ++ version "3.2.0" ++ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" ++ integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: +- flatted "^3.1.0" ++ flatted "^3.2.9" ++ keyv "^4.5.3" + rimraf "^3.0.2" + +-flatted@^3.1.0: +- version "3.2.5" +- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" +- integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== ++flat@^5.0.2: ++ version "5.0.2" ++ resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" ++ integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== ++ ++flatted@^3.2.9: ++ version "3.2.9" ++ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" ++ integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + + follow-redirects@^1.0.0: +- version "1.15.0" +- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4" +- integrity sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ== ++ version "1.15.3" ++ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" ++ integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + + for-each@^0.3.3: + version "0.3.3" +@@ -4268,7 +4096,7 @@ foreground-child@^3.1.0: + forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +- integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= ++ integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + + form-data@^4.0.0: + version "4.0.0" +@@ -4296,7 +4124,7 @@ forwarded@0.2.0: + fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" +- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= ++ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + + fs-extra@^10.0.0, fs-extra@^10.1.0: + version "10.1.0" +@@ -4333,37 +4161,37 @@ fs-minipass@^2.0.0: + dependencies: + minipass "^3.0.0" + +-fs-monkey@1.0.3: +- version "1.0.3" +- resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" +- integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== ++fs-monkey@^1.0.4: ++ version "1.0.5" ++ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" ++ integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + + fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= ++ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + + fsevents@~2.3.2: +- version "2.3.2" +- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" +- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== ++ version "2.3.3" ++ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" ++ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +-function-bind@^1.1.1: +- version "1.1.1" +- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== ++function-bind@^1.1.2: ++ version "1.1.2" ++ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" ++ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +-function.prototype.name@^1.1.5: +- version "1.1.5" +- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" +- integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== ++function.prototype.name@^1.1.6: ++ version "1.1.6" ++ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" ++ integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.3" +- es-abstract "^1.19.0" +- functions-have-names "^1.2.2" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" ++ functions-have-names "^1.2.3" + +-functions-have-names@^1.2.2, functions-have-names@^1.2.3: ++functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +@@ -4378,33 +4206,15 @@ get-caller-file@^2.0.5: + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +-get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +- version "1.1.1" +- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" +- integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== ++get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: ++ version "1.2.2" ++ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" ++ integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: +- function-bind "^1.1.1" +- has "^1.0.3" +- has-symbols "^1.0.1" +- +-get-intrinsic@^1.1.3: +- version "1.1.3" +- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" +- integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +- dependencies: +- function-bind "^1.1.1" +- has "^1.0.3" +- has-symbols "^1.0.3" +- +-get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: +- version "1.2.1" +- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" +- integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +- dependencies: +- function-bind "^1.1.1" +- has "^1.0.3" ++ function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" ++ hasown "^2.0.0" + + get-stream@^5.1.0: + version "5.2.0" +@@ -4427,16 +4237,16 @@ get-symbol-description@^1.0.0: + get-intrinsic "^1.1.1" + + get-tsconfig@^4.7.0: +- version "4.7.0" +- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.0.tgz#06ce112a1463e93196aa90320c35df5039147e34" +- integrity sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw== ++ version "4.7.2" ++ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" ++ integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + + getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" +- integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= ++ integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +@@ -4510,7 +4320,7 @@ global-prefix@^3.0.0: + kind-of "^6.0.2" + which "^1.3.1" + +-global@^4.3.1, global@^4.3.2, global@^4.4.0, global@~4.4.0: ++global@4.4.0, global@^4.3.1, global@^4.3.2, global@^4.4.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== +@@ -4524,9 +4334,9 @@ globals@^11.1.0: + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + + globals@^13.19.0: +- version "13.19.0" +- resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" +- integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== ++ version "13.23.0" ++ resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" ++ integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + dependencies: + type-fest "^0.20.2" + +@@ -4550,13 +4360,13 @@ globby@^11.1.0: + slash "^3.0.0" + + globby@^13.1.1: +- version "13.1.2" +- resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" +- integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== ++ version "13.2.2" ++ resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" ++ integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" +- fast-glob "^3.2.11" +- ignore "^5.2.0" ++ fast-glob "^3.3.0" ++ ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +@@ -4573,9 +4383,9 @@ gopd@^1.0.1: + get-intrinsic "^1.1.3" + + got@^11.8.5: +- version "11.8.5" +- resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" +- integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== ++ version "11.8.6" ++ resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" ++ integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" +@@ -4590,9 +4400,9 @@ got@^11.8.5: + responselike "^2.0.0" + + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +- version "4.2.10" +- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" +- integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== ++ version "4.2.11" ++ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" ++ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + + graphemer@^1.4.0: + version "1.4.0" +@@ -4607,7 +4417,7 @@ handle-thing@^2.0.0: + har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +- integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= ++ integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + + har-validator@~5.1.3: + version "5.1.5" +@@ -4630,7 +4440,7 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: + has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= ++ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + + has-flag@^4.0.0: + version "4.0.0" +@@ -4638,18 +4448,18 @@ has-flag@^4.0.0: + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + + has-property-descriptors@^1.0.0: +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" +- integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== ++ version "1.0.1" ++ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" ++ integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: +- get-intrinsic "^1.1.1" ++ get-intrinsic "^1.2.2" + + has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +-has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: ++has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +@@ -4661,17 +4471,17 @@ has-tostringtag@^1.0.0: + dependencies: + has-symbols "^1.0.2" + +-has@^1.0.3: +- version "1.0.3" +- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" +- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +- dependencies: +- function-bind "^1.1.1" +- + hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" +- integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= ++ integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== ++ ++hasown@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" ++ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== ++ dependencies: ++ function-bind "^1.1.2" + + he@^1.2.0: + version "1.2.0" +@@ -4693,7 +4503,7 @@ hosted-git-info@^4.0.1, hosted-git-info@^4.1.0: + hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" +- integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= ++ integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" +@@ -4701,9 +4511,9 @@ hpack.js@^2.1.6: + wbuf "^1.1.0" + + html-entities@^2.3.2: +- version "2.3.3" +- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" +- integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== ++ version "2.4.0" ++ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" ++ integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + + html-minifier-terser@^6.0.2: + version "6.1.0" +@@ -4752,7 +4562,7 @@ http-cache-semantics@^4.0.0: + http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" +- integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= ++ integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + + http-errors@2.0.0: + version "2.0.0" +@@ -4768,7 +4578,7 @@ http-errors@2.0.0: + http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" +- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= ++ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" +@@ -4776,9 +4586,9 @@ http-errors@~1.6.2: + statuses ">= 1.4.0 < 2" + + http-parser-js@>=0.5.1: +- version "0.5.6" +- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" +- integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== ++ version "0.5.8" ++ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" ++ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + + http-proxy-agent@^5.0.0: + version "5.0.0" +@@ -4812,7 +4622,7 @@ http-proxy@^1.18.1: + http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" +- integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= ++ integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" +@@ -4877,21 +4687,21 @@ ieee754@^1.1.13: + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + + ignore@^5.2.0, ignore@^5.2.4: +- version "5.2.4" +- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" +- integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== ++ version "5.3.0" ++ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" ++ integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + + immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" +- integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= ++ integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + + immutable@^4.0.0: +- version "4.0.0" +- resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" +- integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== ++ version "4.3.4" ++ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" ++ integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + +-import-fresh@^3.2.1: ++import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +@@ -4915,7 +4725,7 @@ import-local@^3.0.2: + imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= ++ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + + indent-string@^4.0.0: + version "4.0.0" +@@ -4930,12 +4740,12 @@ indent-string@^5.0.0: + individual@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" +- integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c= ++ integrity sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g== + + inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" +- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= ++ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" +@@ -4948,38 +4758,20 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ++ integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + + ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +-internal-slot@^1.0.3: +- version "1.0.3" +- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" +- integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +- dependencies: +- get-intrinsic "^1.1.0" +- has "^1.0.3" +- side-channel "^1.0.4" +- +-internal-slot@^1.0.4: +- version "1.0.4" +- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" +- integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== +- dependencies: +- get-intrinsic "^1.1.3" +- has "^1.0.3" +- side-channel "^1.0.4" +- + internal-slot@^1.0.5: +- version "1.0.5" +- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" +- integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== ++ version "1.0.6" ++ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" ++ integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: +- get-intrinsic "^1.2.0" +- has "^1.0.3" ++ get-intrinsic "^1.2.2" ++ hasown "^2.0.0" + side-channel "^1.0.4" + + interpret@^3.1.1: +@@ -4993,9 +4785,9 @@ ipaddr.js@1.9.1: + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + + ipaddr.js@^2.0.1: +- version "2.0.1" +- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" +- integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== ++ version "2.1.0" ++ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" ++ integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + + is-arguments@^1.0.4: + version "1.1.1" +@@ -5005,16 +4797,7 @@ is-arguments@^1.0.4: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +-is-array-buffer@^3.0.1: +- version "3.0.1" +- resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" +- integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== +- dependencies: +- call-bind "^1.0.2" +- get-intrinsic "^1.1.3" +- is-typed-array "^1.1.10" +- +-is-array-buffer@^3.0.2: ++is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +@@ -5026,7 +4809,7 @@ is-array-buffer@^3.0.2: + is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= ++ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + + is-bigint@^1.0.1: + version "1.0.4" +@@ -5057,16 +4840,11 @@ is-builtin-module@^3.2.1: + dependencies: + builtin-modules "^3.3.0" + +-is-callable@^1.1.3, is-callable@^1.2.6, is-callable@^1.2.7: ++is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +-is-callable@^1.1.4, is-callable@^1.2.4: +- version "1.2.4" +- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" +- integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +- + is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" +@@ -5074,12 +4852,12 @@ is-ci@^3.0.0: + dependencies: + ci-info "^3.2.0" + +-is-core-module@^2.11.0, is-core-module@^2.12.0, is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.5.0: +- version "2.13.0" +- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" +- integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== ++is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0: ++ version "2.13.1" ++ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" ++ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: +- has "^1.0.3" ++ hasown "^2.0.0" + + is-date-object@^1.0.1: + version "1.0.5" +@@ -5101,7 +4879,7 @@ is-docker@^3.0.0: + is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" +- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= ++ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + + is-fullwidth-code-point@^3.0.0: + version "3.0.0" +@@ -5159,7 +4937,7 @@ is-path-inside@^3.0.3: + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" +- integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= ++ integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + + is-plain-obj@^3.0.0: + version "3.0.0" +@@ -5217,32 +4995,17 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: + dependencies: + has-symbols "^1.0.2" + +-is-typed-array@^1.1.10: +- version "1.1.10" +- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" +- integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== ++is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: ++ version "1.1.12" ++ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" ++ integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: +- available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" +- for-each "^0.3.3" +- gopd "^1.0.1" +- has-tostringtag "^1.0.0" +- +-is-typed-array@^1.1.3, is-typed-array@^1.1.9: +- version "1.1.9" +- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" +- integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== +- dependencies: +- available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" +- es-abstract "^1.20.0" +- for-each "^0.3.3" +- has-tostringtag "^1.0.0" ++ which-typed-array "^1.1.11" + + is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= ++ integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + + is-weakref@^1.0.2: + version "1.0.2" +@@ -5266,7 +5029,7 @@ isarray@^2.0.5: + isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= ++ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + + isbinaryfile@^4.0.8: + version "4.0.10" +@@ -5281,17 +5044,17 @@ isbinaryfile@^5.0.0: + isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" +- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= ++ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + + isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= ++ integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + + isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= ++ integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + + jackspeak@^2.3.5: + version "2.3.6" +@@ -5303,21 +5066,21 @@ jackspeak@^2.3.5: + "@pkgjs/parseargs" "^0.11.0" + + jake@^10.8.5: +- version "10.8.5" +- resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" +- integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== ++ version "10.8.7" ++ resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" ++ integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" +- filelist "^1.0.1" +- minimatch "^3.0.4" ++ filelist "^1.0.4" ++ minimatch "^3.1.2" + +-jest-util@^29.5.0: +- version "29.5.0" +- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" +- integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== ++jest-util@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" ++ integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: +- "@jest/types" "^29.5.0" ++ "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" +@@ -5334,12 +5097,12 @@ jest-worker@^27.4.5: + supports-color "^8.0.0" + + jest-worker@^29.4.3: +- version "29.5.0" +- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" +- integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== ++ version "29.7.0" ++ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" ++ integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" +- jest-util "^29.5.0" ++ jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +@@ -5365,7 +5128,7 @@ js-yaml@^4.1.0: + jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +- integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= ++ integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + + jsesc@^2.5.1: + version "2.5.2" +@@ -5380,7 +5143,7 @@ jsesc@^3.0.2: + jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +- integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= ++ integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + + json-buffer@3.0.1: + version "3.0.1" +@@ -5422,12 +5185,12 @@ json-schema@0.4.0: + json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" +- integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= ++ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +- integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= ++ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + + json5@^1.0.1, json5@^1.0.2: + version "1.0.2" +@@ -5442,9 +5205,9 @@ json5@^2.2.0, json5@^2.2.3: + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + + jsonc-eslint-parser@^2.0.4: +- version "2.1.0" +- resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.1.0.tgz#4c126b530aa583d85308d0b3041ff81ce402bbb2" +- integrity sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g== ++ version "2.4.0" ++ resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" ++ integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" +@@ -5454,7 +5217,7 @@ jsonc-eslint-parser@^2.0.4: + jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" +- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= ++ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +@@ -5477,15 +5240,20 @@ jsprim@^1.2.2: + json-schema "0.4.0" + verror "1.10.0" + ++keycode@2.2.0: ++ version "2.2.0" ++ resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" ++ integrity sha512-ps3I9jAdNtRpJrbBvQjpzyFbss/skHqzS+eu4RxKLaEAtFqkjZaB6TZMSivPbLxf4K7VI4SjR0P5mRCX5+Q25A== ++ + keycode@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.1.tgz#09c23b2be0611d26117ea2501c2c391a01f39eff" + integrity sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg== + +-keyv@^4.0.0: +- version "4.5.2" +- resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" +- integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== ++keyv@^4.0.0, keyv@^4.5.3: ++ version "4.5.4" ++ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" ++ integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +@@ -5494,77 +5262,77 @@ kind-of@^6.0.2, kind-of@^6.0.3: + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +-known-css-properties@^0.28.0: +- version "0.28.0" +- resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.28.0.tgz#8a8be010f368b3036fe6ab0ef4bbbed972bd6274" +- integrity sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ== ++known-css-properties@^0.29.0: ++ version "0.29.0" ++ resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.29.0.tgz#e8ba024fb03886f23cb882e806929f32d814158f" ++ integrity sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ== + + launch-editor@^2.6.0: +- version "2.6.0" +- resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" +- integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== ++ version "2.6.1" ++ resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" ++ integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" +- shell-quote "^1.7.3" ++ shell-quote "^1.8.1" + + lazy-val@^1.0.4, lazy-val@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== + +-lefthook-darwin-arm64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.5.0.tgz#f439bc8539993fdf188f3768d854205cb5b8c376" +- integrity sha512-URLZLiaIbwCuN9RD9r99udSvLPbsbGpQ4lFEVuWTkdI5f9pKFBv7Kw5wsCRiQk2vYQFP/vINMXQKO4g2NmToSw== ++lefthook-darwin-arm64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.5.3.tgz#a3d0150e988fc67b6dc6f0ef4d2eeb27fa9e730e" ++ integrity sha512-MZhbxsm42LNSzGn9tC7ZkEelr+JYpwT83Uozxk1XKyYk9cl65ZjfFYm6LPSEoYl+LMp5hTLR2Cn6f3W+egjwew== + +-lefthook-darwin-x64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.5.0.tgz#e6aac95c1625038c5bc117f40e4ed2d4fe564a23" +- integrity sha512-IrpnZ7Gw4DGNQhE2tWim2v8XFBO5+8CtaOsI+dvXnDyE8OSN2iyojByuqoA4vsLfrYjoG7AykFzoWp6FZZsRng== ++lefthook-darwin-x64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.5.3.tgz#6a60de7ec11e9463fd69d10cdef6ab70631fb65a" ++ integrity sha512-0gaJe6zazaDovIzguVvvULM/ORnhOvC10QxY9fRslCZQO9wZpHSyYskqbW2+KWPbheGcA+MLn2PmBXbcQ4+ckA== + +-lefthook-freebsd-arm64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.5.0.tgz#e92fb10de53869ae781352e7b924fb4353bc00c7" +- integrity sha512-sVVABorbSa+KWqT/8Sb3PlIlzeO8BQJxBcECRPwjCNd2o34ocVpeZCmRFs5jn3aF+QzUqCSAFyH6XOTvw+G74A== ++lefthook-freebsd-arm64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.5.3.tgz#dfbb97151d42b06d5dab6962dfbb91fbb8ad9ff6" ++ integrity sha512-TgNW9Rc7W6B7WEkquUGaKR6mdgYmjAvf8Wg9cRLWmXG9yzZjwBlDSzJMNwaLFIWakkkLZ/nODbhPldR4+mOyBA== + +-lefthook-freebsd-x64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.5.0.tgz#418b37b38a6b05e84008057f6067a2fc2f5118d6" +- integrity sha512-cHnpP67BWYDTnx6o4eq52JWYuV4dbpGRJeKH3FItnSpiwbmWJlnXgOI5PVfD9uxB8B6KQ4iaaff8zh2pdUaSPA== ++lefthook-freebsd-x64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.5.3.tgz#5a6ba8396b63705d2832c2e7e93565b8101a5d67" ++ integrity sha512-ihrHaZ3QEBP6rQhvIgNElZcoqHXjAIArak86KIQydtCHpPU5ZqcQO47/NLyWfbG1E0GC0MdC3dWL4gmo//e3Gg== + +-lefthook-linux-arm64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.5.0.tgz#276bd2e1f4e50a1dec1347c2f5ba98f201a7f0b5" +- integrity sha512-gPB+Tta9xt3dDcB539uSHvKAE3bcxmWbkkQpW3NGlKJOoSLbtHEFd9ZJlNXTJryNxf3zR0uPZj3z4YvfsQUeug== ++lefthook-linux-arm64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.5.3.tgz#d3cfb6a2cedf41c083d28953a7a02ac085c39e8a" ++ integrity sha512-Nwj6V8aQjROrngoEByfzeYmIYcZb0z7kwvh6rH3zyy/VtHhqXgaoqelBfHrSgwL6HCFgh4cry/BAPvZzS5kLGA== + +-lefthook-linux-x64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.5.0.tgz#ec648225a3466db2741d467484aba69be57af0d4" +- integrity sha512-Y3GiUC+8inZpA1bKI0LT9huk0ZGB1VCItdltys5Xe9FCFtkYYgBt981jTjiy2uxDy18DpWnDBlVwjhpyS6kYGw== ++lefthook-linux-x64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.5.3.tgz#812607a70c8b65a598378e670c4d5f9aad2b7cc9" ++ integrity sha512-ue3M4qCBcdKQJ6CeVz32zwUPYH2AnuytbR4yYVPFfWxLklqG0NtMNOaK0muJRvmXW8PSJr06z0me1z+ld6FwpQ== + +-lefthook-windows-arm64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.5.0.tgz#5a824f334f4771b647fdb15b352cb073ec1cb36c" +- integrity sha512-A/sLFrVy1Ivzz61Exv+ymM1T21d/7sraR9+SjpvJ5rz01GhZHbs0Y+T2R/cO0vJfN56gGW+lRrLDEk6UkbURCQ== ++lefthook-windows-arm64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.5.3.tgz#0026307930837e8b8669012ec1312a52ceef3b63" ++ integrity sha512-6pgUJAnyhGvIcej74KVuUwmSVkK7Boi8E9vuzpeQ0wFGN2lNMkVcYTaMI5bLKCX0l15f1htMnvOfKLnWEmxCfg== + +-lefthook-windows-x64@1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.5.0.tgz#3f89ddc5dcb25790ddea8be43bbdab844e2ce4a5" +- integrity sha512-FBAEhsAXaPMj0dN9a7/GFxaY1N9i1NRbr9TnEDId4lsdNvN3+Al1jNYoTuDRkH5Z5UipruR3j7KhiHX4T+K8cw== ++lefthook-windows-x64@1.5.3: ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.5.3.tgz#5a3abb7fe5bef6260445e39881c29eb6ac609509" ++ integrity sha512-t8Pipk1zkniqXh9sL1KEtvPLA6t+Q/q/m5kcugFmT8r/IcMJLwEZC4DYfX0z7j7H2fSkZfTXaMPAJblfXJ7MJw== + + lefthook@^1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.5.0.tgz#1e714f8b3ca9cd440fb45bdec5730f6f0c8dbb58" +- integrity sha512-XDmHDgtWD3wydwdtkZc7Kw7QPp3z+QLIXJeFO+hlZjSUDnezUetKRDByY6YenzEU9Ij4ckKlc4iP7m+fnlwW8A== ++ version "1.5.3" ++ resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.5.3.tgz#f82ddd39695bc3a77d4c9bc5d14ad692a13f14f9" ++ integrity sha512-s3ZtCTsEZt9NOxiUFNwu4czNvuycsMQYdKAn4pvxNCslmjcTlvIIpzOdPUtP/QfSuRhRWjk0fMQL2MJwblEppQ== + optionalDependencies: +- lefthook-darwin-arm64 "1.5.0" +- lefthook-darwin-x64 "1.5.0" +- lefthook-freebsd-arm64 "1.5.0" +- lefthook-freebsd-x64 "1.5.0" +- lefthook-linux-arm64 "1.5.0" +- lefthook-linux-x64 "1.5.0" +- lefthook-windows-arm64 "1.5.0" +- lefthook-windows-x64 "1.5.0" ++ lefthook-darwin-arm64 "1.5.3" ++ lefthook-darwin-x64 "1.5.3" ++ lefthook-freebsd-arm64 "1.5.3" ++ lefthook-freebsd-x64 "1.5.3" ++ lefthook-linux-arm64 "1.5.3" ++ lefthook-linux-x64 "1.5.3" ++ lefthook-windows-arm64 "1.5.3" ++ lefthook-windows-x64 "1.5.3" + + levn@^0.4.1: + version "0.4.1" +@@ -5577,7 +5345,7 @@ levn@^0.4.1: + lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" +- integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= ++ integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== + dependencies: + immediate "~3.0.5" + +@@ -5594,7 +5362,7 @@ lines-and-columns@^1.1.6: + load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" +- integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= ++ integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" +@@ -5646,7 +5414,7 @@ locate-path@^7.1.0: + lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" +- integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= ++ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + + lodash.memoize@^4.1.2: + version "4.1.2" +@@ -5661,7 +5429,7 @@ lodash.merge@^4.6.2: + lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" +- integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= ++ integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + + lodash.uniq@^4.5.0: + version "4.5.0" +@@ -5708,9 +5476,9 @@ lru-cache@^6.0.0: + yallist "^4.0.0" + + "lru-cache@^9.1.1 || ^10.0.0": +- version "10.0.1" +- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" +- integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== ++ version "10.1.0" ++ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" ++ integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== + + m3u8-parser@4.8.0: + version "4.8.0" +@@ -5721,6 +5489,24 @@ m3u8-parser@4.8.0: + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + ++m3u8-parser@^6.0.0: ++ version "6.2.0" ++ resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-6.2.0.tgz#5b2f2fe103b76bd3ffc77c6b1eafc3772b1251dd" ++ integrity sha512-qlC00JTxYOxawcqg+RB8jbyNwL3foY/nCY61kyWP+RCuJE9APLeqB/nSlTjb4Mg0yRmyERgjswpdQxMvkeoDrg== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@videojs/vhs-utils" "^3.0.5" ++ global "^4.4.0" ++ ++m3u8-parser@^7.1.0: ++ version "7.1.0" ++ resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-7.1.0.tgz#fa92ee22fc798150397c297152c879fe09f066c6" ++ integrity sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@videojs/vhs-utils" "^3.0.5" ++ global "^4.4.0" ++ + map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +@@ -5732,9 +5518,9 @@ map-obj@^4.1.0: + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + + marked@^9.0.3: +- version "9.0.3" +- resolved "https://registry.yarnpkg.com/marked/-/marked-9.0.3.tgz#95be5e8cba93f2c2ca1d6503794c4f02d81c97d9" +- integrity sha512-pI/k4nzBG1PEq1J3XFEHxVvjicfjl8rgaMaqclouGSMPhk7Q3Ejb2ZRxx/ZQOcQ1909HzVoWCFYq6oLgtL4BpQ== ++ version "9.1.6" ++ resolved "https://registry.yarnpkg.com/marked/-/marked-9.1.6.tgz#5d2a3f8180abfbc5d62e3258a38a1c19c0381695" ++ integrity sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q== + + matcher@^3.0.0: + version "3.0.0" +@@ -5761,19 +5547,19 @@ mdn-data@2.0.30: + media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= ++ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +-memfs@^3.4.1: +- version "3.4.1" +- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" +- integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== ++memfs@^3.4.3: ++ version "3.6.0" ++ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" ++ integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: +- fs-monkey "1.0.3" ++ fs-monkey "^1.0.4" + + memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" +- integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= ++ integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + + meow@^10.1.5: + version "10.1.5" +@@ -5796,7 +5582,7 @@ meow@^10.1.5: + merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= ++ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + + merge-source-map@^1.1.0: + version "1.1.0" +@@ -5818,7 +5604,7 @@ merge2@^1.3.0, merge2@^1.4.1: + methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" +- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= ++ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" +@@ -5873,7 +5659,7 @@ mimic-response@^3.1.0: + min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" +- integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= ++ integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +@@ -5909,9 +5695,9 @@ minimatch@^5.0.1, minimatch@^5.1.1: + brace-expansion "^2.0.1" + + minimatch@^9.0.1: +- version "9.0.1" +- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" +- integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== ++ version "9.0.3" ++ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" ++ integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +@@ -5925,14 +5711,14 @@ minimist-options@4.1.0: + kind-of "^6.0.3" + + minimist@^1.2.0, minimist@^1.2.6: +- version "1.2.7" +- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" +- integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== ++ version "1.2.8" ++ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" ++ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + + minipass@^3.0.0: +- version "3.3.4" +- resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" +- integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== ++ version "3.3.6" ++ resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" ++ integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +@@ -5962,7 +5748,7 @@ mkdirp@^1.0.3: + modify-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/modify-filename/-/modify-filename-1.1.0.tgz#9a2dec83806fbb2d975f22beec859ca26b393aa1" +- integrity sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE= ++ integrity sha512-EickqnKq3kVVaZisYuCxhtKbZjInCuwgwZWyAmRIp1NTMhri7r3380/uqwrUHfaDiPzLVTuoNy4whX66bxPVog== + + mpd-parser@0.22.1, mpd-parser@^0.22.1: + version "0.22.1" +@@ -5974,10 +5760,20 @@ mpd-parser@0.22.1, mpd-parser@^0.22.1: + "@xmldom/xmldom" "^0.8.3" + global "^4.4.0" + ++mpd-parser@^1.0.1, mpd-parser@^1.2.2: ++ version "1.2.2" ++ resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-1.2.2.tgz#bf479cbb0bec605130075c0e904a853b29265973" ++ integrity sha512-QCfB1koOoZw6E5La1cx+W/Yd0EZlRhHMqMr4TAJez0eRTuPDzPM5FWoiOqjyo37W+ISPLzmfJACSbJFEBjbL4Q== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@videojs/vhs-utils" "^3.0.5" ++ "@xmldom/xmldom" "^0.8.3" ++ global "^4.4.0" ++ + ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ++ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + + ms@2.1.2: + version "2.1.2" +@@ -5989,10 +5785,10 @@ ms@2.1.3, ms@^2.1.1: + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +-multicast-dns@^7.2.4: +- version "7.2.4" +- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" +- integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw== ++multicast-dns@^7.2.5: ++ version "7.2.5" ++ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" ++ integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" +@@ -6005,15 +5801,23 @@ mux.js@6.0.1: + "@babel/runtime" "^7.11.2" + global "^4.4.0" + ++mux.js@7.0.1, mux.js@^7.0.1: ++ version "7.0.1" ++ resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-7.0.1.tgz#745c77b0fb8aa81dbb47e96651428bfada49b08e" ++ integrity sha512-Omz79uHqYpMP1V80JlvEdCiOW1hiw4mBvDh9gaZEpxvB+7WYb2soZSzfuSRrK2Kh9Pm6eugQNrIpY/Bnyhk4hw== ++ dependencies: ++ "@babel/runtime" "^7.11.2" ++ global "^4.4.0" ++ + nanoid@^3.3.6: +- version "3.3.6" +- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" +- integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== ++ version "3.3.7" ++ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" ++ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + + natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +- integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= ++ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + + negotiator@0.6.3: + version "0.6.3" +@@ -6048,10 +5852,10 @@ node-forge@^1: + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +-node-releases@^2.0.12: +- version "2.0.12" +- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" +- integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== ++node-releases@^2.0.13: ++ version "2.0.13" ++ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" ++ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" +@@ -6124,36 +5928,16 @@ oauth-sign@~0.9.0: + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +-object-inspect@^1.12.0, object-inspect@^1.9.0: +- version "1.12.0" +- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" +- integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== +- +-object-inspect@^1.12.2: +- version "1.12.2" +- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" +- integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +- +-object-inspect@^1.12.3: +- version "1.12.3" +- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" +- integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== ++object-inspect@^1.13.1, object-inspect@^1.9.0: ++ version "1.13.1" ++ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" ++ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + + object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +-object.assign@^4.1.2: +- version "4.1.2" +- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" +- integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +- dependencies: +- call-bind "^1.0.0" +- define-properties "^1.1.3" +- has-symbols "^1.0.1" +- object-keys "^1.1.1" +- + object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" +@@ -6164,33 +5948,33 @@ object.assign@^4.1.4: + has-symbols "^1.0.3" + object-keys "^1.1.1" + +-object.fromentries@^2.0.6: +- version "2.0.6" +- resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" +- integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== ++object.fromentries@^2.0.7: ++ version "2.0.7" ++ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" ++ integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + +-object.groupby@^1.0.0: +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" +- integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== ++object.groupby@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" ++ integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" +- es-abstract "^1.21.2" ++ es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +-object.values@^1.1.6: +- version "1.1.6" +- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" +- integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== ++object.values@^1.1.7: ++ version "1.1.7" ++ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" ++ integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + + obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" +@@ -6212,7 +5996,7 @@ on-headers@~1.0.2: + once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" +- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= ++ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +@@ -6231,9 +6015,9 @@ onetime@^6.0.0: + mimic-fn "^4.0.0" + + open@^8.0.9: +- version "8.4.0" +- resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" +- integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== ++ version "8.4.2" ++ resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" ++ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" +@@ -6339,7 +6123,7 @@ parent-module@^1.0.0: + parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" +- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= ++ integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" +@@ -6385,12 +6169,12 @@ path-exists@^5.0.0: + path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= ++ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + + path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= ++ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + + path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" +@@ -6418,7 +6202,7 @@ path-scurry@^1.10.1: + path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" +- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= ++ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + + path-type@^3.0.0: + version "3.0.0" +@@ -6435,12 +6219,12 @@ path-type@^4.0.0: + pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" +- integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= ++ integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + + performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +- integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= ++ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + + picocolors@^0.2.1: + version "0.2.1" +@@ -6465,7 +6249,7 @@ pidtree@^0.3.0: + pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" +- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= ++ integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + + pkcs7@^1.0.4: + version "1.0.4" +@@ -6488,15 +6272,7 @@ pkg-dir@^7.0.0: + dependencies: + find-up "^6.3.0" + +-plist@^3.0.4: +- version "3.0.5" +- resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" +- integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA== +- dependencies: +- base64-js "^1.5.1" +- xmlbuilder "^9.0.7" +- +-plist@^3.0.5: ++plist@^3.0.4, plist@^3.0.5: + version "3.1.0" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== +@@ -6775,7 +6551,7 @@ postcss@^7.0.36: + picocolors "^0.2.1" + source-map "^0.6.1" + +-postcss@^8.4.14, postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.27, postcss@^8.4.31: ++postcss@^8.4.14, postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.28, postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== +@@ -6843,12 +6619,12 @@ proxy-addr@~2.0.7: + pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +- integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= ++ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + + psl@^1.1.28: +- version "1.8.0" +- resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" +- integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== ++ version "1.9.0" ++ resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" ++ integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + + pump@^3.0.0: + version "3.0.0" +@@ -6859,9 +6635,9 @@ pump@^3.0.0: + once "^1.3.1" + + punycode@^2.1.0, punycode@^2.1.1: +- version "2.1.1" +- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== ++ version "2.3.1" ++ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" ++ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + + pupa@^2.0.1: + version "2.1.1" +@@ -6870,10 +6646,10 @@ pupa@^2.0.1: + dependencies: + escape-goat "^2.0.0" + +-qs@6.10.3: +- version "6.10.3" +- resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" +- integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== ++qs@6.11.0: ++ version "6.11.0" ++ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" ++ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +@@ -6947,7 +6723,7 @@ read-pkg-up@^8.0.0: + read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" +- integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= ++ integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" +@@ -6974,9 +6750,9 @@ read-pkg@^6.0.0: + type-fest "^1.0.1" + + readable-stream@^2.0.1: +- version "2.3.7" +- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" +- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== ++ version "2.3.8" ++ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" ++ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" +@@ -6987,9 +6763,9 @@ readable-stream@^2.0.1: + util-deprecate "~1.0.1" + + readable-stream@^3.0.6: +- version "3.6.0" +- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" +- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== ++ version "3.6.2" ++ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" ++ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" +@@ -7017,17 +6793,10 @@ redent@^4.0.0: + indent-string "^5.0.0" + strip-indent "^4.0.0" + +-regenerate-unicode-properties@^10.0.1: +- version "10.0.1" +- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" +- integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +- dependencies: +- regenerate "^1.4.2" +- + regenerate-unicode-properties@^10.1.0: +- version "10.1.0" +- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" +- integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== ++ version "10.1.1" ++ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" ++ integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +@@ -7036,10 +6805,10 @@ regenerate@^1.4.2: + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +-regenerator-runtime@^0.13.4: +- version "0.13.9" +- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" +- integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== ++regenerator-runtime@^0.14.0: ++ version "0.14.0" ++ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" ++ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + + regenerator-transform@^0.15.2: + version "0.15.2" +@@ -7053,35 +6822,14 @@ regexp-tree@^0.1.27: + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" + integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== + +-regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +- version "1.4.3" +- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" +- integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +- dependencies: +- call-bind "^1.0.2" +- define-properties "^1.1.3" +- functions-have-names "^1.2.2" +- +-regexp.prototype.flags@^1.5.0: +- version "1.5.0" +- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" +- integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== ++regexp.prototype.flags@^1.5.1: ++ version "1.5.1" ++ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" ++ integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" +- functions-have-names "^1.2.3" +- +-regexpu-core@^5.1.0: +- version "5.1.0" +- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" +- integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== +- dependencies: +- regenerate "^1.4.2" +- regenerate-unicode-properties "^10.0.1" +- regjsgen "^0.6.0" +- regjsparser "^0.8.2" +- unicode-match-property-ecmascript "^2.0.0" +- unicode-match-property-value-ecmascript "^2.0.0" ++ set-function-name "^2.0.0" + + regexpu-core@^5.3.1: + version "5.3.2" +@@ -7095,11 +6843,6 @@ regexpu-core@^5.3.1: + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +-regjsgen@^0.6.0: +- version "0.6.0" +- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" +- integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== +- + regjsparser@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" +@@ -7107,13 +6850,6 @@ regjsparser@^0.10.0: + dependencies: + jsesc "~0.5.0" + +-regjsparser@^0.8.2: +- version "0.8.4" +- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" +- integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +- dependencies: +- jsesc "~0.5.0" +- + regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" +@@ -7124,7 +6860,7 @@ regjsparser@^0.9.1: + relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" +- integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= ++ integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + + renderkid@^3.0.0: + version "3.0.0" +@@ -7166,7 +6902,7 @@ request@^2.88.2: + require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" +- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= ++ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + + require-from-string@^2.0.2: + version "2.0.2" +@@ -7176,7 +6912,7 @@ require-from-string@^2.0.2: + requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" +- integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= ++ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + + resolve-alpn@^1.0.0: + version "1.2.1" +@@ -7205,12 +6941,12 @@ resolve-pkg-maps@^1.0.0: + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +-resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2: +- version "1.22.3" +- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.3.tgz#4b4055349ffb962600972da1fdc33c46a4eb3283" +- integrity sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw== ++resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: ++ version "1.22.8" ++ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" ++ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: +- is-core-module "^2.12.0" ++ is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +@@ -7279,17 +7015,17 @@ run-parallel@^1.1.9: + rust-result@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72" +- integrity sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I= ++ integrity sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA== + dependencies: + individual "^2.0.0" + +-safe-array-concat@^1.0.0: +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" +- integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== ++safe-array-concat@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" ++ integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" +- get-intrinsic "^1.2.0" ++ get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + +@@ -7306,7 +7042,7 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, + safe-json-parse@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac" +- integrity sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw= ++ integrity sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ== + dependencies: + rust-result "^1.0.0" + +@@ -7339,18 +7075,18 @@ sass-loader@^13.3.2: + neo-async "^2.6.2" + + sass@^1.68.0: +- version "1.68.0" +- resolved "https://registry.yarnpkg.com/sass/-/sass-1.68.0.tgz#0034b0cc9a50248b7d1702ac166fd25990023669" +- integrity sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA== ++ version "1.69.5" ++ resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde" ++ integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + + sax@^1.2.4: +- version "1.2.4" +- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== ++ version "1.3.0" ++ resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" ++ integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + + schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" +@@ -7374,26 +7110,27 @@ schema-utils@^4.0.0, schema-utils@^4.0.1: + select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" +- integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= ++ integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + + selfsigned@^2.1.1: +- version "2.1.1" +- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" +- integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== ++ version "2.4.1" ++ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" ++ integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: ++ "@types/node-forge" "^1.3.0" + node-forge "^1" + + semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" +- integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= ++ integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + + "semver@2 || 3 || 4 || 5", semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +-semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: ++semver@^6.2.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +@@ -7441,7 +7178,7 @@ serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" +- integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= ++ integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" +@@ -7461,6 +7198,25 @@ serve-static@1.15.0: + parseurl "~1.3.3" + send "0.18.0" + ++set-function-length@^1.1.1: ++ version "1.1.1" ++ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" ++ integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== ++ dependencies: ++ define-data-property "^1.1.1" ++ get-intrinsic "^1.2.1" ++ gopd "^1.0.1" ++ has-property-descriptors "^1.0.0" ++ ++set-function-name@^2.0.0: ++ version "2.0.1" ++ resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" ++ integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== ++ dependencies: ++ define-data-property "^1.0.1" ++ functions-have-names "^1.2.3" ++ has-property-descriptors "^1.0.0" ++ + setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" +@@ -7481,7 +7237,7 @@ shallow-clone@^3.0.0: + shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" +- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= ++ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +@@ -7495,22 +7251,17 @@ shebang-command@^2.0.0: + shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= ++ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + + shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +-shell-quote@^1.6.1: +- version "1.7.3" +- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" +- integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== +- +-shell-quote@^1.7.3: +- version "1.8.0" +- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" +- integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== ++shell-quote@^1.6.1, shell-quote@^1.8.1: ++ version "1.8.1" ++ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" ++ integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + + side-channel@^1.0.4: + version "1.0.4" +@@ -7527,9 +7278,9 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + + signal-exit@^4.0.1: +- version "4.0.2" +- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" +- integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== ++ version "4.1.0" ++ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" ++ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + + simple-update-notifier@2.0.0: + version "2.0.0" +@@ -7583,14 +7334,14 @@ sockjs@^0.3.24: + sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" +- integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= ++ integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + + sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" +- integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= ++ integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +@@ -7613,9 +7364,9 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + + spdx-correct@^3.0.0: +- version "3.1.1" +- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" +- integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== ++ version "3.2.0" ++ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" ++ integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" +@@ -7634,9 +7385,9 @@ spdx-expression-parse@^3.0.0: + spdx-license-ids "^3.0.0" + + spdx-license-ids@^3.0.0: +- version "3.0.11" +- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" +- integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== ++ version "3.0.16" ++ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" ++ integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + + spdy-transport@^3.0.0: + version "3.0.0" +@@ -7662,14 +7413,14 @@ spdy@^4.0.2: + spdy-transport "^3.0.0" + + sprintf-js@^1.1.2: +- version "1.1.2" +- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" +- integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== ++ version "1.1.3" ++ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" ++ integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + + sshpk@^1.7.0: +- version "1.17.0" +- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" +- integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== ++ version "1.18.0" ++ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" ++ integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" +@@ -7694,12 +7445,7 @@ statuses@2.0.1: + "statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" +- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +- +-streamsearch@^1.1.0: +- version "1.1.0" +- resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" +- integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== ++ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + + "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" +@@ -7720,58 +7466,40 @@ string-width@^5.0.1, string-width@^5.1.2: + strip-ansi "^7.0.1" + + string.prototype.padend@^3.0.0: +- version "3.1.3" +- resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" +- integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== ++ version "3.1.5" ++ resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" ++ integrity sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.3" +- es-abstract "^1.19.1" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + +-string.prototype.trim@^1.2.7: +- version "1.2.7" +- resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" +- integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== ++string.prototype.trim@^1.2.8: ++ version "1.2.8" ++ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" ++ integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + +-string.prototype.trimend@^1.0.5: +- version "1.0.5" +- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" +- integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== ++string.prototype.trimend@^1.0.7: ++ version "1.0.7" ++ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" ++ integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.19.5" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + +-string.prototype.trimend@^1.0.6: +- version "1.0.6" +- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" +- integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== ++string.prototype.trimstart@^1.0.7: ++ version "1.0.7" ++ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" ++ integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" +- +-string.prototype.trimstart@^1.0.5: +- version "1.0.5" +- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" +- integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== +- dependencies: +- call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.19.5" +- +-string.prototype.trimstart@^1.0.6: +- version "1.0.6" +- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" +- integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +- dependencies: +- call-bind "^1.0.2" +- define-properties "^1.1.4" +- es-abstract "^1.20.4" ++ define-properties "^1.2.0" ++ es-abstract "^1.22.1" + + string_decoder@^1.1.1: + version "1.3.0" +@@ -7795,16 +7523,16 @@ string_decoder@~1.1.1: + ansi-regex "^5.0.1" + + strip-ansi@^7.0.1: +- version "7.0.1" +- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" +- integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== ++ version "7.1.0" ++ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" ++ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + + strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +- integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= ++ integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + + strip-final-newline@^2.0.0: + version "2.0.0" +@@ -7891,9 +7619,9 @@ stylelint-use-logical-spec@^5.0.0: + integrity sha512-uLF876lrsGVWFPQ8haGhfDfsTyAzPoJq2AAExuSzE2V1uC8uCmuy6S66NseiEwcf0AGqWzS56kPVzF/hVvWIjA== + + stylelint@^15.10.3: +- version "15.10.3" +- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.10.3.tgz#995e4512fdad450fb83e13f3472001f6edb6469c" +- integrity sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA== ++ version "15.11.0" ++ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.11.0.tgz#3ff8466f5f5c47362bc7c8c9d382741c58bc3292" ++ integrity sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw== + dependencies: + "@csstools/css-parser-algorithms" "^2.3.1" + "@csstools/css-tokenizer" "^2.2.0" +@@ -7902,12 +7630,12 @@ stylelint@^15.10.3: + balanced-match "^2.0.0" + colord "^2.9.3" + cosmiconfig "^8.2.0" +- css-functions-list "^3.2.0" ++ css-functions-list "^3.2.1" + css-tree "^2.3.1" + debug "^4.3.4" + fast-glob "^3.3.1" + fastest-levenshtein "^1.0.16" +- file-entry-cache "^6.0.1" ++ file-entry-cache "^7.0.0" + global-modules "^2.0.0" + globby "^11.1.0" + globjoin "^0.1.4" +@@ -7916,13 +7644,13 @@ stylelint@^15.10.3: + import-lazy "^4.0.0" + imurmurhash "^0.1.4" + is-plain-object "^5.0.0" +- known-css-properties "^0.28.0" ++ known-css-properties "^0.29.0" + mathml-tag-names "^2.1.3" + meow "^10.1.5" + micromatch "^4.0.5" + normalize-path "^3.0.0" + picocolors "^1.0.0" +- postcss "^8.4.27" ++ postcss "^8.4.28" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^6.0.0" + postcss-selector-parser "^6.0.13" +@@ -7983,15 +7711,16 @@ svg-tags@^1.0.0: + integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + + svgo@^3.0.2: +- version "3.0.2" +- resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" +- integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== ++ version "3.0.4" ++ resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.4.tgz#67b40a710743e358e8d19ec288de8f1e388afbb4" ++ integrity sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" +- csso "^5.0.5" ++ css-what "^6.1.0" ++ csso "5.0.5" + picocolors "^1.0.0" + + synckit@^0.8.5: +@@ -8019,9 +7748,9 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + + tar@^6.1.12: +- version "6.1.15" +- resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" +- integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== ++ version "6.2.0" ++ resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" ++ integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" +@@ -8039,40 +7768,30 @@ temp-file@^3.4.0: + fs-extra "^10.0.0" + + terser-webpack-plugin@^5.3.7: +- version "5.3.7" +- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" +- integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== ++ version "5.3.9" ++ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" ++ integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" +- terser "^5.16.5" ++ terser "^5.16.8" + +-terser@^5.10.0: +- version "5.14.2" +- resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" +- integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== ++terser@^5.10.0, terser@^5.16.8: ++ version "5.24.0" ++ resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" ++ integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== + dependencies: +- "@jridgewell/source-map" "^0.3.2" +- acorn "^8.5.0" +- commander "^2.20.0" +- source-map-support "~0.5.20" +- +-terser@^5.16.5: +- version "5.16.9" +- resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.9.tgz#7a28cb178e330c484369886f2afd623d9847495f" +- integrity sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg== +- dependencies: +- "@jridgewell/source-map" "^0.3.2" +- acorn "^8.5.0" ++ "@jridgewell/source-map" "^0.3.3" ++ acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + + text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +- integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= ++ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + + thunky@^1.0.2: + version "1.1.0" +@@ -8106,7 +7825,7 @@ tmp@^0.2.0: + to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" +- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= ++ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + + to-regex-range@^5.0.1: + version "5.0.1" +@@ -8141,7 +7860,7 @@ trim-newlines@^4.0.2: + truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" +- integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys= ++ integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +@@ -8163,14 +7882,14 @@ tslib@^2.0.3, tslib@^2.3.0, tslib@^2.5.0, tslib@^2.6.0: + tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" +- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= ++ integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + + tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= ++ integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + + type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" +@@ -8271,12 +7990,17 @@ underscore@1.13.1: + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + ++undici-types@~5.26.4: ++ version "5.26.5" ++ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" ++ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== ++ + undici@^5.19.1: +- version "5.19.1" +- resolved "https://registry.yarnpkg.com/undici/-/undici-5.19.1.tgz#92b1fd3ab2c089b5a6bd3e579dcda8f1934ebf6d" +- integrity sha512-YiZ61LPIgY73E7syxCDxxa3LV2yl3sN8spnIuTct60boiiRaE1J8mNWHO8Im2Zi/sFrPusjLlmRPrsyraSqX6A== ++ version "5.28.0" ++ resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.0.tgz#09f6aa4a6f34de8996eec585fe4ceebaa9ef3f36" ++ integrity sha512-gM12DkXhlAc5+/TPe60iy9P6ETgVfqTuRJ6aQ4w8RYu0MqKuXhaq3/b86GfzDQnNA3NUO6aUNdvevrKH59D0Nw== + dependencies: +- busboy "^1.6.0" ++ "@fastify/busboy" "^2.0.0" + + unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" +@@ -8291,20 +8015,15 @@ unicode-match-property-ecmascript@^2.0.0: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +-unicode-match-property-value-ecmascript@^2.0.0: +- version "2.0.0" +- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" +- integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +- + unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + + unicode-property-aliases-ecmascript@^2.0.0: +- version "2.0.0" +- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" +- integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== ++ version "2.1.0" ++ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" ++ integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + + universalify@^0.1.0: + version "0.1.2" +@@ -8312,14 +8031,14 @@ universalify@^0.1.0: + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + + universalify@^2.0.0: +- version "2.0.0" +- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" +- integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== ++ version "2.0.1" ++ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" ++ integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + + unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= ++ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + + untildify@^4.0.0: + version "4.0.0" +@@ -8334,10 +8053,10 @@ unused-filename@^2.1.0: + modify-filename "^1.1.0" + path-exists "^4.0.0" + +-update-browserslist-db@^1.0.11: +- version "1.0.11" +- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" +- integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== ++update-browserslist-db@^1.0.13: ++ version "1.0.13" ++ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" ++ integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" +@@ -8357,34 +8076,33 @@ url-toolkit@^2.2.1: + utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" +- integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E= ++ integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= ++ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + + util@^0.12.4: +- version "0.12.4" +- resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" +- integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== ++ version "0.12.5" ++ resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" ++ integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" +- safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + + utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" +- integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= ++ integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + + utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" +- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= ++ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + + uuid@^3.3.2: + version "3.4.0" +@@ -8407,12 +8125,12 @@ validate-npm-package-license@^3.0.1: + vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" +- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= ++ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + + verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" +- integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= ++ integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" +@@ -8427,7 +8145,7 @@ verror@^1.10.0: + core-util-is "1.0.2" + extsprintf "^1.2.0" + +-video.js@7.21.5, "video.js@^6 || ^7", "video.js@^6 || ^7 || ^8", video.js@^7.0.0, "video.js@^7.2.0 || ^6.6.0": ++video.js@7.21.5, "video.js@^6 || ^7", video.js@^7.0.0, "video.js@^7.2.0 || ^6.6.0": + version "7.21.5" + resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.21.5.tgz#36fcbbdeded757089a10bbb78f49c360a2d0c9d4" + integrity sha512-WRq86tXZKrThA9mK+IR+v4tIQVVvnb5LhvL71fD2AX7TxVOPdaeK1X/wyuUruBqWaOG3w2sZXoMY6HF2Jlo9qA== +@@ -8446,6 +8164,33 @@ video.js@7.21.5, "video.js@^6 || ^7", "video.js@^6 || ^7 || ^8", video.js@^7.0.0 + videojs-font "3.2.0" + videojs-vtt.js "^0.15.5" + ++"video.js@^6 || ^7 || ^8", "video.js@^7 || ^8": ++ version "8.6.1" ++ resolved "https://registry.yarnpkg.com/video.js/-/video.js-8.6.1.tgz#d25f59fbf30fb21c0bcf04a1de6a98dfd137997c" ++ integrity sha512-CNYVJ5WWIZ7bOhbkkfcKqLGoc6WsE3Ft2RfS1lXdQTWk8UiSsPW2Ssk2JzPCA8qnIlUG9os/faCFsYWjyu4JcA== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@videojs/http-streaming" "3.7.0" ++ "@videojs/vhs-utils" "^4.0.0" ++ "@videojs/xhr" "2.6.0" ++ aes-decrypter "^4.0.1" ++ global "4.4.0" ++ keycode "2.2.0" ++ m3u8-parser "^6.0.0" ++ mpd-parser "^1.0.1" ++ mux.js "^7.0.1" ++ safe-json-parse "4.0.0" ++ videojs-contrib-quality-levels "4.0.0" ++ videojs-font "4.1.0" ++ videojs-vtt.js "0.15.5" ++ ++videojs-contrib-quality-levels@4.0.0: ++ version "4.0.0" ++ resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.0.0.tgz#faa8096594cdbfc3ccbefe8572fc20531ba23f3d" ++ integrity sha512-u5rmd8BjLwANp7XwuQ0Q/me34bMe6zg9PQdHfTS7aXgiVRbNTb4djcmfG7aeSrkpZjg+XCLezFNenlJaCjBHKw== ++ dependencies: ++ global "^4.4.0" ++ + videojs-contrib-quality-levels@^2.0.4: + version "2.2.1" + resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.2.1.tgz#46bd7e1db25e6e45824dadf933b08f0c6ec724a1" +@@ -8466,6 +8211,11 @@ videojs-font@3.2.0: + resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232" + integrity sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA== + ++videojs-font@4.1.0: ++ version "4.1.0" ++ resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-4.1.0.tgz#3ae1dbaac60b4f0f1c4e6f7ff9662a89df176015" ++ integrity sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w== ++ + videojs-http-source-selector@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/videojs-http-source-selector/-/videojs-http-source-selector-1.1.6.tgz#073aadbea0106ba6c98d6b611094dbf8554ffa1f" +@@ -8499,7 +8249,7 @@ videojs-vtt-thumbnails-freetube@0.0.15: + request "^2.88.2" + video.js "^7.2.0 || ^6.6.0" + +-videojs-vtt.js@^0.15.5: ++videojs-vtt.js@0.15.5, videojs-vtt.js@^0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz#567776eaf2a7a928d88b148a8b401ade2406f2ca" + integrity sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ== +@@ -8512,9 +8262,9 @@ vue-devtools@^5.1.4: + integrity sha512-EBAEXvAHUinsPzoSiElps0JgtLXUnJXKIJbP6nfdz/R63VdKBMfJ34/rFip+4iT7iMbVS5lA4W6N1jq4Hj4LCg== + + vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.3.1: +- version "9.3.1" +- resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz#429955e041ae5371df5f9e37ebc29ba046496182" +- integrity sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g== ++ version "9.3.2" ++ resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" ++ integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" +@@ -8535,9 +8285,9 @@ vue-i18n@^8.28.2: + integrity sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA== + + vue-loader@^15.10.0: +- version "15.10.0" +- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.10.0.tgz#2a12695c421a2a2cc2138f05a949d04ed086e38b" +- integrity sha512-VU6tuO8eKajrFeBzMssFUP9SvakEeeSi1BxdTH5o3+1yUyrldp8IERkSdXlMI2t4kxF2sqYUDsQY+WJBxzBmZg== ++ version "15.11.1" ++ resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.11.1.tgz#dee91169211276ed43c5715caef88a56b1f497b0" ++ integrity sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q== + dependencies: + "@vue/component-compiler-utils" "^3.1.0" + hash-sum "^1.0.2" +@@ -8577,11 +8327,11 @@ vue-tiny-slider@^0.1.39: + tiny-slider "^2.9.2" + + vue@^2.7.14: +- version "2.7.14" +- resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17" +- integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ== ++ version "2.7.15" ++ resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.15.tgz#94cd34e6e9f22cd2d35a02143f96a5beac1c1f54" ++ integrity sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ== + dependencies: +- "@vue/compiler-sfc" "2.7.14" ++ "@vue/compiler-sfc" "2.7.15" + csstype "^3.1.0" + + vuex@^3.6.2: +@@ -8624,12 +8374,12 @@ webpack-cli@^5.1.4: + webpack-merge "^5.7.3" + + webpack-dev-middleware@^5.3.1: +- version "5.3.1" +- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" +- integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== ++ version "5.3.3" ++ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" ++ integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" +- memfs "^3.4.1" ++ memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" +@@ -8671,11 +8421,12 @@ webpack-dev-server@^4.15.1: + ws "^8.13.0" + + webpack-merge@^5.7.3: +- version "5.8.0" +- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" +- integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== ++ version "5.10.0" ++ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" ++ integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" ++ flat "^5.0.2" + wildcard "^2.0.0" + + webpack-sources@^3.2.3: +@@ -8684,9 +8435,9 @@ webpack-sources@^3.2.3: + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + + webpack@^5.88.2: +- version "5.88.2" +- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" +- integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== ++ version "5.89.0" ++ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" ++ integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" +@@ -8738,41 +8489,17 @@ which-boxed-primitive@^1.0.2: + is-string "^1.0.5" + is-symbol "^1.0.3" + +-which-typed-array@^1.1.10: +- version "1.1.11" +- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" +- integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== ++which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2: ++ version "1.1.13" ++ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" ++ integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" ++ call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +-which-typed-array@^1.1.2: +- version "1.1.8" +- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" +- integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== +- dependencies: +- available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" +- es-abstract "^1.20.0" +- for-each "^0.3.3" +- has-tostringtag "^1.0.0" +- is-typed-array "^1.1.9" +- +-which-typed-array@^1.1.9: +- version "1.1.9" +- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" +- integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +- dependencies: +- available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" +- for-each "^0.3.3" +- gopd "^1.0.1" +- has-tostringtag "^1.0.0" +- is-typed-array "^1.1.10" +- + which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" +@@ -8788,9 +8515,9 @@ which@^2.0.1: + isexe "^2.0.0" + + wildcard@^2.0.0: +- version "2.0.0" +- resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" +- integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== ++ version "2.0.1" ++ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" ++ integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" +@@ -8813,7 +8540,7 @@ wrap-ansi@^8.1.0: + wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ++ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + + write-file-atomic@^5.0.1: + version "5.0.1" +@@ -8824,9 +8551,9 @@ write-file-atomic@^5.0.1: + signal-exit "^4.0.1" + + ws@^8.13.0: +- version "8.13.0" +- resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" +- integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== ++ version "8.14.2" ++ resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" ++ integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== + + xml-name-validator@^4.0.0: + version "4.0.0" +@@ -8838,11 +8565,6 @@ xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +-xmlbuilder@^9.0.7: +- version "9.0.7" +- resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" +- integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +- + y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" +@@ -8851,7 +8573,7 @@ y18n@^5.0.5: + yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +- integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= ++ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + + yallist@^3.0.2: + version "3.1.1" +@@ -8873,9 +8595,9 @@ yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.2: + yaml "^2.0.0" + + yaml@^2.0.0: +- version "2.2.2" +- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" +- integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== ++ version "2.3.4" ++ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" ++ integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + + yargs-parser@^20.2.9: + version "20.2.9" +@@ -8903,7 +8625,7 @@ yargs@^17.6.2: + yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" +- integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= ++ integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" diff --git a/testing/freetube/freetube.desktop b/testing/freetube/freetube.desktop new file mode 100644 index 0000000..649183b --- /dev/null +++ b/testing/freetube/freetube.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=FreeTube +GenericName=YouTube Player +Comment=An open source desktop YouTube player built with privacy in mind. +Exec=freetube %U +Terminal=false +Type=Application +Icon=freetube +MimeType=x-scheme-handler/freetube; +Categories=Network; diff --git a/testing/freetube/freetube.sh b/testing/freetube/freetube.sh new file mode 100644 index 0000000..487ae8b --- /dev/null +++ b/testing/freetube/freetube.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec electron /usr/lib/freetube "$@" diff --git a/testing/freetube/package-only-necessary.patch b/testing/freetube/package-only-necessary.patch new file mode 100644 index 0000000..c89f141 --- /dev/null +++ b/testing/freetube/package-only-necessary.patch @@ -0,0 +1,28 @@ +diff --git a/_scripts/build.js.orig b/_scripts/build.js +index 035f986..75991d9 100644 +--- a/_scripts/build.js.orig ++++ b/_scripts/build.js +@@ -36,12 +36,13 @@ if (platform === 'darwin') { + arch = Arch.armv7l + } + +- targets = Platform.LINUX.createTarget(['deb', 'zip', '7z', 'apk', 'rpm', 'AppImage', 'pacman'], arch) ++ targets = Platform.LINUX.createTarget(['dir'], arch) + } + + const config = { + appId: `io.freetubeapp.${name}`, + copyright: 'Copyleft © 2020-2023 freetubeapp@protonmail.com', ++ electronDist: '/usr/lib/electron', + // asar: false, + // compression: 'store', + productName, +@@ -85,7 +86,7 @@ const config = { + linux: { + category: 'Network', + icon: '_icons/icon.svg', +- target: ['deb', 'zip', '7z', 'apk', 'rpm', 'AppImage', 'pacman'], ++ target: ['dir'], + }, + // See the following issues for more information + // https://github.com/jordansissel/fpm/issues/1503 diff --git a/testing/hsxkpasswd/APKBUILD b/testing/hsxkpasswd/APKBUILD new file mode 100644 index 0000000..823c68b --- /dev/null +++ b/testing/hsxkpasswd/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=hsxkpasswd +pkgver=3.6 +pkgrel=0 +pkgdesc="Generate secure, memorable passwords inspired by XKCD and Password Haystacks" +#arch="noarch" +# needs updating with new depends +url="https://www.bartbusschots.ie/s/publications/software/xkpasswd/" +license="BSD-2-Clause" +depends=" + perl + perl-clone + perl-datetime + perl-file-homedir + perl-file-share + perl-json + perl-list-moreutils + perl-math-round + perl-readonly + perl-text-unidecode + perl-type-tiny + " +makedepends="perl-module-build" +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://github.com/bbusschots/hsxkpasswd/archive/v$pkgver.tar.gz" + +build() { + PERL_MM_USE_DEFAULT=1 MODULEBUILDRC=/dev/null perl ./Build.PL + ./Build +} + +check() { + PERL_MM_USE_DEFAULT=1 ./Build test +} + +package() { + ./Build install --installdirs=vendor --destdir="$pkgdir" + find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete +} + +sha512sums=" +b93f3e8a209152def43040d05f27ed404ff7d596f69f831d1666cbd1dcb06907558b0e9ab9b256cfa25aa528fc92e13b816a0b8d476f4334a53f69b44612708f hsxkpasswd-3.6.tar.gz +" diff --git a/testing/perl-file-share/APKBUILD b/testing/perl-file-share/APKBUILD new file mode 100644 index 0000000..d80a477 --- /dev/null +++ b/testing/perl-file-share/APKBUILD @@ -0,0 +1,37 @@ +# Automatically generated by apkbuild-cpan, template 3 +# Contributor: Antoine Martin (ayakael) +# Maintainer: Antoine Martin (ayakael) +pkgname=perl-file-share +#_pkgreal is used by apkbuild-cpan to find modules at MetaCpan +_pkgreal=File-Share +pkgver=0.27 +pkgrel=1 +pkgdesc="Extend File::ShareDir to Local Libraries" +url="https://metacpan.org/release/File-Share/" +arch="noarch" +license="GPL-1.0-or-later OR Artistic-1.0-Perl" +depends="perl perl-file-sharedir perl-readonly" +makedepends="perl-dev" +subpackages="$pkgname-doc" +source="https://cpan.metacpan.org/authors/id/I/IN/INGY/File-Share-$pkgver.tar.gz" +builddir="$srcdir/$_pkgreal-$pkgver" + +build() { + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + PERL_MM_USE_DEFAULT=1 perl -I. Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + make test +} + +package() { + make DESTDIR="$pkgdir" install + find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete +} + +sha512sums=" +7c321de08e49f252e8e2126da00ea05ced13db362de758a693ee7f40452827fbf2591fb9e6c80caa27bb8767b3596893fc8762993a167583a0b40091e5db5ec7 File-Share-0.27.tar.gz +" diff --git a/testing/py3-aenum/APKBUILD b/testing/py3-aenum/APKBUILD new file mode 100644 index 0000000..a766f60 --- /dev/null +++ b/testing/py3-aenum/APKBUILD @@ -0,0 +1,41 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-aenum +_pyname=aenum +pkgver=3.1.15 +pkgrel=0 +pkgdesc="Advanced Enumerations for Python" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +arch="noarch" +depends="python3" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +options="!check" # Failing test unit +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +3bee86fbe5e4dacf0109f3fb7e7eec069addea7dc8e4516be3eb643315e38d5eb3a23f347ac8c6bde65e294e4f237cc830109c30a5a6c1b3d9c85dc68067dbf3 py3-aenum-3.1.15.tar.gz +" diff --git a/testing/py3-backports-abc/APKBUILD b/testing/py3-backports-abc/APKBUILD new file mode 100644 index 0000000..ee78874 --- /dev/null +++ b/testing/py3-backports-abc/APKBUILD @@ -0,0 +1,44 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=backports_abc +pkgname=py3-backports-abc +pkgver=0.5 +pkgrel=0 +arch="noarch" +pkgdesc="A backport of recent additions to the 'collections.abc' module." +url="https://pypi.python.org/project/$_pyname" +license="MIT" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + python3-dev + " +checkdepends=" + py3-pytest + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + SETUPTOOLS_SCM_PRETEND_VERSION=$pkgver \ + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 ./tests.py +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +5c2bc01bce8d3ed482bf5d8361a20f9afa3edc1c50280f0a01ffb890690b92296fcbfa68f79677fc3ebba851617f339cb6367ccdd0fadf1127a4e3c030784b7d py3-backports-abc-0.5.tar.gz +" diff --git a/testing/py3-click-didyoumean/APKBUILD b/testing/py3-click-didyoumean/APKBUILD new file mode 100644 index 0000000..29f984b --- /dev/null +++ b/testing/py3-click-didyoumean/APKBUILD @@ -0,0 +1,35 @@ +# Contributor: psykose +# Maintainer: Antoine Martin (ayakael) +pkgname=py3-click-didyoumean +pkgver=0.3.0 +pkgrel=3 +pkgdesc="Git-like did-you-mean feature in click" +url="https://github.com/click-contrib/click-didyoumean" +arch="noarch" +license="MIT" +depends="python3 py3-click" +makedepends="py3-gpep517 py3-poetry-core" +checkdepends="py3-pytest" +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/click-contrib/click-didyoumean/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir/click-didyoumean-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH=src \ + pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +4927ee392f27950c3f7ef5e0f1d5a5e2421172f3e9d34ec76986c9c7ea698cfa1981678a06fb8682577d6ed04c242c42bdd1d796d7623a1c99dfdbdb61c80fca py3-click-didyoumean-0.3.0.tar.gz +" diff --git a/testing/py3-click-repl/APKBUILD b/testing/py3-click-repl/APKBUILD new file mode 100644 index 0000000..815c487 --- /dev/null +++ b/testing/py3-click-repl/APKBUILD @@ -0,0 +1,35 @@ +# Contributor: psykose +# Maintainer: Antoien Martin (ayakael) +pkgname=py3-click-repl +pkgver=0.3.0 +pkgrel=2 +pkgdesc="Subcommand REPL for click apps" +url="https://github.com/click-contrib/click-repl" +arch="noarch" +license="MIT" +depends="python3 py3-click py3-prompt_toolkit" +makedepends="py3-gpep517 py3-setuptools py3-wheel" +checkdepends="py3-pytest py3-pytest-cov" +subpackages="$pkgname-pyc" +source="$pkgname-$pkgver.tar.gz::https://github.com/click-contrib/click-repl/archive/refs/tags/$pkgver.tar.gz" +builddir="$srcdir/click-repl-$pkgver" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH=. \ + pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +4135cfd4a0b041d9e6446b4c938bb5863d851703f47f204cd78fc9e5ae6b7fd71215abbf08863d9a5cdb664f92df5fca2380a6efa7ddeb67dd6c9b1d4f210f65 py3-click-repl-0.3.0.tar.gz +" diff --git a/testing/py3-concurrent-log-handler/APKBUILD b/testing/py3-concurrent-log-handler/APKBUILD new file mode 100644 index 0000000..d917372 --- /dev/null +++ b/testing/py3-concurrent-log-handler/APKBUILD @@ -0,0 +1,47 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=concurrent-log-handler +pkgname="py3-$_pyname" +pkgver=0.9.24 +pkgrel=0 +arch="noarch" +pkgdesc="The lightning-fast ASGI server" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +depends=" + py3-portalocker + " +makedepends=" + py3-setuptools + py3-installer + py3-gpep517 + py3-wheel + " +checkdepends=" + py3-pytest + py3-stresstest + " +options="!check" # Missing depend stresstest +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$builddir" pytest +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +370003f3c3778f99ba85f8d1fa8331eeee39f76f7ecc6f30ce2cb809790a80cc288005098bbb1b4e737957f08e29b7dbec055bcd685ae50611f909b6c74f8d78 py3-concurrent-log-handler-0.9.24.tar.gz +" diff --git a/testing/py3-dacite/APKBUILD b/testing/py3-dacite/APKBUILD new file mode 100644 index 0000000..c7d951a --- /dev/null +++ b/testing/py3-dacite/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=dacite +pkgname="py3-$_pyname" +pkgver=1.8.1 +pkgrel=0 +arch="noarch" +pkgdesc="This module simplifies creation of data classes (PEP 557) from dictionaries." +url="https://pypi.python.org/project/$_pyname" +license="MIT" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +checkdepends=" + py3-pytest + py3-pytest-benchmark + py3-pytest-cov + py3-coveralls + " +source="$pkgname-$pkgver.tar.gz::https://github.com/konradhalas/dacite/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +4b40c0bdcf5490bcc77de9e7f04b7267642bcfd41e4168607a5457f38abe3ad4b3041d8a23cb43af76de14eabee45f900ad5ddf7af8f70a2be4850bccc2d3af1 py3-dacite-1.8.1.tar.gz +" diff --git a/testing/py3-django-allauth/APKBUILD b/testing/py3-django-allauth/APKBUILD new file mode 100644 index 0000000..eaed0e6 --- /dev/null +++ b/testing/py3-django-allauth/APKBUILD @@ -0,0 +1,50 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-allauth +_pyname="django-allauth" +pkgver=0.58.2 +pkgrel=0 +arch="noarch" +pkgdesc="Integrated set of Django applications addressing SSO" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-django + py3-openid + py3-requests + py3-requests-oauthlib + py3-jwt + py3-cryptography + " +makedepends=" + py3-setuptools + py3-build + py3-installer + py3-wheel + " +checkdepends=" + py3-qrcode + py3-pytest + py3-pytest-django + py3-onelogin + " +source="$pkgname-$pkgver.tar.gz::https://github.com/pennersr/$_pyname/archive/$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +options="!check" # Failing test unit +subpackages="$pkgname-pyc" + +build() { + python3 -m build --wheel --skip-dependency-check --no-isolation +} + +check() { + python3 manage.py test allauth +} + +package() { + python3 -m installer --destdir="$pkgdir" dist/*.whl +} +sha512sums=" +33793619f5d1fd424d215ed16b67a8215a2a5875e54ece7163dc5250e6b03fd3c6e671669fc16b3d255b0844d235fa57409cb280410cbbc87231c1f2daf112ad py3-django-allauth-0.58.2.tar.gz +" diff --git a/testing/py3-django-celery-results/APKBUILD b/testing/py3-django-celery-results/APKBUILD new file mode 100644 index 0000000..c298a82 --- /dev/null +++ b/testing/py3-django-celery-results/APKBUILD @@ -0,0 +1,54 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-celery-results +_pyname="django_celery_results" +pkgver=2.5.1 +pkgrel=0 +arch="noarch !s390x" # Missing py3-celery depend +pkgdesc="Celery result backends for Django." +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends=" + py3-django + py3-celery + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +checkdepends=" + py3-pytest + py3-pytest-django + py3-pytest-benchmark + py3-pytest-cov + py3-pytz + py3-psycopg2 + py3-pyscopg + py3-case + " +options="!check" # Broken testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 manage.py test +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +2da39098a36847ab171a0758b37daafd0a7e17c905b599efebb582226a7adce5f1b5b941bd59db29e5d502d896f8474d2b9771454ef409cdef03b952f0a42526 py3-django-celery-results-2.5.1.tar.gz +" diff --git a/testing/py3-django-channels-redis/APKBUILD b/testing/py3-django-channels-redis/APKBUILD new file mode 100644 index 0000000..7f516d7 --- /dev/null +++ b/testing/py3-django-channels-redis/APKBUILD @@ -0,0 +1,49 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-channels-redis +_pyname="channels_redis" +pkgver=4.1.0 +pkgrel=0 +arch='noarch' +pkgdesc="Redis-backed ASGI channel layer implementation" +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends=" + py3-django-channels + py3-asgiref + py3-redis + py3-msgpack + py3-cryptography + " +checkdepends=" + py3-async-timeout + py3-pytest + py3-pytest-timeout + py3-pytest-asyncio + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +558ccdb36cad7cb4d97fdc41ed25cfebbc8b381c867ad0b8704dfde8e6d754a4e53a79726260a748b70f906750702c0226774a8574e09bd6933b6ab797ce29df py3-django-channels-redis-4.1.0.tar.gz +" diff --git a/testing/py3-django-channels/APKBUILD b/testing/py3-django-channels/APKBUILD new file mode 100644 index 0000000..ac44d52 --- /dev/null +++ b/testing/py3-django-channels/APKBUILD @@ -0,0 +1,41 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-channels +_pyname="channels" +pkgver=4.0.0 +pkgrel=0 +arch="noarch" +pkgdesc="Developer-friendly asynchrony for Django" +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends=" + py3-django + py3-asgiref + py3-daphne + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +903d7e8cc95de8d2754afc665dac828cc9ee19f0938f4908a16e40b5b0e18c62bf45380311c0cc318f106e2ba4997bb5784e31c85914779bd76f69473e4636f5 py3-django-channels-4.0.0.tar.gz +" diff --git a/testing/py3-django-compression-middleware/APKBUILD b/testing/py3-django-compression-middleware/APKBUILD new file mode 100644 index 0000000..e3225ad --- /dev/null +++ b/testing/py3-django-compression-middleware/APKBUILD @@ -0,0 +1,47 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-compression-middleware +_pyname="django-compression-middleware" +pkgver=0.5.0 +pkgrel=0 +arch="noarch !s390x !armhf" # Missing checkdepends on s390x and armhf +pkgdesc="Django middleware to compress responses using several algorithms." +url="https://pypi.python.org/project/$_pyname" +license="MPL-2.0" +depends=" + py3-django + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +checkdepends=" + py3-pytest + py3-zstandard + py3-brotli + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +070e7f19daf4811188e12b657b0dd53069b851a9c5f315d44aec87b92ccdc4d053c0a64fede2a40702963f86286b3bbbebe69722ac1b720febf93d0870d2f50e py3-django-compression-middleware-0.5.0.tar.gz +" diff --git a/testing/py3-django-drf-spectacular/APKBUILD b/testing/py3-django-drf-spectacular/APKBUILD new file mode 100644 index 0000000..5b77ecb --- /dev/null +++ b/testing/py3-django-drf-spectacular/APKBUILD @@ -0,0 +1,57 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=drf-spectacular +pkgname="py3-django-$_pyname" +pkgver=0.26.5 +pkgrel=0 +arch="noarch" +pkgdesc="Sane and flexible OpenAPI 3 schema generation for Django REST framework" +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends=" + py3-django-rest-framework + py3-jsonschema + py3-uritemplate + py3-yaml + py3-inflection + py3-django-oauth-toolkit + py3-jwcrypto + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +checkdepends=" + py3-pytest + py3-pytest-django + py3-pytest-cov + py3-flake8 + py3-mypy + py3-isort + " +options="!check" # Failing test units +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +a346652a142f43574e31d9f8497ebd831cb0fdc58c67c931eae3aebd298ef05dfa88c83e9965174806ad0326d2bd2f13f5e21ee5c3f524f4a93fccc35460792d py3-django-drf-spectacular-0.26.5.tar.gz +" diff --git a/testing/py3-django-environ/APKBUILD b/testing/py3-django-environ/APKBUILD new file mode 100644 index 0000000..c26c478 --- /dev/null +++ b/testing/py3-django-environ/APKBUILD @@ -0,0 +1,42 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=django-environ +pkgname="py3-$_pyname" +pkgver=0.11.2 +pkgrel=0 +arch="noarch" +pkgdesc="A package that allows you to utilize 12factor inspired environment variables to configure your Django application." +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-django + " +makedepends=" + py3-build + py3-installer + py3-setuptools + py3-wheel + " +checkdepends=" + py3-pytest + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + python3 -m build --wheel --no-isolation +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d="$pkgdir" \ + dist/*.whl +} +sha512sums=" +d024858514b2a6edd99a7a2f1ae26e9e7cc007b1454a1c3f2cd2ae061b4e961f16c4acc8c77ee6449e4b11b3d98c72aae849e337339cb5e275b85077a02b59d0 py3-django-environ-0.11.2.tar.gz +" diff --git a/testing/py3-django-extensions/APKBUILD b/testing/py3-django-extensions/APKBUILD new file mode 100644 index 0000000..901db20 --- /dev/null +++ b/testing/py3-django-extensions/APKBUILD @@ -0,0 +1,48 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-extensions +_pyname="django-extensions" +pkgver=3.2.3 +pkgrel=1 +arch="noarch" +pkgdesc="A collection of custom extensions for the Django Framework" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + python3 + py3-django + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + " +checkdepends=" + py3-pytest + py3-shortuuid + " +options="!check" # Missing shortuuid depend +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +b4c575c200a9d0903db34038fd52877dfe2581d4b5c9f98ee0ef191bf4f2c615ba3cd11277a5b6621b4ccba4d3a27286fb3e08fac216d3ee48417583134e899f py3-django-extensions-3.2.3.tar.gz +" diff --git a/testing/py3-django-guardian/APKBUILD b/testing/py3-django-guardian/APKBUILD new file mode 100644 index 0000000..71f43be --- /dev/null +++ b/testing/py3-django-guardian/APKBUILD @@ -0,0 +1,48 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=django-guardian +pkgname="py3-$_pyname" +pkgver=2.4.0 +pkgrel=0 +arch="noarch" +pkgdesc="Implementation of per object permissions on top of Django’s authorization backend" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-django + py3-django-environ + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + " +checkdepends=" + py3-pytest + py3-pytest-django + " +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +7e65a27fbb485a047dd02466b7e36daceb4a27b5ff30ec035fa37b7d300e78e43de213606e54d0b1be2e64ae8835a55cef98788ae45ec2446e502fdd312d8ed6 py3-django-guardian-2.4.0.tar.gz +" diff --git a/testing/py3-django-otp/APKBUILD b/testing/py3-django-otp/APKBUILD new file mode 100644 index 0000000..270f32b --- /dev/null +++ b/testing/py3-django-otp/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-otp +_pyname=django_otp +pkgver=1.3.0 +pkgrel=0 +arch="noarch" +pkgdesc="A pluggable framework for adding two-factor authentication to Django using one-time passwords." +url="https://pypi.python.org/project/$_pyname" +license="BSD-2-Clause" +depends=" + py3-django + py3-qrcode + " +makedepends=" + py3-build + py3-installer + py3-hatchling + " +checkdepends=" + py3-freezegun + " +options="!check" # Can't find module for some reason +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + python3 -m build --wheel --no-isolation +} + +check() { + DJANGO_SETTINGS_MODULE="test_project.settings" \ + PYTHONPATH="test" \ + python3 -s -m django test django_otp +} + +package() { + python3 -m installer --destdir="$pkgdir" dist/*.whl + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} +sha512sums=" +ef63c5db096ce7d1b10d6b2a99ab6db46b779d4221f509452921fcbf338decbd5c799aec7476587a03b34288ef3f5ff1964dee72105b65f04a22cbd53d445fa4 py3-django-otp-1.3.0.tar.gz +" diff --git a/testing/py3-django-picklefield/APKBUILD b/testing/py3-django-picklefield/APKBUILD new file mode 100644 index 0000000..ca3db52 --- /dev/null +++ b/testing/py3-django-picklefield/APKBUILD @@ -0,0 +1,39 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-picklefield +_pyname="django-picklefield" +pkgver=3.1 +pkgrel=0 +arch="noarch" +pkgdesc="A pickled object field for Django" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-django + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +1445a21e60a714cb6ac0cbc71bb44c3a2b51f169621bcc0183c788e70e9eaae2d07949e4b6f7ad4ba5dae99d91a2a7225d897771e4f9fb2230481365ee304b53 py3-django-picklefield-3.1.tar.gz +" diff --git a/testing/py3-django-prometheus/APKBUILD b/testing/py3-django-prometheus/APKBUILD new file mode 100644 index 0000000..9f7ccd0 --- /dev/null +++ b/testing/py3-django-prometheus/APKBUILD @@ -0,0 +1,50 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=django-prometheus +pkgname="py3-$_pyname" +pkgver=2.3.1 +pkgrel=0 +arch="noarch" +pkgdesc="Django middlewares to monitor your application with Prometheus.io." +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-django + py3-prometheus-client + py3-psycopg2 + py3-mysqlclient + py3-memcached + py3-django-redis + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +checkdepends=" + py3-pytest + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +523cfa7023e1e8921c687bd010a4c6384e1e4142fb702887d1d0bd60194b5111e92e53fec07df89eaea07cd7aa806edef79ab303a67d866d18eacde257db3c03 py3-django-prometheus-2.3.1.tar.gz +" diff --git a/testing/py3-django-q/APKBUILD b/testing/py3-django-q/APKBUILD new file mode 100644 index 0000000..6d9b7d5 --- /dev/null +++ b/testing/py3-django-q/APKBUILD @@ -0,0 +1,63 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-django-q +_pyname="django-q" +pkgver=1.6.1 +pkgrel=0 +arch="noarch" +pkgdesc="A multiprocessing distributed task queue for Django" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-asgiref + py3-blessed + py3-dateutil + py3-django + py3-django-picklefield + py3-django-redis + py3-future + py3-tz + py3-redis + py3-six + py3-sqlparse + py3-wcwidth + " +makedepends=" + py3-gpep517 + py3-installer + py3-wheel + py3-poetry-core + " +checkdepends=" + py3-pytest +" +# 'python-boto3: Amazon Simple Queue Service message queue support' +# 'python-psutil: resource usage limit support' +# 'python-pymongo: MongoDB as a message broker support' +options="!check" # Missing check depends +source="$pkgname-$pkgver.tar.gz::https://github.com/django-q2/django-q2/archive/refs/tags/v$pkgver.tar.gz + build-system.patch + " +builddir="$srcdir"/django-q2-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$builddir" pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +063739b53df5365eb38f01f0506786683059fcab62ec53e5839f19b97974b3b23358c0340166801d95e432abbda60f1fbed6a4e85c0d8f3a7f91046ad877c0fa py3-django-q-1.6.1.tar.gz +6c517f2abda689031fe4d62a7a7aa5db4885e1bcaedb575463eb1d065e4e7504ca0548395046d8f5efe2dd9fc7e073fbceb7447019fdde63a34d35894f14057e build-system.patch +" diff --git a/testing/py3-django-q/build-system.patch b/testing/py3-django-q/build-system.patch new file mode 100644 index 0000000..efba7f1 --- /dev/null +++ b/testing/py3-django-q/build-system.patch @@ -0,0 +1,21 @@ +Patch-Source: https://github.com/django-q2/django-q2/pull/131 +From 2c2594348ebed7194afdda31e1d303f24f68935c Mon Sep 17 00:00:00 2001 +From: ptrcnull +Date: Thu, 19 Oct 2023 17:06:29 +0200 +Subject: [PATCH] Specify build system in pyproject.toml + +Otherwise, trying to build the project with a tool like gpep517 or build +results in using the setuptools legacy backend instead + +diff --git a/pyproject.toml b/pyproject.toml +index e785688..8de3163 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,3 +1,7 @@ ++[build-system] ++requires = ["poetry-core>=1.0.0"] ++build-backend = "poetry.core.masonry.api" ++ + [tool.poetry] + name = "django-q2" + version = "1.5.4" diff --git a/testing/py3-django-redis/APKBUILD b/testing/py3-django-redis/APKBUILD new file mode 100644 index 0000000..c9206d3 --- /dev/null +++ b/testing/py3-django-redis/APKBUILD @@ -0,0 +1,47 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=django-redis +pkgname="py3-$_pyname" +pkgver=5.4.0 +pkgrel=0 +arch="noarch" +pkgdesc="Full featured redis cache backend for Django." +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends=" + py3-django + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + py3-redis + " +checkdepends=" + py3-pytest + " +options="!check" # Missing depends for test +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$PYTHONPATH/dist" pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +12eb85ee3ce2c8fcf013c804a630bd3eb943de0980d1f6d365b5b5ed762ab956db80329f3e170f330ccc5b9e6f178ffa7938b1880477b7fb609d2cc3680b984a py3-django-redis-5.4.0.tar.gz +" diff --git a/testing/py3-django-rest-framework-guardian/APKBUILD b/testing/py3-django-rest-framework-guardian/APKBUILD new file mode 100644 index 0000000..3508875 --- /dev/null +++ b/testing/py3-django-rest-framework-guardian/APKBUILD @@ -0,0 +1,44 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=djangorestframework-guardian +pkgname=py3-django-rest-framework-guardian +pkgver=0.3.0 +pkgrel=0 +arch="noarch" +pkgdesc="django-guardian support for Django REST Framework" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-django-rest-framework + py3-django-guardian + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # Broken testsuite +source="$pkgname-$pkgver.tar.gz::https://github.com/rpkilby/django-rest-framework-guardian/archive/refs/tags/$pkgver.tar.gz" +builddir="$srcdir"/django-rest-framework-guardian-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + python3 ./manage.py --no-input -v 2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +ce196162f42671e6eeb56b17dd432380ff99626dd541b8d2e7e80e4ec7bfc5c884fd3c37652632363173368f9eb1ae0aa82dc25cb1c46ba927f2170d1abbce94 py3-django-rest-framework-guardian-0.3.0.tar.gz +" diff --git a/testing/py3-dumb-init/APKBUILD b/testing/py3-dumb-init/APKBUILD new file mode 100644 index 0000000..abacfeb --- /dev/null +++ b/testing/py3-dumb-init/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=dumb-init +pkgname="py3-$_pyname" +pkgver=1.2.5 +_pkgver=1.2.5.post1 +pkgrel=0 +arch="all" +pkgdesc="Simple wrapper script which proxies signals to a child" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +options="!check" # No testsuite +source="$pkgname-$_pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$_pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$_pkgver + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +8527ac64a4219d0bde3612b8153056b44203656aed86b1bd047b4649ee3f7e04e0c0a669841fc2f176875993d61d8d80c980a410bcd92bb8ddc9577b6980fa42 py3-dumb-init-1.2.5.post1.tar.gz +" diff --git a/testing/py3-duo-client/APKBUILD b/testing/py3-duo-client/APKBUILD new file mode 100644 index 0000000..c44b089 --- /dev/null +++ b/testing/py3-duo-client/APKBUILD @@ -0,0 +1,50 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=duo_client +pkgname=py3-duo-client +pkgver=5.2.0 +pkgrel=0 +arch="noarch" +pkgdesc="Reference client for Duo Security APIs" +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends=" + py3-six + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + " +checkdepends=" + py3-pytest + py3-nose2 + py3-flake8 + py3-mock + py3-tz + py3-freezegun + " +source="$pkgname-$pkgver.tar.gz::https://github.com/duosecurity/duo_client_python/archive/refs/tags/$pkgver.tar.gz" +builddir="$srcdir"/${_pyname}_python-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +78729409ccc28c85f1456ea1203404228a4c6b58a8b63ac0b090af9eb515ea36d2ed372338f72ca3da3b864a67d391d0782254670b9448c272c819f2410fe7a2 py3-duo-client-5.2.0.tar.gz +" diff --git a/testing/py3-facebook-sdk/APKBUILD b/testing/py3-facebook-sdk/APKBUILD new file mode 100644 index 0000000..d5edcfc --- /dev/null +++ b/testing/py3-facebook-sdk/APKBUILD @@ -0,0 +1,46 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=facebook-sdk +pkgname="py3-$_pyname" +pkgver=3.1.0 +pkgrel=0 +arch="noarch" +pkgdesc="Python SDK for Facebook's Graph API" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +depends=" + py3-requests + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + " +checkdepends=" + py3-pytest + " +options="!check" # Testsuite requires API access +source="$pkgname-$pkgver.tar.gz::https://github.com/mobolic/facebook-sdk/archive/refs/tags/v$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +90bb8242107ba37e0b3e05b91f2f8be07b359aa7c60646c1319f38a0ad910eb18b432af75515947109745539a6728b6571ceeb0239e8b94a669455d809cfab59 py3-facebook-sdk-3.1.0.tar.gz +" diff --git a/testing/py3-flower/APKBUILD b/testing/py3-flower/APKBUILD new file mode 100644 index 0000000..09fa943 --- /dev/null +++ b/testing/py3-flower/APKBUILD @@ -0,0 +1,50 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=flower +pkgname="py3-$_pyname" +pkgver=2.0.1 +pkgrel=0 +arch="noarch !s390x" # Missing py3-celery for tests +pkgdesc="Real-time monitor and web admin for Celery distributed task queue" +url="https://flower.readthedocs.io/" +license="BSD-3-Clause" +depends=" + py3-redis + py3-humanize + py3-prometheus-client + py3-click + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +checkdepends=" + py3-pytest + py3-tornado + py3-celery + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +4321962ee9c01f93cc978a17e61e4ec8ed32e9e615a619078b8b758963ff397f72c386f64e625db48265064d1d93598f89945294887f747521450a1dcf4c4bba py3-flower-2.0.1.tar.gz +" diff --git a/testing/py3-goodreads/APKBUILD b/testing/py3-goodreads/APKBUILD new file mode 100644 index 0000000..af6238e --- /dev/null +++ b/testing/py3-goodreads/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-goodreads +_pkgname=goodreads +pkgver=0.3.2 +pkgrel=1 +pkgdesc="Python wrapper for Goodreads API" +url="https://pypi.python.org/pypi/Goodreads" +license="MIT" +arch="noarch" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + python3-dev + py3-xmltodict + py3-requests + py3-rauth + " +source="$_pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/g/$_pkgname/$_pkgname-$pkgver.tar.gz" +options="!check" # No testsuite +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +2c1f7be226bbbac3d60247a5dddc06c48ad1d72790e4ce61c8c369100358965926422958563f153661b91b561414e4b573b95098808cc25ac5c7e6edfc46e344 goodreads-0.3.2.tar.gz +" diff --git a/testing/py3-imap-tools/APKBUILD b/testing/py3-imap-tools/APKBUILD new file mode 100644 index 0000000..857dce4 --- /dev/null +++ b/testing/py3-imap-tools/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-imap-tools +_pyname="imap-tools" +pkgver=1.5.0 +pkgrel=0 +arch="noarch" +pkgdesc="Work with email and mailbox by IMAP" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +105a3e15d502dcb6056a66f58ab1b9025637e5631436a4d8e3d1a4bcf59e1e718b9bb7e097c7f1348732b8dd9d5447ab9da4295c8ea4f9b82befefafb0a45fa6 py3-imap-tools-1.5.0.tar.gz +" diff --git a/testing/py3-inotify-simple/APKBUILD b/testing/py3-inotify-simple/APKBUILD new file mode 100644 index 0000000..0a95e0c --- /dev/null +++ b/testing/py3-inotify-simple/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-inotify-simple +_pyname="inotify_simple" +pkgver=1.3.5 +pkgrel=0 +arch="noarch" +pkgdesc="A simple wrapper around inotify." +url="https://pypi.python.org/project/$_pyname" +license="BSD-2-Clause" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +fa8048786e6d4771ca63d6a2cc3e4230ec68a2d6f4bf8ca5a06056d0d261a678c3769112796a4e6a0f9c6be7331a16c4a06283d0240debb6ab407cd86b460c49 py3-inotify-simple-1.3.5.tar.gz +" diff --git a/testing/py3-inotifyrecursive/APKBUILD b/testing/py3-inotifyrecursive/APKBUILD new file mode 100644 index 0000000..efb5d5b --- /dev/null +++ b/testing/py3-inotifyrecursive/APKBUILD @@ -0,0 +1,39 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-inotifyrecursive +_pyname="inotifyrecursive" +pkgver=0.3.5 +pkgrel=0 +arch="noarch" +pkgdesc="Simple recursive inotify watches for Python" +url="https://pypi.python.org/project/$_pyname" +license="LGPL-3.0-only" +depends=" + py3-inotify-simple + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +23d37d1574dd8228d1905bb02ff9ae2ad56e7905482c004029c3d9f79f94da10a1255395df638dd356b69da787f4dc05d1f90eeb65d0abfedec71054c3fdc0ca py3-inotifyrecursive-0.3.5.tar.gz +" diff --git a/testing/py3-ipware/APKBUILD b/testing/py3-ipware/APKBUILD new file mode 100644 index 0000000..44dce65 --- /dev/null +++ b/testing/py3-ipware/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-ipware +_pyname="python-ipware" +pkgver=2.0.0 +pkgrel=0 +arch="noarch" +pkgdesc="A python package for server applications to retrieve client's IP address" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +43ef8aed5600f50090c691501a279bb7ef11e3592312b34acd59e8145717a8c86d6daab2e2f68860b31abb0fc5e6c0fc6dfc3923496884ef8ae961e79455562f py3-ipware-2.0.0.tar.gz +" diff --git a/testing/py3-iso639/APKBUILD b/testing/py3-iso639/APKBUILD new file mode 100644 index 0000000..7e438db --- /dev/null +++ b/testing/py3-iso639/APKBUILD @@ -0,0 +1,44 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-iso639 +_pkgname=iso639 +pkgver=0.4.5 +pkgrel=0 +pkgdesc="Python library for ISO 639 standard" +arch="noarch" +url="https://github.com/noumar/iso639" +license="AGPL-3.0-only" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +checkdepends=" + py3-pytest + py3-pycountry + " +options="!check" # Failing testsuite +source="$pkgname-$pkgver.tar.gz::$url/archive/$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$builddir" python3 ./tests/tests.py +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +6201535804d7d1af77f1f2961d8eb1c2fae323dc5d4361b44e23caa834de1dcb9abd257cda4068f12a1a2984000edfa49cb852ecef5baee2d78d9c9e587202e4 py3-iso639-0.4.5.tar.gz +" diff --git a/testing/py3-langdetect/APKBUILD b/testing/py3-langdetect/APKBUILD new file mode 100644 index 0000000..3846251 --- /dev/null +++ b/testing/py3-langdetect/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-langdetect +_pyname="langdetect" +pkgver=1.0.9 +pkgrel=0 +arch="noarch" +pkgdesc="Language detection library ported from Google's language-detection" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +depends=" + py3-six + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +checkdepends=" + py3-pytest +" +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db py3-langdetect-1.0.9.tar.gz +" diff --git a/testing/py3-memcached/APKBUILD b/testing/py3-memcached/APKBUILD new file mode 100644 index 0000000..60a526b --- /dev/null +++ b/testing/py3-memcached/APKBUILD @@ -0,0 +1,46 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=python-memcached +pkgname=py3-memcached +pkgver=1.59 +pkgrel=0 +arch="noarch" +pkgdesc="Python interface to memcached" +url="https://pypi.python.org/project/$_pyname" +license="Python-2.0" +depends=" + py3-six + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + " +checkdepends=" + py3-pytest + " +options="!check" # Failing testsuite +source="$pkgname-$pkgver.tar.gz::https://github.com/linsomniac/python-memcached/archive/refs/tags/$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +d7ff45a329f2a9bf97fdc7c0268c2c67046c3501270fcf03578b955c2da35904d7bdecd4239924d390797ddff8f4cc69fc5743f4d4f663cdb9f2f8c7e8159512 py3-memcached-1.59.tar.gz +" diff --git a/testing/py3-onelogin/APKBUILD b/testing/py3-onelogin/APKBUILD new file mode 100644 index 0000000..b01c223 --- /dev/null +++ b/testing/py3-onelogin/APKBUILD @@ -0,0 +1,49 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-onelogin +_pkgname=onelogin-python-sdk +pkgver=3.1.6 +pkgrel=0 +pkgdesc="OpenAPI Specification for OneLogin" +url="https://github.com/onelogin/onelogin-python-sdk" +license="MIT" +arch="noarch" +depends=" + py3-dateutil + py3-urllib3 + py3-pydantic + py3-aenum + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +checkdepends=" + py3-frozendict + " +source="$pkgname-$pkgver.tar.gz::https://github.com/onelogin/onelogin-python-sdk/archive/$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver +options="!check" # Failing test unit +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +44fccb05e82c55db82617c33cc0e2287699969d9a7f12a4992c0cd35c28b2215c66bef37849e45b5506df11524d1b143a2ab3ae16f001af51f0135c92d0801a4 py3-onelogin-3.1.6.tar.gz +" diff --git a/testing/py3-opencontainers/APKBUILD b/testing/py3-opencontainers/APKBUILD new file mode 100644 index 0000000..c8e2cff --- /dev/null +++ b/testing/py3-opencontainers/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=opencontainers +pkgname="py3-$_pyname" +pkgver=0.0.14 +pkgrel=0 +arch="noarch" +pkgdesc="Python module for oci specifications" +url="https://pypi.python.org/project/$_pyname" +license="MPL-2.0" +depends=" + py3-requests + " +makedepends=" + py3-setuptools + py3-installer + py3-gpep517 + py3-wheel + " +checkdepends=" + py3-pytest + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +b0f0edb8d11c825e7bd64b0c38fb227823de0065dc35703cc930e5ad3a5c875abe5a8c8e16f34331ca2246f48887d34ab9749ca3b547216e0ece1aa7659dc845 py3-opencontainers-0.0.14.tar.gz +" diff --git a/testing/py3-openid/APKBUILD b/testing/py3-openid/APKBUILD new file mode 100644 index 0000000..f683776 --- /dev/null +++ b/testing/py3-openid/APKBUILD @@ -0,0 +1,47 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-openid +_pyname="python3-openid" +pkgver=3.2.0 +pkgrel=0 +arch="noarch" +pkgdesc="OpenID support for modern servers and consumers." +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +depends="py3-defusedxml" +makedepends=" + py3-setuptools + py3-installer + py3-gpep517 + py3-wheel + " +checkdepends=" + py3-coverage + py3-django + py3-pytest + py3-psycopg2 + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + export PYTHONPATH="build:$PYTHONPATH" + coverage run -m unittest openid.test.test_suite +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +54412820fef21928e1bf30d16c9bc73d454e9ff41df028a12047c08abdb4c2c9e1d9053daebab8b0327cb0fe0f67e364c2506a47509fef6db5bff42f8399b799 py3-openid-3.2.0.tar.gz +" diff --git a/testing/py3-portalocker/APKBUILD b/testing/py3-portalocker/APKBUILD new file mode 100644 index 0000000..fdfd743 --- /dev/null +++ b/testing/py3-portalocker/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Bart Ribbers +# Contributor: Antoine Martin (ayakael) +# Maintainer: Antoine Martin (ayakael) +pkgname=py3-portalocker +pkgver=2.8.2 +pkgrel=0 +pkgdesc="An extended version of portalocker to lock files in Python using the with statement" +url="http://portalocker.readthedocs.io/en/latest/" +arch="noarch" +license="PSF-2.0" +depends=" + py3-babel + py3-imagesize + py3-requests + py3-snowballstemmer + python3 + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + py3-sphinx + " +checkdepends=" + py3-docutils + py3-pytest + py3-pytest-cov + " +subpackages="$pkgname-pyc" +source="https://pypi.python.org/packages/source/p/portalocker/portalocker-$pkgver.tar.gz" +# Tests requires deprecated Python package pytest-flakes and pytest-pep8 +options="!check" +builddir="$srcdir/portalocker-$pkgver" +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +9ebd6fdbc597615c5f76bf5741556d84bc95c925e931ee708b4fccbf0908e4dc4e758be659928340675675f5ca09764f5d2621fdef9195e21c1359f7764ae1dc portalocker-2.8.2.tar.gz +" diff --git a/testing/py3-pyaml/APKBUILD b/testing/py3-pyaml/APKBUILD new file mode 100644 index 0000000..7c6938d --- /dev/null +++ b/testing/py3-pyaml/APKBUILD @@ -0,0 +1,46 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-pyaml +_pkgname="pyaml" +pkgver=23.9.7 +pkgrel=0 +arch='noarch' +pkgdesc="PyYAML-based module to produce pretty and readable YAML-serialized data" +url="https://pypi.python.org/pypi/pyaml" +license="WTFPL" +depends=" + py3-yaml + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +checkdepends=" + py3-unidecode + py3-pytest + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +f21f8c329e5233f6774701fc1e5673e62ab162fb5f8efba25120d4e157940709f47a2c90838b3af42e71b7dcfc69852393b204d0d85b6d5fba28a23f8a118be0 py3-pyaml-23.9.7.tar.gz +" diff --git a/testing/py3-pydantic-scim/APKBUILD b/testing/py3-pydantic-scim/APKBUILD new file mode 100644 index 0000000..98f804e --- /dev/null +++ b/testing/py3-pydantic-scim/APKBUILD @@ -0,0 +1,37 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pkgname=pydantic-scim +pkgname="py3-$_pkgname" +pkgver=0.0.8 +pkgrel=0 +arch="noarch" +pkgdesc="Pydantic types for SCIM" +url="https://pypi.python.org/project/$_pkgname" +license="Apache-2.0" +depends=" + py3-pydantic + " +makedepends=" + py3-installer + py3-hatchling + py3-build + py3-wheel + py3-setuptools_scm + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +build() { + python3 -m build --wheel --no-isolation +} + +package() { + python3 -m installer --destdir="$pkgdir" dist/*.whl +} + +sha512sums=" +3ca10d6d97607e6f048b531fbf0f21ced6beb6f46a6452a4d6b49f87f6be2079a2b80d3d96b2f72d41d499c3871aea2cfad6d3b423506c906b6701e26476f666 py3-pydantic-scim-0.0.8.tar.gz +" diff --git a/testing/py3-pytelegrambotapi/APKBUILD b/testing/py3-pytelegrambotapi/APKBUILD new file mode 100644 index 0000000..e4a06b3 --- /dev/null +++ b/testing/py3-pytelegrambotapi/APKBUILD @@ -0,0 +1,35 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-pytelegrambotapi +pkgver=4.14.0 +pkgrel=0 +arch="noarch" +pkgdesc="A simple, but extensible Python implementation for the Telegram Bot API." +url="https://pypi.org/project/pyTelegramBotAPI/" +license="GPL-2.0-only" +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +source="$pkgname-$pkgver.tar.gz::https://github.com/eternnoir/pyTelegramBotAPI/archive/$pkgver.tar.gz" +builddir="$srcdir"/pyTelegramBotAPI-$pkgver +options="!check" # No testsuite +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +2008f1f2f20bc34b77bbd106d949d9bbcb5c0aa5ffd359911e5982daaf5993187d09d702d566307e2583422c0a17a92d8e9bde88c5ea07f491bdd943fa195e40 py3-pytelegrambotapi-4.14.0.tar.gz +" diff --git a/testing/py3-pytz-deprecation-shim/APKBUILD b/testing/py3-pytz-deprecation-shim/APKBUILD new file mode 100644 index 0000000..ceb403a --- /dev/null +++ b/testing/py3-pytz-deprecation-shim/APKBUILD @@ -0,0 +1,34 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-pytz-deprecation-shim +_pkgname=pytz_deprecation_shim +pkgver=0.1.0 +_pkgver=$pkgver.post0 +pkgrel=0 +arch='noarch' +pkgdesc="Shims to help you safely remove pytz" +url="https://pypi.org/project/$_pkgname/" +license="MIT" +makedepends=" + py3-setuptools + py3-wheel + py3-installer + py3-build + " +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$_pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$_pkgver +options="!check" # No testsuite +subpackages="$pkgname-pyc" + +build() { + python3 -m build --wheel --no-isolation +} + +package() { + python3 -m installer --destdir="$pkgdir" dist/*.whl +} + +sha512sums=" +201eea777f4da9def1b060911da5eaa89652f6716d5608278fdc94a2f67af5ea23a8b667cb181e03d5edd7f0a07f4954047621668f4c2e7bb325dd07f454d0b6 py3-pytz-deprecation-shim-0.1.0.tar.gz +" diff --git a/testing/py3-rauth/APKBUILD b/testing/py3-rauth/APKBUILD new file mode 100644 index 0000000..a290020 --- /dev/null +++ b/testing/py3-rauth/APKBUILD @@ -0,0 +1,39 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-rauth +_pkgname=rauth +pkgver=0.7.3 +pkgrel=0 +pkgdesc="A Python library for OAuth 1.0/a, 2.0, and Ofly" +arch="noarch" +url="https://github.com/maxcountryman/rauth" +license="MIT" +depends=" + py3-requests + " +makedepends=" + py3-setuptools + py3-wheel + py3-gpep517 + py3-installer + " +source="$_pkgname-$pkgver.tar.gz::https://pypi.python.org/packages/source/r/$_pkgname/$_pkgname-$pkgver.tar.gz" +options="!check" # No testsuite +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +8bb6d10e5d4ddb583c45e3bf166051b8edde8193cd10da8c1a623908d2cc5a3a2cbc9065d5fa397188414e72fa66166051893e4ba956369b3f0f850ae823837e rauth-0.7.3.tar.gz +" diff --git a/testing/py3-rpy2/APKBUILD b/testing/py3-rpy2/APKBUILD new file mode 100644 index 0000000..2139e15 --- /dev/null +++ b/testing/py3-rpy2/APKBUILD @@ -0,0 +1,52 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-rpy2 +_pyname="rpy2" +pkgver=3.5.14 +pkgrel=0 +# riscv64: R missing +arch="all !riscv64" +pkgdesc="A very simple, yet robust, Python interface to the R Programming Language" +url="https://pypi.python.org/project/$_pyname" +license="GPL-2.0-only" +depends=" + py3-cffi + py3-numpy + py3-tz + py3-tzlocal + py3-jinja2 + R + " +makedepends=" + py3-build + py3-installer + py3-setuptools + py3-wheel + python3-dev + R-dev + " +checkdepends=" + py3-pytest + " +options="!check" # test failures due to missing R packages +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + python3 -m build --wheel --no-isolation +} + +check() { + PYTHONPATH="$PWD"/$(echo build/lib.*) \ + pytest -v -k 'not test_rendertofile and not test_rendertobytes_plot' # Skip test that segfaults in build server +} + +package() { + python3 -m installer --destdir="$pkgdir" dist/*.whl +} + +sha512sums=" +d02454fb41c946a0a92547f8a5dba3c614741bec8e293984116b34dfbe97574a655b7066fd75d34fee4c0f604c41c8b672d6a2c3b4194cba30a37c95da6578dd py3-rpy2-3.5.14.tar.gz +" diff --git a/testing/py3-ruamel-yaml-clib/APKBUILD b/testing/py3-ruamel-yaml-clib/APKBUILD new file mode 100644 index 0000000..c57362e --- /dev/null +++ b/testing/py3-ruamel-yaml-clib/APKBUILD @@ -0,0 +1,35 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-ruamel-yaml-clib +_pyname="ruamel.yaml.clib" +pkgver=0.2.8 +pkgrel=0 +arch="all" +pkgdesc="C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +makedepends=" + py3-gpep517 + py3-setuptools + py3-wheel + python3-dev + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +1984d1f46f9d98c178315d1aad27d02fe3a228fbe4a2f4e68729b850c1ebe08ff0ef2fab38841296a2ac0a1f8a0bf7231ab8d7972a9a39a260ea773457f1393b py3-ruamel-yaml-clib-0.2.8.tar.gz +" diff --git a/testing/py3-ruamel-yaml/APKBUILD b/testing/py3-ruamel-yaml/APKBUILD new file mode 100644 index 0000000..2d75936 --- /dev/null +++ b/testing/py3-ruamel-yaml/APKBUILD @@ -0,0 +1,38 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-ruamel-yaml +_pyname="ruamel.yaml" +pkgver=0.18.5 +pkgrel=0 +arch="noarch" +pkgdesc="AML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-ruamel-yaml-clib + " +makedepends=" + py3-gpep517 + py3-setuptools + py3-wheel + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +46ddfb81281a9c619370f252f5a189b33a9f36934891a18a915897d2a1870c53938f8afb56b2eda3c5ac6bd2e39fcbba0a94955db0847302bd58458079880525 py3-ruamel-yaml-0.18.5.tar.gz +" diff --git a/testing/py3-slack-sdk/APKBUILD b/testing/py3-slack-sdk/APKBUILD new file mode 100644 index 0000000..cbcefee --- /dev/null +++ b/testing/py3-slack-sdk/APKBUILD @@ -0,0 +1,49 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-slack-sdk +_pyname="slack_sdk" +pkgver=3.26.0 +pkgrel=0 +arch="noarch" +pkgdesc="The Slack API Platform SDK for Python" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-aiohttp + py3-aiodns + " +makedepends=" + py3-setuptools + py3-installer + py3-wheel + py3-gpep517 + " +checkdepends=" + py3-flask + py3-flask-sockets + py3-moto + " +options="!check" # Missing checkdepend +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$builddir" pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +26cdd1a4531900970e9095354751ec563ac2fbd0b2e38b753e6ab9145265f7f0d89c51d15a1051283e622a2d3a07243bf2bad2411037b82b07e77b1b9e482fa0 py3-slack-sdk-3.26.0.tar.gz +" diff --git a/testing/py3-swagger-spec-validator/APKBUILD b/testing/py3-swagger-spec-validator/APKBUILD new file mode 100644 index 0000000..0f172d1 --- /dev/null +++ b/testing/py3-swagger-spec-validator/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=swagger-spec-validator +pkgname="py3-$_pyname" +pkgver=3.0.3 +pkgrel=1 +arch="noarch" +pkgdesc="Validation of Swagger specifications" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +depends=" + py3-jsonschema + py3-yaml + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +21d849f3b7631c1bced3831728852d953063f28d918e5b409ac302781769a495536869bf3e042692d70e5a589a9db5306986aebb4cd0e363e6f80e1330a753f2 py3-swagger-spec-validator-3.0.3.tar.gz +" diff --git a/testing/py3-tika/APKBUILD b/testing/py3-tika/APKBUILD new file mode 100644 index 0000000..b660162 --- /dev/null +++ b/testing/py3-tika/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-tika +_pyname="tika" +pkgver=2.6.0 +pkgrel=0 +arch="noarch" +pkgdesc="Apache Tika Python library" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # Failing testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +092986afd0968d41b6a0274b1f1cac5f6a168bc79cea920f65543c46b6541b6b02eceb0ae89fc254b709421dd75ebe50aad0f17a52becbdb27a541b80a08a0ae py3-tika-2.6.0.tar.gz +" diff --git a/testing/py3-twilio/APKBUILD b/testing/py3-twilio/APKBUILD new file mode 100644 index 0000000..3259f8e --- /dev/null +++ b/testing/py3-twilio/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=twilio +pkgname="py3-$_pyname" +pkgver=8.10.2 +pkgrel=0 +arch="noarch" +pkgdesc="Twilio API client and TwiML generator" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends=" + py3-requests + py3-mock + py3-flake8 + py3-nose + py3-python-jwt + py3-twine + py3-tz + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +8fb1455d9af90fed8fb7dc4b8d4e12019f9171b47252ddd78adafa6ea1ef13884bdf4ed3e74129f26b0b13a60060824a18e038458b03d6861de0f025ded45023 py3-twilio-8.10.2.tar.gz +" diff --git a/testing/py3-ua-parser/APKBUILD b/testing/py3-ua-parser/APKBUILD new file mode 100644 index 0000000..f4268f2 --- /dev/null +++ b/testing/py3-ua-parser/APKBUILD @@ -0,0 +1,55 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=ua-parser +pkgname="py3-$_pyname" +pkgver=0.18.0 +_uapcorever=0.18.0 +pkgrel=0 +arch="noarch" +pkgdesc="Python port of Browserscope's user agent parser" +url="https://pypi.python.org/project/$_pyname" +license="Apache-2.0" +depends=" + py3-pyaml + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-installer + py3-wheel + " +checkdepends=" + py3-pytest + " +source=" + $pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz + $pkgname-core-$_uapcorever.tar.gz::https://github.com/ua-parser/uap-core/archive/refs/tags/v$_uapcorever.tar.gz + " +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +prepare() { + default_prepare + ln -s "$srcdir"/uap-core-$_uapcorever "$builddir"/uap-core +} + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} + +sha512sums=" +1b3685df8fc65f529b3a54d7bc56aa6d2df56e028d3a2fd2206826119c1ccabe2aaf7dd4c2c00122a0189c0987360a6d7af12ec2dac444b55cf745ebfc7365fd py3-ua-parser-0.18.0.tar.gz +78cf77d38e5738651060d194c94cd5c6e514e4fd01da121250d016bbe6a8967e0c56a91ae26117832c11aa50d9afec8ac06fe7a7568a55bf7098ff21bc279567 py3-ua-parser-core-0.18.0.tar.gz +" diff --git a/testing/py3-urllib3-secure-extra/APKBUILD b/testing/py3-urllib3-secure-extra/APKBUILD new file mode 100644 index 0000000..3aac4e8 --- /dev/null +++ b/testing/py3-urllib3-secure-extra/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pkgname=urllib3-secure-extra +pkgname="py3-$_pkgname" +pkgver=0.1.0 +pkgrel=0 +arch="noarch" +pkgdesc="Marker library to detect whether urllib3 was installed with the deprecated [secure] extra" +url="https://pypi.python.org/project/$_pkgname" +license="Apache-2.0" +depends=" + py3-urllib3 + " +makedepends=" + py3-flit + py3-build + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +build() { + flit build --setup-py --format wheel + python3 -m build --wheel --no-isolation +} + +package() { + python3 -m installer --destdir="$pkgdir" dist/*.whl +} + +sha512sums=" +151dfa2dd4e7fecea482bec0be69410c213336b95e00c900f600053dc9777618c3b9cc1c69e14f61e909ad7b785bcf391ea11c74b1b710749b70e138fbdd6de3 py3-urllib3-secure-extra-0.1.0.tar.gz +" diff --git a/testing/py3-wand/APKBUILD b/testing/py3-wand/APKBUILD new file mode 100644 index 0000000..9b3dfcc --- /dev/null +++ b/testing/py3-wand/APKBUILD @@ -0,0 +1,49 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-wand +_pkgname=wand +pkgver=0.6.13 +pkgrel=0 +pkgdesc="Ctypes-based simple MagickWand API binding for Python" +url="https://github.com/emcconville/wand" +license="MIT" +arch="noarch" +depends=" + imagemagick + libxml2 + " +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +source="$pkgname-$pkgver.tar.gz::https://github.com/emcconville/wand/archive/$pkgver.tar.gz" +options="!check" # Failing test units +builddir="$srcdir"/$_pkgname-$pkgver +subpackages="$pkgname-pyc" + +prepare() { + default_prepare + rm pyproject.toml +} + +build() { + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + .dist/*.whl +} + +sha512sums=" +4551ba719b6bb90bb6818e9f0fcb9e35e41c5e49de17b565f4b8b148b03a25eff4033ed9d49ebc46f2e9fbfc83ae976f817fe595a11a4704b12c77954506ffc0 py3-wand-0.6.13.tar.gz +" diff --git a/testing/py3-webauthn/APKBUILD b/testing/py3-webauthn/APKBUILD new file mode 100644 index 0000000..1cb17da --- /dev/null +++ b/testing/py3-webauthn/APKBUILD @@ -0,0 +1,35 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=webauthn +pkgname="py3-$_pyname" +pkgver=1.11.1 +pkgrel=0 +arch="noarch" +pkgdesc="A Python3 implementation of the WebAuthn API focused on making it easy to leverage the power of WebAuthn." +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +options="!check" # No testsuite +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} +sha512sums=" +29e3df7adfed9fdbe8bfe264e207c45e2426ec10c48daf90347a7fe6070f00280c8102da00335a8f5b9b7efeba9fa2fe033dcaf656ec4f95a7566bcc6a5729b2 py3-webauthn-1.11.1.tar.gz +" diff --git a/testing/py3-whoosh/APKBUILD b/testing/py3-whoosh/APKBUILD new file mode 100644 index 0000000..c5c477b --- /dev/null +++ b/testing/py3-whoosh/APKBUILD @@ -0,0 +1,46 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=py3-whoosh +_pyname="Whoosh" +pkgver=2.7.4 +pkgrel=0 +arch="noarch" +pkgdesc="Fast, pure-Python full text indexing, search, and spell checking library" +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +makedepends=" + py3-setuptools + py3-gpep517 + py3-wheel + py3-installer + " +checkdepends=" + py3-pytest-runner + " +source=" + $pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz + test-fix.patch + " +options="!check" # Failing test units +builddir="$srcdir"/$_pyname-$pkgver +subpackages="$pkgname-pyc" + +build() { + gpep517 build-wheel \ + --wheel-dir dist \ + --output-fd 3 3>&1 >&2 +} + +check() { + PYTHONPATH="$builddir"/src pytest -v +} + +package() { + python3 -m installer -d "$pkgdir" \ + dist/*.whl +} +sha512sums=" +7cdefdcf52b704ffe50c00718c42677e2ddfe879f81ad2d14b580b0e026cc0ebb6b9ddc99d8709eaff4eb9b83f654b042c8792821e1ed90aa85cfa6f82845074 py3-whoosh-2.7.4.tar.gz +191254eb455bc8bf762e0ae05c43cf3dc18ca948a824a8285a0337127d887655998f82a8f5ed807942c0ad14ac78c7c9e3b0742413bc3b19ee949bbd9dbd6e6c test-fix.patch +" diff --git a/testing/py3-whoosh/test-fix.patch b/testing/py3-whoosh/test-fix.patch new file mode 100644 index 0000000..370a34c --- /dev/null +++ b/testing/py3-whoosh/test-fix.patch @@ -0,0 +1,13 @@ +diff --git a/setup.cfg.orig b/setup.cfg +index 1f68c92e6d5..a6a81025aa8 100644 +--- a/setup.cfg.orig ++++ b/setup.cfg +@@ -15,7 +15,7 @@ formats = zip,gztar + push = sdist bdist_wheel upload + pushdocs = build_sphinx upload_sphinx + +-[pytest] ++[tool:pytest] + addopts = -rs --tb=native + norecursedirs = .hg .tox _build tmp* env* benchmark stress + minversion = 2.0 diff --git a/unmaintained/firefly-iii-plaid-connector/APKBUILD b/unmaintained/firefly-iii-plaid-connector/APKBUILD index 13a222e..66c3fea 100644 --- a/unmaintained/firefly-iii-plaid-connector/APKBUILD +++ b/unmaintained/firefly-iii-plaid-connector/APKBUILD @@ -1,29 +1,32 @@ -# Maintainer: Antoine Martin (ayakael) -# Contributor: Antoine Martin (ayakael) +# Maintainer: Antoine Martin pkgname=firefly-iii-plaid-connector pkgver=0.3.1 -pkgrel=7 -pkgdesc="The Free Software Media System" -#arch="x86_64" -url="https://gitlab.com/GeorgeHahn/firefly-plaid-connector" -license="MIT" -options="!check" -depends="firefly-iii dotnet6-runtime" -makedepends="dotnet6-sdk" -source="firefly-plaid-connector-$pkgver.tar.gz::https://gitlab.com/GeorgeHahn/firefly-plaid-connector/-/archive/v$pkgver/firefly-plaid-connector-v$pkgver.tar.gz net6-support.patch" -builddir="$srcdir/firefly-plaid-connector-v$pkgver" +pkgrel=5 +pkgdesc='The Free Software Media System' +arch='i686 x86_64' +url='https://gitlab.com/GeorgeHahn/firefly-plaid-connector' +license='MIT' +options="!strip !check" +#depends='firefly-iii dotnet31-runtime' +makedepends='dotnet31-sdk' +source="firefly-plaid-connector-$pkgver.tar.gz::https://gitlab.com/GeorgeHahn/firefly-plaid-connector/-/archive/v${pkgver}/firefly-plaid-connector-v${pkgver}.tar.gz" +builddir="${srcdir}/firefly-plaid-connector-v${pkgver}" -build() { - dotnet publish --configuration Release --output ./publish --use-current-runtime --no-self-contained +build(){ + cd "${builddir}" + + # Disable dotnet telemetry + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + + # publish app and libraries + dotnet publish --configuration Release --output "$PWD"/publish } package() { - mkdir -p "$pkgdir"/usr/lib - cp -r "$builddir"/publish "$pkgdir"/usr/lib/firefly-plaid-connector -} + mkdir -p "${pkgdir}"/var/lib + cp -r "${builddir}"/publish "$pkgdir"/var/lib/firefly-plaid-connector + +} +sha512sums="57a64673bf2e8cae00cb215e1dc90eb02bddf50010835a9318f55f83313c00f19d6c8d8af65e2739b0fb6fd4522a2327941bdc7d11cbe59c9537ff6c1575765e firefly-plaid-connector-0.3.1.tar.gz" -sha512sums=" -57a64673bf2e8cae00cb215e1dc90eb02bddf50010835a9318f55f83313c00f19d6c8d8af65e2739b0fb6fd4522a2327941bdc7d11cbe59c9537ff6c1575765e firefly-plaid-connector-0.3.1.tar.gz -f795fe58659763082e3f2bba0e6e2a70c4732bc6b402a4e586104bf09525ffca1d3586acda43ccba3b71d15e1a0a62794574f72a2fc6cd3d1905dcb2e8782dc2 net6-support.patch -" diff --git a/unmaintained/mathjax2/APKBUILD b/unmaintained/mathjax2/APKBUILD index ceb2b15..3075ca1 100644 --- a/unmaintained/mathjax2/APKBUILD +++ b/unmaintained/mathjax2/APKBUILD @@ -1,38 +1,35 @@ -# Maintainer: Antoine Martin (ayakael) -# Contributor: Antoine Martin (ayakael) +# $Id: PKGBUILD 362427 2018-07-19 17:42:59Z arojas $ +# Maintainer: Antonio Rojas +# Contributor: Kevin Dodd +# Contributor: Tianjiao Yin pkgname=mathjax2 pkgver=2.7.9 -pkgrel=1 -pkgdesc="An open source JavaScript display engine for mathematics that works in all modern browsers" -url="https://www.mathjax.org/" +pkgrel=0 +pkgdesc='An open source JavaScript display engine for mathematics that works in all modern browsers' +url='https://www.mathjax.org/' arch=noarch -license="Apache-2.0" +license=Apache source="$pkgname-$pkgver.tar.gz::https://github.com/mathjax/MathJax/archive/$pkgver.tar.gz" -builddir="$srcdir"/MathJax-$pkgver -options="!check" # No testsuite +options=!check -build() { - # Remove unneeded stuff, see https://github.com/mathjax/MathJax-docs/wiki/Guide%3A-reducing-size-of-a-mathjax-installation - for i in docs test unpacked fonts/HTML-CSS/TeX/png; do - rm -r $i - done - for _format in eot otf svg ; do - find . -type d -name "$_format" -prune -exec rm -rf {} \; - done +prepare() { + cd $srcdir/MathJax-$pkgver + +# Remove unneeded stuff, see https://github.com/mathjax/MathJax-docs/wiki/Guide%3A-reducing-size-of-a-mathjax-installation + rm -r docs test unpacked + rm -r fonts/HTML-CSS/TeX/png + for _format in eot otf svg ; do + find . -type d -name "$_format" -prune -exec rm -rf {} \; + done } package() { - mkdir -p \ - "$pkgdir"/usr/share/fonts \ - "$pkgdir"/usr/share/licenses/mathjax2 - - cp -a "$builddir" "$pkgdir"/usr/share/mathjax2 - - mv "$pkgdir"/usr/share/mathjax2/fonts "$pkgdir"/usr/share/fonts/mathjax2 - ln -s /usr/share/fonts/mathjax2 "$pkgdir"/usr/share/mathjax2/fonts - mv "$pkgdir"/usr/share/mathjax2/LICENSE "$pkgdir"/usr/share/licenses/mathjax2/ + cd ${srcdir} + mkdir -p "$pkgdir"/usr/share/fonts "$pkgdir"/usr/share/licenses/mathjax2 + cp -a MathJax-$pkgver "$pkgdir"/usr/share/mathjax2 + mv "$pkgdir"/usr/share/mathjax2/fonts "$pkgdir"/usr/share/fonts/mathjax2 + ln -s /usr/share/fonts/mathjax2 "$pkgdir"/usr/share/mathjax2/fonts + mv "$pkgdir"/usr/share/mathjax2/LICENSE "$pkgdir"/usr/share/licenses/mathjax2/ } -sha512sums=" -ac7b2dfc6064148e941e5ee05361467514e5f28449dbb697ff1df556968ccb71f501c4021ade285cbbb995983513669c14d9c06886a7b83a5c75fa30504fa8ab mathjax2-2.7.9.tar.gz -" +sha512sums="ac7b2dfc6064148e941e5ee05361467514e5f28449dbb697ff1df556968ccb71f501c4021ade285cbbb995983513669c14d9c06886a7b83a5c75fa30504fa8ab mathjax2-2.7.9.tar.gz" diff --git a/unmaintained/py3-html5-parser/APKBUILD b/unmaintained/py3-html5-parser/APKBUILD new file mode 100644 index 0000000..160a9ee --- /dev/null +++ b/unmaintained/py3-html5-parser/APKBUILD @@ -0,0 +1,33 @@ +# Maintainer: Antoine Martin + +_pkgname="html5-parser" +pkgname='py3-html5-parser' +pkgver=0.4.9 +pkgrel=0 +pkgdesc="Fast C based HTML 5 parsing for python" +arch='x86_64' +url="https://github.com/kovidgoyal/${_pkgname}" +license='Apache' +checkdepends='py3-beautifulsoup4' +makedepends='py3-chardet py3-lxml py3-setuptools libxml2-dev python3-dev' +source="${pkgname}-${pkgver}.tar.gz::${url}/archive/v${pkgver}.tar.gz" + +build() { + cd "${srcdir}"/${_pkgname}-${pkgver} + + python3 setup.py build +} + +check() { + cd "${srcdir}"/${_pkgname}-${pkgver} + + python3 setup.py test +} + +package() { + cd "${srcdir}"/${_pkgname}-${pkgver} + python3 setup.py install --root="${pkgdir}" --optimize=1 --skip-build +} + + +sha512sums="31d0499e690c1cfe86fcaabddf4a5842b504706f6d95268dfad4ce80a8b91df6ba779c27dd4fe877232f6664142ed04b9d2af0aff601aa1855f91d9720adf512 py3-html5-parser-0.4.9.tar.gz" diff --git a/unmaintained/airsonic/APKBUILD b/user/airsonic/APKBUILD similarity index 100% rename from unmaintained/airsonic/APKBUILD rename to user/airsonic/APKBUILD diff --git a/unmaintained/airsonic/airsonic.conf b/user/airsonic/airsonic.conf similarity index 100% rename from unmaintained/airsonic/airsonic.conf rename to user/airsonic/airsonic.conf diff --git a/unmaintained/airsonic/airsonic.initd b/user/airsonic/airsonic.initd similarity index 100% rename from unmaintained/airsonic/airsonic.initd rename to user/airsonic/airsonic.initd diff --git a/unmaintained/airsonic/airsonic.sh b/user/airsonic/airsonic.sh similarity index 100% rename from unmaintained/airsonic/airsonic.sh rename to user/airsonic/airsonic.sh diff --git a/user/authentik/APKBUILD b/user/authentik/APKBUILD new file mode 100644 index 0000000..23f232d --- /dev/null +++ b/user/authentik/APKBUILD @@ -0,0 +1,246 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=authentik +pkgver=2023.10.4 +pkgrel=0 +pkgdesc="An open-source Identity Provider focused on flexibility and versatility" +url="https://github.com/goauthentik/authentik" +# py3-xmlsec needs some work +arch="all" +license="MIT" +depends=" + libcap-setcap + postgresql + procps + pwgen + py3-aiohttp + py3-aiosignal + py3-amqp + py3-anyio + py3-asgiref + py3-asn1 + py3-asn1crypto + py3-async-timeout + py3-attrs + py3-autobahn + py3-automat + py3-bcrypt + py3-billiard + py3-cachetools + py3-cbor2 + py3-celery + py3-certifi + py3-cffi + py3-charset-normalizer + py3-click + py3-click-didyoumean + py3-click-plugins + py3-click-repl + py3-codespell + py3-colorama + py3-constantly + py3-cparser + py3-cryptography + py3-dacite + py3-daphne + py3-dateutil + py3-deepmerge + py3-defusedxml + py3-deprecated + py3-dnspython + py3-django + py3-django-channels + py3-django-channels-redis + py3-django-drf-spectacular + py3-django-filter + py3-django-guardian + py3-django-model-utils + py3-django-otp + py3-django-prometheus + py3-django-redis + py3-django-rest-framework + py3-django-rest-framework-guardian + py3-docker-py + py3-dotenv + py3-dumb-init + py3-duo-client + py3-email-validator + py3-facebook-sdk + py3-flower + py3-frozenlist + py3-geoip2 + py3-google-auth + py3-gunicorn + py3-h11 + py3-httptools + py3-humanize + py3-hyperlink + py3-idna + py3-incremental + py3-inflection + py3-jsonschema + py3-jsonpatch + py3-jwt + py3-kombu + py3-kubernetes + py3-ldap3 + py3-lxml + py3-maxminddb + py3-msgpack + py3-multidict + py3-oauthlib + py3-opencontainers + py3-openssl + py3-packaging + py3-paramiko + py3-parsing + py3-prometheus-client + py3-prompt_toolkit + py3-psycopg + py3-psycopg-c + py3-pycryptodome + py3-pydantic-scim + py3-pynacl + py3-pyrsistent + py3-python-jwt + py3-redis + py3-requests + py3-requests-oauthlib + py3-rsa + py3-sentry-sdk + py3-service_identity + py3-setuptools + py3-six + py3-sniffio + py3-sqlparse + py3-structlog + py3-swagger-spec-validator + py3-tornado + py3-twilio + py3-twisted + py3-txaio + py3-typing-extensions + py3-tz + py3-ua-parser + py3-uritemplate + py3-urllib3-secure-extra + py3-uvloop + py3-vine + py3-watchdog + py3-watchfiles + py3-wcwidth + py3-webauthn + py3-websocket-client + py3-websockets + py3-wrapt + py3-wsproto + py3-xmlsec + py3-yaml + py3-yarl + py3-zope-interface + py3-zxcvbn + redis + uvicorn + " +makedepends="go npm" +# checkdepends scooped up by poetry due to number +checkdepends="poetry py3-coverage" +# tests disabled for now +options="!check chmod-clean" +install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-install" +source=" + $pkgname-$pkgver.tar.gz::https://github.com/goauthentik/authentik/archive/refs/tags/version/$pkgver.tar.gz + authentik.openrc + authentik-worker.openrc + authentik-ldap.openrc + authentik-ldap.conf + authentik-manage.sh + root-settings-csrf_trusted_origins.patch + " +builddir="$srcdir/"authentik-version-$pkgver +subpackages="$pkgname-openrc $pkgname-doc" + +export GOPATH=$srcdir/go +export GOCACHE=$srcdir/go-build +export GOTMPDIR=$srcdir + +build() { + msg "Building authentik-ldap" + go build -o ldap cmd/ldap/main.go + msg "Building authentik-proxy" + go build -o proxy cmd/proxy/main.go + msg "Building authentik-radius" + go build -o radius cmd/proxy/main.go + msg "Building authentik-server" + go build -o server cmd/server/*.go + + msg "Building authentik-web" + cd web + npm ci --no-audit + npm run build + cd .. + + msg "Building website" + cd website + npm ci --no-audit + npm run build +} + +check() { + poetry install --only dev + make test +} + +package() { + msg "Packaging $pkgname" + mkdir -p "$pkgdir"/usr/share/webapps/authentik/web + mkdir -p "$pkgdir"/usr/share/webapps/authentik/website + mkdir -p "$pkgdir"/var/lib/authentik + mkdir -p "$pkgdir"/usr/share/doc + mkdir -p "$pkgdir"/usr/bin + cp -dr "$builddir"/authentik "$pkgdir"/usr/share/webapps/authentik + cp -dr "$builddir"/web/dist "$pkgdir"/usr/share/webapps/authentik/web/dist + cp -dr "$builddir"/web/authentik "$pkgdir"/usr/share/webapps/authentik/web/authentik + cp -dr "$builddir"/website/build "$pkgdir"/usr/share/doc/authentik + cp -dr "$builddir"/tests "$pkgdir"/usr/share/webapps/authentik/tests + cp -dr "$builddir"/lifecycle "$pkgdir"/usr/share/webapps/authentik/lifecycle + cp -dr "$builddir"/locale "$pkgdir"/usr/share/webapps/authentik/locale + cp -dr "$builddir"/blueprints "$pkgdir"/var/lib/authentik/blueprints + install -Dm755 "$builddir"/manage.py "$pkgdir"/usr/share/webapps/authentik/manage.py + install -Dm755 "$builddir"/server "$pkgdir"/usr/share/webapps/authentik/server + ln -s "/etc/authentik/config.yml" "$pkgdir"/usr/share/webapps/authentik/local.env.yml + + install -Dm755 "$builddir"/proxy "$pkgdir"/usr/bin/authentik-proxy + install -Dm755 "$builddir"/ldap "$pkgdir"/usr/bin/authentik-ldap + install -Dm755 "$builddir"/radius "$pkgdir"/usr/bin/authentik-radius + + install -Dm755 "$srcdir"/$pkgname.openrc \ + "$pkgdir"/etc/init.d/$pkgname + install -Dm755 "$srcdir"/$pkgname-worker.openrc \ + "$pkgdir"/etc/init.d/$pkgname-worker + install -Dm755 "$srcdir"/$pkgname-ldap.openrc \ + "$pkgdir"/etc/init.d/$pkgname-ldap + install -Dm640 "$srcdir"/$pkgname-ldap.conf \ + "$pkgdir"/etc/conf.d/$pkgname-ldap + install -Dm640 "$builddir"/authentik/lib/default.yml \ + "$pkgdir"/etc/authentik/config.yml + sed -i 's|cert_discovery_dir.*|cert_discovery_dir: /var/lib/authentik/certs|' "$pkgdir"/etc/authentik/config.yml + sed -i 's|blueprints_dir.*|blueprints_dir: /var/lib/authentik/blueprints|' "$pkgdir"/etc/authentik/config.yml + sed -i 's|template_dir.*|template_dir: /var/lib/authentik/templates|' "$pkgdir"/etc/authentik/config.yml + printf "\ncsrf:\n trusted_origins: ['auth.example.com']" >> "$pkgdir"/etc/authentik/config.yml + printf "\nsecret_key: '@@SECRET_KEY@@'" >> "$pkgdir"/etc/authentik/config.yml + + # Install wrapper script to /usr/bin. + install -m755 -D "$srcdir"/authentik-manage.sh "$pkgdir"/usr/bin/authentik-manage +} + +sha512sums=" +26e69786c377b5fb24c733a6d3855f7c05f1821e66935ef1bf24964f50b09967895d5969ccd3d77e51a159879f0a32fbb3731dc28334346afc80675764624f35 authentik-2023.10.4.tar.gz +4defb4fe3a4230f4aa517fbecd5e5b8bcef2a64e1b40615660ae9eec33597310a09df5e126f4d39ce7764bd1716c0a7040637699135c103cbc1879593c6c06f1 authentik.openrc +5d7f28bf5a9f358a0fc3634b2bac6d070c276c3f8181d26fa7e94a17503a4d54556bf7c3207ccd6cb924b81754ed965795d5e2a8aa1af409fd9e32d390ec4cf5 authentik-worker.openrc +351e6920d987861f8bf0d7ab2f942db716a8dbdad1f690ac662a6ef29ac0fd46cf817cf557de08f1c024703503d36bc8b46f0d9eb1ecaeb399dce4c3bb527d17 authentik-ldap.openrc +89ee5f0ffdade1c153f3a56ff75b25a7104aa81d8c7a97802a8f4b0eab34850cee39f874dabe0f3c6da3f71d6a0f938f5e8904169e8cdd34d407c8984adee6b0 authentik-ldap.conf +d2df285e09d05bb78b17cdbf156cb19883764d0ae61d4c8faed599c015277b75c3f51e5fcb35e01fc25d5847f667ff2089d5e6c48b85a3a6b4523278b2eea89d authentik-manage.sh +a50ceddb239851d869212cd5064df117ab977d0e01bf0bc5fa7b5fa6e6428a4af59f802ca223a7e840753f86bfdb0df17d330f9ba4cbaa30a167f51d8aecb9bd root-settings-csrf_trusted_origins.patch +" diff --git a/user/authentik/authentik-ldap.conf b/user/authentik/authentik-ldap.conf new file mode 100644 index 0000000..c31e819 --- /dev/null +++ b/user/authentik/authentik-ldap.conf @@ -0,0 +1,3 @@ +AUTHENTIK_HOST=https://example.com +AUTHENTIK_TOKEN=your-authentik-token +AUTHENTIK_INSECURE=true diff --git a/user/authentik/authentik-ldap.openrc b/user/authentik/authentik-ldap.openrc new file mode 100644 index 0000000..fc033be --- /dev/null +++ b/user/authentik/authentik-ldap.openrc @@ -0,0 +1,24 @@ +#!/sbin/openrc-run + +name="$RC_SVCNAME" +cfgfile="/etc/conf.d/$RC_SVCNAME" +pidfile="/run/$RC_SVCNAME.pid" +working_directory="/usr/share/webapps/authentik" +command="/usr/bin/authentik-ldap" +command_user="authentik" +command_group="authentik" +start_stop_daemon_args="" +command_background="yes" +output_log="/var/log/authentik/$RC_SVCNAME.log" +error_log="/var/log/authentik/$RC_SVCNAME.err" + +depend() { + need authentik +} + +start_pre() { + cd "$working_directory" + checkpath --directory --owner $command_user:$command_group --mode 0775 \ + /var/log/authentik + export AUTHENTIK_HOST AUTHENTIK_TOKEN AUTHENTIK_INSECURE AUTHENTIK_DEBUG +} diff --git a/user/authentik/authentik-manage.sh b/user/authentik/authentik-manage.sh new file mode 100644 index 0000000..43244b0 --- /dev/null +++ b/user/authentik/authentik-manage.sh @@ -0,0 +1,12 @@ + +#!/bin/sh + +BUNDLE_DIR='/usr/share/webapps/authentik' + +cd $BUNDLE_DIR + +if [ "$(id -un)" != 'authentik' ]; then + exec su authentik -c '"$0" "$@"' -- ./manage.py "$@" +else + exec ./manage.py "$@" +fi diff --git a/user/authentik/authentik-worker.openrc b/user/authentik/authentik-worker.openrc new file mode 100644 index 0000000..e7970cc --- /dev/null +++ b/user/authentik/authentik-worker.openrc @@ -0,0 +1,32 @@ +#!/sbin/openrc-run + +name="$RC_SVCNAME" +cfgfile="/etc/conf.d/$RC_SVCNAME.conf" +pidfile="/run/$RC_SVCNAME.pid" +working_directory="/usr/share/webapps/authentik" +command="celery" +command_args="-A authentik.root.celery worker -Ofair --max-tasks-per-child=1 --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events" +command_user="authentik" +command_group="authentik" +start_stop_daemon_args="" +command_background="yes" +output_log="/var/log/authentik/$RC_SVCNAME.log" +error_log="/var/log/authentik/$RC_SVCNAME.err" + +depend() { + need redis + need postgresql +} + +start_pre() { + cd "$working_directory" + checkpath --directory --owner $command_user:$command_group --mode 0775 \ + /var/log/authentik \ + /var/lib/authentik/certs \ + /var/lib/authentik/blueprints +} + +stop_pre() { + ebegin "Killing child processes" + kill $(ps -o pid= --ppid $(cat $pidfile)) || true +} diff --git a/user/authentik/authentik.openrc b/user/authentik/authentik.openrc new file mode 100644 index 0000000..a036393 --- /dev/null +++ b/user/authentik/authentik.openrc @@ -0,0 +1,30 @@ +#!/sbin/openrc-run + +name="$RC_SVCNAME" +cfgfile="/etc/conf.d/$RC_SVCNAME.conf" +pidfile="/run/$RC_SVCNAME.pid" +working_directory="/usr/share/webapps/authentik" +command="/usr/share/webapps/authentik/server" +command_user="authentik" +command_group="authentik" +start_stop_daemon_args="" +command_background="yes" +output_log="/var/log/authentik/$RC_SVCNAME.log" +error_log="/var/log/authentik/$RC_SVCNAME.err" + +depend() { + need redis + need postgresql +} + +start_pre() { + cd "$working_directory" + checkpath --directory --owner $command_user:$command_group --mode 0775 \ + /var/log/authentik \ + /var/lib/authentik/certs +} + +stop_pre() { + ebegin "Killing child processes" + kill $(ps -o pid= --ppid $(cat $pidfile)) || true +} diff --git a/user/authentik/authentik.post-install b/user/authentik/authentik.post-install new file mode 100755 index 0000000..ca0a6e6 --- /dev/null +++ b/user/authentik/authentik.post-install @@ -0,0 +1,40 @@ +#!/bin/sh +set -eu + +group=authentik +config_file='/etc/authentik/config.yml' + +setcap 'cap_net_bind_service=+ep' /usr/share/webapps/authentik/server + +if [ $(grep '@@SECRET_KEY@@' "$config_file") ]; then + echo "* Generating random secret in $config_file" >&2 + + secret_key="$(pwgen -s 50 1)" + sed -i "s|@@SECRET_KEY@@|$secret_key|" "$config_file" + chown root:$group "$config_file" + chmod 0640 "$config_file" +fi + +if [ "${0##*.}" = 'post-upgrade' ]; then + cat >&2 <<-EOF + * + * To finish Authentik upgrade run: + * + * authentik-manage migrate + * + EOF +else + cat >&2 <<-EOF + * + * 1. Adjust settings in /etc/authentik/config.yml. + * + * 2. Create database for Authentik: + * + * psql -c "CREATE ROLE authentik PASSWORD 'top-secret' INHERIT LOGIN;" + * psql -c "CREATE DATABASE authentik OWNER authentik ENCODING 'UTF-8';" + * + * 3. Run "authentik-manage migrate" + * 4. Setup admin user at https:///if/flow/initial-setup/ + * + EOF +fi diff --git a/user/authentik/authentik.post-upgrade b/user/authentik/authentik.post-upgrade new file mode 120000 index 0000000..d310dd8 --- /dev/null +++ b/user/authentik/authentik.post-upgrade @@ -0,0 +1 @@ +authentik.post-install \ No newline at end of file diff --git a/user/authentik/authentik.pre-install b/user/authentik/authentik.pre-install new file mode 100644 index 0000000..792f304 --- /dev/null +++ b/user/authentik/authentik.pre-install @@ -0,0 +1,26 @@ +#!/bin/sh +# It's very important to set user/group correctly. + +authentik_dir='/var/lib/authentik' + +if ! getent group authentik 1>/dev/null; then + echo '* Creating group authentik' 1>&2 + + addgroup -S authentik +fi + +if ! id authentik 2>/dev/null 1>&2; then + echo '* Creating user authentik' 1>&2 + + adduser -DHS -G authentik -h "$authentik_dir" -s /bin/sh \ + -g "added by apk for authentik" authentik + passwd -u authentik 1>/dev/null # unlock +fi + +if ! id -Gn authentik | grep -Fq redis; then + echo '* Adding user authentik to group redis' 1>&2 + + addgroup authentik redis +fi + +exit 0 diff --git a/user/authentik/root-settings-csrf_trusted_origins.patch b/user/authentik/root-settings-csrf_trusted_origins.patch new file mode 100644 index 0000000..52a892f --- /dev/null +++ b/user/authentik/root-settings-csrf_trusted_origins.patch @@ -0,0 +1,12 @@ +diff --git a/authentik/root/settings.py.orig b/authentik/root/settings.py +index ebfc471..ce1ef3b 100644 +--- a/authentik/root/settings.py.orig ++++ b/authentik/root/settings.py +@@ -56,6 +56,7 @@ AUTH_USER_MODEL = "authentik_core.User" + + CSRF_COOKIE_NAME = "authentik_csrf" + CSRF_HEADER_NAME = "HTTP_X_AUTHENTIK_CSRF" ++CSRF_TRUSTED_ORIGINS = CONFIG.get("csrf.trusted_origins") + LANGUAGE_COOKIE_NAME = "authentik_language" + SESSION_COOKIE_NAME = "authentik_session" + SESSION_COOKIE_DOMAIN = CONFIG.get("cookie_domain", None) diff --git a/user/calibre-web/APKBUILD b/user/calibre-web/APKBUILD index 37f5ea0..07d9d70 100644 --- a/user/calibre-web/APKBUILD +++ b/user/calibre-web/APKBUILD @@ -1,7 +1,8 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=calibre-web -pkgver=0.6.25 +pkgver=0.6.21 pkgrel=0 pkgdesc="Web app for browsing, reading and downloading eBooks stored in a Calibre database" arch='noarch' @@ -10,27 +11,26 @@ license='GPL-3.0-only' depends=" py3-apscheduler py3-babel - py3-bleach + py3-backports-abc + py3-blinker py3-chardet - py3-cryptography py3-flask-babel + py3-flask-login py3-flask-limiter py3-flask-principal py3-flask-wtf - py3-flask-httpauth + py3-goodreads + py3-levenshtein + py3-iso639 py3-lxml - py3-magic - py3-netifaces - py3-pypdf - py3-pycountry - py3-regex + py3-pypdf2 py3-requests py3-sqlalchemy py3-tornado py3-tz py3-unidecode - py3-urllib3 py3-wand + py3-werkzeug " source=" $pkgname-$pkgver.tar.gz::https://github.com/janeczku/calibre-web/archive/$pkgver.tar.gz @@ -57,7 +57,7 @@ package() { install -D -m 644 "$srcdir"/calibre-web.conf "$pkgdir"/etc/conf.d/calibre-web } sha512sums=" -878d057613b7f89e57ad536c415bb4dc346d5f8c4ca2660517b68c70c4eefa5358317fe0e917738d468cb003358a0341411155289d952b1aa6cd4a022a84c8f0 calibre-web-0.6.25.tar.gz +d2f07eec0b6c9f65e68ae0b72fddd14444eb8be8b0fee997ec7caaa1feebb8a26603844752347547becde501669af5bce69e9eab466a28fd4b10624b65c9afcf calibre-web-0.6.21.tar.gz 4aba825eb12f44eb0912cc6981b46bec9b77ad114627564c9c7585862a099c7d1ff8deec5f15d047319805e2b9a3e2d128b2d1292dd92293a7e72359009a480f calibre-web.conf 62859a8a304216dc0dbfb7f2e8144a50d348c6621f5b292c08aa97a872ada67b52d36b567546fd0f4c439dbefe0bbe0e4fb1e1affbe507278b4a8d36ed3fa2a9 calibre-web.initd " diff --git a/backports/caprine/APKBUILD b/user/caprine/APKBUILD similarity index 58% rename from backports/caprine/APKBUILD rename to user/caprine/APKBUILD index f8f2b6d..73c3e02 100644 --- a/backports/caprine/APKBUILD +++ b/user/caprine/APKBUILD @@ -1,30 +1,33 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=caprine -pkgver=2.60.3 -pkgrel=6 +pkgver=2.59.1 +pkgrel=0 pkgdesc="Elegant Facebook Messenger desktop app" -arch="x86_64 aarch64" # blocked by electron +arch="x86_64 aarch64" # bloced by electron url="https://github.com/sindresorhus/caprine" license="MIT" depends="electron" makedepends="npm findutils coreutils" -options="!check" # No test suite +options="!check" source=" $pkgname-$pkgver.tar.gz::https://github.com/sindresorhus/caprine/archive/refs/tags/v$pkgver.tar.gz caprine.desktop - caprine.sh + caprine.js " build() { - npm ci --ignore-scripts - npx patch-package + npm install --ignore-scripts + npx --yes patch-package npx tsc - npm prune --ignore-scripts --omit=dev + rm -r node_modules + npm install --ignore-scripts --production + npx --yes patch-package } package() { - local appdir=/usr/lib/caprine + local appdir=/usr/lib/$pkgname install -d "$pkgdir"$appdir cp -r ./* "$pkgdir"$appdir @@ -32,13 +35,13 @@ package() { install -dm755 "$pkgdir/usr/share/pixmaps" install -m644 build/icon.png "$pkgdir/usr/share/pixmaps/$pkgname.png" - install -Dm755 "$srcdir"/caprine.sh "$pkgdir"/usr/bin/caprine - install -Dm644 "$srcdir"/caprine.desktop \ - "$pkgdir"/usr/share/applications/caprine.desktop + install -Dm755 "$srcdir"/$pkgname.js "$pkgdir"/usr/bin/$pkgname + install -Dm644 "$srcdir"/$pkgname.desktop \ + "$pkgdir"/usr/share/applications/$pkgname.desktop - install -dm755 "$pkgdir"/usr/share/licenses/caprine - ln -s "$(realpath -m --relative-to=/usr/share/licenses/caprine $appdir/license)" \ - "$pkgdir"/usr/share/licenses/caprine + install -dm755 "$pkgdir"/usr/share/licenses/$pkgname + ln -s "$(realpath -m --relative-to=/usr/share/licenses/$pkgname $appdir/license)" \ + "$pkgdir"/usr/share/licenses/$pkgname # Clean up rm -r "$pkgdir"$appdir/build @@ -46,7 +49,7 @@ package() { rm -r "$pkgdir"$appdir/tsconfig.json find "$pkgdir"$appdir \ -name "package.json" \ - -exec sed -e "s|$srcdir/caprine|$appdir|" \ + -exec sed -e "s|$srcdir/$pkgname|$appdir|" \ -i {} \; \ -or -name ".*" -prune -exec rm -r '{}' \; \ -or -name "bin" -prune -exec rm -r '{}' \; \ @@ -57,7 +60,7 @@ package() { -or -name "test" -prune -exec rm -r '{}' \; } sha512sums=" -edf6452294b3c661befd9811c5836da33311171d587cb9a5939ac11a0c1e2a7ebbc4f2a8d81e02c1db1a2d814ac1aa7bbdadca9e21892cc8d7f7e9c23dc2e221 caprine-2.60.3.tar.gz +a525bafb6a53dd2dbdfc4b9b3e96d3939d93be950a3287f2a5ef6465d5a6b64ecda79b6d393023d067f939e1a6e85debc35f83bbb1f758011db9d94dd9ff8a72 caprine-2.59.1.tar.gz a469e3bea24926119e51642b777ef794c5fa65421107903f967c36d81bbb1adb3d52469ce3a3301b2c890f1aa53ab989ded22a7c6e811fb8cf0a582dbd835e19 caprine.desktop -3ad8994c1a0417e73d622587769e527b4236a32c1a89442ff76413b75b4392d667c9e2908979b453e5926e54db6d94b31625340c5a94e84e91ea77f56feae778 caprine.sh +44280c62ce43bdafa8528729371fccb16b8a0e3db7aca28d5c157ae0144dca5fbb023b8883b561955aa28ab62e967f2674d8c6bcaff186e2cdd0e7ba8beab9ac caprine.js " diff --git a/backports/caprine/caprine.desktop b/user/caprine/caprine.desktop similarity index 100% rename from backports/caprine/caprine.desktop rename to user/caprine/caprine.desktop diff --git a/user/caprine/caprine.js b/user/caprine/caprine.js new file mode 100644 index 0000000..a963ee6 --- /dev/null +++ b/user/caprine/caprine.js @@ -0,0 +1,29 @@ +#!/usr/bin/electron + +const name = 'caprine'; + +const {app} = require('electron'); +const fs = require('fs'); +const path = require('path'); + +// Change command name. +const fd = fs.openSync('/proc/self/comm', fs.constants.O_WRONLY); +fs.writeSync(fd, name); +fs.closeSync(fd); + +// Remove first command line argument (/usr/bin/electron). +process.argv.splice(0, 1); + +// Set application paths. +const appPath = path.join(path.dirname(__dirname), 'lib', name); +const packageJson = require(path.join(appPath, 'package.json')); +const productName = packageJson.productName; +app.setAppPath(appPath); +app.setDesktopName(name + '.desktop'); +app.setName(productName); +app.setPath('userCache', path.join(app.getPath('cache'), productName)); +app.setPath('userData', path.join(app.getPath('appData'), productName)); +app.setVersion(packageJson.version); + +// Run the application. +require('module')._load(appPath, module, true); diff --git a/unmaintained/craftbukkit-plugin-customtime/APKBUILD b/user/craftbukkit-plugin-customtime/APKBUILD similarity index 100% rename from unmaintained/craftbukkit-plugin-customtime/APKBUILD rename to user/craftbukkit-plugin-customtime/APKBUILD diff --git a/unmaintained/craftbukkit-plugin-dynmap/APKBUILD b/user/craftbukkit-plugin-dynmap/APKBUILD similarity index 100% rename from unmaintained/craftbukkit-plugin-dynmap/APKBUILD rename to user/craftbukkit-plugin-dynmap/APKBUILD diff --git a/user/craftbukkit-plugin-essentialsx/APKBUILD b/user/craftbukkit-plugin-essentialsx/APKBUILD new file mode 100644 index 0000000..9848a42 --- /dev/null +++ b/user/craftbukkit-plugin-essentialsx/APKBUILD @@ -0,0 +1,108 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=craftbukkit-plugin-essentialx +_pkgver=2.19.2 +_buildver=release +_buildcommit=0 +pkgrel=2 +pkgdesc="EssentialsX is the essential plugin suite for Minecraft servers, with over 130 commands for servers of all size and scale." +options=!check +arch='noarch' +url="https://essentialsx.net/" +license="GPL-3.0" +depends="craftbukkit>=1.8.8 craftbukkit<=1.18.1" + +if _buildver=release; then + pkgver=$_pkgver + _url=https://github.com/EssentialsX/Essentials/releases/download/$pkgver + _filename="$pkgver.jar" +else + pkgver=$_pkgver.$_buildver + _url=https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars + _filename="$_pkgver-dev+$_buildver-$_buildcommit.jar" +fi + +source=" + $_url/EssentialsX-$_filename + $_url/EssentialsXChat-$_filename + $_url/EssentialsXSpawn-$_filename + $_url/EssentialsXAntiBuild-$_filename + $_url/EssentialsXDiscord-$_filename + $_url/EssentialsXGeoIP-$_filename + $_url/EssentialsXProtect-$_filename + $_url/EssentialsXXMPP-$_filename +" + +subpackages="$pkgname-core $pkgname-chat $pkgname-spawn $pkgname-antibuild $pkgname-discord $pkgname-geo $pkgname-protect $pkgname-xmpp" + + +package() { + mkdir -p "$pkgdir" +} + +core() { + pkgdesc="Core functionality: teleports, private messages, homes, warps and more" + install -Dm644 "$srcdir"/EssentialsX-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/Essentials.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/Essentials.jar +} + +chat() { + pkgdesc="Chat formatting, local chat" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXChat-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsChat.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsChat.jar +} + +spawn() { + pkgdesc="Spawnpoint control, per-player spawns" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXSpawn-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsSpawn.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsSpawn.jar +} + +antibuild() { + pkgdesc="Simple permissions-based building control" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXAntiBuild-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsAntiBuild.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsAntiBuild.jar +} + +discord() { + pkgdesc="Lightweight chat, messaging and command integration with Discord" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXDiscord-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsDiscord.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsDiscord.jar +} + +geo() { + pkgdesc="Geographical player lookup (formerly EssentialsX GeoIP)" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXGeoIP-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsGeo.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsGeo.jar +} + +protect() { + pkgdesc="Configurable world protection and control" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXProtect-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsProtect.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsProtect.jar +} + +xmpp() { + pkgdesc="Lightweight chat, messaging and server log integration with Jabber/XMPP services" + depends="$pkgname-core" + install -Dm644 "$srcdir"/EssentialsXXMPP-*.jar "$subpkgdir/var/lib/craftbukkit/plugins/EssentialsXMPP.jar" + chown craftbukkit:craftbukkit "$subpkgdir"/var/lib/craftbukkit/plugins/EssentialsXMPP.jar +} + +sha512sums=" +c91c0905c11482d93b1565f8b9dce7b6f939567b4cb2756b112ee408bdcca1fece04742f9b7b0876d5b2e84cebdbc555d35cf783e9e86ab12fafb9dc02bc6008 EssentialsX-2.19.2.jar +e2df6f242db38689579501b34763ad7d4b5e8ddd87b7b57956c6b5cc667f1b34af6b1289d668a64761da63f8ae8507eb9687ca490cc715a3eff6338770963240 EssentialsXChat-2.19.2.jar +24e41168428f20bd6506282b9920718c43f7e5227bf35e174522e49859e294048a1d979ae42044bdbdba45c8a1109f4db6ffd0e24d5f3e909d0f9a3ac31e21d3 EssentialsXSpawn-2.19.2.jar +326ec004241b526965cb67ae0f0245dfa960da2fdb4b59d867eb08e5196fceb468f9314cb838c8a0bc513cc55f43cf58023d11b18ed98e472be7089838538f97 EssentialsXAntiBuild-2.19.2.jar +211c575adde17c3f2f901144e5c31beb2918df7e6e15f8ebe16805d3b53214a4756b87ec84466790ebf1dacb41e1aea97b6a9ba8ed39e85092293a821044d579 EssentialsXDiscord-2.19.2.jar +7845e7666f983d3e793528a7085ced7c9f1bf881740bcc68b6a54fea74e31c3c0c2a52e26fc20330ba7d4a190dad0a1b27195fed0e1417a48494c5fa2ac60d92 EssentialsXGeoIP-2.19.2.jar +e74ed72a15b5e6cd3c5f61d032a26c151865e3197638c9059237dc2d1144b0cb15668545532fc532ac8ec247bdf9b9ee6843b8f4af7506aef86d155dd5672c5f EssentialsXProtect-2.19.2.jar +8d35009499557700f49c27ca3132e866f511a200791dbcfd2f595396977058cc2fc9349d0b4eaa0eb67b27331e91e6209df6ed57a766c06fd3b3325718462478 EssentialsXXMPP-2.19.2.jar +" diff --git a/user/craftbukkit-plugin-luckperms/APKBUILD b/user/craftbukkit-plugin-luckperms/APKBUILD new file mode 100644 index 0000000..1ef75e9 --- /dev/null +++ b/user/craftbukkit-plugin-luckperms/APKBUILD @@ -0,0 +1,23 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=craftbukkit-plugin-luckperms +_pkgver=5.3.89 +_buildver=1389 +pkgver=$_pkgver.$_buildver +pkgrel=1 +pkgdesc="An advanced permissions plugin for Bukkit/Spigot, BungeeCord and Sponge." +options=!check +arch='noarch' +url="https://github.com/lucko/LuckPerms" +license="MIT" +depends="craftbukkit>=1.8.8 craftbukkit<=1.18.1" +source="https://ci.lucko.me/job/LuckPerms/$_buildver/artifact/bukkit/loader/build/libs/LuckPerms-Bukkit-$_pkgver.jar" + +package() { + install -Dm644 "$srcdir"/LuckPerms-Bukkit-$_pkgver.jar "$pkgdir/var/lib/craftbukkit/plugins/LuckPerms.jar" + chown craftbukkit:craftbukkit "$pkgdir"/var/lib/craftbukkit/plugins/LuckPerms.jar +} +sha512sums=" +7e146616cdf7f667c483bbe2112439c85f32427e9aa3714f0b0e869abf0cde6aacc7341d8d9e6a72ddcf8f35af840f4ba678c4690222912113f497cafce11154 LuckPerms-Bukkit-5.3.89.jar +" diff --git a/user/craftbukkit-plugin-worldedit/APKBUILD b/user/craftbukkit-plugin-worldedit/APKBUILD new file mode 100644 index 0000000..6ee40e2 --- /dev/null +++ b/user/craftbukkit-plugin-worldedit/APKBUILD @@ -0,0 +1,22 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=craftbukkit-plugin-worldedit +pkgver=7.2.8 +_pkgver=$pkgver +pkgrel=1 +pkgdesc="WorldEdit is an easy-to-use in-game Minecraft map editor" +options=!check +arch='noarch' +url="https://dev.bukkit.org/projects/worldedit" +license="GPL-3.0" +depends="craftbukkit>=1.13.2 craftbukkit<=1.18.1" +source="https://media.forgecdn.net/files/3559/523/worldedit-bukkit-7.2.8.jar" + +package() { + install -Dm644 "$srcdir"/worldedit-bukkit-$_pkgver.jar "$pkgdir/var/lib/craftbukkit/plugins/WorldEdit.jar" + chown craftbukkit:craftbukkit $pkgdir/var/lib/craftbukkit/plugins/WorldEdit.jar +} +sha512sums=" +b57eacf7a2d90461f996f71cf55aa2e328d7b75c724291f11bcd1ab0f7e64e980db7ae3a2a56fffdf2bc31bfbcf68dda89b7c6f2ffa32ee430b8016020d796e3 worldedit-bukkit-7.2.8.jar +" diff --git a/user/craftbukkit-plugin-worldguard/APKBUILD b/user/craftbukkit-plugin-worldguard/APKBUILD new file mode 100644 index 0000000..478480b --- /dev/null +++ b/user/craftbukkit-plugin-worldguard/APKBUILD @@ -0,0 +1,22 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=craftbukkit-plugin-worldedit +pkgver=7.0.6 +_pkgver=$pkgver +pkgrel=3 +pkgdesc="WorldGuard lets you and players guard areas of land against griefers and undesirables" +options=!check +arch='noarch' +url="https://dev.bukkit.org/projects/worldguard" +license="GPL-3.0" +depends="craftbukkit>=1.17.0 craftbukkit<=1.18.1" +source="https://media.forgecdn.net/files/3461/546/worldguard-bukkit-7.0.6-dist.jar" + +package() { + install -Dm644 "$srcdir"/worldguard-bukkit-$_pkgver-dist.jar "$pkgdir/var/lib/craftbukkit/plugins/WorldGuard.jar" + chown craftbukkit:craftbukkit $pkgdir/var/lib/craftbukkit/plugins/WorldGuard.jar +} +sha512sums=" +f2f857ffbbe7896b8986d5944564d7ab01e51d86476e05c66067a57d83dcb2ee60019ab9d75b16d551e9cfe102d29a602de41f316da57d7743d2595d6a11d839 worldguard-bukkit-7.0.6-dist.jar +" diff --git a/user/dotnet8-runtime/APKBUILD b/user/dotnet8-runtime/APKBUILD new file mode 100644 index 0000000..f064bc5 --- /dev/null +++ b/user/dotnet8-runtime/APKBUILD @@ -0,0 +1,518 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-runtime +pkgver=8.0.0_pre7 +pkgrel=2 +_gittag=v8.0.0-preview.7.23375.6 +_giturl="https://github.com/dotnet/dotnet" +_testtag=e1cc0f181ffd4d755756d30d985513897d592ba4 +_bunnytag=v12 +_stage0ver=8.0.0_pre7-r2 +_patches=" + aspnetcore_portable-build-workaround.patch + build_enable-timestamps.patch + installer_hard-dereference-tar-gz.patch + roslyn-analyzer_disable-apphost.patch + runtime_82269-mono-thread-coop-undefine-fortify-source.patch + runtime_90251-rename-mono-cmake-host-var.patch + runtime_enable-system-libunwind.diff + runtime_more-clang-16-suppression.patch + runtime_remove-usage-of-off64-t.patch + vstest_intent-net8.0.patch + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=${pkgver%.*.*} +_pkgver_name=${_pkgver_macro//[.0]} +_pkgver_sdk=${pkgver/0./0.10} +pkgdesc="The .NET $_pkgver_macro Core runtime" +# x86: blocked by https://github.com/dotnet/runtime/issues/77667 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# upgrade needed +#arch="all !x86 !armhf" +url=https://dotnet.microsoft.com +license="MIT" +provides="dotnet$_pkgver_name=$pkgver-r$pkgrel" +depends=" + dotnet$_pkgver_name-hostfxr + icu-data-full + icu-libs + " +checkdepends=" + babeltrace + binutils + coreutils + file + gawk + jq + lttng-tools + npm + procps + sed + strace + util-linux-misc + which + " +# For now package is not tested to build on itself +# To test: replace 'dotnet-stage0-bootstrap' with 'dotnet-bootstrap' +# and 'dotnet-stage0-artifacts' with 'dotnet-bootstrap-artifacts' +makedepends=" + bash + clang + cmake + dotnet$_pkgver_name-stage0-bootstrap=$_stage0ver + dotnet$_pkgver_name-stage0-artifacts=$_stage0ver + dotnet$_pkgver_name-stage0=$_stage0ver + findutils + git + grep + icu-data-full + icu-dev + inetutils-syslogd + krb5-dev + libgit2-dev + libintl + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lldb-dev + llvm-dev + lttng-ust-dev + nodejs + numactl-dev + openssl-dev + pigz + rsync + samurai + tar + xz + zlib-dev + " +case $CARCH in + s390x|x86) ;; + *) makedepends="$makedepends lld-dev";; +esac + +subpackages=" + aspnetcore$_pkgver_name-runtime:aspnetcore_runtime:noarch + aspnetcore$_pkgver_name-targeting-pack:aspnetcore_targeting_pack:noarch + dotnet$_pkgver_name-runtime-artifacts::noarch + dotnet$_pkgver_name-runtime-bootstrap + dotnet$_pkgver_name-apphost-pack:apphost_pack + dotnet$_pkgver_name-hostfxr + dotnet$_pkgver_name-targeting-pack:targeting_pack:noarch + dotnet-host:host + " +source=" + dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz + dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json + dotnet-testsuite-$_testtag.tar.gz::https://github.com/redhat-developer/dotnet-regular-tests/archive/$_testtag.tar.gz + dotnet-bunny-$_bunnytag.tar.gz::https://github.com/redhat-developer/dotnet-bunny/archive/$_bunnytag.tar.gz + dotnet.sh.in + $_patches + " +builddir="$srcdir"/dotnet-${_gittag/v} +_checkdir="$srcdir"/dotnet-bunny-${_bunnytag/v} +_testdir="$srcdir"/dotnet-regular-tests-$_testtag +_cli_root="$srcdir"/bootstrap +_libdir="/usr/lib" +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +case $CARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7) _dotnet_arch="arm";; + armhf) _dotnet_arch="armv6";; + *) _dotnet_arch="$CARCH";; +esac + +# Build doesn't set all the right executable bits for the right file types +_fix_executable() { + # add executable bit + find "$1" -type f \( \ + -name 'apphost' -o \ + -name 'singlefilehost' -o \ + -name 'lib*so' \ + \) \ + -exec chmod +x '{}' \; + + # remove executable bit + find "$1" -type f \( \ + -name '*.a' -o \ + -name '*.dll' -o \ + -name '*.h' -o \ + -name '*.json' -o \ + -name '*.pdb' -o \ + -name '*.props' -o \ + -name '*.pubxml' -o \ + -name '*.targets' -o \ + -name '*.txt' -o \ + -name '*.xml' \ + \) \ + -exec chmod -x '{}' \; +} + +prepare() { + default_prepare + + # Using system libunwind is broken on aarch64|armv7, and unused on mono-based builds + # see https://github.com/dotnet/source-build/issues/2408, + case $CARCH in + aarch64|armv7) msg "Using bundled libunwind";; + armhf|s390x|ppc64le) msg "No libunwind used";; + *) + msg "Using system libunwind" + patch -p1 -i "$srcdir"/runtime_enable-system-libunwind.diff + ;; + esac + + # ensure that dotnet does not download artifacts provided by dotnet-artifacts + rm -rf "$builddir"/packages/archive + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + # dotnet requires its bootstrap to be in a writable dir + msg "Setting up bootstrap" + local _bootstrapdir=$(find $_libdir/dotnet/bootstrap/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1) + if [ ! -d "$_cli_root" ]; then + cp -r "$_bootstrapdir" "$_cli_root" + fi +} + +build() { + msg "Building $pkgname-$pkgver" + + ulimit -n 4096 + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + export DOTNET_LTTng=0 + fi + + case "$CARCH" in + x86*) ;; + *) + # clang doesn't implement this outside of x86, and it causes a later configure to fail + export CFLAGS="${CFLAGS/-fstack-clash-protection}" + export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection}" + ;; + esac + + # looks for most recent recent version of _artifactsdir + local _artifactsdir=$(find $_libdir/dotnet/artifacts/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1) + + # ci args, else the output is forwarded to log files which isn't ideal in a + # pipeline environment, and build by defaults uses lots of space + local args=" + /v:minimal + /p:LogVerbosity=minimal + /p:MinimalConsoleLogOutput=true + /p:CleanWhileBuilding=true + " + + # part of https://github.com/dotnet/installer/pull/14792 that sets this flag + # was not integrated in 7.0.1xx yet + case $CARCH in + riscv64|s390x|ppc64le) local args="$args /p:SourceBuildUseMonoRuntime=true";; + esac + + # Source-Build now builds using portable RID + local args="$args /p:PortableBuild=true /p:PortableRid=linux-musl-$_dotnet_arch /p:_portableRidOverridden=true" + + ./build.sh \ + --with-sdk "$_cli_root" \ + --with-packages "$_artifactsdir" \ + --release-manifest "$srcdir"/dotnet-release-$_gittag.json \ + -- $args +} + +check() { + ulimit -n 4096 + # Tests timeout (in seconds) + local _tests_timeout=1000 + # Test suite disable flags + # following tests can only work after packaging step + local _disabled_tests="man-pages distribution-package bash-completion install-location release-version-sane" + # test broken: permission issue on lxc / pipelines + local _disabled_tests="$_disabled_tests createdump-aspnet workload" + # liblttng-ust_sys-sdt.h: no 'NT_STAPSDT' on Alpine's lttng-ust package + # lttng: known issue, see https://github.com/dotnet/runtime/issues/57784 + local _disabled_tests="$_disabled_tests liblttng-ust_sys-sdt.h lttng" + # {bundled,system}-libunwind: use system version on all but aarch64/armv7, as broken + # see https://github.com/redhat-developer/dotnet-regular-tests/issues/113 + # disable on mono-flavored runtime as mono does not use libunwind + case $CARCH in + armv7|aarch64) local _disabled_tests="$_disabled_tests system-libunwind";; + s390x|ppc64le|armhf) local _disabled_tests="$_disabled_tests bundled-libunwind system-libunwind";; + *) local _disabled_tests="$_disabled_tests bundled-libunwind";; + esac + # test unit broken currently + _disabled_tests="$_disabled_tests system-libunwind" + # nativeaot is not supported on armv7 + case $CARCH in + armv7) local _disabled_tests="$_disabled_tests nativeaot" + esac + # debugging-via-dotnet-dump hangs + local _disabled_tests="$_disabled_tests debugging-via-dotnet-dump" + + msg "Unpacking produced dotnet" + export DOTNET_ROOT="$_checkdir/release" + if [ ! -d "$DOTNET_ROOT" ]; then + mkdir -p "$DOTNET_ROOT" + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$DOTNET_ROOT" \ + --no-same-owner + fi + export PATH="$DOTNET_ROOT:$PATH" + # some files either should or should not have executable bits + # (done again during packaging - this is for tests) + _fix_executable "$DOTNET_ROOT" + + msg "Building turkey test suite" + if [ ! -d "$_logdir/check" ]; then + mkdir -p "$_logdir"/check + fi + if [ ! -d "$_checkdir"/turkey ]; then + cd "$_checkdir"/Turkey + dotnet publish -bl:"$_logdir"/check/turkey.binlog -f netcoreapp3.1 -c Release -p:VersionPrefix=1 -p:VersionSuffix="$(git rev-parse --short HEAD)" -o "$_checkdir"/turkey + fi + + msg "Running test suite" + cd "$_testdir" + for i in $_disabled_tests; do + if [ -d "$i" ]; then + sed -i 's|"enabled": true|"enabled": false|' $i/test.json + fi + done + dotnet "$_checkdir"/turkey/Turkey.dll -t $_tests_timeout -l "$_logdir"/check || local ERROR=true + if [ $ERROR ]; then + msg "Check error reported, please check logs" + fi +} + +package() { + install -dm 755 "$pkgdir"/$_libdir/dotnet/shared + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$pkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./shared/Microsoft.NETCore.App + + # some files either should or should not have executable bits + _fix_executable "$pkgdir" + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + rm "$pkgdir"/$_libdir/dotnet/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so + fi +} + +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk \ + "$subpkgdir"/usr/share/licenses + + # extract arch-agnostic artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \ + --no-same-owner \ + --exclude '*Intermediate*' \ + --exclude '*linux-musl*' +} + +bootstrap() { + pkgdesc="The .NET $_pkgver_macro Core bootstrap" + depends="" + + # hack for dotnetx-runtime to be able to pull itself for bootstrapping + provides="dotnet$_pkgver_name-bootstrap" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk + + # unpack sdk to bootstrap + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/ \ + --no-same-owner + + # extract arch-specific artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \ + --no-same-owner \ + --wildcards \ + '*linux-musl*' + + # assemble docs + find "$builddir" -iname 'dotnet*.1' -type f -exec cp '{}' "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs/. \; + + # completions + install -m 755 "$builddir"/src/sdk/scripts/register-completions.bash "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/. + install -m 755 "$builddir"/src/sdk/scripts/register-completions.zsh "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/. + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" + + # Disable use of LTTng as tracing on lttng <=2,13,0 is broken + # See https://github.com/dotnet/runtime/issues/57784. + if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then + rm "$subpkgdir"/$_libdir/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so + fi +} + +host() { + pkgdesc="A generic driver for the .NET Core Command Line Interface" + depends="" + + install -dm 755 \ + "$subpkgdir"/etc/profile.d \ + "$subpkgdir"/etc/dotnet \ + "$subpkgdir"/usr/bin \ + "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./dotnet + + ln -s $_libdir/dotnet/dotnet "$subpkgdir"/usr/bin/dotnet + echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location + echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location_$_dotnet_arch + sed "s|%LIBDIR%|$_libdir/dotnet|" "$srcdir"/dotnet.sh.in > "$subpkgdir"/etc/profile.d/dotnet.sh +} + +hostfxr() { + pkgdesc="The .NET host resolver contains the logic to resolve and select the right version of the .NET SDK or runtime to use." + depends="dotnet-host" + provides="dotnet-hostfxr-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./host + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +aspnetcore_runtime() { + pkgdesc="The ASP.NET $_pkgver_macro Core runtime" + depends="dotnet$_pkgver_name-runtime" + provides="aspnetcore-runtime-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./shared/Microsoft.AspNetCore.App + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +apphost_pack() { + pkgdesc="The .NET $_pkgver_macro Core apphost pack" + provides="dotnet-apphost-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + --wildcards \ + './packs/Microsoft.NETCore.App.Host.*' + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +targeting_pack() { + pkgdesc="The .NET $_pkgver_macro Core targeting pack" + provides="dotnet-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./packs/Microsoft.NETCore.App.Ref + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +aspnetcore_targeting_pack() { + pkgdesc="The ASP.NET $_pkgver_macro Core targeting pack" + provides="aspnetcore-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + tar --use-compress-program="pigz" \ + -xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/ \ + --no-same-owner \ + ./packs/Microsoft.AspNetCore.App.Ref + + # some files either should or should not have executable bits + _fix_executable "$subpkgdir" +} + +sha512sums=" +06cb81a5667153a7d6ae190d169dcafea88954d1d42f9f1ae0fffe7cb4787599d7cad5428f66a6ce10af24898bd4ffbe1b9e95f1d3b698641437298055ebd10f dotnet-tarball-v8.0.0-preview.7.23375.6.tar.gz +5598ae0b9044dd2d2b5eba10ce420cd14266bd25412b37e9766bbaf1b1ce79438a5c7db559431aa59c0b49f14187ca3f78a57065b7802df304910b00b6694bfa dotnet-release-v8.0.0-preview.7.23375.6.json +e9f3df13d093fac214778c1137857e065f58d4e0d2a48d540d8ed7bb41e2fd73b2b3f62a0aa5b0e80fa80a5b58ba77ff19b9d10a492802f8539e3a6ed79d299d dotnet-testsuite-e1cc0f181ffd4d755756d30d985513897d592ba4.tar.gz +0028d5d97b814b122d73137b4e0d64ca5d788aa0ae5fde500de722e23522827f2538f06e75acb17cc39b8917961ee78d1f0bbc84b2b624ae0e9bf88adca2ba6f dotnet-bunny-v12.tar.gz +c3f31956976b77198e72a3fef3427338b6b2961f8c121416040c1105de0ce8073e46f4c2e9ef22a001aee69cbe39621c2ddac988522693110071dfae42f2e2b7 dotnet.sh.in +ad7373a112acc07a6a7bbc522d417b26d90b3e3ae9c1e66a6cc70af16af7e7111d9764e7758062d0a5e67f026cc44f2b111051c3d484bd56917f2144db88588b aspnetcore_portable-build-workaround.patch +eed7a7481a967f6938de956a6df485efa6dd61bf36ae4a768493cb1f7da0296dc91e0f2f89f7c302083ba9cf0c778e28228ec1b52e902077a00072d7d9957ef3 build_enable-timestamps.patch +ab362bdbbea8d8116b6bf7bf58e330ce6d7d171b42613ac03514f76afa2574b75d6566148d1b72047fbfe61b40ac67b3f2d8af87a7074c790bf882a5b7e73960 installer_hard-dereference-tar-gz.patch +097db705c787501782a1b203e8c453453075dfcadc4f5282849c6ffdda4d7832f75c56089bced4542cc83704fe33842cc725084dac2ba261cacdaf54ae468b3c roslyn-analyzer_disable-apphost.patch +d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch +c1e8a51bca47f13e60cb28fa3c58c4bdc0fd8fa19177855b6cc9a767016fc239064aced57530e227c772e302671fc91e86c718a39aecb05eb7f601c8d931de81 runtime_90251-rename-mono-cmake-host-var.patch +39e1b848d1ae81e4b81758522de7d3e36b11d2ab626565efb8e4cceae8da29018277709f0af8fcfa75be8da79f8d6432eb6aac49a5e82510c3aca34632df4d8e runtime_enable-system-libunwind.diff +887112eb2b103eadd6887529ebae7f9a75df2c2cb168e84fd40cc09f9bcd20917d428bbba06968b07b0a463890da82b1b2b1d033a3dd016e6494067464ae6f74 runtime_more-clang-16-suppression.patch +0c25319125ef5b0ad490b37a643c0c5257c796d5ed24f9ac404f698710b07de790bcbb0b6336d4a50025b94c3bff99b214951bd8f0a79a8d6f543ebaa300740f runtime_remove-usage-of-off64-t.patch +5c74abbd7ea71ba6164f71b866c9da564db9ccd95f1a9a8b82f5b0b599fab6d59d64ba1157ec13d7ac36d23145f3d9de2189ed6c40f56e46555ab378c161948b vstest_intent-net8.0.patch +" diff --git a/user/dotnet8-runtime/README.md b/user/dotnet8-runtime/README.md new file mode 100644 index 0000000..de3edb7 --- /dev/null +++ b/user/dotnet8-runtime/README.md @@ -0,0 +1,144 @@ +# dotnet8-runtime + +This is the .NET 8.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `aspnetcore8-runtime` +* `aspnetcore8-targeting-pack` +* `dotnet8-apphost-pack` (used by dotnet8-runtime) +* `dotnet8-hostfxr` (used by dotnet-host) +* `dotnet8-runtime` +* `dotnet8-targeting-pack` +* `dotnet-host` + +## How to build dotnet8 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet8 is built using three different aports. + +* `community/dotnet8-stage0` +Builds minimum components for full build of dotnet8, and packages these in an initial +`dotnet8-stage0-bootstrap` package that `dotnet8-build` pulls. +* `community/dotnet8-build` +Builds full and packages dotnet8 fully using either stage0 or previoulsy built +dotnet8 build. +* `community/dotnet8-runtime` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet8-build. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet8-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet8` as opposed to `dotnet-8.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-build` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-build: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-build` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-build: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/user/dotnet8-runtime/aspnetcore_portable-build-workaround.patch b/user/dotnet8-runtime/aspnetcore_portable-build-workaround.patch new file mode 100644 index 0000000..43f2ce0 --- /dev/null +++ b/user/dotnet8-runtime/aspnetcore_portable-build-workaround.patch @@ -0,0 +1,43 @@ +From 451aa3e9544b0214d0e8e844c27af3847f5bf391 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/installer/pull/13410 +From: Antoine Martin +Date: Fri, 18 Feb 2022 05:14:39 +0000 +Subject: [PATCH 1/1] musl build fix + +Line causes build of aspnetcore on arm to look for linux version of +CrossGen2 rather than linux-musl. This removes the line so that +BuildOsName is pulled from TargetOsName as expected + +This is now only necessary for portable +builds, as https://github.com/dotnet/installer/pull/14549 has fixed +issues relating to musl build on full source-build + +--- + .../App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj.orig b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +index 77dce00..b31b36d 100644 +--- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj.orig ++++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +@@ -103,8 +103,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant + Special case the crossgen2 package reference on Windows to avoid the x86 package when building in Visual Studio. + --> + $(TargetOsName) +- linux + $(TargetRuntimeIdentifier.Substring(0,$(TargetRuntimeIdentifier.IndexOf('-')))) + x64 + $(BuildArchitecture) + PkgMicrosoft_NETCore_App_Crossgen2_$(BuildOsName.Replace('.', '_'))-$(Crossgen2BuildArchitecture) +diff --git a/repo-projects/aspnetcore.proj.orig b/repo-projects/aspnetcore.proj +index 289b506..fadcc0d 100644 +--- a/repo-projects/aspnetcore.proj.orig ++++ b/repo-projects/aspnetcore.proj +@@ -13,6 +13,7 @@ + $(StandardSourceBuildArgs.Replace('--publish', '')) + + $(BuildCommandArgs) --arch $(Platform) ++ $(BuildCommandArgs) --os-name linux-musl + $(BuildCommandArgs) --no-build-repo-tasks + $(BuildCommandArgs) --no-build-nodejs + $(BuildCommandArgs) /p:PublishCompressedFilesPathPrefix=$(SourceBuiltAspNetCoreRuntime) diff --git a/user/dotnet8-runtime/build_enable-timestamps.patch b/user/dotnet8-runtime/build_enable-timestamps.patch new file mode 100644 index 0000000..5977a41 --- /dev/null +++ b/user/dotnet8-runtime/build_enable-timestamps.patch @@ -0,0 +1,40 @@ +diff --git a/repo-projects/Directory.Build.props b/repo-projects/Directory.Build.props +index b70a3161fef..d57f9393299 100644 +--- a/repo-projects/Directory.Build.props ++++ b/repo-projects/Directory.Build.props +@@ -134,6 +134,7 @@ + $(StandardSourceBuildArgs) $(FlagParameterPrefix)pack + $(StandardSourceBuildArgs) $(FlagParameterPrefix)publish + $(StandardSourceBuildArgs) -bl ++ $(StandardSourceBuildArgs) /consoleLoggerParameters:ShowTimestamp + + $(StandardSourceBuildArgs) /p:ArcadeBuildFromSource=true + $(StandardSourceBuildArgs) /p:CopyWipIntoInnerSourceBuildRepo=true + $(StandardSourceBuildArgs) /p:DotNetBuildOffline=true + +diff --git a/src/fsharp/eng/build.sh b/src/fsharp/eng/build.sh +index fff8414b3ef..d470fc6ed56 100755 +--- a/src/fsharp/eng/build.sh ++++ b/src/fsharp/eng/build.sh +@@ -144,7 +144,7 @@ while [[ $# > 0 ]]; do + --sourcebuild) + source_build=true + ;; +- /p:*) ++ /*) + properties="$properties $1" + ;; + *) +diff --git a/src/roslyn/eng/build.sh b/src/roslyn/eng/build.sh +index a08cbea099d..d3ec235732f 100755 +--- a/src/roslyn/eng/build.sh ++++ b/src/roslyn/eng/build.sh +@@ -167,7 +167,7 @@ while [[ $# > 0 ]]; do + args="$args $1" + shift + ;; +- /p:*) ++ /*) + properties="$properties $1" + ;; + *) diff --git a/user/dotnet8-runtime/dotnet.sh.in b/user/dotnet8-runtime/dotnet.sh.in new file mode 100644 index 0000000..f85eb29 --- /dev/null +++ b/user/dotnet8-runtime/dotnet.sh.in @@ -0,0 +1,12 @@ +# Set location for AppHost lookup +[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT=%LIBDIR% + +# Add dotnet tools directory to PATH +DOTNET_TOOLS_PATH="$HOME/.dotnet/tools" +case "$PATH" in + *"$DOTNET_TOOLS_PATH"* ) true ;; + * ) PATH="$PATH:$DOTNET_TOOLS_PATH" ;; +esac + +# Extract self-contained executables under HOME to avoid multi-user issues from using the default '/var/tmp' +[ -z "$DOTNET_BUNDLE_EXTRACT_BASE_DIR" ] && export DOTNET_BUNDLE_EXTRACT_BASE_DIR="${XDG_CACHE_HOME:-"$HOME"/.cache}/dotnet_bundle_extract" diff --git a/user/dotnet8-runtime/installer_hard-dereference-tar-gz.patch b/user/dotnet8-runtime/installer_hard-dereference-tar-gz.patch new file mode 100644 index 0000000..4f92e2c --- /dev/null +++ b/user/dotnet8-runtime/installer_hard-dereference-tar-gz.patch @@ -0,0 +1,13 @@ +diff --git a/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs.orig b/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs +index 06b9857..066d595 100644 +--- a/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs.orig ++++ b/src/installer/src/core-sdk-tasks/TarGzFileCreateFromDirectory.cs +@@ -131,7 +131,7 @@ private string GetSourceSpecification() + + private string GetDestinationArchive() + { +- return $"-czf {DestinationArchive}"; ++ return $"--hard-dereference -czf {DestinationArchive}"; + } + + private string GetExcludes() diff --git a/user/dotnet8-runtime/installer_set-crossgen2rid-using-buildarchitecture.patch b/user/dotnet8-runtime/installer_set-crossgen2rid-using-buildarchitecture.patch new file mode 100644 index 0000000..309e092 --- /dev/null +++ b/user/dotnet8-runtime/installer_set-crossgen2rid-using-buildarchitecture.patch @@ -0,0 +1,13 @@ +diff --git a/src/installer/src/redist/targets/GenerateLayout.targets.orig b/src/installer/src/redist/targets/GenerateLayout.targets +index a27834f..0c899d4 100644 +--- a/src/installer/src/redist/targets/GenerateLayout.targets.orig ++++ b/src/installer/src/redist/targets/GenerateLayout.targets +@@ -85,7 +85,7 @@ + windowsdesktop-runtime-$(MicrosoftWindowsDesktopAppRuntimePackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension) + + $(HostOSName)-$(BuildArchitecture) +- $(SharedFrameworkRid) ++ $(SharedFrameworkRid.SubString(0, $(SharedFrameworkRid.LastIndexOf('-'))))-$(BuildArchitecture) + + $(SharedFrameworkRid) + linux-x64 diff --git a/user/dotnet8-runtime/roslyn-analyzer_disable-apphost.patch b/user/dotnet8-runtime/roslyn-analyzer_disable-apphost.patch new file mode 100644 index 0000000..6d5d57c --- /dev/null +++ b/user/dotnet8-runtime/roslyn-analyzer_disable-apphost.patch @@ -0,0 +1,28 @@ +From 79f02a53316f90543d60269d7c06727c376f423b Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Wed, 24 Aug 2022 18:41:08 +0000 +Subject: [PATCH 1/1] disable apphost usage + +Roslyn-analyzer can't seem to find apphost produced by runtime build on ppc64le +This disables its use as it isn't necessary + +--- +diff --git a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj.orig b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj +index 7b454a4..bbe18ae 100644 +--- a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj.orig ++++ b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj +@@ -16,6 +16,7 @@ + false + true + $(MicrosoftCodeAnalysisVersionForTests) ++ false + + + +@@ -28,4 +29,4 @@ + + + +- +\ No newline at end of file ++ diff --git a/user/dotnet8-runtime/runtime_82269-mono-thread-coop-undefine-fortify-source.patch b/user/dotnet8-runtime/runtime_82269-mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..d4cbe4d --- /dev/null +++ b/user/dotnet8-runtime/runtime_82269-mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/14105. Alpine Linux +now sets this by default since https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/43463, +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/user/dotnet8-runtime/runtime_83682-specify-notext-on-linux-musl-x86.patch b/user/dotnet8-runtime/runtime_83682-specify-notext-on-linux-musl-x86.patch new file mode 100644 index 0000000..6dfefc0 --- /dev/null +++ b/user/dotnet8-runtime/runtime_83682-specify-notext-on-linux-musl-x86.patch @@ -0,0 +1,24 @@ +From 65877a9c1260c1c37d1c3355703b1951b6754cdf Mon Sep 17 00:00:00 2001 +From: Adeel <3840695+am11@users.noreply.github.com> +Date: Mon, 20 Mar 2023 19:36:14 +0200 +Subject: [PATCH] Specify -z notext on linux-musl-x86 + +--- + src/coreclr/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/runtime/src/coreclr/CMakeLists.txt b/src/runtime/src/coreclr/CMakeLists.txt +index 67b773bf78787..87d862a541ae6 100644 +--- a/src/runtime/src/coreclr/CMakeLists.txt ++++ b/src/runtime/src/coreclr/CMakeLists.txt +@@ -109,6 +109,10 @@ if(CLR_CMAKE_HOST_UNIX) + endif() + endif() + ++ if(CLR_CMAKE_TARGET_ALPINE_LINUX AND CLR_CMAKE_TARGET_ARCH_I386) ++ add_linker_flag(-Wl,-z,notext) ++ endif() ++ + if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS) + add_subdirectory(pal) + add_subdirectory(hosts) diff --git a/user/dotnet8-runtime/runtime_90251-rename-mono-cmake-host-var.patch b/user/dotnet8-runtime/runtime_90251-rename-mono-cmake-host-var.patch new file mode 100644 index 0000000..ebd905e --- /dev/null +++ b/user/dotnet8-runtime/runtime_90251-rename-mono-cmake-host-var.patch @@ -0,0 +1,87 @@ +From 828269b7e68039f8bc0bdac66e2fd5c58b6d3471 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/90251 +From: Antoine Martin +Date: Wed, 9 Aug 2023 11:36:39 -0400 +Subject: [PATCH 1/1] Rename CMAKE var for mono on libc-musl + +--- + src/mono/CMakeLists.txt | 6 +++--- + src/mono/mono/mini/CMakeLists.txt | 12 ++++++------ + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/runtime/src/coreclr/pgosupport.cmake b/src/runtime/src/coreclr/pgosupport.cmake +index 719ac14ad99..34a42781ab2 100644 +--- a/src/runtime/src/coreclr/pgosupport.cmake ++++ b/src/runtime/src/coreclr/pgosupport.cmake +@@ -25,13 +25,13 @@ function(add_pgo TargetName) + target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fprofile-instr-generate") + if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") +- if (CLR_CMAKE_HOST_ALPINE_LINUX) ++ if (CLR_CMAKE_TARGET_LINUX_MUSL) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- else(CLR_CMAKE_HOST_ALPINE_LINUX) ++ else(CLR_CMAKE_TARGET_LINUX_MUSL) + string(REPLACE "." ";" CLANG_VERSION "${CMAKE_C_COMPILER_VERSION}") + list(POP_FRONT CLANG_VERSION CLANG_VERSION_MAJOR) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/llvm-${CLANG_VERSION_MAJOR}/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- endif(CLR_CMAKE_HOST_ALPINE_LINUX) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL) + endif(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") + if(NOT LD_LLVM) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -fuse-ld=gold") +diff --git a/src/runtime/src/mono/CMakeLists.txt b/src/runtime/src/mono/CMakeLists.txt +index e04d9e9d364..00e54a25d69 100644 +--- a/src/runtime/src/mono/CMakeLists.txt ++++ b/src/runtime/src/mono/CMakeLists.txt +@@ -943,10 +943,10 @@ else() + set(DISABLE_DLLMAP 1) + endif() + +-if(CLR_CMAKE_HOST_ALPINE_LINUX) +- # Setting RLIMIT_NOFILE breaks debugging of coreclr on Alpine Linux for some reason ++if(CLR_CMAKE_TARGET_LINUX_MUSL) ++ # Setting RLIMIT_NOFILE breaks debugging of coreclr on musl-libc for some reason + add_definitions(-DDONT_SET_RLIMIT_NOFILE) +- # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is ++ # On musl-libc, we need to ensure that the reported stack range for the primary thread is + # larger than the initial committed stack size. + add_definitions(-DENSURE_PRIMARY_STACK_SIZE) + endif() +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index d23b7985802..b5f63fc638c 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -378,10 +378,10 @@ if(NOT DISABLE_SHARED_LIBS) + add_library(monosgen-shared SHARED $) + target_compile_definitions(monosgen-objects PRIVATE -DMONO_DLL_EXPORT) + endif() +- # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ # musl-libc implements ucontext in a different library ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(monosgen-shared PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL TARGET_S390X) + set_target_properties(monosgen-shared PROPERTIES OUTPUT_NAME ${MONO_SHARED_LIB_NAME}) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(monosgen-shared PROPERTIES INSTALL_RPATH "$ORIGIN") +@@ -560,10 +560,10 @@ if(NOT DISABLE_EXECUTABLES) + target_link_libraries(mono-sgen PRIVATE icu_shim_objects) + endif() + target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) +- # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ # musl-libc implements ucontext in a different library ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(mono-sgen PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") +diff --git a/src/runtime/src/coreclr/pgosupport.cmake.orig b/src/runtime/src/coreclr/pgosupport.cmake +index 719ac14..34a4278 100644 +--- a/src/runtime/src/coreclr/pgosupport.cmake.orig ++++ b/src/runtime/src/coreclr/pgosupport.cmake + diff --git a/user/dotnet8-runtime/runtime_enable-system-libunwind.diff b/user/dotnet8-runtime/runtime_enable-system-libunwind.diff new file mode 100644 index 0000000..e88e5cf --- /dev/null +++ b/user/dotnet8-runtime/runtime_enable-system-libunwind.diff @@ -0,0 +1,12 @@ +diff --git a/src/runtime/eng/SourceBuild.props.orig b/src/runtime/eng/SourceBuild.props +index 1e9d5cf..c40e4fa 100644 +--- a/src/runtime/eng/SourceBuild.props.orig ++++ b/src/runtime/eng/SourceBuild.props +@@ -48,6 +48,7 @@ + $(InnerBuildArgs) /p:OfficialBuildId=$(OfficialBuildId) + $(InnerBuildArgs) /p:ContinuousIntegrationBuild=$(ContinuousIntegrationBuild) + $(InnerBuildArgs) --usemonoruntime ++ $(InnerBuildArgs) --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE + + + diff --git a/user/dotnet8-runtime/runtime_more-clang-16-suppression.patch b/user/dotnet8-runtime/runtime_more-clang-16-suppression.patch new file mode 100644 index 0000000..1e94419 --- /dev/null +++ b/user/dotnet8-runtime/runtime_more-clang-16-suppression.patch @@ -0,0 +1,13 @@ +diff --git a/src/runtime/eng/native/configurecompiler.cmake b/src/runtime/eng/native/configurecompiler.cmake +index c9a54547c0a..931da2cae5b 100644 +--- a/src/runtime/eng/native/configurecompiler.cmake ++++ b/src/runtime/eng/native/configurecompiler.cmake +@@ -488,6 +488,8 @@ if (CLR_CMAKE_HOST_UNIX) + # other clang 16.0 suppressions + add_compile_options(-Wno-single-bit-bitfield-constant-conversion) + add_compile_options(-Wno-cast-function-type-strict) ++ add_compile_options(-Wno-incompatible-function-pointer-types-strict) ++ add_compile_options(-Wno-ignored-attributes) + else() + add_compile_options(-Wno-uninitialized) + add_compile_options(-Wno-strict-aliasing) diff --git a/user/dotnet8-runtime/runtime_remove-usage-of-off64-t.patch b/user/dotnet8-runtime/runtime_remove-usage-of-off64-t.patch new file mode 100644 index 0000000..cec5877 --- /dev/null +++ b/user/dotnet8-runtime/runtime_remove-usage-of-off64-t.patch @@ -0,0 +1,26 @@ +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +index 20b2494..165b190 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -469,7 +469,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fdMem != -1); +- *read = pread64(m_fdMem, buffer, size, (off64_t)address); ++ *read = pread(m_fdMem, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +index 5addb79..79655d1 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +@@ -760,7 +760,7 @@ CrashInfo::PageMappedToPhysicalMemory(uint64_t start) + } + + uint64_t pagemapOffset = (start / PAGE_SIZE) * sizeof(uint64_t); +- uint64_t seekResult = lseek64(m_fdPagemap, (off64_t) pagemapOffset, SEEK_SET); ++ uint64_t seekResult = lseek(m_fdPagemap, (off_t) pagemapOffset, SEEK_SET); + if (seekResult != pagemapOffset) + { + int seekErrno = errno; diff --git a/user/dotnet8-runtime/vstest_intent-net8.0.patch b/user/dotnet8-runtime/vstest_intent-net8.0.patch new file mode 100644 index 0000000..6a51807 --- /dev/null +++ b/user/dotnet8-runtime/vstest_intent-net8.0.patch @@ -0,0 +1,13 @@ +diff --git a/src/vstest/test/Intent/Intent.csproj b/src/vstest/test/Intent/Intent.csproj +index bb711c9256..6d0b199a9b 100644 +--- a/src/vstest/test/Intent/Intent.csproj ++++ b/src/vstest/test/Intent/Intent.csproj +@@ -2,7 +2,7 @@ + + + Exe +- net6.0 ++ net8.0 + enable + enable + diff --git a/user/dotnet8-sdk/APKBUILD b/user/dotnet8-sdk/APKBUILD new file mode 100644 index 0000000..13d6e0e --- /dev/null +++ b/user/dotnet8-sdk/APKBUILD @@ -0,0 +1,127 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-sdk +pkgver=8.0.100_pre7 +_bldver=8.0.0_pre7-r2 +pkgrel=2 + +# Following for dotnet build version 6.0 and up +_pkgver_macro=${pkgver%.*} +_pkgver_name=${_pkgver_macro//[.0]} +_bldver_ver=${_bldver%%-*} +_bldver_ver=${_bldver_ver/0./0.10} +pkgdesc="The .NET $_pkgver_macro SDK" +# x86: blocked by https://github.com/dotnet/runtime/issues/77667 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# upgrade needed +#arch="all !x86 !armhf" +url=https://dotnet.microsoft.com +license="MIT" +makedepends="dotnet$_pkgver_name-runtime-bootstrap=$_bldver" +subpackages=" + dotnet$_pkgver_name-templates:templates:noarch + dotnet-zsh-completion:zshcomp:noarch + dotnet-bash-completion:bashcomp:noarch + dotnet-doc + netstandard21-targeting-pack:netstandard_targeting_pack:noarch + " +provides="dotnet$_pkgver_name=$pkgver-r$pkgrel" +options="!check" # No test suite +builddir="$srcdir" +_libdir="/usr/lib" + +case $CARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7) _dotnet_arch="arm";; + armhf) _dotnet_arch="armv6";; + *) _dotnet_arch="$CARCH";; +esac + +package() { + # libucontext isn't automatically detected on all platforms + depends=" + aspnetcore$_pkgver_name-runtime + aspnetcore$_pkgver_name-targeting-pack + dotnet$_pkgver_name-apphost-pack + dotnet$_pkgver_name-targeting-pack + dotnet$_pkgver_name-templates + netstandard21-targeting-pack + libucontext + " + provides=" + dotnet-sdk-$_pkgver_macro=$pkgver-r$pkgrel + dotnet$_pkgver_name-dev=$pkgver-r$pkgrel + " + + install -dm 755 "$pkgdir"/$_libdir/dotnet + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/sdk "$pkgdir"/$_libdir/dotnet/. + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/sdk-manifests "$pkgdir"/$_libdir/dotnet/. + + # See https://github.com/dotnet/source-build/issues/2579 + find "$pkgdir" -type f -name 'testhost.x86' -delete + find "$pkgdir" -type f -name 'vstest.console' -delete + + # docs + install -dm 755 "$pkgdir"/usr/share/man/man1 + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/docs/* "$pkgdir"/usr/share/man/man1/. +} + +netstandard_targeting_pack() { + pkgdesc="The .NET 2.1 Standard targeting pack" + depends="dotnet-host" + provides="netstandard-targeting-pack-2.1=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/NETStandard.Library.Ref "$subpkgdir"/$_libdir/dotnet/packs/ +} + +templates() { + pkgdesc="The .NET $_pkgver_macro templates" + depends="dotnet-host" + provides="dotnet-templates-$_pkgver_macro=$pkgver-r$pkgrel" + + install -dm 755 "$subpkgdir"/$_libdir/dotnet + + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/templates "$subpkgdir"/$_libdir/dotnet/. +} + +zshcomp() { + depends="" + pkgdesc="zsh completion for .NET" + # netstandard21-targeting-pack will always be pulled by any dotnetx-sdk + # thus pulling this with it for sdk + install_if="netstandard21-targeting-pack zsh" + depends="dotnet-host" + + install -dm 755 "$subpkgdir"/usr/share/zsh/site-functions + + install -m 755 "$_libdir"/dotnet/bootstrap/$_bldver_ver/register-completions.zsh "$subpkgdir"/usr/share/zsh/site-functions/_dotnet +} + +bashcomp() { + depends="" + pkgdesc="bash completion for .NET" + # netstandard21-targeting-pack will always be pulled by any dotnetx-sdk + # thus pulling this with it for sdk + install_if="netstandard21-targeting-pack bash-completion" + depends="dotnet-host" + + install -dm 755 "$subpkgdir"/usr/share/bash-completion/completions + + install -m 755 "$_libdir"/dotnet/bootstrap/$_bldver_ver/register-completions.bash "$subpkgdir"/usr/share/bash-completion/completions/_dotnet +} + +doc() { + default_doc + pkgdesc="Docs for .NET" + + + # licenses + install -dm 755 "$subpkgdir"/usr/share/licenses/dotnet + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/LICENSE.txt "$subpkgdir"/usr/share/licenses/dotnet/. + cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/ThirdPartyNotices.txt "$subpkgdir"/usr/share/licenses/dotnet/. +} diff --git a/user/dotnet8-sdk/README.md b/user/dotnet8-sdk/README.md new file mode 100644 index 0000000..1a55eda --- /dev/null +++ b/user/dotnet8-sdk/README.md @@ -0,0 +1,145 @@ +# dotnet8-sdk + +This is the .NET 8.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `dotnet8-build` (aimed for internal use as bootstrap) +* `dotnet8-build-artifacts` (aimed for internal use as bootstrap) +* `dotnet8-sdk` +* `dotnet8-templates` (required by sdk) +* `dotnet-zsh-completion` +* `dotnet-bash-completion` +* `dotnet-doc` +* `netstandard21-targeting-pack` + +## How to build dotnet8 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet8 is built using three different aports. + +* `community/dotnet8-stage0` +Builds minimum components for full build of dotnet8, and packages these in an initial +`dotnet8-stage0-bootstrap` package that `dotnet8-build` pulls. +* `community/dotnet8-build` +Builds full and packages dotnet8 fully using either stage0 or previoulsy built +dotnet8 build. +* `community/dotnet8-runtime` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet8-build. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet8-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet8` as opposed to `dotnet-8.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-build` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-build: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the merge-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-build` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-build: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the merge-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/user/dotnet8-stage0/APKBUILD b/user/dotnet8-stage0/APKBUILD new file mode 100644 index 0000000..886a966 --- /dev/null +++ b/user/dotnet8-stage0/APKBUILD @@ -0,0 +1,479 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-stage0 +pkgver=8.0.0_pre7 +pkgrel=2 + +[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross="" + +# Tag of tarball generator. +_gittag=v8.0.0-preview.7.23375.6 + +# Versions of prebuilt artifacts and bootstrap tar +_artifactsver="8.0.100-preview.7.23376.1.centos.8-x64" +_bootstrapver="8.0.100-preview.7.23376.3" +_bootstraprel=2 +_installerver=${_gittag/v} + +# Patches to be used. String before '_' refers to repo to patch +# Look for patch notes within each patch for what they fix / where they come from +# build_* patches applies directly to $builddir +_patches=" + installer_set-crossgen2rid-using-buildarchitecture.patch + runtime_82269-mono-thread-coop-undefine-fortify-source.patch + runtime_83682-specify-notext-on-linux-musl-x86.patch + runtime_90251-rename-mono-cmake-host-var.patch + runtime_more-clang-16-suppression.patch + runtime_remove-usage-of-off64-t.patch + " +_extra_nupkgs=" + https://globalcdn.nuget.org/packages/microsoft.netcore.app.host.linux-musl-x64.7.0.2.nupkg + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=1 +_pkgver_name="${_pkgver_macro//[.0]}" +_pkgver_sdk=${pkgver/0./0.10} +pkgdesc="The .NET Core stage0 bits for dotnet build" +# x86: blocked by https://github.com/dotnet/runtime/issues/83509 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# riscv64: port WIP https://github.com/dotnet/runtime/issues/36748 +# upgrade needed +#arch="all !x86 !armhf" +_giturl=https://github.com/dotnet/dotnet +url=https://dotnet.microsoft.com +license="MIT" +options="!check" # Testsuite in main -build aport +subpackages=" + dotnet$_pkgver_name-stage0-artifacts:artifacts:noarch + dotnet$_pkgver_name-stage0-bootstrap + " +source=" + dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz + dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json + dotnet-sdk-$_bootstrapver-linux-musl-x64.noextract::https://dotnetbuilds.azureedge.net/public/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-x64.tar.gz + dotnet-sdk-$_bootstrapver-linux-musl-arm64.noextract::https://dotnetbuilds.azureedge.net/public/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm64.tar.gz + dotnet-sdk-$_bootstrapver-linux-musl-arm.noextract::https://dotnetbuilds.azureedge.net/public/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm.tar.gz + dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-s390x.noextract::https://lab.ilot.io/ayakael/dotnet-stage0/-/releases/$_bootstrapver-r$_bootstraprel/downloads/sdk/dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-s390x.tar.xz + dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-ppc64le.noextract::https://lab.ilot.io/ayakael/dotnet-stage0/-/releases/$_bootstrapver-r$_bootstraprel/downloads/sdk/dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-ppc64le.tar.xz + dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-riscv64.noextract::https://lab.ilot.io/ayakael/dotnet-stage0/-/releases/$_bootstrapver-r$_bootstraprel/downloads/sdk/dotnet-sdk-$_bootstrapver-r$_bootstraprel-linux-musl-riscv64.tar.xz + Private.SourceBuilt.Artifacts.$_artifactsver.noextract::https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$_artifactsver.tar.gz + $_extra_nupkgs + $_patches + " + +makedepends_host=" + alpine-release + autoconf + automake + bash + binutils + clang + cmake + findutils + g++ + gcc + grep + icu-dev + krb5-dev + libintl + libstdc++ + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lttng-ust-dev + musl-dev + musl-utils + openssl-dev + pigz + unzip + zip + zlib-dev + " +case $CARCH in + s390x) ;; + *) makedepends_host="$makedepends_host lld-dev";; +esac +makedepends_build=" + $makedepends_host + binutils$_cross + git + gcc$_cross + jq + llvm + llvm-dev + python3 + sed + xz + " +case $CBUILD_ARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7|armhf) _dotnet_arch="arm";; + i586) _dotnet_arch="x86";; + *) _dotnet_arch=$CBUILD_ARCH;; +esac +case $CTARGET_ARCH in + x86_64) _dotnet_target="x64";; + aarch64) _dotnet_target="arm64";; + armv7|armhf) _dotnet_target="arm";; + i586) _dotnet_target="x86";; + *) _dotnet_target=$CTARGET_ARCH;; +esac + +builddir="$srcdir"/dotnet-${_gittag/v} +_packagesdir="$srcdir"/local-packages +_libdir="/usr/lib" +_nugetdir="$srcdir"/nuget +_downloaddir="$srcdir"/local-downloads +_cli_root="$srcdir"/bootstrap +_nuget="$_cli_root/dotnet nuget" +_outputdir="$srcdir"/artifacts +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +prepare() { + default_prepare + + mkdir -p "$_cli_root" + mkdir -p $_packagesdir $_downloaddir $_outputdir $_nugetdir $_logdir + + # sdk insists on downloading its own dotnet unless ArcadeBuildFromSource + # is true, which opens up a can of worms + sed 's|ArcadeBuildFromSource=true|Architecture|' -i src/sdk/eng/restore-toolset.sh + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + tar -xf "$srcdir"/dotnet-sdk-$_pkgver_macro*$_dotnet_arch.noextract -C "$_cli_root" --no-same-owner + + for i in $_extra_nupkgs; do + local filename=${i/::*} + local filename=${filename##*/} + $_nuget push "$srcdir"/$filename --source="$_packagesdir" + done + + # adjusts sdk version and packagedir to expected + for i in runtime sdk installer aspnetcore roslyn; do + $_nuget add source $_packagesdir --name local --configfile "$builddir"/src/$i/NuGet.config + tmp=$(mktemp) + jq ".sdk.version = \"$_bootstrapver\"" "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json + done + + # extracting PackageVersions.props as some version information is there + tar -xzf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract PackageVersions.props + + # sdk looks for TestCli at wrong place + sed '/||g' | tr -d ' ') + fi + local _runtimever_ns=$(awk '{if($2 ~ "Name=\"VS.Redist.Common.NetCore.SharedFramework.x64.*\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building runtime version $_runtimever" + cd "$builddir"/src/runtime + + local args=" + -c Release + -bl + -clang + -arch $_dotnet_target + /consoleLoggerParameters:ShowTimestamp + /p:NoPgoOptimize=true + /p:EnableNgenOptimization=false + /p:ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch=none + /p:_toolsRID=linux-musl-$_dotnet_arch + /p:OutputRid=linux-musl-$_dotnet_target + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/runtime.props | sed -E 's|||g' | tr -d ' ') + " + if [ "$CBUILD" != "$CHOST" ]; then + local args="$args -cross" + # https://github.com/dotnet/runtime/pull/75597 broke crossbuilding when true + local DotNetBuildFromSource=false + # x86 build of mono broken, thus do not build mono + case $_dotnet_target in + x86) local args="$args /p:DefaultSubsets=clr+libs+host+packs";; + esac + fi + if [ "$_runtimever" != "${_runtimever##*-}" ]; then + local args="$args /p:VersionSuffix=${_runtimever##*-}" + fi + DotNetBuildFromSource=$DotNetBuildFromSource ROOTFS_DIR="$CBUILDROOT" ./build.sh $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Runtime/$_runtimever_ns + cp artifacts/packages/*/*/dotnet-runtime-*-*.tar.gz $_downloaddir/Runtime/$_runtimever_ns +} + +_sdk() { + _init + if [ -z "${_sdkver+x}" ]; then + local _sdkver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + fi + local _sdkver_ns=$(awk '{if($2 == "Name=\"Microsoft.NET.Sdk\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building sdk version $_sdkver" + cd "$builddir"/src/sdk + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + /p:Architecture=$_dotnet_target + /p:TestCliNuGetDirectoryTargetFramework=netcoreapp3.1 + " + if [ "$_sdkver" != "${_sdkver##*-}" ]; then + local args="$args /p:VersionSuffix=${_sdkver##*-}" + fi + ./build.sh --pack /p:Projects=$builddir/src/sdk/source-build.slnf $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Sdk/$_sdkver_ns + cp artifacts/packages/*/*/dotnet-toolset-internal-*.zip "$_downloaddir"/Sdk/$_sdkver_ns +} + +_aspnetcore() { + _init + if [ -z "${_aspnetver+x}" ]; then + local _aspnetver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + fi + local _aspnetver_ns=$(awk '{if($2 == "Name=\"Microsoft.AspNetCore.App.Ref.Internal\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Build aspnetcore version $_aspnetver" + cd "$builddir"/src/aspnetcore + local args=" + -c Release + -bl + --os-name linux-musl + -arch $_dotnet_target + -no-build-nodejs + /consoleLoggerParameters:ShowTimestamp + /p:BuildNodeJs=false + /p:BuildOSName=linux-musl + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + /p:DotNetAssetRootUrl=file://$_downloaddir/ + /p:EnablePackageValidation=false + " + if [ "$_aspnetver" != "${_aspnetver##*-}" ]; then + local args="$args /p:VersionSuffix=${_aspnetver##*-}" + fi + + # aspnetcore can't find newly created Microsoft.NETCore.App.Runtime.linux-musl-x86 for some reason + case $_dotnet_target in + riscv64|x86) local args="$args /p:CrossgenOutput=false";; + esac + + ./eng/build.sh --pack $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + + mkdir -p "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore-runtime-*-linux-musl-$_dotnet_target.tar.gz "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore_base_runtime.version "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns +} + +_installer() { + _init + msg "[$(date)] Building installer version $_installerver" + cd "$builddir"/src/installer + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:EnableSourceLink=false + /p:OSName=linux-musl + /p:HostOSName=linux-musl + /p:Architecture=$_dotnet_target + /p:CoreSetupBlobRootUrl=file://$_downloaddir/ + /p:DotnetToolsetBlobRootUrl=file://$_downloaddir/ + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/installer.props | sed -E 's|||g' | tr -d ' ') + /p:GitCommitCount=1 + /p:PublicBaseURL=file://$_downloaddir/ + " + if [ "$_installerver" != "${_installerver##*-}" ]; then + local args="$args /p:VersionSuffix=${_installerver##*-}" + fi + # crossgen broken on x86 + case $_dotnet_target in + riscv64|x86) local args="$args /p:DISABLE_CROSSGEN=True";; + esac + + ./build.sh $args + + mkdir -p "$_downloaddir"/installer/$_installerver + cp artifacts/packages/*/*/dotnet-sdk-$_pkgver_macro*.tar.gz "$_downloaddir"/installer/$_installerver +} + +build() { + _runtime + _sdk + _aspnetcore + _installer +} + +package() { + # lua-aports / buildrepo doesn't know to always build stage0 first when dealing + # with virtual packages. Thus, we need to depend on an empty stage0 pkg that + # dotnetx-build will pull, thus forcing build of stage0 first + mkdir -p "$pkgdir" +} + +bootstrap() { + # allows stage0 to be pulled by dotnetx-build if first build of dotnetx + provides="dotnet$_pkgver_name-bootstrap" + provider_priority=$_pkgver_prior + + local _iltoolsver=$(grep \||g' | tr -d ' ') + + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/comp \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk + + # unpack build artifacts to bootstrap subdir for use by future builds + tar --use-compress-program="pigz" \ + -xf "$_downloaddir"/installer/$_installerver/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/ \ + --no-same-owner + + local _iltoolsArray=" + runtime.*.Microsoft.NETCore.TestHost.*.nupkg + runtime.*.Microsoft.NETCore.ILAsm.*.nupkg + runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg + " + + local _nupkgsArray=" + $_iltoolsArray + Microsoft.NETCore.App.Host.*.*.nupkg + Microsoft.NETCore.App.Runtime.*.*.nupkg + Microsoft.NETCore.App.Crossgen2.*.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHost.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostPolicy.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostResolver.*.nupkg + runtime.*.Microsoft.NETCore.DotNetAppHost.*.nupkg + Microsoft.AspNetCore.App.Runtime.linux-musl-*.*.nupkg + " + + # copies artifacts to artifacts dir for use by future dotnet builds + for i in $_nupkgsArray; do install -Dm644 "$_packagesdir"/$i "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ || true; done + for i in $_extra_nupkgs; do + local filename=${i/::*} + local filename=${filename##*/} + install -Dm644 "$srcdir"/$filename "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ + done + + msg "Changing iltools version to $_iltoolsver" + # source-build expects a certain version of ilasm, ildasm and testhost + # following adjusts version + for i in $_iltoolsArray; do + local nupath="$subpkgdir"$_libdir/dotnet/artifacts/$_pkgver_sdk/$i + local nupath=$(find $nupath || true) + local nupkg="${nupath##*/}" + local nuname="${nupkg/.nupkg}" + if [ -z "${nuname/*rtm*}" ] || [ -z "${nuname/*servicing*}" ] || [ -z "${nuname/*preview*}" ]; then + nuname=${nuname%-*} + fi + local nuname="${nuname%.*.*.*}" + local nuver="${nupkg/$nuname.}" + local nuver="${nuver/.nupkg}" + local nuspec="$nuname.nuspec" + + if [ ! "$nupath" ] || [ "$nupath" = "${nupath/$nuver/$_iltoolsver}" ]; then + continue + fi + # shellcheck disable=SC2094 + unzip -p "$nupath" $nuspec | sed "s|$nuver|$_iltoolsver|" > "$srcdir"/$nuspec + cd "$srcdir" + zip -u "$nupath" $nuspec + mv "$nupath" "${nupath/$nuver/$_iltoolsver}" + done +} + +# build relies on a plethora of nupkgs which are provided by this Artifacts file. +# stage0 sources these from Microsoft, which then allows bootstrap to build +# locally hosted versions. The following unpacks built tarball into directory +# for use by future builds. +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk \ + "$subpkgdir"/usr/share/licenses + + # extract artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \ + --no-same-owner +} + +sha512sums=" +06cb81a5667153a7d6ae190d169dcafea88954d1d42f9f1ae0fffe7cb4787599d7cad5428f66a6ce10af24898bd4ffbe1b9e95f1d3b698641437298055ebd10f dotnet-tarball-v8.0.0-preview.7.23375.6.tar.gz +5598ae0b9044dd2d2b5eba10ce420cd14266bd25412b37e9766bbaf1b1ce79438a5c7db559431aa59c0b49f14187ca3f78a57065b7802df304910b00b6694bfa dotnet-release-v8.0.0-preview.7.23375.6.json +6b7bf38224573496eae08e3000792296de81e16a1bd5a253236427137de4a6a9d7950c99f08ad764e337aa33140db5160218f9ecea0bfbd60c6e6f301e6dd042 dotnet-sdk-8.0.100-preview.7.23376.3-linux-musl-x64.noextract +8e5bfb89b287f6ab478e6bd9f4ce1ec482ba4d00b2241f6b4d6081c5885ac0399233bfaf983994b485ea6541a4a2ab9b362cbd582012edb09a6785a7cd7fb292 dotnet-sdk-8.0.100-preview.7.23376.3-linux-musl-arm64.noextract +14a3c0aaedc787f9a05258138fb70effedb627cb46206bfdbb912936472b78cc3e24878b10b03e95339d3b7382b46a13a87783cb6a77a49243b75b31ecd94cb7 dotnet-sdk-8.0.100-preview.7.23376.3-linux-musl-arm.noextract +08b520d3e671e4e1d90ddf8e965dd50124f8216d03005bdc08497f0264f7a2767a99c67e6cf45464b8a9f206028cfe513433c5a585d188617523feae5eedf10e dotnet-sdk-8.0.100-preview.7.23376.3-r2-linux-musl-s390x.noextract +ad46d02742c4c605e30bfbee18eba0e491984e6986bd93fb78c9d9c95d2cdf5bfe17584b90582f783b1cb1b6b32bb7ef317ff63396fbcff9399800ecd5d09a94 dotnet-sdk-8.0.100-preview.7.23376.3-r2-linux-musl-ppc64le.noextract +cd2c4e1f3697f3679d37f76f7692389ce29d0fca92e0130a9f1241674150e78542ec1898568cf0b30d8599b954edcf5211823bf05f46b907aa58b79c677a0575 dotnet-sdk-8.0.100-preview.7.23376.3-r2-linux-musl-riscv64.noextract +554d02d10072b8ec9122a0877e86753ebf9875f69508fd18bae43fc9d6eed8655e7923af771d593f3c59ad49c0858cf88816934618d9e0b65bb614ebcdb360a2 Private.SourceBuilt.Artifacts.8.0.100-preview.7.23376.1.centos.8-x64.noextract +5c1fd9e250e7f08d996b7b335134973624a8d1afc331f7fda3a81eee7d2170e39905be20b8786e99078892b21d1582092aeee45d49c5feae3b2bd5374c306fec microsoft.netcore.app.host.linux-musl-x64.7.0.2.nupkg +b6a2dfeccac329546f87f1019c1f2cf07e2f294dd33914449ad08d92269c8713b6fa1e330ef257c24e189023fd0b824df97688b0ba6e578a6d0292b07a72b4c1 installer_set-crossgen2rid-using-buildarchitecture.patch +d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch +c983a1ab7f06ac86691e0fa7a61fcad69a074d984ef4a4116bee43f20be918215963c7ec8ddd7edd70432b29b160ff78288183acc89fda15ce4a75bfdbf99ee3 runtime_83682-specify-notext-on-linux-musl-x86.patch +c1e8a51bca47f13e60cb28fa3c58c4bdc0fd8fa19177855b6cc9a767016fc239064aced57530e227c772e302671fc91e86c718a39aecb05eb7f601c8d931de81 runtime_90251-rename-mono-cmake-host-var.patch +887112eb2b103eadd6887529ebae7f9a75df2c2cb168e84fd40cc09f9bcd20917d428bbba06968b07b0a463890da82b1b2b1d033a3dd016e6494067464ae6f74 runtime_more-clang-16-suppression.patch +0c25319125ef5b0ad490b37a643c0c5257c796d5ed24f9ac404f698710b07de790bcbb0b6336d4a50025b94c3bff99b214951bd8f0a79a8d6f543ebaa300740f runtime_remove-usage-of-off64-t.patch +" diff --git a/user/dotnet8-stage0/README.md b/user/dotnet8-stage0/README.md new file mode 100644 index 0000000..5c5d237 --- /dev/null +++ b/user/dotnet8-stage0/README.md @@ -0,0 +1,140 @@ +# dotnet8-stage0 + +This is the .NET 8.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `dotnet8` (empty package to go around `buildrepo` build ordering bug) +* `dotnet8-stage0-bootstrap` (packages binary bootstrap artifacts) +* `dotnet8-stage0-artifacts` (packages non-binary bootstrap artifacts) + +## How to build dotnet8 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet8 is built using three different aports. + +* `community/dotnet8-stage0` +Builds minimum components for full build of dotnet8, and packages these in an initial +`dotnet8-stage0-bootstrap` package that `dotnet8-build` pulls. +* `community/dotnet8-build` +Builds full and packages dotnet8 fully using either stage0 or previoulsy built +dotnet8 build. +* `community/dotnet8-runtime` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet8-build. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet8-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet8` as opposed to `dotnet-8.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-build` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-build: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet8-build` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet8/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet8-build: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/user/dotnet8-stage0/aspnetcore_use-linux-musl-crossgen-on-non-x64.patch b/user/dotnet8-stage0/aspnetcore_use-linux-musl-crossgen-on-non-x64.patch new file mode 100644 index 0000000..ddd8920 --- /dev/null +++ b/user/dotnet8-stage0/aspnetcore_use-linux-musl-crossgen-on-non-x64.patch @@ -0,0 +1,26 @@ +From 65613dc9cf76432dcbde3db3db1005c2aa902fee Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:51:31 -0500 +Subject: [PATCH 09/15] aspnetcore_use-linux-musl-crossgen + +Line causes build of aspnetcore on arm to look for linux version of +CrossGen2 rather than linux-musl. This removes the line so that +BuildOsName is pulled from TargetOsName as expected +--- + .../App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +index 326968018..fa1f72e62 100644 +--- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj ++++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +@@ -103,7 +103,6 @@ This package is an internal implementation of the .NET Core SDK and is not meant + Special case the crossgen2 package reference on Windows to avoid the x86 package when building in Visual Studio. + --> + $(TargetOsName) +- linux + $(TargetRuntimeIdentifier.Substring(0,$(TargetRuntimeIdentifier.IndexOf('-')))) + x64 + $(BuildArchitecture) +-- +2.38.2 diff --git a/user/dotnet8-stage0/installer_set-crossgen2rid-using-buildarchitecture.patch b/user/dotnet8-stage0/installer_set-crossgen2rid-using-buildarchitecture.patch new file mode 100644 index 0000000..309e092 --- /dev/null +++ b/user/dotnet8-stage0/installer_set-crossgen2rid-using-buildarchitecture.patch @@ -0,0 +1,13 @@ +diff --git a/src/installer/src/redist/targets/GenerateLayout.targets.orig b/src/installer/src/redist/targets/GenerateLayout.targets +index a27834f..0c899d4 100644 +--- a/src/installer/src/redist/targets/GenerateLayout.targets.orig ++++ b/src/installer/src/redist/targets/GenerateLayout.targets +@@ -85,7 +85,7 @@ + windowsdesktop-runtime-$(MicrosoftWindowsDesktopAppRuntimePackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension) + + $(HostOSName)-$(BuildArchitecture) +- $(SharedFrameworkRid) ++ $(SharedFrameworkRid.SubString(0, $(SharedFrameworkRid.LastIndexOf('-'))))-$(BuildArchitecture) + + $(SharedFrameworkRid) + linux-x64 diff --git a/user/dotnet8-stage0/runtime_79856-save-errno-when-using-posix-semaphores.patch b/user/dotnet8-stage0/runtime_79856-save-errno-when-using-posix-semaphores.patch new file mode 100644 index 0000000..4d451b7 --- /dev/null +++ b/user/dotnet8-stage0/runtime_79856-save-errno-when-using-posix-semaphores.patch @@ -0,0 +1,174 @@ +From 50de22c7fa57c687a996bfdf6702871216881c0f Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/79856 +From: Antoine Martin +Date: Sat, 25 Feb 2023 15:19:00 -0500 +Subject: [PATCH 1/1] [threads] Save errno when using posix semaphores for + thread transitions + +We already save/restore GetLastError on win32. Do it on posix +platforms, too. + +If one thread is in a pinvoke wrapper, while another thread triggers a +STW, the pinvoke wrapper will self-suspend the thread and wait for a +notification to resume. Depending on the platform we can use win32 +primitives, Mach semaphores or POSIX semaphores. win32 and posix can +both change the value of last error (errno, respectively) while the +thread is suspended. + +That means that code like this (generated by the +LibraryImportAttribute source generator) cannot reliably retrieve the +error from the last pinvoke: + +```csharp +__retVal = __PInvoke(__path_native, mode); // there is a pinvoke wrapper here, that transitions from GC Safe to GC Unsafe mode +__lastError = System.Runtime.InteropServices.Marshal.GetLastSystemError(); +``` + +The solution is to explicitly preserve the value of GetLastError/errno +when exiting from GC Safe. + +Fixes https://github.com/dotnet/runtime/issues/77364 +--- + .../src/mono/mono/utils/mono-threads-coop.c | 12 +++--- + .../src/mono/mono/utils/mono-threads.c | 4 +- + .../src/mono/mono/utils/mono-threads.h | 43 ++++++++++++++++--- + 3 files changed, 45 insertions(+), 14 deletions(-) + +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d66..c562ada67 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -337,10 +337,10 @@ mono_threads_exit_gc_safe_region_internal (gpointer cookie, MonoStackData *stack + return; + + #ifdef ENABLE_CHECKED_BUILD_GC +- W32_DEFINE_LAST_ERROR_RESTORE_POINT; ++ MONO_DEFINE_LAST_ERROR_RESTORE_POINT; + if (mono_check_mode_enabled (MONO_CHECK_MODE_GC)) + coop_tls_pop (cookie); +- W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; ++ MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; + #endif + + mono_threads_exit_gc_safe_region_unbalanced_internal (cookie, stackdata); +@@ -365,7 +365,7 @@ mono_threads_exit_gc_safe_region_unbalanced_internal (gpointer cookie, MonoStack + /* Common to use enter/exit gc safe around OS API's affecting last error. */ + /* This method can call OS API's that will reset last error on some platforms. */ + /* To reduce errors, we need to restore last error before exit gc safe. */ +- W32_DEFINE_LAST_ERROR_RESTORE_POINT; ++ MONO_DEFINE_LAST_ERROR_RESTORE_POINT; + + info = (MonoThreadInfo *)cookie; + +@@ -398,7 +398,7 @@ mono_threads_exit_gc_safe_region_unbalanced_internal (gpointer cookie, MonoStack + info->user_data = NULL; + } + +- W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; ++ MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; + } + + void +@@ -652,14 +652,14 @@ mono_threads_suspend_policy_init (void) + // otherwise if one of the old environment variables is set, use that. + // otherwise use full preemptive suspend. + +- W32_DEFINE_LAST_ERROR_RESTORE_POINT; ++ MONO_DEFINE_LAST_ERROR_RESTORE_POINT; + + (policy = threads_suspend_policy_getenv ()) + || (policy = threads_suspend_policy_default ()) + || (policy = threads_suspend_policy_getenv_compat ()) + || (policy = MONO_THREADS_SUSPEND_FULL_PREEMPTIVE); + +- W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; ++ MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; + + g_assert (policy); + mono_threads_suspend_policy_hidden_dont_modify = (char)policy; +diff --git a/src/runtime/src/mono/mono/utils/mono-threads.c b/src/runtime/src/mono/mono/utils/mono-threads.c +index 2ef2fe45b..41dbf3032 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads.c +@@ -1894,7 +1894,7 @@ mono_thread_info_uninstall_interrupt (gboolean *interrupted) + /* Common to uninstall interrupt handler around OS API's affecting last error. */ + /* This method could call OS API's on some platforms that will reset last error so make sure to restore */ + /* last error before exit. */ +- W32_DEFINE_LAST_ERROR_RESTORE_POINT; ++ MONO_DEFINE_LAST_ERROR_RESTORE_POINT; + + g_assert (interrupted); + *interrupted = FALSE; +@@ -1917,7 +1917,7 @@ mono_thread_info_uninstall_interrupt (gboolean *interrupted) + THREADS_INTERRUPT_DEBUG ("interrupt uninstall tid %p previous_token %p interrupted %s\n", + mono_thread_info_get_tid (info), previous_token, *interrupted ? "TRUE" : "FALSE"); + +- W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; ++ MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT; + } + + static MonoThreadInfoInterruptToken* +diff --git a/src/runtime/src/mono/mono/utils/mono-threads.h b/src/runtime/src/mono/mono/utils/mono-threads.h +index 6a548b183..45353db4e 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads.h ++++ b/src/runtime/src/mono/mono/utils/mono-threads.h +@@ -866,19 +866,50 @@ mono_win32_interrupt_wait (PVOID thread_info, HANDLE native_thread_handle, DWORD + void + mono_win32_abort_blocking_io_call (THREAD_INFO_TYPE *info); + +-#define W32_DEFINE_LAST_ERROR_RESTORE_POINT \ ++#else ++ ++ ++#endif ++ ++#ifdef USE_WINDOWS_BACKEND ++ ++/* APC calls can change GetLastError while a thread is suspended. Save/restore it when doing thread ++ state transitions (for example in m2n wrappers) in order to protect the result of the last ++ pinvoke */ ++ ++#define MONO_DEFINE_LAST_ERROR_RESTORE_POINT \ + const DWORD _last_error_restore_point = GetLastError (); + +-#define W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT \ ++#define MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT \ + /* Only restore if changed to prevent unnecessary writes. */ \ + if (GetLastError () != _last_error_restore_point) \ + mono_SetLastError (_last_error_restore_point); + ++#elif defined(USE_WASM_BACKEND) || defined (USE_POSIX_BACKEND) ++ ++#define MONO_DEFINE_LAST_ERROR_RESTORE_POINT \ ++ int _last_errno_restore_point = errno; ++ ++#define MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT \ ++ if (errno != _last_errno_restore_point) \ ++ errno = _last_errno_restore_point; ++ ++/* Posix semaphores set errno on failure and sporadic wakeup. GC state transitions are done in n2m ++ * and m2n wrappers and may change the value of errno from the last pinvoke. Use these macros to ++ * save/restore errno when doing thread state transitions. */ ++ ++#elif defined(USE_MACH_BACKEND) ++ ++/* Mach semaphores don't set errno on failure. Change this to be the same as POSIX if some other primitives used ++ in thread state transitions pollute errno. */ ++ ++#define MONO_DEFINE_LAST_ERROR_RESTORE_POINT /* nothing */ ++#define MONO_RESTORE_LAST_ERROR_FROM_RESTORE_POINT /* nothing */ ++ + #else +- +-#define W32_DEFINE_LAST_ERROR_RESTORE_POINT /* nothing */ +-#define W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT /* nothing */ +- ++#error "unknown threads backend, not sure how to save/restore last error" + #endif + ++ ++ + #endif /* __MONO_THREADS_H__ */ +-- +2.38.4 + diff --git a/user/dotnet8-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch b/user/dotnet8-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..d4cbe4d --- /dev/null +++ b/user/dotnet8-stage0/runtime_82269-mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/14105. Alpine Linux +now sets this by default since https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/43463, +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/user/dotnet8-stage0/runtime_83682-specify-notext-on-linux-musl-x86.patch b/user/dotnet8-stage0/runtime_83682-specify-notext-on-linux-musl-x86.patch new file mode 100644 index 0000000..6dfefc0 --- /dev/null +++ b/user/dotnet8-stage0/runtime_83682-specify-notext-on-linux-musl-x86.patch @@ -0,0 +1,24 @@ +From 65877a9c1260c1c37d1c3355703b1951b6754cdf Mon Sep 17 00:00:00 2001 +From: Adeel <3840695+am11@users.noreply.github.com> +Date: Mon, 20 Mar 2023 19:36:14 +0200 +Subject: [PATCH] Specify -z notext on linux-musl-x86 + +--- + src/coreclr/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/runtime/src/coreclr/CMakeLists.txt b/src/runtime/src/coreclr/CMakeLists.txt +index 67b773bf78787..87d862a541ae6 100644 +--- a/src/runtime/src/coreclr/CMakeLists.txt ++++ b/src/runtime/src/coreclr/CMakeLists.txt +@@ -109,6 +109,10 @@ if(CLR_CMAKE_HOST_UNIX) + endif() + endif() + ++ if(CLR_CMAKE_TARGET_ALPINE_LINUX AND CLR_CMAKE_TARGET_ARCH_I386) ++ add_linker_flag(-Wl,-z,notext) ++ endif() ++ + if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS) + add_subdirectory(pal) + add_subdirectory(hosts) diff --git a/user/dotnet8-stage0/runtime_90251-rename-mono-cmake-host-var.patch b/user/dotnet8-stage0/runtime_90251-rename-mono-cmake-host-var.patch new file mode 100644 index 0000000..ebd905e --- /dev/null +++ b/user/dotnet8-stage0/runtime_90251-rename-mono-cmake-host-var.patch @@ -0,0 +1,87 @@ +From 828269b7e68039f8bc0bdac66e2fd5c58b6d3471 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/pull/90251 +From: Antoine Martin +Date: Wed, 9 Aug 2023 11:36:39 -0400 +Subject: [PATCH 1/1] Rename CMAKE var for mono on libc-musl + +--- + src/mono/CMakeLists.txt | 6 +++--- + src/mono/mono/mini/CMakeLists.txt | 12 ++++++------ + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/runtime/src/coreclr/pgosupport.cmake b/src/runtime/src/coreclr/pgosupport.cmake +index 719ac14ad99..34a42781ab2 100644 +--- a/src/runtime/src/coreclr/pgosupport.cmake ++++ b/src/runtime/src/coreclr/pgosupport.cmake +@@ -25,13 +25,13 @@ function(add_pgo TargetName) + target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fprofile-instr-generate") + if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") +- if (CLR_CMAKE_HOST_ALPINE_LINUX) ++ if (CLR_CMAKE_TARGET_LINUX_MUSL) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- else(CLR_CMAKE_HOST_ALPINE_LINUX) ++ else(CLR_CMAKE_TARGET_LINUX_MUSL) + string(REPLACE "." ";" CLANG_VERSION "${CMAKE_C_COMPILER_VERSION}") + list(POP_FRONT CLANG_VERSION CLANG_VERSION_MAJOR) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/llvm-${CLANG_VERSION_MAJOR}/lib/clang/${CMAKE_C_COMPILER_VERSION}") +- endif(CLR_CMAKE_HOST_ALPINE_LINUX) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL) + endif(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") + if(NOT LD_LLVM) + set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -fuse-ld=gold") +diff --git a/src/runtime/src/mono/CMakeLists.txt b/src/runtime/src/mono/CMakeLists.txt +index e04d9e9d364..00e54a25d69 100644 +--- a/src/runtime/src/mono/CMakeLists.txt ++++ b/src/runtime/src/mono/CMakeLists.txt +@@ -943,10 +943,10 @@ else() + set(DISABLE_DLLMAP 1) + endif() + +-if(CLR_CMAKE_HOST_ALPINE_LINUX) +- # Setting RLIMIT_NOFILE breaks debugging of coreclr on Alpine Linux for some reason ++if(CLR_CMAKE_TARGET_LINUX_MUSL) ++ # Setting RLIMIT_NOFILE breaks debugging of coreclr on musl-libc for some reason + add_definitions(-DDONT_SET_RLIMIT_NOFILE) +- # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is ++ # On musl-libc, we need to ensure that the reported stack range for the primary thread is + # larger than the initial committed stack size. + add_definitions(-DENSURE_PRIMARY_STACK_SIZE) + endif() +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index d23b7985802..b5f63fc638c 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -378,10 +378,10 @@ if(NOT DISABLE_SHARED_LIBS) + add_library(monosgen-shared SHARED $) + target_compile_definitions(monosgen-objects PRIVATE -DMONO_DLL_EXPORT) + endif() +- # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ # musl-libc implements ucontext in a different library ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(monosgen-shared PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL TARGET_S390X) + set_target_properties(monosgen-shared PROPERTIES OUTPUT_NAME ${MONO_SHARED_LIB_NAME}) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(monosgen-shared PROPERTIES INSTALL_RPATH "$ORIGIN") +@@ -560,10 +560,10 @@ if(NOT DISABLE_EXECUTABLES) + target_link_libraries(mono-sgen PRIVATE icu_shim_objects) + endif() + target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) +- # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ # musl-libc implements ucontext in a different library ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(mono-sgen PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") +diff --git a/src/runtime/src/coreclr/pgosupport.cmake.orig b/src/runtime/src/coreclr/pgosupport.cmake +index 719ac14..34a4278 100644 +--- a/src/runtime/src/coreclr/pgosupport.cmake.orig ++++ b/src/runtime/src/coreclr/pgosupport.cmake + diff --git a/user/dotnet8-stage0/runtime_more-clang-16-suppression.patch b/user/dotnet8-stage0/runtime_more-clang-16-suppression.patch new file mode 100644 index 0000000..1e94419 --- /dev/null +++ b/user/dotnet8-stage0/runtime_more-clang-16-suppression.patch @@ -0,0 +1,13 @@ +diff --git a/src/runtime/eng/native/configurecompiler.cmake b/src/runtime/eng/native/configurecompiler.cmake +index c9a54547c0a..931da2cae5b 100644 +--- a/src/runtime/eng/native/configurecompiler.cmake ++++ b/src/runtime/eng/native/configurecompiler.cmake +@@ -488,6 +488,8 @@ if (CLR_CMAKE_HOST_UNIX) + # other clang 16.0 suppressions + add_compile_options(-Wno-single-bit-bitfield-constant-conversion) + add_compile_options(-Wno-cast-function-type-strict) ++ add_compile_options(-Wno-incompatible-function-pointer-types-strict) ++ add_compile_options(-Wno-ignored-attributes) + else() + add_compile_options(-Wno-uninitialized) + add_compile_options(-Wno-strict-aliasing) diff --git a/user/dotnet8-stage0/runtime_remove-usage-of-off64-t.patch b/user/dotnet8-stage0/runtime_remove-usage-of-off64-t.patch new file mode 100644 index 0000000..cec5877 --- /dev/null +++ b/user/dotnet8-stage0/runtime_remove-usage-of-off64-t.patch @@ -0,0 +1,26 @@ +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +index 20b2494..165b190 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -469,7 +469,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fdMem != -1); +- *read = pread64(m_fdMem, buffer, size, (off64_t)address); ++ *read = pread(m_fdMem, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) +diff --git a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +index 5addb79..79655d1 100644 +--- a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp.orig ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +@@ -760,7 +760,7 @@ CrashInfo::PageMappedToPhysicalMemory(uint64_t start) + } + + uint64_t pagemapOffset = (start / PAGE_SIZE) * sizeof(uint64_t); +- uint64_t seekResult = lseek64(m_fdPagemap, (off64_t) pagemapOffset, SEEK_SET); ++ uint64_t seekResult = lseek(m_fdPagemap, (off_t) pagemapOffset, SEEK_SET); + if (seekResult != pagemapOffset) + { + int seekErrno = errno; diff --git a/user/dotnet8-stage0/runtime_rename-mono-cmake-host-var.patch b/user/dotnet8-stage0/runtime_rename-mono-cmake-host-var.patch new file mode 100644 index 0000000..935bf67 --- /dev/null +++ b/user/dotnet8-stage0/runtime_rename-mono-cmake-host-var.patch @@ -0,0 +1,42 @@ +diff --git a/src/runtime/src/mono/CMakeLists.txt b/src/runtime/src/mono/CMakeLists.txt +index fad619577bf..91a4a545c42 100644 +--- a/src/runtime/src/mono/CMakeLists.txt ++++ b/src/runtime/src/mono/CMakeLists.txt +@@ -943,7 +943,7 @@ else() + set(DISABLE_DLLMAP 1) + endif() + +-if(CLR_CMAKE_HOST_ALPINE_LINUX) ++if(CLR_CMAKE_TARGET_LINUX_MUSL) + # Setting RLIMIT_NOFILE breaks debugging of coreclr on Alpine Linux for some reason + add_definitions(-DDONT_SET_RLIMIT_NOFILE) + # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is +diff --git a/src/runtime/src/mono/mono/mini/CMakeLists.txt b/src/runtime/src/mono/mono/mini/CMakeLists.txt +index d23b7985802..da7563ac4d3 100644 +--- a/src/runtime/src/mono/mono/mini/CMakeLists.txt ++++ b/src/runtime/src/mono/mono/mini/CMakeLists.txt +@@ -379,9 +379,9 @@ if(NOT DISABLE_SHARED_LIBS) + target_compile_definitions(monosgen-objects PRIVATE -DMONO_DLL_EXPORT) + endif() + # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(monosgen-shared PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + set_target_properties(monosgen-shared PROPERTIES OUTPUT_NAME ${MONO_SHARED_LIB_NAME}) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(monosgen-shared PROPERTIES INSTALL_RPATH "$ORIGIN") +@@ -561,9 +561,9 @@ if(NOT DISABLE_EXECUTABLES) + endif() + target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS}) + # Alpine Linux implements ucontext in a different library +- if(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + target_link_libraries(mono-sgen PRIVATE ucontext) +- endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) ++ endif(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X) + if(NOT DISABLE_COMPONENTS AND STATIC_COMPONENTS AND NOT DISABLE_LINK_STATIC_COMPONENTS) + # if components are built statically, link them into runtime. + target_sources(mono-sgen PRIVATE "${mono-components-objects}") + diff --git a/user/filebrowser/APKBUILD b/user/filebrowser/APKBUILD deleted file mode 100644 index 7ff2627..0000000 --- a/user/filebrowser/APKBUILD +++ /dev/null @@ -1,53 +0,0 @@ -# Maintainer: Antoine Martin (ayakael) -pkgname=filebrowser -pkgver=1.0.3 -_gittag="v$pkgver-stable" -pkgrel=0 -pkgdesc="Standalone web file manager" -arch="all" -url="https://github.com/gtsteffaniak/filebrowser" -license="Apache-2.0" -depends="libcap-setcap" -makedepends="go nodejs npm" -source=" - $pkgname-$_gittag.tar.gz::https://github.com/gtsteffaniak/filebrowser/archive/refs/tags/$_gittag.tar.gz - frontend-package-lock.json - filebrowser.openrc - " -builddir="$srcdir"/$pkgname-${_gittag/v} -options="!check" # TODO: setup test suite -subpackages="$pkgname-openrc" -install="$pkgname.pre-install $pkgname.post-upgrade" - -prepare() { - default_prepare - ( - cd "$builddir"/frontend - cp "$srcdir"/frontend-package-lock.json package-lock.json - npm ci - ) -} - -build() { - ( - cd "$builddir"/frontend - npm run build - ) - ( - cd "$builddir"/backend - go build -o filebrowser \ - --ldflags="-w -s -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.CommitSHA=production' \ - -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.Version=$pkgver'" - ) -} - -package() { - install -Dm755 "$builddir"/backend/filebrowser "$pkgdir"/usr/bin/filebrowser - install -Dm755 "$srcdir"/filebrowser.openrc "$pkgdir"/etc/init.d/filebrowser - install -Dm644 "$builddir"/frontend/public/config.generated.yaml "$pkgdir"/etc/filebrowser/filebrowser.yaml -} -sha512sums=" -7919d391e45c7a88bcbff61f6d63963fe559afe21170c2940ae7895e6b794ce68af0742d4ce81584437b14e603a4ff8b95fb1fb16d72a032a40b76986ed8981b filebrowser-v1.0.3-stable.tar.gz -4ffe0c2ae7d6d972950fb38c9c777c20e3f507da6b4562231e09843b3ae618362ffdfbaf6dbb60959b3811c1856eb326d608e9d32e236bac405c65974e6e1e50 frontend-package-lock.json -06319bc67b088b5ffdad01a575691d82c5319730b4e46975bfc09ebb7466d6913eaca73e93f8db7b8c8bc374e6b9e35634ff1a69e701d24a5d2eae444de6bdf7 filebrowser.openrc -" diff --git a/user/filebrowser/filebrowser.openrc b/user/filebrowser/filebrowser.openrc deleted file mode 100644 index 3282368..0000000 --- a/user/filebrowser/filebrowser.openrc +++ /dev/null @@ -1,30 +0,0 @@ -#!/sbin/openrc-run - -description="File browser for ${RC_SVCNAME/*.}" -supervisor=supervise-daemon -respawn_max=0 -respawn_delay=10 - - -# Change $directory to path to middleware scripts -directory=${directory:-/var/lib/${RC_SVCNAME/.*}/${RC_SVCNAME/*.}} -pidfile=${pidfile:-/run/$RC_SVCNAME.pid} - -log_dir="/var/log/${RC_SVCNAME/.*}/" -logfile=${logfile:-$log_dir/${RC_SVCNAME/*.}.log} -output_log="${output_log:-$logfile}" -error_log="${error_log:-$logfile}" - -command=${command:-/usr/bin/filebrowser} -command_args="-c /etc/filebrowser/${RC_SVCNAME/*.}.yaml" -command_user=${command_user:-filebrowser:filebrowser} -command_background=true - -depend() { - need net -} - -start_pre() { - checkpath --owner=$command_user --directory $log_dir /var/lib/filebrowser $directory - cd $directory -} diff --git a/user/filebrowser/filebrowser.post-upgrade b/user/filebrowser/filebrowser.post-upgrade deleted file mode 120000 index 85089dd..0000000 --- a/user/filebrowser/filebrowser.post-upgrade +++ /dev/null @@ -1 +0,0 @@ -filebrowser.pre-install \ No newline at end of file diff --git a/user/filebrowser/filebrowser.pre-install b/user/filebrowser/filebrowser.pre-install deleted file mode 100644 index b79bd82..0000000 --- a/user/filebrowser/filebrowser.pre-install +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh - -setcap 'cap_net_bind_service=+ep' /usr/bin/filebrowser - -if [ "${0##*.}" = 'pre-install' ]; then - cat >&2 <<-EOF - -1. Generate filebrowser config file - - cd /etc/filebrowser - filebrowser setup - -2. Rename config.yaml to $service.yaml (i.e. movies.yaml) and adjust as desired (see https://filebrowserquantum.com/en/docs/configuration/configuration-overview/ for more information) -3. Create symbolic link for service file, enable, and start - - ln -s /etc/init.d/filebrowser /etc/init.d/filebrowser.$service - rc-update add filebrowser.$service - service filebrowser.$service - -You should now be able to go to http://ip-address:port (default 80) - -For more documentation, go to https://filebrowserquantum.com/en/docs - - EOF - - if ! getent group filebrowser 1>/dev/null; then - echo 'Creating group filebrowser' 1>&2 - - addgroup -S filebrowser - fi - - if ! id filebrowser 2>/dev/null 1>&2; then - echo 'Creating user filebrowser' 1>&2 - - adduser -DHS -G filebrowser -h "$DATADIR" -s /bin/sh \ - -g "added by apk for filebrowser" filebrowser - passwd -u filebrowser 1>/dev/null # unlock - fi - - if ! id -Gn filebrowser | grep -Fq www-data; then - echo 'Adding user filebrowser to group www-data' 1>&2 - - addgroup filebrowser www-data - fi - - exit 0 -fi diff --git a/user/filebrowser/frontend-package-lock.json b/user/filebrowser/frontend-package-lock.json deleted file mode 100644 index fca845b..0000000 --- a/user/filebrowser/frontend-package-lock.json +++ /dev/null @@ -1,7568 +0,0 @@ -{ - "name": "filebrowser-frontend", - "version": "3.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "filebrowser-frontend", - "version": "3.0.0", - "dependencies": { - "@onlyoffice/document-editor-vue": "^1.4.0", - "@skjnldsv/vue-plyr": "^7.5.0", - "ace-builds": "^1.24.2", - "axios": "^1.7.9", - "clipboard": "^2.0.4", - "css-vars-ponyfill": "^2.4.3", - "dompurify": "^3.2.4", - "epubjs": "^0.3.93", - "file-loader": "^6.2.0", - "glob": "^9.3.5", - "highlight.js": "^11.11.1", - "mammoth": "^1.9.1", - "marked": "^15.0.6", - "normalize.css": "^8.0.1", - "qrcode.vue": "^3.4.1", - "srt-support-for-html5-videos": "^2.6.11", - "vue": "^3.4.21", - "vue-i18n": "^9.10.2", - "vue-lazyload": "^3.0.0", - "vue-router": "^4.3.0" - }, - "devDependencies": { - "@intlify/eslint-plugin-vue-i18n": "^3.2.0", - "@intlify/unplugin-vue-i18n": "^4.0.0", - "@playwright/test": "^1.54.1", - "@types/node": "^24.1.0", - "@vitejs/plugin-vue": "^5.0.4", - "@vue/eslint-config-typescript": "^13.0.0", - "deepl-node": "^1.18.0", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-vue": "^9.24.0", - "fs-extra": "^11.3.0", - "jsdom": "^25.0.1", - "vite": "^6.2.0", - "vite-plugin-checker": "^0.10.3", - "vite-plugin-compression2": "^1.0.0", - "vitest": "^3.0.7", - "vue-tsc": "^2.0.7" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=9.0.0" - } - }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@intlify/bundle-utils": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-8.0.0.tgz", - "integrity": "sha512-1B++zykRnMwQ+20SpsZI1JCnV/YJt9Oq7AGlEurzkWJOFtFAVqaGc/oV36PBRYeiKnTbY9VYfjBimr2Vt42wLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/message-compiler": "^9.4.0", - "@intlify/shared": "^9.4.0", - "acorn": "^8.8.2", - "escodegen": "^2.1.0", - "estree-walker": "^2.0.2", - "jsonc-eslint-parser": "^2.3.0", - "mlly": "^1.2.0", - "source-map-js": "^1.0.1", - "yaml-eslint-parser": "^1.2.2" - }, - "engines": { - "node": ">= 14.16" - }, - "peerDependenciesMeta": { - "petite-vue-i18n": { - "optional": true - }, - "vue-i18n": { - "optional": true - } - } - }, - "node_modules/@intlify/core-base": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.5.tgz", - "integrity": "sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==", - "license": "MIT", - "dependencies": { - "@intlify/message-compiler": "9.14.5", - "@intlify/shared": "9.14.5" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/eslint-plugin-vue-i18n": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@intlify/eslint-plugin-vue-i18n/-/eslint-plugin-vue-i18n-3.2.0.tgz", - "integrity": "sha512-TOIrD4tJE48WMyVIB8bNeQJJPYo1Prpqnm9Xpn1UZmcqlELhm8hmP8QyJnkgesfbG7hyiX/kvo63W7ClEQmhpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint/eslintrc": "^3.0.0", - "@intlify/core-base": "^9.12.0", - "@intlify/message-compiler": "^9.12.0", - "debug": "^4.3.4", - "eslint-compat-utils": "^0.6.0", - "glob": "^10.3.3", - "globals": "^15.0.0", - "ignore": "^6.0.0", - "import-fresh": "^3.3.0", - "is-language-code": "^3.1.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.3", - "jsonc-eslint-parser": "^2.3.0", - "lodash": "^4.17.21", - "parse5": "^7.1.2", - "semver": "^7.5.4", - "synckit": "^0.9.0", - "vue-eslint-parser": "^9.3.1", - "yaml-eslint-parser": "^1.2.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.0 || ^9.0.0-0" - } - }, - "node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@intlify/message-compiler": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.5.tgz", - "integrity": "sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==", - "license": "MIT", - "dependencies": { - "@intlify/shared": "9.14.5", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/shared": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.5.tgz", - "integrity": "sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/unplugin-vue-i18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-4.0.0.tgz", - "integrity": "sha512-q2Mhqa/mLi0tulfLFO4fMXXvEbkSZpI5yGhNNsLTNJJ41icEGUuyDe+j5zRZIKSkOJRgX6YbCyibTDJdRsukmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/bundle-utils": "^8.0.0", - "@intlify/shared": "^9.4.0", - "@rollup/pluginutils": "^5.1.0", - "@vue/compiler-sfc": "^3.2.47", - "debug": "^4.3.3", - "fast-glob": "^3.2.12", - "js-yaml": "^4.1.0", - "json5": "^2.2.3", - "pathe": "^1.0.0", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2", - "unplugin": "^1.1.0" - }, - "engines": { - "node": ">= 14.16" - }, - "peerDependencies": { - "petite-vue-i18n": "*", - "vue-i18n": "*", - "vue-i18n-bridge": "*" - }, - "peerDependenciesMeta": { - "petite-vue-i18n": { - "optional": true - }, - "vue-i18n": { - "optional": true - }, - "vue-i18n-bridge": { - "optional": true - } - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@onlyoffice/document-editor-vue": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@onlyoffice/document-editor-vue/-/document-editor-vue-1.6.1.tgz", - "integrity": "sha512-sdU7h684ESSdXvGNDcMf73UmToiZGMVO5QRIazTmGfm+bKOnT5ildomeagYFdnQaHQH0J28EJqc4jqXOcQbicA==", - "license": "Apache-2.0", - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", - "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@playwright/test": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", - "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.57.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz", - "integrity": "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.5.tgz", - "integrity": "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.5.tgz", - "integrity": "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.5.tgz", - "integrity": "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.5.tgz", - "integrity": "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.5.tgz", - "integrity": "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.5.tgz", - "integrity": "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.5.tgz", - "integrity": "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.5.tgz", - "integrity": "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.5.tgz", - "integrity": "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.5.tgz", - "integrity": "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.5.tgz", - "integrity": "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.5.tgz", - "integrity": "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.5.tgz", - "integrity": "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.5.tgz", - "integrity": "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.5.tgz", - "integrity": "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.5.tgz", - "integrity": "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.5.tgz", - "integrity": "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.5.tgz", - "integrity": "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.5.tgz", - "integrity": "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz", - "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz", - "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@skjnldsv/vue-plyr": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@skjnldsv/vue-plyr/-/vue-plyr-7.5.0.tgz", - "integrity": "sha512-JmbKPe8Eh0yTP+7w4VYeqGhrUqDKM4qSsCn37CbADAvvwMvceBwYC0IBXil0RBtyzStxwXPtOj1oI//lQ5DeTw==", - "license": "MIT", - "dependencies": { - "plyr": "^3.7.8", - "vue": "^3.3.4" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0", - "npm": "^9.0.0 || ^10.0.0" - } - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/localforage": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", - "integrity": "sha512-tJxahnjm9dEI1X+hQSC5f2BSd/coZaqbIl1m3TCl0q9SVuC52XcXfV0XmoCU1+PmjyucuVITwoTnN8OlTbEXXA==", - "deprecated": "This is a stub types definition for localforage (https://github.com/localForage/localForage). localforage provides its own type definitions, so you don't need @types/localforage installed!", - "license": "MIT", - "dependencies": { - "localforage": "*" - } - }, - "node_modules/@types/node": { - "version": "24.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", - "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", - "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/mocker/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@volar/language-core": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.15.tgz", - "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/source-map": "2.4.15" - } - }, - "node_modules/@volar/source-map": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.15.tgz", - "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@volar/typescript": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.15.tgz", - "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/language-core": "2.4.15", - "path-browserify": "^1.0.1", - "vscode-uri": "^3.0.8" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.25.tgz", - "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.25", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.25.tgz", - "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.25", - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.25.tgz", - "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/compiler-core": "3.5.25", - "@vue/compiler-dom": "3.5.25", - "@vue/compiler-ssr": "3.5.25", - "@vue/shared": "3.5.25", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.21", - "postcss": "^8.5.6", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.25.tgz", - "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.25", - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/compiler-vue2": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", - "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", - "dev": true, - "license": "MIT", - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/@vue/eslint-config-typescript": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", - "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^7.1.1", - "@typescript-eslint/parser": "^7.1.1", - "vue-eslint-parser": "^9.3.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "peerDependencies": { - "eslint": "^8.56.0", - "eslint-plugin-vue": "^9.0.0", - "typescript": ">=4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/language-core": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.12.tgz", - "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/language-core": "2.4.15", - "@vue/compiler-dom": "^3.5.0", - "@vue/compiler-vue2": "^2.7.16", - "@vue/shared": "^3.5.0", - "alien-signals": "^1.0.3", - "minimatch": "^9.0.3", - "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/language-core/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@vue/language-core/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.25.tgz", - "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.25.tgz", - "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.25", - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.25.tgz", - "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.25", - "@vue/runtime-core": "3.5.25", - "@vue/shared": "3.5.25", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.25.tgz", - "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.25", - "@vue/shared": "3.5.25" - }, - "peerDependencies": { - "vue": "3.5.25" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", - "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", - "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", - "deprecated": "this version is no longer supported, please update to at least 0.8.*", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/ace-builds": { - "version": "1.43.5", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.5.tgz", - "integrity": "sha512-iH5FLBKdB7SVn9GR37UgA/tpQS8OTWIxWAuq3Ofaw+Qbc69FfPXsXd9jeW7KRG2xKpKMqBDnu0tHBrCWY5QI7A==", - "license": "BSD-3-Clause" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/adm-zip": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", - "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT", - "peer": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/alien-signals": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.13.tgz", - "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.8", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.8.tgz", - "integrity": "sha512-Y1fOuNDowLfgKOypdc9SPABfoWXuZHBOyCS4cD52IeZBhr4Md6CLLs6atcxVrzRmQ06E7hSlm5bHHApPKR/byA==", - "license": "Apache-2.0", - "peer": true, - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT", - "peer": true - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001760", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", - "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0", - "peer": true - }, - "node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clipboard": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", - "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", - "license": "MIT", - "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT", - "peer": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", - "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-vars-ponyfill": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/css-vars-ponyfill/-/css-vars-ponyfill-2.4.9.tgz", - "integrity": "sha512-aZyLue5bdiGVNCiCclNjo123D8I7kyoYNUaAvz+H1JalX1ye4Ilz7jNRRH5YbM+dYD6ucejiydGwk7lol/GCXQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.2", - "get-css-data": "^2.0.2" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/custom-event-polyfill": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", - "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==", - "license": "MIT" - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepl-node": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.24.0.tgz", - "integrity": "sha512-vZ9jUpzJRvFamgVOfm1LDy3YYJ7k8FhxtAX9whR92EFshLIP9JlYS0HFwXL5yYsfqzXdb/wssGRSWvR48t7nSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0", - "adm-zip": "^0.5.16", - "axios": "^1.7.4", - "form-data": "^3.0.0", - "loglevel": ">=1.6.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/deepl-node/node_modules/form-data": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", - "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "license": "MIT" - }, - "node_modules/dingbat-to-unicode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", - "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==", - "license": "BSD-2-Clause" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/duck": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz", - "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", - "license": "BSD", - "dependencies": { - "underscore": "^1.13.1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "license": "ISC", - "peer": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.4", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/epubjs": { - "version": "0.3.93", - "resolved": "https://registry.npmjs.org/epubjs/-/epubjs-0.3.93.tgz", - "integrity": "sha512-c06pNSdBxcXv3dZSbXAVLE1/pmleRhOT6mXNZo6INKmvuKpYB65MwU/lO7830czCtjIiK9i+KR+3S+p0wtljrw==", - "license": "BSD-2-Clause", - "dependencies": { - "@types/localforage": "0.0.34", - "@xmldom/xmldom": "^0.7.5", - "core-js": "^3.18.3", - "event-emitter": "^0.3.5", - "jszip": "^3.7.1", - "localforage": "^1.10.0", - "lodash": "^4.17.21", - "marks-pane": "^1.0.9", - "path-webpack": "0.0.3" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-compat-utils": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", - "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", - "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", - "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "license": "ISC", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-css-data": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/get-css-data/-/get-css-data-2.1.1.tgz", - "integrity": "sha512-JpMa/f5P4mDXKg6l5/2cHL5xNY77Jap7tHyduMa6BF0E2a7bQ6Tvaz2BIMjeVYZYLcmOZ5w2Ro0yVJEI41tMbw==", - "license": "MIT" - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", - "license": "MIT", - "dependencies": { - "delegate": "^3.1.2" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-language-code": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-language-code/-/is-language-code-3.1.0.tgz", - "integrity": "sha512-zJdQ3QTeLye+iphMeK3wks+vXSRFKh68/Pnlw7aOfApFSEIOhYa8P9vwwa6QrImNNBMJTiL1PpYF0f4BxDuEgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.14.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", - "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.1.0", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT", - "peer": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-eslint-parser": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.2.tgz", - "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.5.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - } - }, - "node_modules/jsonc-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/loadjs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.3.0.tgz", - "integrity": "sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==", - "license": "MIT" - }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "license": "Apache-2.0", - "dependencies": { - "lie": "3.1.1" - } - }, - "node_modules/localforage/node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/lop": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/lop/-/lop-0.4.2.tgz", - "integrity": "sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==", - "license": "BSD-2-Clause", - "dependencies": { - "duck": "^0.1.12", - "option": "~0.2.1", - "underscore": "^1.13.1" - } - }, - "node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/mammoth": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.11.0.tgz", - "integrity": "sha512-BcEqqY/BOwIcI1iR5tqyVlqc3KIaMRa4egSoK83YAVrBf6+yqdAAbtUcFDCWX8Zef8/fgNZ6rl4VUv+vVX8ddQ==", - "license": "BSD-2-Clause", - "dependencies": { - "@xmldom/xmldom": "^0.8.6", - "argparse": "~1.0.3", - "base64-js": "^1.5.1", - "bluebird": "~3.4.0", - "dingbat-to-unicode": "^1.0.1", - "jszip": "^3.7.1", - "lop": "^0.4.2", - "path-is-absolute": "^1.0.0", - "underscore": "^1.13.1", - "xmlbuilder": "^10.0.0" - }, - "bin": { - "mammoth": "bin/mammoth" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/mammoth/node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mammoth/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/marked": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/marks-pane": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/marks-pane/-/marks-pane-1.0.9.tgz", - "integrity": "sha512-Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT", - "peer": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.1" - } - }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT", - "peer": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "license": "ISC" - }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "license": "MIT", - "peer": true - }, - "node_modules/normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", - "license": "MIT" - }, - "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/option": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz", - "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==", - "license": "BSD-2-Clause" - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-webpack": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/path-webpack/-/path-webpack-0.0.3.tgz", - "integrity": "sha512-AmeDxedoo5svf7aB3FYqSAKqMxys014lVKBzy1o/5vv9CtU7U4wgGWL1dA2o6MOzcD53ScN4Jmiq6VbtLz1vIQ==", - "license": "MIT" - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/playwright": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", - "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.57.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", - "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/plyr": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.8.3.tgz", - "integrity": "sha512-0+iI5uw0WRvtKBpgPCkmQQv7ucHVQKTEo6UFJjgJ8cy/JZhy0dQqshHQVitHXV6l2O3MzhgnuvQ95VSkWcWeSw==", - "license": "MIT", - "dependencies": { - "core-js": "^3.45.1", - "custom-event-polyfill": "^1.0.7", - "loadjs": "^4.3.0", - "rangetouch": "^2.0.1", - "url-polyfill": "^1.1.13" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode.vue": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.6.0.tgz", - "integrity": "sha512-vQcl2fyHYHMjDO1GguCldJxepq2izQjBkDEEu9NENgfVKP6mv/e2SU62WbqYHGwTgWXLhxZ1NCD1dAZKHQq1fg==", - "license": "MIT", - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rangetouch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz", - "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==", - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz", - "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.5", - "@rollup/rollup-android-arm64": "4.53.5", - "@rollup/rollup-darwin-arm64": "4.53.5", - "@rollup/rollup-darwin-x64": "4.53.5", - "@rollup/rollup-freebsd-arm64": "4.53.5", - "@rollup/rollup-freebsd-x64": "4.53.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.5", - "@rollup/rollup-linux-arm-musleabihf": "4.53.5", - "@rollup/rollup-linux-arm64-gnu": "4.53.5", - "@rollup/rollup-linux-arm64-musl": "4.53.5", - "@rollup/rollup-linux-loong64-gnu": "4.53.5", - "@rollup/rollup-linux-ppc64-gnu": "4.53.5", - "@rollup/rollup-linux-riscv64-gnu": "4.53.5", - "@rollup/rollup-linux-riscv64-musl": "4.53.5", - "@rollup/rollup-linux-s390x-gnu": "4.53.5", - "@rollup/rollup-linux-x64-gnu": "4.53.5", - "@rollup/rollup-linux-x64-musl": "4.53.5", - "@rollup/rollup-openharmony-arm64": "4.53.5", - "@rollup/rollup-win32-arm64-msvc": "4.53.5", - "@rollup/rollup-win32-ia32-msvc": "4.53.5", - "@rollup/rollup-win32-x64-gnu": "4.53.5", - "@rollup/rollup-win32-x64-msvc": "4.53.5", - "fsevents": "~2.3.2" - } - }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/srt-support-for-html5-videos": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/srt-support-for-html5-videos/-/srt-support-for-html5-videos-2.6.11.tgz", - "integrity": "sha512-rHsP8iaE7vwhPHpaJPj178YZn6ak1jZvjtEA+XrRm9hhOfC3KZVK/TdNyZIi+fBFtSC+EkscWkyNFKiMuLE4IQ==" - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/synckit": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.3.tgz", - "integrity": "sha512-JJoOEKTfL1urb1mDoEblhD9NhEbWmq9jHEMEnxoC4ujUaZ4itA8vKgwkFAyNClgxplLi9tsUKX+EduK0p/l7sg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tar-mini": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tar-mini/-/tar-mini-0.2.0.tgz", - "integrity": "sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT", - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "license": "MIT" - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "license": "ISC" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unplugin": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", - "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-polyfill": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.14.tgz", - "integrity": "sha512-p4f3TTAG6ADVF3mwbXw7hGw+QJyw5CnNGvYh5fCuQQZIiuKUswqcznyV3pGDP9j0TSmC4UvRKm8kl1QsX1diiQ==", - "license": "MIT" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-node/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/vite-plugin-checker": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.10.3.tgz", - "integrity": "sha512-f4sekUcDPF+T+GdbbE8idb1i2YplBAoH+SfRS0e/WRBWb2rYb1Jf5Pimll0Rj+3JgIYWwG2K5LtBPCXxoibkLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "chokidar": "^4.0.3", - "npm-run-path": "^6.0.0", - "picocolors": "^1.1.1", - "picomatch": "^4.0.3", - "strip-ansi": "^7.1.0", - "tiny-invariant": "^1.3.3", - "tinyglobby": "^0.2.14", - "vscode-uri": "^3.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "peerDependencies": { - "@biomejs/biome": ">=1.7", - "eslint": ">=7", - "meow": "^13.2.0", - "optionator": "^0.9.4", - "stylelint": ">=16", - "typescript": "*", - "vite": ">=2.0.0", - "vls": "*", - "vti": "*", - "vue-tsc": "~2.2.10 || ^3.0.0" - }, - "peerDependenciesMeta": { - "@biomejs/biome": { - "optional": true - }, - "eslint": { - "optional": true - }, - "meow": { - "optional": true - }, - "optionator": { - "optional": true - }, - "stylelint": { - "optional": true - }, - "typescript": { - "optional": true - }, - "vls": { - "optional": true - }, - "vti": { - "optional": true - }, - "vue-tsc": { - "optional": true - } - } - }, - "node_modules/vite-plugin-checker/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/vite-plugin-checker/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/vite-plugin-compression2": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/vite-plugin-compression2/-/vite-plugin-compression2-1.4.0.tgz", - "integrity": "sha512-UEk0Bq1IkkwqbDLoLOHZ8WTmN1QbvR28fvNl2liB88/6SG1oLrTVkxfjqW3pdla/rKQ6QXn+pJpv3GBbl+k56g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "tar-mini": "^0.2.0" - }, - "peerDependencies": { - "vite": "^2.0.0||^3.0.0||^4.0.0||^5.0.0 ||^6.0.0" - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/vue": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz", - "integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.25", - "@vue/compiler-sfc": "3.5.25", - "@vue/runtime-dom": "3.5.25", - "@vue/server-renderer": "3.5.25", - "@vue/shared": "3.5.25" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-i18n": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.5.tgz", - "integrity": "sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==", - "license": "MIT", - "dependencies": { - "@intlify/core-base": "9.14.5", - "@intlify/shared": "9.14.5", - "@vue/devtools-api": "^6.5.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-lazyload": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vue-lazyload/-/vue-lazyload-3.0.0.tgz", - "integrity": "sha512-h2keL/Rj550dLgesgOtXJS9qOiSMmuJNeVlfNAYV1/IYwOQYaWk5mFJlwRxmZDK9YC5gECcFLYYj7z1lKSf9ug==", - "license": "MIT" - }, - "node_modules/vue-router": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz", - "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/vue-tsc": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.12.tgz", - "integrity": "sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/typescript": "2.4.15", - "@vue/language-core": "2.2.12" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", - "license": "MIT", - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/webpack": { - "version": "5.104.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.0.tgz", - "integrity": "sha512-5DeICTX8BVgNp6afSPYXAFjskIgWGlygQH58bcozPOXgo2r/6xx39Y1+cULZ3gTxUYQP88jmwLj2anu4Xaq84g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.4", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.4.4", - "webpack-sources": "^3.3.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack/node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "license": "MIT", - "peer": true - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT", - "peer": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlbuilder": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", - "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yaml-eslint-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.3.2.tgz", - "integrity": "sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.0.0", - "yaml": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/user/firefly-iii-plaid-connector/APKBUILD b/user/firefly-iii-plaid-connector/APKBUILD new file mode 100644 index 0000000..77c50a9 --- /dev/null +++ b/user/firefly-iii-plaid-connector/APKBUILD @@ -0,0 +1,29 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=firefly-iii-plaid-connector +pkgver=0.3.1 +pkgrel=7 +pkgdesc="The Free Software Media System" +arch="x86_64" +url="https://gitlab.com/GeorgeHahn/firefly-plaid-connector" +license="MIT" +options="!check" +depends="firefly-iii dotnet6-runtime" +makedepends="dotnet6-sdk" +source="firefly-plaid-connector-$pkgver.tar.gz::https://gitlab.com/GeorgeHahn/firefly-plaid-connector/-/archive/v$pkgver/firefly-plaid-connector-v$pkgver.tar.gz net6-support.patch" +builddir="$srcdir/firefly-plaid-connector-v$pkgver" + +build() { + dotnet publish --configuration Release --output ./publish --use-current-runtime --no-self-contained +} + +package() { + mkdir -p "$pkgdir"/usr/lib + cp -r "$builddir"/publish "$pkgdir"/usr/lib/firefly-plaid-connector +} + +sha512sums=" +57a64673bf2e8cae00cb215e1dc90eb02bddf50010835a9318f55f83313c00f19d6c8d8af65e2739b0fb6fd4522a2327941bdc7d11cbe59c9537ff6c1575765e firefly-plaid-connector-0.3.1.tar.gz +f795fe58659763082e3f2bba0e6e2a70c4732bc6b402a4e586104bf09525ffca1d3586acda43ccba3b71d15e1a0a62794574f72a2fc6cd3d1905dcb2e8782dc2 net6-support.patch +" diff --git a/unmaintained/firefly-iii-plaid-connector/net6-support.patch b/user/firefly-iii-plaid-connector/net6-support.patch similarity index 100% rename from unmaintained/firefly-iii-plaid-connector/net6-support.patch rename to user/firefly-iii-plaid-connector/net6-support.patch diff --git a/unmaintained/firefly-iii/APKBUILD b/user/firefly-iii/APKBUILD similarity index 98% rename from unmaintained/firefly-iii/APKBUILD rename to user/firefly-iii/APKBUILD index 08f146b..c8dfe1f 100644 --- a/unmaintained/firefly-iii/APKBUILD +++ b/user/firefly-iii/APKBUILD @@ -5,12 +5,11 @@ pkgname=firefly-iii pkgver=5.7.18 pkgrel=0 pkgdesc="PHP personal finances manager" -# FTBFS -#arch="noarch" +arch="noarch" url="https://github.com/firefly-iii/firefly-iii" license="AGPL-3.0-only" options="!check" # No testsuite -_php=php83 +_php=php82 _php_mods="-intl -curl -bcmath -zip -gd -xml -mbstring -ldap -session -fileinfo -simplexml -sodium -tokenizer -xmlwriter -dom -pdo" depends="$_php ${_php_mods//-/$_php-}" makedepends="composer" diff --git a/user/firefox-esr/APKBUILD b/user/firefox-esr/APKBUILD new file mode 100644 index 0000000..3d091b4 --- /dev/null +++ b/user/firefox-esr/APKBUILD @@ -0,0 +1,671 @@ +# Contributor: Natanael Copa +# Contributor: Sören Tempel +# Maintainer: Natanael Copa +pkgname=firefox-esr +pkgver=102.10.0 +# Date of release, YY-MM-DD for metainfo file (see package()) +_releasedate=2023-04-11 +pkgrel=5 +pkgdesc="Firefox web browser - Extended Support Release" +url="https://www.mozilla.org/en-US/firefox/organizations/" +# s390x and riscv64: blocked by rust and cargo +# armhf: build failure on armhf due to wasm +# fix later +#arch="x86_64 armv7 aarch64 x86 ppc64le" +license="GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND MPL-2.0" +install="$pkgname.post-upgrade" +depends=" + ffmpeg-libavcodec + " +makedepends=" + alsa-lib-dev + automake + bsd-compat-headers + cargo + cbindgen + clang + dbus-glib-dev + gettext + gtk+3.0-dev + hunspell-dev + icu-dev>=69.1 + libevent-dev + libffi-dev + libjpeg-turbo-dev + libnotify-dev + libogg-dev + libtheora-dev + libtool + libvorbis-dev + libvpx-dev + libwebp-dev + libxcomposite-dev + libxt-dev + lld + llvm-dev + m4 + mesa-dev + nasm + nodejs + nspr-dev + nss-dev + pipewire-dev + pulseaudio-dev + py3-psutil + py3-zstandard + python3 + sed + wasi-sdk + wireless-tools-dev + zip + " +source="https://ftp.mozilla.org/pub/firefox/releases/${pkgver}esr/source/firefox-${pkgver}esr.source.tar.xz + allow-custom-rust-vendor.patch + avoid-redefinition.patch + bindgen.patch + disable-moz-stackwalk.patch + esr-metainfo.patch + firefox-esr-ffmpeg6.patch::https://dev.alpinelinux.org/archive/firefoxies/firefox-esr-ffmpeg6.patch + ffmpeg6-fixup.patch + fix-neon-aom.patch + fix-fortify-system-wrappers.patch + fix-rust-target.patch + fix-webrtc-glibcisms.patch + gcc13.patch + mallinfo.patch + python-deps.patch + sandbox-fork.patch + sandbox-largefile.patch + sandbox-sched_setscheduler.patch + zstandard.patch + + stab.h + + firefox.desktop + mozilla-location.keys + vendor-prefs.js + " + +builddir="$srcdir/firefox-$pkgver" +_mozappdir=/usr/lib/firefox-esr + +# help our shared-object scanner to find the libs +ldpath="$_mozappdir" + +# secfixes: +# 102.1.0-r0: +# - CVE-2022-2505 +# - CVE-2022-36314 +# - CVE-2022-36318 +# - CVE-2022-36319 +# 91.11.0-r0: +# - CVE-2022-2200 +# - CVE-2022-31744 +# - CVE-2022-34468 +# - CVE-2022-34470 +# - CVE-2022-34472 +# - CVE-2022-34478 +# - CVE-2022-34479 +# - CVE-2022-34481 +# - CVE-2022-34484 +# 91.10.0-r0: +# - CVE-2022-31736 +# - CVE-2022-31737 +# - CVE-2022-31738 +# - CVE-2022-31739 +# - CVE-2022-31740 +# - CVE-2022-31741 +# - CVE-2022-31742 +# - CVE-2022-31747 +# 91.9.1-r0: +# - CVE-2022-1529 +# - CVE-2022-1802 +# 91.9.0-r0: +# - CVE-2022-29909 +# - CVE-2022-29911 +# - CVE-2022-29912 +# - CVE-2022-29914 +# - CVE-2022-29916 +# - CVE-2022-29917 +# 91.8.0-r0: +# - CVE-2022-1097 +# - CVE-2022-1196 +# - CVE-2022-24713 +# - CVE-2022-28281 +# - CVE-2022-28282 +# - CVE-2022-28285 +# - CVE-2022-28286 +# - CVE-2022-28289 +# 91.7.0-r0: +# - CVE-2022-26381 +# - CVE-2022-26383 +# - CVE-2022-26384 +# - CVE-2022-26386 +# - CVE-2022-26387 +# 91.6.1-r0: +# - CVE-2022-26485 +# - CVE-2022-26486 +# 91.6.0-r0: +# - CVE-2022-22754 +# - CVE-2022-22756 +# - CVE-2022-22759 +# - CVE-2022-22760 +# - CVE-2022-22761 +# - CVE-2022-22763 +# - CVE-2022-22764 +# 91.5.0-r0: +# - CVE-2021-4140 +# - CVE-2022-22737 +# - CVE-2022-22738 +# - CVE-2022-22739 +# - CVE-2022-22740 +# - CVE-2022-22741 +# - CVE-2022-22742 +# - CVE-2022-22743 +# - CVE-2022-22744 +# - CVE-2022-22745 +# - CVE-2022-22746 +# - CVE-2022-22747 +# - CVE-2022-22748 +# - CVE-2022-22751 +# 91.4.0-r0: +# - CVE-2021-43536 +# - CVE-2021-43537 +# - CVE-2021-43538 +# - CVE-2021-43539 +# - CVE-2021-43541 +# - CVE-2021-43542 +# - CVE-2021-43543 +# - CVE-2021-43545 +# - CVE-2021-43546 +# 91.3.0-r0: +# - CVE-2021-38503 +# - CVE-2021-38504 +# - CVE-2021-38505 +# - CVE-2021-38506 +# - CVE-2021-38507 +# - CVE-2021-38508 +# - CVE-2021-38509 +# - CVE-2021-38510 +# 91.2.0-r0: +# - CVE-2021-32810 +# - CVE-2021-38492 +# - CVE-2021-38493 +# - CVE-2021-38495 +# - CVE-2021-38496 +# - CVE-2021-38497 +# - CVE-2021-38498 +# - CVE-2021-38500 +# - CVE-2021-38501 +# 78.13.0-r0: +# - CVE-2021-29980 +# - CVE-2021-29984 +# - CVE-2021-29985 +# - CVE-2021-29986 +# - CVE-2021-29988 +# - CVE-2021-29989 +# 78.12.0-r0: +# - CVE-2021-29970 +# - CVE-2021-29976 +# - CVE-2021-30547 +# 78.11.0-r0: +# - CVE-2021-29967 +# 78.10.0-r0: +# - CVE-2021-23961 +# - CVE-2021-23994 +# - CVE-2021-23995 +# - CVE-2021-23998 +# - CVE-2021-23999 +# - CVE-2021-24002 +# - CVE-2021-29945 +# - CVE-2021-29946 +# 78.9.0-r0: +# - CVE-2021-23981 +# - CVE-2021-23982 +# - CVE-2021-23984 +# - CVE-2021-23987 +# 78.8.0-r0: +# - CVE-2021-23968 +# - CVE-2021-23969 +# - CVE-2021-23973 +# - CVE-2021-23978 +# 78.7.0-r0: +# - CVE-2020-26976 +# - CVE-2021-23953 +# - CVE-2021-23954 +# - CVE-2021-23960 +# - CVE-2021-23964 +# 78.6.1-r0: +# - CVE-2020-16044 +# 78.6.0-r0: +# - CVE-2020-16042 +# - CVE-2020-26971 +# - CVE-2020-26973 +# - CVE-2020-26974 +# - CVE-2020-26978 +# - CVE-2020-35111 +# - CVE-2020-35112 +# - CVE-2020-35113 +# 78.5.0-r0: +# - CVE-2020-15683 +# - CVE-2020-15969 +# - CVE-2020-15999 +# - CVE-2020-16012 +# - CVE-2020-26950 +# - CVE-2020-26951 +# - CVE-2020-26953 +# - CVE-2020-26956 +# - CVE-2020-26958 +# - CVE-2020-26959 +# - CVE-2020-26960 +# - CVE-2020-26961 +# - CVE-2020-26965 +# - CVE-2020-26966 +# - CVE-2020-26968 +# 78.3.0-r0: +# - CVE-2020-15673 +# - CVE-2020-15676 +# - CVE-2020-15677 +# - CVE-2020-15678 +# 78.2.0-r0: +# - CVE-2020-15663 +# - CVE-2020-15664 +# - CVE-2020-15670 +# 78.1.0-r0: +# - CVE-2020-15652 +# - CVE-2020-15653 +# - CVE-2020-15654 +# - CVE-2020-15655 +# - CVE-2020-15656 +# - CVE-2020-15657 +# - CVE-2020-15658 +# - CVE-2020-15659 +# - CVE-2020-6463 +# - CVE-2020-6514 +# 68.10.0-r0: +# - CVE-2020-12417 +# - CVE-2020-12418 +# - CVE-2020-12419 +# - CVE-2020-12420 +# - CVE-2020-12421 +# 68.9.0-r0: +# - CVE-2020-12399 +# - CVE-2020-12405 +# - CVE-2020-12406 +# - CVE-2020-12410 +# 68.8.0-r0: +# - CVE-2020-12387 +# - CVE-2020-12388 +# - CVE-2020-12389 +# - CVE-2020-12392 +# - CVE-2020-12393 +# - CVE-2020-12395 +# - CVE-2020-6831 +# 68.7.0-r0: +# - CVE-2020-6821 +# - CVE-2020-6822 +# - CVE-2020-6825 +# 68.6.1-r0: +# - CVE-2020-6819 +# - CVE-2020-6820 +# 68.6.0-r0: +# - CVE-2019-20503 +# - CVE-2020-6805 +# - CVE-2020-6806 +# - CVE-2020-6807 +# - CVE-2020-6811 +# - CVE-2020-6812 +# - CVE-2020-6814 +# 68.5.0-r0: +# - CVE-2020-6796 +# - CVE-2020-6797 +# - CVE-2020-6798 +# - CVE-2020-6799 +# - CVE-2020-6800 +# 68.4.1-r0: +# - CVE-2019-17016 +# - CVE-2019-17022 +# - CVE-2019-17024 +# - CVE-2019-17026 +# 68.3.0-r0: +# - CVE-2019-17005 +# - CVE-2019-17008 +# - CVE-2019-17009 +# - CVE-2019-17010 +# - CVE-2019-17011 +# - CVE-2019-17012 +# 68.2.0-r0: +# - CVE-2019-11757 +# - CVE-2019-11758 +# - CVE-2019-11759 +# - CVE-2019-11760 +# - CVE-2019-11761 +# - CVE-2019-11762 +# - CVE-2019-11763 +# - CVE-2019-11764 +# - CVE-2019-15903 +# 68.1.0-r0: +# - CVE-2019-9812 +# - CVE-2019-11740 +# - CVE-2019-11742 +# - CVE-2019-11743 +# - CVE-2019-11744 +# - CVE-2019-11746 +# - CVE-2019-11752 +# 68.0.2-r0: +# - CVE-2019-11733 +# 68.0-r0: +# - CVE-2019-11709 +# - CVE-2019-11711 +# - CVE-2019-11712 +# - CVE-2019-11713 +# - CVE-2019-11715 +# - CVE-2019-11717 +# - CVE-2019-11719 +# - CVE-2019-11729 +# - CVE-2019-11730 +# - CVE-2019-9811 +# 60.7.2-r0: +# - CVE-2019-11708 +# 60.7.1-r0: +# - CVE-2019-11707 +# 60.7.0-r0: +# - CVE-2019-9815 +# - CVE-2019-9816 +# - CVE-2019-9817 +# - CVE-2019-9818 +# - CVE-2019-9819 +# - CVE-2019-9820 +# - CVE-2019-11691 +# - CVE-2019-11692 +# - CVE-2019-11693 +# - CVE-2019-7317 +# - CVE-2019-9797 +# - CVE-2018-18511 +# - CVE-2019-11694 +# - CVE-2019-11698 +# - CVE-2019-5798 +# - CVE-2019-9800 +# 60.6.1-r0: +# - CVE-2019-9810 +# - CVE-2019-9813 +# - CVE-2019-9790 +# - CVE-2019-9791 +# - CVE-2019-9792 +# - CVE-2019-9793 +# - CVE-2019-9794 +# - CVE-2019-9795 +# - CVE-2019-9796 +# - CVE-2019-9801 +# - CVE-2018-18506 +# - CVE-2019-9788 +# 60.5.2-r0: +# - CVE-2019-5785 +# - CVE-2018-18335 +# - CVE-2018-18356 +# 60.5.0-r0: +# - CVE-2018-18500 +# - CVE-2018-18505 +# - CVE-2018-18501 +# 52.6.0-r0: +# - CVE-2018-5089 +# - CVE-2018-5091 +# - CVE-2018-5095 +# - CVE-2018-5096 +# - CVE-2018-5097 +# - CVE-2018-5098 +# - CVE-2018-5099 +# - CVE-2018-5102 +# - CVE-2018-5103 +# - CVE-2018-5104 +# - CVE-2018-5117 +# 52.5.2-r0: +# - CVE-2017-7843 + +# we need this because cargo verifies checksums of all files in vendor +# crates when it builds and gives us no way to override or update the +# file sanely... so just clear out the file list +_clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json +} + +export SHELL=/bin/sh +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +export USE_SHORT_LIBNAME=1 +export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system +export MOZ_APP_PROFILE="mozilla/firefox" +export MOZ_APP_REMOTINGNAME=firefox-esr +export MOZBUILD_STATE_PATH="$srcdir"/mozbuild +# disable desktop notifications +export MOZ_NOSPAM=1 +# Find our triplet JSON +export RUST_TARGET="$CTARGET" + +# Build with Clang, takes less RAM +export CC="clang" +export CXX="clang++" + +# set rpath so linker finds the libs +export LDFLAGS="$LDFLAGS -Wl,-rpath,$_mozappdir" + +# let firefox do this itself. +unset CARGO_PROFILE_RELEASE_OPT_LEVEL +unset CARGO_PROFILE_RELEASE_LTO + +export CFLAGS="$CFLAGS -O2" +export CXXFLAGS="$CXXFLAGS -O2 -Wno-deprecated-builtins" + +prepare() { + default_prepare + cp "$srcdir"/stab.h toolkit/crashreporter/google-breakpad/src/ + + base64 -d "$srcdir"/mozilla-location.keys > "$builddir"/mozilla-api-key + + _clear_vendor_checksums audio_thread_priority + _clear_vendor_checksums target-lexicon-0.9.0 + _clear_vendor_checksums packed_simd_2 + _clear_vendor_checksums bindgen + + # webrtc does not build on these + case "$CARCH" in + ppc64le) + local webrtc_config="ac_add_options --disable-webrtc" + ;; + esac + case "$CARCH" in + armv7) + # broken here + local rust_simd="ac_add_options --disable-rust-simd" + ;; + *) + local rust_simd="ac_add_options --enable-rust-simd" + ;; + esac + + case "$CARCH" in + aarch64|arm*|x86*) + # disable-elf-hack: exists only on aarch64, arm*, x86, x86_64 + local arch_config="ac_add_options --disable-elf-hack" + ;; + esac + + # sandbox only supported here + case "$CARCH" in + x86*|armv7|aarch64) + local sandbox="ac_add_options --enable-sandbox" + ;; + *) + local sandbox="ac_add_options --disable-sandbox" + ;; + esac + + cat > base-mozconfig <<-EOF + # disable unwanted things + ac_add_options --disable-bootstrap + ac_add_options --disable-cargo-incremental + ac_add_options --disable-crashreporter + ac_add_options --disable-debug + ac_add_options --disable-debug-symbols + ac_add_options --disable-install-strip + ac_add_options --disable-jemalloc + ac_add_options --disable-strip + ac_add_options --disable-tests + ac_add_options --disable-updater + + # features + ac_add_options --enable-alsa + ac_add_options --enable-dbus + ac_add_options --enable-default-toolkit=cairo-gtk3-wayland + ac_add_options --enable-ffmpeg + ac_add_options --enable-hardening + ac_add_options --enable-linker=lld + ac_add_options --enable-necko-wifi + ac_add_options --enable-official-branding + ac_add_options --enable-optimize="$CFLAGS" + ac_add_options --enable-pulseaudio + ac_add_options --enable-release + ac_add_options --enable-update-channel=release + + # system libs + ac_add_options --enable-system-pixman + ac_add_options --with-system-ffi + ac_add_options --with-system-icu + ac_add_options --with-system-jpeg + ac_add_options --with-system-libevent + ac_add_options --with-system-libvpx + ac_add_options --with-system-nspr + ac_add_options --with-system-nss + ac_add_options --with-system-png + ac_add_options --with-system-webp + ac_add_options --with-system-zlib + + # misc + ac_add_options --allow-addon-sideload + ac_add_options --prefix=/usr + ac_add_options --with-app-name=firefox-esr + ac_add_options --with-distribution-id=org.alpinelinux + ac_add_options --with-libclang-path=/usr/lib + ac_add_options --with-unsigned-addon-scopes=app,system + ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot + ac_add_options --host=$CHOST + ac_add_options --target=$CTARGET + + # objdir + mk_add_options MOZ_OBJDIR="$builddir/obj" + + mk_add_options RUSTFLAGS="$RUSTFLAGS" + + # keys + # these are for alpine linux use only + ac_add_options --with-mozilla-api-keyfile="$builddir/mozilla-api-key" + + $arch_config + $rust_simd + $sandbox + $webrtc_config + EOF +} + +build() { + cat > .mozconfig base-mozconfig + + export MOZ_BUILD_DATE=$(date ${SOURCE_DATE_EPOCH:+ -d@${SOURCE_DATE_EPOCH}} "+%Y%m%d%H%M%S") + + # for lto + ulimit -n 4096 + + # can't be set here and fail + unset RUSTFLAGS + + local thinlto_jobs=${JOBS:-1} + + case "$CARCH" in + # on this platforms, lld seems to not utilise >1 threads for thinlto for some reason. + # at the same time, having more than 8 also crashes lld for firefox buildsystems (why?). + aarch64) + if [ $thinlto_jobs -gt 8 ]; then + thinlto_jobs=8 + fi + ;; + esac + + export LDFLAGS="$LDFLAGS -Wl,--thinlto-jobs=$thinlto_jobs" + + case "$CARCH" in + # lto for 64-bit systems only + aarch64|x86_64|ppc64le) + cat > .mozconfig base-mozconfig <<-EOF + ac_add_options --enable-lto=cross + EOF + esac + + ./mach build +} + +package() { + DESTDIR="$pkgdir" ./mach install + + local _png + for _png in ./browser/branding/official/default*.png; do + local i=${_png%.png} + i=${i##*/default} + install -Dm644 "$_png" \ + "$pkgdir"/usr/share/icons/hicolor/"$i"x"$i"/apps/firefox-esr.png + done + + install -Dm644 browser/branding/official/content/about-logo.png \ + "$pkgdir"/usr/share/icons/hicolor/192x192/apps/firefox-esr.png + install -Dm644 browser/branding/official/content/about-logo@2x.png \ + "$pkgdir"/usr/share/icons/hicolor/384x384/apps/firefox-esr.png + install -Dm644 browser/branding/official/content/about-logo.svg \ + "$pkgdir"/usr/share/icons/hicolor/scalable/apps/firefox-esr.svg + + install -Dm644 "$srcdir"/firefox.desktop \ + "$pkgdir"/usr/share/applications/firefox-esr.desktop + + # install our vendor prefs + install -Dm644 "$srcdir"/vendor-prefs.js \ + "$pkgdir"/$_mozappdir/browser/defaults/preferences/vendor.js + + # Generate appdata file + mkdir -p "$pkgdir"/usr/share/metainfo/ + export VERSION="$pkgver" + export DATE="$_releasedate" + envsubst < "$builddir"/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in > "$pkgdir"/usr/share/metainfo/org.mozilla.firefox-esr.appdata.xml + + # Replace duplicate binary with wrapper + # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + install -Dm755 /dev/stdin "$pkgdir"/usr/bin/firefox-esr <<- EOF + #!/bin/sh + exec $_mozappdir/firefox-esr "\$@" + EOF + rm "$pkgdir"/$_mozappdir/firefox-esr-bin + ln -sfv /usr/bin/firefox-esr "$pkgdir"/$_mozappdir/firefox-esr-bin +} + +sha512sums=" +f2b53c35bdd22a3de6f32699b832babcbf499667197c02dd50cf0b6cd956e0f4471f420938c2ab72f0a0686ed99fe74e3184afe9b5f7169130879b8f8fd99f0b firefox-102.10.0esr.source.tar.xz +4e584621145cf8add069c6dac18e805b3274a1ee402d84e924df2341f7d3c5be261a93ef51283bacbd606f47fbdc628c4323ecc31efc5b403b8d224b18dc278f allow-custom-rust-vendor.patch +b1cb2db3122634f66d2bae7066e76f2dcd455c464e021db4de3b0a08314df95cb667846081682db549dd2af8a00831cabe44a2420c66cdfb5e3b5fa7e6bd21d3 avoid-redefinition.patch +0f793fc991e35ac17585c7ab5f86fe5925401bb9512167909706b85b51155e28b037e3a7ab775b243804195477ade36ec4ab32c3118885c52364079526ae26a9 bindgen.patch +454ea3263cabce099accbdc47aaf83be26a19f8b5a4568c01a7ef0384601cf8315efd86cd917f9c8bf419c2c845db89a905f3ff9a8eb0c8e41042e93aa96a85c disable-moz-stackwalk.patch +f7b3b45ba04d05d17439d009bf0c9f27881e126f424e2257552338a0c1e3771ee1289c044babcb0920f62af62873a268c0cf524e1d35711e6dc8b808ca5e9f26 esr-metainfo.patch +a13dee87adf659423f5b3fa0358cfbde135fa614c85dd170d1a48d32ee080e27aef062d3a8e3c45059c41463fda579f8900988166ccb51568793ee7ef9080d04 firefox-esr-ffmpeg6.patch +c2e17f269070d782154f843b95bf68be25d8c4356825dd436b1877aab63ac023051899371da5c21f6151970b2562376c2dadd2d6a038446e5fa621e2495668e1 ffmpeg6-fixup.patch +d3a54897089eda9fdfe4b25ade1cb2c01c4b31fa9bf0e0ddbb0bbe674072ec5d36a6e52f791a8cbc8d3908e912ac2d7edec69b34d87ecca0acca876d45974c8d fix-neon-aom.patch +2f4f15974d52de4bb273b62a332d13620945d284bbc6fe6bd0a1f58ff7388443bc1d3bf9c82cc31a8527aad92b0cd3a1bc41d0af5e1800e0dcbd7033e58ffd71 fix-fortify-system-wrappers.patch +cd68b89e29e5f6379fbd5679db27b9a5ef70ea65e51c0d0a8137e1f1fd210e35a8cfb047798e9549bc7275606d7ec5c8d8af1335d29da4699db7acd8bc7ff556 fix-rust-target.patch +305c874fdea3096e9c4c6aa6520ac64bb1c347c4b59db8360096646593fe684c3b5377874d91cecd33d56d1410b4714fbdea2b514923723ecbeff79d51265d9b fix-webrtc-glibcisms.patch +49aa1dfbe11ed5370e839afb190da7f55ae4887b35645865efe25d398d890563722caedd5696d648ad71448621fbc8bab8def1a3d079e301d6414f0f20e96758 gcc13.patch +a4a3e062661bda64d502d426c480ac9645345860118de9df9ffe6e0597738c70c11e5cdef2d4fd12c5e2ee30a09310159230524655a419a4f7e4eeeb0f3c06b0 mallinfo.patch +f3d419880cc7f043b6eb547894d486457d407640be2bd8b402eb3a534ccea39568f6d506fc44a3b29c94eb0dc6fc2bec6600d161786fd233d26b1dc8970f5ab4 python-deps.patch +2518f2fc75b5db30058e0735f47d60fdf1e7adfaeee4b33fb2afb1bd9a616ce943fd88f4404d0802d4083703f4acf1d5ad42377218d025bc768807fbaf7e1609 sandbox-fork.patch +b7d0a6126bdf6c0569f80aabf5b37ed2c7a35712eb8a0404a2d85381552f5555d4f97d213ea26cec6a45dc2785f22439376ed5f8e78b4fd664ef0223307b333e sandbox-largefile.patch +94433c5ffdbe579c456d95c5f053f61fcbab2f652fa90bc69dcc27d9a1507a8e5c677adeadae9a7a75cc9a55184c1040737f4dfd10b279c088ef016561e6f135 sandbox-sched_setscheduler.patch +12fbe50d94624931a581314b8e6e228a1f8a4550704a6ee4f8904184ac4727efd90982e87a8fdd318e15515f9430dfc6cf7455b301e903003027b3f0afa79795 zstandard.patch +0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h +d354f48a29bfc16719f3b230b1395063239d4420f9e47522de4662392d9697b15f931ca3bf6055d100fa33d61a9a1a13477687d5eac99e50ae7dbef9882a5808 firefox.desktop +382510375b1a2fa79be0ab79e3391a021ae2c022429ffbaa7e7a69166f99bb56d01e59a1b10688592a29238f21c9d6977672bd77f9fae439b66bdfe0c55ddb15 mozilla-location.keys +fc45bc3ffb9404e5338ea26a9f04807b40f6f516324972cddd48bedb91b8bd7c6b8d4e03a0209020f5e67b703bc4ff89389985791b9bd544a0fc3951e2dc338e vendor-prefs.js +" diff --git a/user/firefox-esr/allow-custom-rust-vendor.patch b/user/firefox-esr/allow-custom-rust-vendor.patch new file mode 100644 index 0000000..218650f --- /dev/null +++ b/user/firefox-esr/allow-custom-rust-vendor.patch @@ -0,0 +1,564 @@ +From a5a3db2d32ff1d359aef5ec586b91164570c1685 Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Tue, 5 Nov 2019 09:56:15 -0800 +Subject: [PATCH 1/7] Support custom vendor strings. + +Add support for custom vendors, as in "x86_64-gentoo-linux-musl". + +Fixes #33. +--- + src/targets.rs | 108 ++++++++++++++++++++++++++++++++++++++++++++++++- + src/triple.rs | 4 -- + 2 files changed, 106 insertions(+), 6 deletions(-) + +diff --git a/src/targets.rs b/src/targets.rs +index 6ae570e..90b2736 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs +@@ -1,6 +1,8 @@ + // This file defines all the identifier enums and target-aware logic. + + use crate::triple::{Endianness, PointerWidth, Triple}; ++use alloc::boxed::Box; ++use alloc::string::String; + use core::fmt; + use core::str::FromStr; + +@@ -292,7 +294,7 @@ impl Aarch64Architecture { + + /// The "vendor" field, which in practice is little more than an arbitrary + /// modifier. +-#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] ++#[derive(Clone, Debug, PartialEq, Eq, Hash)] + #[allow(missing_docs)] + pub enum Vendor { + Unknown, +@@ -306,6 +308,15 @@ pub enum Vendor { + Sun, + Uwp, + Wrs, ++ ++ /// A custom vendor. "Custom" in this context means that the vendor is ++ /// not specifically recognized by upstream Autotools, LLVM, Rust, or other ++ /// relevant authorities on triple naming. It's useful for people building ++ /// and using locally patched toolchains. ++ /// ++ /// Outside of such patched environments, users of `target-lexicon` should ++ /// treat `Custom` the same as `Unknown` and ignore the string. ++ Custom(Box), + } + + /// The "operating system" field, which sometimes implies an environment, and +@@ -717,6 +728,7 @@ impl fmt::Display for Vendor { + Vendor::Sun => "sun", + Vendor::Uwp => "uwp", + Vendor::Wrs => "wrs", ++ Vendor::Custom(ref name) => name, + }; + f.write_str(s) + } +@@ -738,7 +750,46 @@ impl FromStr for Vendor { + "sun" => Vendor::Sun, + "uwp" => Vendor::Uwp, + "wrs" => Vendor::Wrs, +- _ => return Err(()), ++ custom => { ++ use alloc::borrow::ToOwned; ++ ++ // A custom vendor. Since triple syntax is so loosely defined, ++ // be as conservative as we can to avoid potential ambiguities. ++ // We err on the side of being too strict here, as we can ++ // always relax it if needed. ++ ++ // Don't allow empty string names. ++ if custom.is_empty() { ++ return Err(()); ++ } ++ ++ // Don't allow any other recognized name as a custom vendor, ++ // since vendors can be omitted in some contexts. ++ if Architecture::from_str(custom).is_ok() ++ || OperatingSystem::from_str(custom).is_ok() ++ || Environment::from_str(custom).is_ok() ++ || BinaryFormat::from_str(custom).is_ok() ++ { ++ return Err(()); ++ } ++ ++ // Require the first character to be an ascii lowercase. ++ if !custom.chars().nth(0).unwrap().is_ascii_lowercase() { ++ return Err(()); ++ } ++ ++ // Restrict the set of characters permitted in a custom vendor. ++ if custom ++ .find(|c: char| { ++ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.') ++ }) ++ .is_some() ++ { ++ return Err(()); ++ } ++ ++ Vendor::Custom(Box::new(custom.to_owned())) ++ } + }) + } + } +@@ -1120,4 +1171,57 @@ mod tests { + assert_eq!(t.environment, Environment::Eabihf); + assert_eq!(t.binary_format, BinaryFormat::Elf); + } ++ ++ #[test] ++ fn custom_vendors() { ++ assert!(Triple::from_str("x86_64--linux").is_err()); ++ assert!(Triple::from_str("x86_64-42-linux").is_err()); ++ assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err()); ++ assert!(Triple::from_str("x86_64-^-linux").is_err()); ++ assert!(Triple::from_str("x86_64- -linux").is_err()); ++ assert!(Triple::from_str("x86_64-CustomVendor-linux").is_err()); ++ assert!(Triple::from_str("x86_64-linux-linux").is_err()); ++ assert!(Triple::from_str("x86_64-x86_64-linux").is_err()); ++ assert!(Triple::from_str("x86_64-elf-linux").is_err()); ++ assert!(Triple::from_str("x86_64-gnu-linux").is_err()); ++ assert!(Triple::from_str("x86_64-linux-customvendor").is_err()); ++ assert!(Triple::from_str("customvendor").is_err()); ++ assert!(Triple::from_str("customvendor-x86_64").is_err()); ++ assert!(Triple::from_str("x86_64-").is_err()); ++ assert!(Triple::from_str("x86_64--").is_err()); ++ ++ let t = Triple::from_str("x86_64-customvendor-linux") ++ .expect("can't parse target with custom vendor"); ++ assert_eq!(t.architecture, Architecture::X86_64); ++ assert_eq!( ++ t.vendor, ++ Vendor::Custom(Box::new(String::from_str("customvendor").unwrap())) ++ ); ++ assert_eq!(t.operating_system, OperatingSystem::Linux); ++ assert_eq!(t.environment, Environment::Unknown); ++ assert_eq!(t.binary_format, BinaryFormat::Elf); ++ assert_eq!(t.to_string(), "x86_64-customvendor-linux"); ++ ++ let t = Triple::from_str("x86_64-customvendor") ++ .expect("can't parse target with custom vendor"); ++ assert_eq!(t.architecture, Architecture::X86_64); ++ assert_eq!( ++ t.vendor, ++ Vendor::Custom(Box::new(String::from_str("customvendor").unwrap())) ++ ); ++ assert_eq!(t.operating_system, OperatingSystem::Unknown); ++ assert_eq!(t.environment, Environment::Unknown); ++ assert_eq!(t.binary_format, BinaryFormat::Unknown); ++ ++ assert_eq!( ++ Triple::from_str("unknown-foo"), ++ Ok(Triple { ++ architecture: Architecture::Unknown, ++ vendor: Vendor::Custom(Box::new(String::from_str("foo").unwrap())), ++ operating_system: OperatingSystem::Unknown, ++ environment: Environment::Unknown, ++ binary_format: BinaryFormat::Unknown, ++ }) ++ ); ++ } + } +diff --git a/src/triple.rs b/src/triple.rs +index 36dcd9a..1abda26 100644 +--- a/third_party/rust/target-lexicon.0.9.0/src/triple.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/triple.rs +@@ -322,10 +322,6 @@ mod tests { + Triple::from_str("foo"), + Err(ParseError::UnrecognizedArchitecture("foo".to_owned())) + ); +- assert_eq!( +- Triple::from_str("unknown-foo"), +- Err(ParseError::UnrecognizedVendor("foo".to_owned())) +- ); + assert_eq!( + Triple::from_str("unknown-unknown-foo"), + Err(ParseError::UnrecognizedOperatingSystem("foo".to_owned())) + +From 6f90d7274dce4e7f9bb120f6b36cf26881bde9a7 Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Tue, 5 Nov 2019 10:33:56 -0800 +Subject: [PATCH 2/7] Add more tests. + +--- + src/targets.rs | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/src/targets.rs b/src/targets.rs +index 90b2736..7d1f069 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs +@@ -1174,6 +1174,7 @@ mod tests { + + #[test] + fn custom_vendors() { ++ // Test various invalid cases. + assert!(Triple::from_str("x86_64--linux").is_err()); + assert!(Triple::from_str("x86_64-42-linux").is_err()); + assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err()); +@@ -1190,6 +1191,31 @@ mod tests { + assert!(Triple::from_str("x86_64-").is_err()); + assert!(Triple::from_str("x86_64--").is_err()); + ++ // Test various Unicode things. ++ assert!( ++ Triple::from_str("x86_64-𝓬𝓾𝓼𝓽𝓸𝓶𝓿𝓮𝓷𝓭𝓸𝓻-linux").is_err(), ++ "unicode font hazard" ++ ); ++ assert!( ++ Triple::from_str("x86_64-ćúśtőḿvéńdőŕ-linux").is_err(), ++ "diacritical mark stripping hazard" ++ ); ++ assert!( ++ Triple::from_str("x86_64-customvendοr-linux").is_err(), ++ "homoglyph hazard" ++ ); ++ assert!(Triple::from_str("x86_64-customvendor-linux").is_ok()); ++ assert!( ++ Triple::from_str("x86_64-ffi-linux").is_err(), ++ "normalization hazard" ++ ); ++ assert!(Triple::from_str("x86_64-ffi-linux").is_ok()); ++ assert!( ++ Triple::from_str("x86_64-custom‍vendor-linux").is_err(), ++ "zero-width character hazard" ++ ); ++ ++ // Test some valid cases. + let t = Triple::from_str("x86_64-customvendor-linux") + .expect("can't parse target with custom vendor"); + assert_eq!(t.architecture, Architecture::X86_64); +@@ -1202,8 +1228,8 @@ mod tests { + assert_eq!(t.binary_format, BinaryFormat::Elf); + assert_eq!(t.to_string(), "x86_64-customvendor-linux"); + +- let t = Triple::from_str("x86_64-customvendor") +- .expect("can't parse target with custom vendor"); ++ let t = ++ Triple::from_str("x86_64-customvendor").expect("can't parse target with custom vendor"); + assert_eq!(t.architecture, Architecture::X86_64); + assert_eq!( + t.vendor, + +From c0e318b3c1be2d1965579f07dd563fb9cc0c4eb1 Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Tue, 5 Nov 2019 12:56:31 -0800 +Subject: [PATCH 3/7] Use `.chars().any(...)` instead of + `.find(...).is_some()`. + +--- + src/targets.rs | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/src/targets.rs b/src/targets.rs +index 7d1f069..1078dd3 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs ++++ b/third_party/rust/target-lexicon/src-0.9.0/targets.rs +@@ -779,12 +779,9 @@ impl FromStr for Vendor { + } + + // Restrict the set of characters permitted in a custom vendor. +- if custom +- .find(|c: char| { +- !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.') +- }) +- .is_some() +- { ++ if custom.chars().any(|c: char| { ++ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.') ++ }) { + return Err(()); + } + + +From f319950528654c772193d9eb3bf40bc8df35fcae Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Thu, 7 Nov 2019 15:15:48 -0800 +Subject: [PATCH 4/7] Fix build.rs to generate the correct code to build + Vendors. + +--- + build.rs | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/build.rs b/build.rs +index a0ba3b7..446f9e7 100644 +--- a/third_party/rust/target-lexicon-0.9.0/build.rs ++++ b/third_party/rust/target-lexicon-0.9.0/build.rs +@@ -32,6 +32,7 @@ mod parse_error { + } + } + ++use self::targets::Vendor; + use self::triple::Triple; + + fn main() { +@@ -60,7 +61,7 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> { + " architecture: Architecture::{:?},", + triple.architecture + )?; +- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?; ++ writeln!(out, " vendor: {},", vendor_display(&triple.vendor))?; + writeln!( + out, + " operating_system: OperatingSystem::{:?},", +@@ -90,7 +91,7 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> { + writeln!(out, "impl Vendor {{")?; + writeln!(out, " /// Return the vendor for the current host.")?; + writeln!(out, " pub const fn host() -> Self {{")?; +- writeln!(out, " Vendor::{:?}", triple.vendor)?; ++ writeln!(out, " {}", vendor_display(&triple.vendor))?; + writeln!(out, " }}")?; + writeln!(out, "}}")?; + writeln!(out)?; +@@ -160,3 +161,12 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> { + + Ok(()) + } ++ ++fn vendor_display(vendor: &Vendor) -> String { ++ match vendor { ++ Vendor::Custom(custom) => { ++ format!("Vendor::Custom(Box::new(String::from_str({:?})))", custom) ++ } ++ known => format!("Vendor::{:?}", known), ++ } ++} + +From e558f6934535be3b8ccc9a99a33e861cb7431dfe Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Fri, 8 Nov 2019 12:10:34 -0800 +Subject: [PATCH 5/7] Fix custom vendors in `const fn` contexts. + +--- + build.rs | 15 +++++++++++---- + src/lib.rs | 4 ++-- + src/targets.rs | 51 ++++++++++++++++++++++++++++++++++++++++++-------- + 3 files changed, 56 insertions(+), 14 deletions(-) + +diff --git a/build.rs b/build.rs +index 446f9e7..e88206e 100644 +--- a/third_party/rust/target-lexicon-0.9.0/build.rs ++++ b/third_party/rust/target-lexicon-0.9.0/build.rs +@@ -53,6 +53,8 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> { + writeln!(out, "use crate::Aarch64Architecture::*;")?; + writeln!(out, "#[allow(unused_imports)]")?; + writeln!(out, "use crate::ArmArchitecture::*;")?; ++ writeln!(out, "#[allow(unused_imports)]")?; ++ writeln!(out, "use crate::CustomVendor;")?; + writeln!(out)?; + writeln!(out, "/// The `Triple` of the current host.")?; + writeln!(out, "pub const HOST: Triple = Triple {{")?; +@@ -139,7 +141,11 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> { + " architecture: Architecture::{:?},", + triple.architecture + )?; +- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?; ++ writeln!( ++ out, ++ " vendor: {},", ++ vendor_display(&triple.vendor) ++ )?; + writeln!( + out, + " operating_system: OperatingSystem::{:?},", +@@ -164,9 +170,10 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> { + + fn vendor_display(vendor: &Vendor) -> String { + match vendor { +- Vendor::Custom(custom) => { +- format!("Vendor::Custom(Box::new(String::from_str({:?})))", custom) +- } ++ Vendor::Custom(custom) => format!( ++ "Vendor::Custom(CustomVendor::Static({:?}))", ++ custom.as_str() ++ ), + known => format!("Vendor::{:?}", known), + } + } +diff --git a/src/lib.rs b/src/lib.rs +index 8d6da8d..70f6488 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/lib.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/lib.rs +@@ -28,7 +28,7 @@ mod triple; + pub use self::host::HOST; + pub use self::parse_error::ParseError; + pub use self::targets::{ +- Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, Environment, OperatingSystem, +- Vendor, ++ Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, CustomVendor, Environment, ++ OperatingSystem, Vendor, + }; + pub use self::triple::{CallingConvention, Endianness, PointerWidth, Triple}; +diff --git a/src/targets.rs b/src/targets.rs +index 1078dd3..7152020 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs +@@ -4,6 +4,7 @@ use crate::triple::{Endianness, PointerWidth, Triple}; + use alloc::boxed::Box; + use alloc::string::String; + use core::fmt; ++use core::hash::{Hash, Hasher}; + use core::str::FromStr; + + /// The "architecture" field, which in some cases also specifies a specific +@@ -292,6 +293,39 @@ impl Aarch64Architecture { + } + } + ++/// A string for a `Vendor::Custom` that can either be used in `const` ++/// contexts or hold dynamic strings. ++#[derive(Clone, Debug, Eq)] ++pub enum CustomVendor { ++ /// An owned `String`. This supports the general case. ++ Owned(Box), ++ /// A static `str`, so that `CustomVendor` can be constructed in `const` ++ /// contexts. ++ Static(&'static str), ++} ++ ++impl CustomVendor { ++ /// Extracts a string slice. ++ pub fn as_str(&self) -> &str { ++ match self { ++ CustomVendor::Owned(s) => s, ++ CustomVendor::Static(s) => s, ++ } ++ } ++} ++ ++impl PartialEq for CustomVendor { ++ fn eq(&self, other: &Self) -> bool { ++ self.as_str() == other.as_str() ++ } ++} ++ ++impl Hash for CustomVendor { ++ fn hash(&self, state: &mut H) { ++ self.as_str().hash(state) ++ } ++} ++ + /// The "vendor" field, which in practice is little more than an arbitrary + /// modifier. + #[derive(Clone, Debug, PartialEq, Eq, Hash)] +@@ -316,7 +350,7 @@ pub enum Vendor { + /// + /// Outside of such patched environments, users of `target-lexicon` should + /// treat `Custom` the same as `Unknown` and ignore the string. +- Custom(Box), ++ Custom(CustomVendor), + } + + /// The "operating system" field, which sometimes implies an environment, and +@@ -728,7 +762,7 @@ impl fmt::Display for Vendor { + Vendor::Sun => "sun", + Vendor::Uwp => "uwp", + Vendor::Wrs => "wrs", +- Vendor::Custom(ref name) => name, ++ Vendor::Custom(ref name) => name.as_str(), + }; + f.write_str(s) + } +@@ -779,13 +813,14 @@ impl FromStr for Vendor { + } + + // Restrict the set of characters permitted in a custom vendor. +- if custom.chars().any(|c: char| { ++ fn is_prohibited_char(c: char) -> bool { + !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.') +- }) { ++ } ++ if custom.chars().any(is_prohibited_char) { + return Err(()); + } + +- Vendor::Custom(Box::new(custom.to_owned())) ++ Vendor::Custom(CustomVendor::Owned(Box::new(custom.to_owned()))) + } + }) + } +@@ -1218,7 +1253,7 @@ mod tests { + assert_eq!(t.architecture, Architecture::X86_64); + assert_eq!( + t.vendor, +- Vendor::Custom(Box::new(String::from_str("customvendor").unwrap())) ++ Vendor::Custom(CustomVendor::Static("customvendor")) + ); + assert_eq!(t.operating_system, OperatingSystem::Linux); + assert_eq!(t.environment, Environment::Unknown); +@@ -1230,7 +1265,7 @@ mod tests { + assert_eq!(t.architecture, Architecture::X86_64); + assert_eq!( + t.vendor, +- Vendor::Custom(Box::new(String::from_str("customvendor").unwrap())) ++ Vendor::Custom(CustomVendor::Static("customvendor")) + ); + assert_eq!(t.operating_system, OperatingSystem::Unknown); + assert_eq!(t.environment, Environment::Unknown); +@@ -1240,7 +1275,7 @@ mod tests { + Triple::from_str("unknown-foo"), + Ok(Triple { + architecture: Architecture::Unknown, +- vendor: Vendor::Custom(Box::new(String::from_str("foo").unwrap())), ++ vendor: Vendor::Custom(CustomVendor::Static("foo")), + operating_system: OperatingSystem::Unknown, + environment: Environment::Unknown, + binary_format: BinaryFormat::Unknown, + +From bc4b444133b8a5e56602f7c77c10ef3f1e7a7c78 Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Mon, 18 Nov 2019 13:45:58 -0800 +Subject: [PATCH 6/7] Add a testcase with a BOM too, just in case. + +--- + src/targets.rs | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/targets.rs b/src/targets.rs +index 7152020..9a4d990 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs +@@ -1246,6 +1246,10 @@ mod tests { + Triple::from_str("x86_64-custom‍vendor-linux").is_err(), + "zero-width character hazard" + ); ++ assert!( ++ Triple::from_str("x86_64-customvendor-linux").is_err(), ++ "BOM hazard" ++ ); + + // Test some valid cases. + let t = Triple::from_str("x86_64-customvendor-linux") + +From 721fbbe1c9cfd3adc9aaf011c62d6a36078f4133 Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Mon, 18 Nov 2019 20:56:40 -0800 +Subject: [PATCH 7/7] Use an anonymous function instead of just a local + function. + +--- + src/targets.rs | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/targets.rs b/src/targets.rs +index 9a4d990..eb5a088 100644 +--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs ++++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs +@@ -813,10 +813,9 @@ impl FromStr for Vendor { + } + + // Restrict the set of characters permitted in a custom vendor. +- fn is_prohibited_char(c: char) -> bool { ++ if custom.chars().any(|c: char| { + !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.') +- } +- if custom.chars().any(is_prohibited_char) { ++ }) { + return Err(()); + } + diff --git a/user/firefox-esr/avoid-redefinition.patch b/user/firefox-esr/avoid-redefinition.patch new file mode 100644 index 0000000..af11c50 --- /dev/null +++ b/user/firefox-esr/avoid-redefinition.patch @@ -0,0 +1,15 @@ +Author: Rasmus Thomsen +Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones +(linux/if.h), leading to redefinitions. We need to include net/if.h before +linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt +Upstream: No +--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c.orig 2020-07-28 19:24:32.359751046 +0200 ++++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:37.856343751 +0200 +@@ -31,6 +31,7 @@ + */ + + #if defined(LINUX) ++#include + #include "addrs-netlink.h" + #include + #include diff --git a/user/firefox-esr/bindgen.patch b/user/firefox-esr/bindgen.patch new file mode 100644 index 0000000..c407bfc --- /dev/null +++ b/user/firefox-esr/bindgen.patch @@ -0,0 +1,172 @@ +Submitted By: Douglas R. Reno +Date: 2022-03-19 +Initial Package Version: 102.9.0esr +Upstream Status: Applied +Origin: rust-bindgen upstream (#2338 and #2319), Self +Description: Updates the bundled rust-bindgen crate to be compatible + with Clang/LLVM 16. + + Without this patch, you will encounter "not a valid + Ident" errors when building Firefox, and it will come + out of fallback.rs in proc-macro2. This references + mfbt/Vector.h (symlinked to + firefox-build-dir/dist/include/mozilla/Vector.h) in + it's error output, but it is because LLVM changed how + it reports anonymous items. + +diff -Naurp firefox-102.9.0.orig/third_party/rust/bindgen/.cargo-checksum.json firefox-102.9.0/third_party/rust/bindgen/.cargo-checksum.json +--- firefox-102.9.0.orig/third_party/rust/bindgen/.cargo-checksum.json 2023-03-09 17:59:38.000000000 -0600 ++++ firefox-102.9.0/third_party/rust/bindgen/.cargo-checksum.json 2023-03-19 21:04:15.981453212 -0500 +@@ -1 +1 @@ +-{"files":{"Cargo.lock":"836e8f8431bd4ebdac9b1251676f6afa755757e401455259fe659e7280be8230","Cargo.toml":"3a585a6e27a177f08dedcb21f7d555e9db58fa158203273b228db91ebee4e6b3","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"29fe30d7a2729922b13a578bc8f5eedc808fd0f2ef67a3f12017548baf8f293a","build.rs":"3fe1e534c99df4ee207606794f133fb187c0948e055389f74c904994ecaed38a","csmith-fuzzing/README.md":"7107b70fedb0c0a0cadb3c439a49c1bd0119a6d38dc63b1aecc74d1942256ef2","src/callbacks.rs":"1e5a118b94977938751758ac0495b1d41ce5e280c066614a4a7cbd930f326350","src/clang.rs":"aa0644278a8319506be08904c0f6706fbcdcd72eb1e85564b8c7488bd810e126","src/codegen/bitfield_unit.rs":"a8fb1a2d97a99685106fcaac87d2013f79d2690d6a46ff05ad1e3629b6075664","src/codegen/bitfield_unit_tests.rs":"dd252134118450800b516e375c872e17b4c1aee63a7b8adbe5b2cd53434bbc7e","src/codegen/dyngen.rs":"15149bc927e5b2706f93e52a6b26ef55384b3baf40bfc9bc4343e9820479f26b","src/codegen/error.rs":"5e308b8c54b68511fc8ea2ad15ddac510172c4ff460a80a265336440b0c9653d","src/codegen/helpers.rs":"ea83104addb8af31736aaeb850e10c694cd434befe7ffaaa206208f722d72c58","src/codegen/impl_debug.rs":"1ff9ec754b610c98c757b114c6509473ead0e1a9375e9089a7fa40a41a753709","src/codegen/impl_partialeq.rs":"5e526fd88dd15dd1f04addd3c6ecea1d3da92293fadf04346d6c716791f436f9","src/codegen/mod.rs":"19fd11feefab0ff9ecaf8a01583583008269adce805508fb61b9a8acc49da586","src/codegen/struct_layout.rs":"b62c3569dcfb011daa4d09f1aa9eb732da69546c3deb9f247fa8ce7114dbc7b9","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"fafb85510b1dfc9a41ed71f7d765fca49b236deb4ee567e00204e751362aaf23","src/ir/analysis/derive.rs":"ff4821d810961696008a57ae496f95ebcdc14b4c439fe87d78a84817442fa759","src/ir/analysis/has_destructor.rs":"d9a3a24bd4cabc87cddb0c76d27da1691f8f37ffb8eadf5b5975a1c44dea99c2","src/ir/analysis/has_float.rs":"5242cc07ec4d4bdf5a792e1f8ee5758a87838314917d42dbb9dcfc19620520ce","src/ir/analysis/has_type_param_in_array.rs":"ec3fb67f782abb4c866da91bce3f7ee6f8e2310c47a54065282431b909233f7d","src/ir/analysis/has_vtable.rs":"63e2d0f62171811893615c11453bc7b39438d0d83c3eb444dec2346140d86efe","src/ir/analysis/mod.rs":"2c54f0cd6f3d86cf3fcb07d9d0be06cde839cab4170671c80d806a3f27820faf","src/ir/analysis/sizedness.rs":"17f1f2b6affd025f73853b9b5a76b3f157b5f9e563e9eaa374735fcb84c13308","src/ir/analysis/template_params.rs":"da949976a7fd04d6fc564ea6a77dfdbf4f5bf05db64687ed7a0616cba598a42d","src/ir/annotations.rs":"1c931d7bbba1e1613e9cccaab58d14f75e79b831b5c881e41f5b5257a9cbced7","src/ir/comment.rs":"31d64a49ae3d9c3c348fa2539e03306ca3a23fae429cab452e42b31ecf632145","src/ir/comp.rs":"abaa90e27dc6416f1b8db003f87888e7651d5b46c4d4526153980e5621612e54","src/ir/context.rs":"3a76458a5aa74075a60a5cd752ed59ad3943054f55b017700389f78072935215","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"e25ff72ac174a798894c9673d81bdfb86fa9f4228b34a14ce0dc741a186a52bd","src/ir/enum_ty.rs":"e49e3c6ffc0289584e2f836fe56a4b7ebf6ca3f8b602248141d67b9f533770cc","src/ir/function.rs":"aa454ace56bda8074b2865933282aa124624310c8bc0c994d454f5799f4e88be","src/ir/int.rs":"68a86182743ec338d58e42203364dc7c8970cb7ec3550433ca92f0c9489b4442","src/ir/item.rs":"a71bdacc7419ec86d52ac534158cf4bfa4600e9cbc214c0075766700f5b053b0","src/ir/item_kind.rs":"7666a1ff1b8260978b790a08b4139ab56b5c65714a5652bbcec7faa7443adc36","src/ir/layout.rs":"755e3787c262de434a53a8c326f0e825f95415ed6b0f925c1cddf208ca8e3bc4","src/ir/mod.rs":"713cd537434567003197a123cbae679602c715e976d22f7b23dafd0826ea4c70","src/ir/module.rs":"70cf6ddfeabe6cdc13fdc767c783216c073404848d827e85fc6c2de3a19b5c3f","src/ir/objc.rs":"195fb2a3e4371b90244f3a8f295fd80cc77e0f2daf8fd27e3d8e5b78bd6b55d6","src/ir/template.rs":"44bd7214cf1e7f70e60694115082aac5b8a6c1687fff584cd08cdcfadabc5734","src/ir/traversal.rs":"5ac088277f4dfe2918d81b9294aaee41fd83db8e46def66a05f89de078bf4c49","src/ir/ty.rs":"8f2b970da76850685c4d334289af6dede7742862d7a81f2236115afaa1a92fa9","src/ir/var.rs":"86e9f19403fb9231ba60dec0a04e5b56fe28a37c7a5e6f676c978789c9d93c5a","src/lib.rs":"ed2d0aeb48b28b4a96b8e76a10e00b10cb6cc32c0a686d536f9021463b7ee0e8","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"74e582c37b146090332b1496f5b4bca02c7629d03a4ae40302cb4a723f08e445","src/options.rs":"119358b741601dafc13560856f6e4b4f78b6cd2b19067893c2672ba8f5dc6de1","src/parse.rs":"4ffc54415eadb622ee488603862788c78361ef2c889de25259441a340c2a010f","src/regex_set.rs":"6c46357fb1ee68250e5e017cbf691f340041489ae78599eee7a5665a6ddce27f","src/time.rs":"8efe317e7c6b5ba8e0865ce7b49ca775ee8a02590f4241ef62f647fa3c22b68e"},"package":"2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"} +\ No newline at end of file ++{"files":{"Cargo.lock":"836e8f8431bd4ebdac9b1251676f6afa755757e401455259fe659e7280be8230","Cargo.toml":"3a585a6e27a177f08dedcb21f7d555e9db58fa158203273b228db91ebee4e6b3","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"29fe30d7a2729922b13a578bc8f5eedc808fd0f2ef67a3f12017548baf8f293a","build.rs":"3fe1e534c99df4ee207606794f133fb187c0948e055389f74c904994ecaed38a","csmith-fuzzing/README.md":"7107b70fedb0c0a0cadb3c439a49c1bd0119a6d38dc63b1aecc74d1942256ef2","src/callbacks.rs":"1e5a118b94977938751758ac0495b1d41ce5e280c066614a4a7cbd930f326350","src/clang.rs":"30fdc473ff70dcbc394927d6fb674d70a62c1a3847e855becd988dc476997815","src/codegen/bitfield_unit.rs":"a8fb1a2d97a99685106fcaac87d2013f79d2690d6a46ff05ad1e3629b6075664","src/codegen/bitfield_unit_tests.rs":"dd252134118450800b516e375c872e17b4c1aee63a7b8adbe5b2cd53434bbc7e","src/codegen/dyngen.rs":"15149bc927e5b2706f93e52a6b26ef55384b3baf40bfc9bc4343e9820479f26b","src/codegen/error.rs":"5e308b8c54b68511fc8ea2ad15ddac510172c4ff460a80a265336440b0c9653d","src/codegen/helpers.rs":"ea83104addb8af31736aaeb850e10c694cd434befe7ffaaa206208f722d72c58","src/codegen/impl_debug.rs":"1ff9ec754b610c98c757b114c6509473ead0e1a9375e9089a7fa40a41a753709","src/codegen/impl_partialeq.rs":"5e526fd88dd15dd1f04addd3c6ecea1d3da92293fadf04346d6c716791f436f9","src/codegen/mod.rs":"19fd11feefab0ff9ecaf8a01583583008269adce805508fb61b9a8acc49da586","src/codegen/struct_layout.rs":"b62c3569dcfb011daa4d09f1aa9eb732da69546c3deb9f247fa8ce7114dbc7b9","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"fafb85510b1dfc9a41ed71f7d765fca49b236deb4ee567e00204e751362aaf23","src/ir/analysis/derive.rs":"ff4821d810961696008a57ae496f95ebcdc14b4c439fe87d78a84817442fa759","src/ir/analysis/has_destructor.rs":"d9a3a24bd4cabc87cddb0c76d27da1691f8f37ffb8eadf5b5975a1c44dea99c2","src/ir/analysis/has_float.rs":"5242cc07ec4d4bdf5a792e1f8ee5758a87838314917d42dbb9dcfc19620520ce","src/ir/analysis/has_type_param_in_array.rs":"ec3fb67f782abb4c866da91bce3f7ee6f8e2310c47a54065282431b909233f7d","src/ir/analysis/has_vtable.rs":"63e2d0f62171811893615c11453bc7b39438d0d83c3eb444dec2346140d86efe","src/ir/analysis/mod.rs":"2c54f0cd6f3d86cf3fcb07d9d0be06cde839cab4170671c80d806a3f27820faf","src/ir/analysis/sizedness.rs":"17f1f2b6affd025f73853b9b5a76b3f157b5f9e563e9eaa374735fcb84c13308","src/ir/analysis/template_params.rs":"da949976a7fd04d6fc564ea6a77dfdbf4f5bf05db64687ed7a0616cba598a42d","src/ir/annotations.rs":"1c931d7bbba1e1613e9cccaab58d14f75e79b831b5c881e41f5b5257a9cbced7","src/ir/comment.rs":"31d64a49ae3d9c3c348fa2539e03306ca3a23fae429cab452e42b31ecf632145","src/ir/comp.rs":"232300be66abbbc3d7ef948c24f000dd8a50d78e72aa0e4b2cc43ffd4f800226","src/ir/context.rs":"3a76458a5aa74075a60a5cd752ed59ad3943054f55b017700389f78072935215","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"e25ff72ac174a798894c9673d81bdfb86fa9f4228b34a14ce0dc741a186a52bd","src/ir/enum_ty.rs":"e49e3c6ffc0289584e2f836fe56a4b7ebf6ca3f8b602248141d67b9f533770cc","src/ir/function.rs":"aa454ace56bda8074b2865933282aa124624310c8bc0c994d454f5799f4e88be","src/ir/int.rs":"68a86182743ec338d58e42203364dc7c8970cb7ec3550433ca92f0c9489b4442","src/ir/item.rs":"a71bdacc7419ec86d52ac534158cf4bfa4600e9cbc214c0075766700f5b053b0","src/ir/item_kind.rs":"7666a1ff1b8260978b790a08b4139ab56b5c65714a5652bbcec7faa7443adc36","src/ir/layout.rs":"755e3787c262de434a53a8c326f0e825f95415ed6b0f925c1cddf208ca8e3bc4","src/ir/mod.rs":"713cd537434567003197a123cbae679602c715e976d22f7b23dafd0826ea4c70","src/ir/module.rs":"70cf6ddfeabe6cdc13fdc767c783216c073404848d827e85fc6c2de3a19b5c3f","src/ir/objc.rs":"195fb2a3e4371b90244f3a8f295fd80cc77e0f2daf8fd27e3d8e5b78bd6b55d6","src/ir/template.rs":"44bd7214cf1e7f70e60694115082aac5b8a6c1687fff584cd08cdcfadabc5734","src/ir/traversal.rs":"5ac088277f4dfe2918d81b9294aaee41fd83db8e46def66a05f89de078bf4c49","src/ir/ty.rs":"8d7e7883316245c54e5dfa2fd150df1be2dc559c7df0828da736dd6b18d2165b","src/ir/var.rs":"1e7be8eedba72effa995b48c581504e61e407867d8794a8528975688742b0420","src/lib.rs":"ed2d0aeb48b28b4a96b8e76a10e00b10cb6cc32c0a686d536f9021463b7ee0e8","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"74e582c37b146090332b1496f5b4bca02c7629d03a4ae40302cb4a723f08e445","src/options.rs":"119358b741601dafc13560856f6e4b4f78b6cd2b19067893c2672ba8f5dc6de1","src/parse.rs":"4ffc54415eadb622ee488603862788c78361ef2c889de25259441a340c2a010f","src/regex_set.rs":"6c46357fb1ee68250e5e017cbf691f340041489ae78599eee7a5665a6ddce27f","src/time.rs":"8efe317e7c6b5ba8e0865ce7b49ca775ee8a02590f4241ef62f647fa3c22b68e"},"package":"2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"} +diff -Naurp firefox-102.9.0.orig/third_party/rust/bindgen/src/clang.rs firefox-102.9.0/third_party/rust/bindgen/src/clang.rs +--- firefox-102.9.0.orig/third_party/rust/bindgen/src/clang.rs 2023-03-09 17:59:38.000000000 -0600 ++++ firefox-102.9.0/third_party/rust/bindgen/src/clang.rs 2023-03-19 20:26:47.405305678 -0500 +@@ -54,6 +54,11 @@ impl Cursor { + unsafe { clang_isDeclaration(self.kind()) != 0 } + } + ++ /// Is this cursor's referent an anonymous record or so? ++ pub fn is_anonymous(&self) -> bool { ++ unsafe { clang_Cursor_isAnonymous(self.x) != 0 } ++ } ++ + /// Get this cursor's referent's spelling. + pub fn spelling(&self) -> String { + unsafe { cxstring_into_string(clang_getCursorSpelling(self.x)) } +diff -Naurp firefox-102.9.0.orig/third_party/rust/bindgen/src/ir/comp.rs firefox-102.9.0/third_party/rust/bindgen/src/ir/comp.rs +--- firefox-102.9.0.orig/third_party/rust/bindgen/src/ir/comp.rs 2023-03-09 17:59:38.000000000 -0600 ++++ firefox-102.9.0/third_party/rust/bindgen/src/ir/comp.rs 2023-03-19 20:27:20.660487032 -0500 +@@ -1372,8 +1372,7 @@ impl CompInfo { + + // A declaration of an union or a struct without name could + // also be an unnamed field, unfortunately. +- if cur.spelling().is_empty() && +- cur.kind() != CXCursor_EnumDecl ++ if cur.is_anonymous() && cur.kind() != CXCursor_EnumDecl + { + let ty = cur.cur_type(); + let offset = cur.offset_of_field().ok(); +diff -Naurp firefox-102.9.0.orig/third_party/rust/bindgen/src/ir/ty.rs firefox-102.9.0/third_party/rust/bindgen/src/ir/ty.rs +--- firefox-102.9.0.orig/third_party/rust/bindgen/src/ir/ty.rs 2023-03-09 17:59:38.000000000 -0600 ++++ firefox-102.9.0/third_party/rust/bindgen/src/ir/ty.rs 2023-03-19 21:02:47.947103359 -0500 +@@ -737,7 +737,12 @@ impl Type { + + let layout = ty.fallible_layout(ctx).ok(); + let cursor = ty.declaration(); +- let mut name = cursor.spelling(); ++ let is_anonymous = cursor.is_anonymous(); ++ let mut name = if is_anonymous { ++ None ++ } else { ++ Some(cursor.spelling()).filter(|n| !n.is_empty()) ++ }; + + debug!( + "from_clang_ty: {:?}, ty: {:?}, loc: {:?}", +@@ -771,7 +776,7 @@ impl Type { + if is_canonical_objcpointer && is_template_type_param { + // Objective-C generics are just ids with fancy name. + // To keep it simple, just name them ids +- name = "id".to_owned(); ++ name = Some("id".to_owned()); + } + } + +@@ -900,7 +905,7 @@ impl Type { + return Err(ParseError::Recurse); + } + } else { +- name = location.spelling(); ++ name = Some(location.spelling()); + } + + let complex = CompInfo::from_ty( +@@ -942,7 +947,7 @@ impl Type { + CXType_Typedef + ); + +- name = current.spelling(); ++ name = Some(location.spelling()); + + let inner_ty = cur + .typedef_type() +@@ -1126,10 +1131,10 @@ impl Type { + CXType_Enum => { + let enum_ = Enum::from_ty(ty, ctx).expect("Not an enum?"); + +- if name.is_empty() { ++ if !is_anonymous { + let pretty_name = ty.spelling(); + if clang::is_valid_identifier(&pretty_name) { +- name = pretty_name; ++ name = Some(pretty_name); + } + } + +@@ -1144,12 +1149,12 @@ impl Type { + ) + .expect("Not a complex type?"); + +- if name.is_empty() { ++ if !is_anonymous { + // The pretty-printed name may contain typedefed name, + // but may also be "struct (anonymous at .h:1)" + let pretty_name = ty.spelling(); + if clang::is_valid_identifier(&pretty_name) { +- name = pretty_name; ++ name = Some(pretty_name); + } + } + +@@ -1161,8 +1166,7 @@ impl Type { + location, + None, + ctx, +- ) +- .expect("Not able to resolve vector element?"); ++ )?; + TypeKind::Vector(inner, ty.num_elements().unwrap()) + } + CXType_ConstantArray => { +@@ -1189,7 +1193,9 @@ impl Type { + CXType_ObjCClass | CXType_ObjCInterface => { + let interface = ObjCInterface::from_ty(&location, ctx) + .expect("Not a valid objc interface?"); +- name = interface.rust_name(); ++ if !is_anonymous { ++ name = Some(interface.rust_name()); ++ } + TypeKind::ObjCInterface(interface) + } + CXType_Dependent => { +@@ -1207,7 +1213,7 @@ impl Type { + } + }; + +- let name = if name.is_empty() { None } else { Some(name) }; ++ name = name.filter(|n| !n.is_empty()); + + let is_const = ty.is_const() || + (ty.kind() == CXType_ConstantArray && +diff -Naurp firefox-102.9.0.orig/third_party/rust/bindgen/src/ir/var.rs firefox-102.9.0/third_party/rust/bindgen/src/ir/var.rs +--- firefox-102.9.0.orig/third_party/rust/bindgen/src/ir/var.rs 2023-03-09 17:59:38.000000000 -0600 ++++ firefox-102.9.0/third_party/rust/bindgen/src/ir/var.rs 2023-03-19 21:03:37.413299390 -0500 +@@ -301,11 +301,11 @@ impl ClangSubItemParser for Var { + let ty = match Item::from_ty(&ty, cursor, None, ctx) { + Ok(ty) => ty, + Err(e) => { +- assert_eq!( +- ty.kind(), +- CXType_Auto, ++ assert!( ++ matches!(ty.kind(), CXType_Auto | CXType_Unexposed), + "Couldn't resolve constant type, and it \ +- wasn't an nondeductible auto type!" ++ wasn't an nondeductible auto type or unexposed \ ++ type!" + ); + return Err(e); + } diff --git a/user/firefox-esr/disable-moz-stackwalk.patch b/user/firefox-esr/disable-moz-stackwalk.patch new file mode 100644 index 0000000..b6bc756 --- /dev/null +++ b/user/firefox-esr/disable-moz-stackwalk.patch @@ -0,0 +1,18 @@ +diff --git a/mozglue/misc/StackWalk.cpp b/mozglue/misc/StackWalk.cpp +index 7d62921..adcfa44 100644 +--- a/mozglue/misc/StackWalk.cpp ++++ b/mozglue/misc/StackWalk.cpp +@@ -33,13 +33,7 @@ using namespace mozilla; + # define MOZ_STACKWALK_SUPPORTS_MACOSX 0 + #endif + +-#if (defined(linux) && \ +- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \ +- defined(HAVE__UNWIND_BACKTRACE))) +-# define MOZ_STACKWALK_SUPPORTS_LINUX 1 +-#else + # define MOZ_STACKWALK_SUPPORTS_LINUX 0 +-#endif + + #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) + # define HAVE___LIBC_STACK_END 1 diff --git a/user/firefox-esr/esr-metainfo.patch b/user/firefox-esr/esr-metainfo.patch new file mode 100644 index 0000000..fff02c5 --- /dev/null +++ b/user/firefox-esr/esr-metainfo.patch @@ -0,0 +1,18 @@ +see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13235 +--- a/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in ++++ b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in +@@ -1,10 +1,10 @@ + + +- org.mozilla.firefox ++ org.mozilla.firefox-esr +- org.mozilla.firefox.desktop ++ firefox-esr.desktop +- Firefox ++ Firefox ESR + Mozilla +- Fast, Private & Safe Web Browser ++ Mozilla Firefox Web Browser Extended Support Release + CC0-1.0 + MPL-2.0 + diff --git a/user/firefox-esr/ffmpeg6-fixup.patch b/user/firefox-esr/ffmpeg6-fixup.patch new file mode 100644 index 0000000..8a4990b --- /dev/null +++ b/user/firefox-esr/ffmpeg6-fixup.patch @@ -0,0 +1,13 @@ +fixup of the previous- no sysctl header on musl +-- +--- a/media/ffvpx/config_unix_aarch64.h ++++ b/media/ffvpx/config_unix_aarch64.h +@@ -329,7 +329,7 @@ + #define HAVE_SLEEP 0 + #define HAVE_STRERROR_R 1 + #define HAVE_SYSCONF 1 +-#define HAVE_SYSCTL 1 ++#define HAVE_SYSCTL 0 + #define HAVE_USLEEP 1 + #define HAVE_UTGETOSTYPEFROMSTRING 0 + #define HAVE_VIRTUALALLOC 0 diff --git a/user/firefox-esr/firefox-esr.post-upgrade b/user/firefox-esr/firefox-esr.post-upgrade new file mode 100644 index 0000000..aaec4e4 --- /dev/null +++ b/user/firefox-esr/firefox-esr.post-upgrade @@ -0,0 +1,18 @@ +#!/bin/sh + +ver_old=$2 + +if [ "$(apk version -t "$ver_old" '102.2.0-r4')" = '<' ]; then + # renamed appid, needs profile migration + cat 1>&2 <<-EOF + * + * firefox-esr now has a different appid, so you will see a default new + * profile upon starting it. to use your old profile again, you have to + * first migrate it using 'firefox-esr --ProfileManager'. select the + * previous one (if you didn't rename it, it's probably named + * default-something) to migrate it. + * + EOF +fi + +exit 0 diff --git a/user/firefox-esr/firefox.desktop b/user/firefox-esr/firefox.desktop new file mode 100644 index 0000000..3de789d --- /dev/null +++ b/user/firefox-esr/firefox.desktop @@ -0,0 +1,340 @@ +[Desktop Entry] +Version=1.0 +Name=Firefox ESR +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[de]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per el web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=firefox-esr %u +Icon=firefox-esr +Terminal=false +X-MultipleArgs=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json; +StartupNotify=true +StartupWMClass=firefox-esr +Categories=Network;WebBrowser; +Actions=new-window;new-private-window; + +[Desktop Action new-window] +Name=New Window +Name[ach]=Dirica manyen +Name[af]=Nuwe venster +Name[an]=Nueva finestra +Name[ar]=نافذة جديدة +Name[as]=নতুন উইন্ডো +Name[ast]=Ventana nueva +Name[az]=Yeni Pəncərə +Name[be]=Новае акно +Name[bg]=Нов прозорец +Name[bn_BD]=নতুন উইন্ডো (N) +Name[bn_IN]=নতুন উইন্ডো +Name[br]=Prenestr nevez +Name[brx]=गोदान उइन्ड'(N) +Name[bs]=Novi prozor +Name[ca]=Finestra nova +Name[cak]=K'ak'a' tzuwäch +Name[cs]=Nové okno +Name[cy]=Ffenestr Newydd +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[dsb]=Nowe wokno +Name[el]=Νέο παράθυρο +Name[en_GB]=New Window +Name[en_US]=New Window +Name[en_ZA]=New Window +Name[eo]=Nova fenestro +Name[es_AR]=Nueva ventana +Name[es_CL]=Nueva ventana +Name[es_ES]=Nueva ventana +Name[es_MX]=Nueva ventana +Name[et]=Uus aken +Name[eu]=Leiho berria +Name[fa]=پنجره جدید +Name[ff]=Henorde Hesere +Name[fi]=Uusi ikkuna +Name[fr]=Nouvelle fenêtre +Name[fy_NL]=Nij finster +Name[ga_IE]=Fuinneog Nua +Name[gd]=Uinneag ùr +Name[gl]=Nova xanela +Name[gn]=Ovetã pyahu +Name[gu_IN]=નવી વિન્ડો +Name[he]=חלון חדש +Name[hi_IN]=नया विंडो +Name[hr]=Novi prozor +Name[hsb]=Nowe wokno +Name[hu]=Új ablak +Name[hy_AM]=Նոր Պատուհան +Name[id]=Jendela Baru +Name[is]=Nýr gluggi +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[ja_JP-mac]=新規ウインドウ +Name[ka]=ახალი ფანჯარა +Name[kk]=Жаңа терезе +Name[km]=បង្អួចថ្មី +Name[kn]=ಹೊಸ ಕಿಟಕಿ +Name[ko]=새 창 +Name[kok]=नवें जनेल +Name[ks]=نئئ وِنڈو +Name[lij]=Neuvo barcon +Name[lo]=ຫນ້າຕ່າງໃຫມ່ +Name[lt]=Naujas langas +Name[ltg]=Jauns lūgs +Name[lv]=Jauns logs +Name[mai]=नव विंडो +Name[mk]=Нов прозорец +Name[ml]=പുതിയ ജാലകം +Name[mr]=नवीन पटल +Name[ms]=Tetingkap Baru +Name[my]=ဝင်းဒိုးအသစ် +Name[nb_NO]=Nytt vindu +Name[ne_NP]=नयाँ सञ्झ्याल +Name[nl]=Nieuw venster +Name[nn_NO]=Nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ +Name[pl]=Nowe okno +Name[pt_BR]=Nova janela +Name[pt_PT]=Nova janela +Name[rm]=Nova fanestra +Name[ro]=Fereastră nouă +Name[ru]=Новое окно +Name[sat]=नावा विंडो (N) +Name[si]=නව කවුළුවක් +Name[sk]=Nové okno +Name[sl]=Novo okno +Name[son]=Zanfun taaga +Name[sq]=Dritare e Re +Name[sr]=Нови прозор +Name[sv_SE]=Nytt fönster +Name[ta]=புதிய சாளரம் +Name[te]=కొత్త విండో +Name[th]=หน้าต่างใหม่ +Name[tr]=Yeni pencere +Name[tsz]=Eraatarakua jimpani +Name[uk]=Нове вікно +Name[ur]=نیا دریچہ +Name[uz]=Yangi oyna +Name[vi]=Cửa sổ mới +Name[wo]=Palanteer bu bees +Name[xh]=Ifestile entsha +Name[zh_CN]=新建窗口 +Name[zh_TW]=開新視窗 +Exec=firefox-esr --new-window %u + +[Desktop Action new-private-window] +Name=New Private Window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni Məxfi Pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[brx]=गोदान प्राइभेट उइन्ड' +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cak]=K'ak'a' ichinan tzuwäch +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr Breifat Newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[en_GB]=New Private Window +Name[en_US]=New Private Window +Name[en_ZA]=New Private Window +Name[eo]=Nova privata fenestro +Name[es_AR]=Nueva ventana privada +Name[es_CL]=Nueva ventana privada +Name[es_ES]=Nueva ventana privada +Name[es_MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[fa]=پنجره ناشناس جدید +Name[ff]=Henorde Suturo Hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy_NL]=Nij priveefinster +Name[ga_IE]=Fuinneog Nua Phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gn]=Ovetã ñemi pyahu +Name[gu_IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi_IN]=नयी निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy_AM]=Սկսել Գաղտնի դիտարկում +Name[id]=Jendela Mode Pribadi Baru +Name[is]=Nýr huliðsgluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[ja_JP-mac]=新規プライベートウインドウ +Name[ka]=ახალი პირადი ფანჯარა +Name[kk]=Жаңа жекелік терезе +Name[km]=បង្អួចឯកជនថ្មី +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 모드 +Name[kok]=नवो खाजगी विंडो +Name[ks]=نْو پرایوٹ وینڈو +Name[lij]=Nêuvo barcón privòu +Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ +Name[lt]=Naujas privataus naršymo langas +Name[ltg]=Jauns privatais lūgs +Name[lv]=Jauns privātais logs +Name[mai]=नया निज विंडो (W) +Name[mk]=Нов приватен прозорец +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap Persendirian Baharu +Name[my]=New Private Window +Name[nb_NO]=Nytt privat vindu +Name[ne_NP]=नयाँ निजी सञ्झ्याल +Name[nl]=Nieuw privévenster +Name[nn_NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno prywatne +Name[pt_BR]=Nova janela privativa +Name[pt_PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră privată nouă +Name[ru]=Новое приватное окно +Name[sat]=नावा निजेराक् विंडो (W ) +Name[si]=නව පුද්ගලික කවුළුව (W) +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e Re Private +Name[sr]=Нови приватан прозор +Name[sv_SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[tsz]=Juchiiti eraatarakua jimpani +Name[uk]=Приватне вікно +Name[ur]=نیا نجی دریچہ +Name[uz]=Yangi maxfiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[wo]=Panlanteeru biir bu bees +Name[xh]=Ifestile yangasese entsha +Name[zh_CN]=新建隐私浏览窗口 +Name[zh_TW]=新增隱私視窗 +Exec=firefox-esr --private-window %u diff --git a/user/firefox-esr/fix-fortify-system-wrappers.patch b/user/firefox-esr/fix-fortify-system-wrappers.patch new file mode 100644 index 0000000..17cf7e3 --- /dev/null +++ b/user/firefox-esr/fix-fortify-system-wrappers.patch @@ -0,0 +1,13 @@ +The wrapper features.h gets pulled in by system headers causing thigns to +break. We work around it by simply not wrap features.h + +--- ./config/system-headers.mozbuild.orig ++++ ./config/system-headers.mozbuild +@@ -229,7 +229,6 @@ + 'execinfo.h', + 'extras.h', + 'fcntl.h', +- 'features.h', + 'fenv.h', + 'ffi.h', + 'fibdef.h', diff --git a/user/firefox-esr/fix-neon-aom.patch b/user/firefox-esr/fix-neon-aom.patch new file mode 100644 index 0000000..7ea16e7 --- /dev/null +++ b/user/firefox-esr/fix-neon-aom.patch @@ -0,0 +1,13 @@ +diff --git a/media/libaom/moz.build b/media/libaom/moz.build +index fd8c7f2..db3f9ca 100644 +--- a/media/libaom/moz.build ++++ b/media/libaom/moz.build +@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm': + + for f in SOURCES: + if f.endswith('neon.c'): +- SOURCES[f].flags += CONFIG['VPX_ASFLAGS'] ++ SOURCES[f].flags += CONFIG['NEON_FLAGS'] + + if CONFIG['OS_TARGET'] == 'Android': + # For cpu-features.h diff --git a/user/firefox-esr/fix-rust-target.patch b/user/firefox-esr/fix-rust-target.patch new file mode 100644 index 0000000..9342063 --- /dev/null +++ b/user/firefox-esr/fix-rust-target.patch @@ -0,0 +1,31 @@ +Allow us to just set RUST_TARGEt ourselves instead of hacking around in mozilla's +weird custom build system... + +--- a/build/moz.configure/rust.configure ++++ b/build/moz.configure/rust.configure +@@ -225,7 +225,9 @@ + data.setdefault(key, []).append(namespace(rust_target=t, target=info)) + return data + +- ++@imports('os') ++@imports(_from='mozbuild.util', _import='ensure_unicode') ++@imports(_from='mozbuild.util', _import='system_encoding') + def detect_rustc_target( + host_or_target, compiler_info, arm_target, rust_supported_targets + ): +@@ -340,13 +342,13 @@ + + return None + +- rustc_target = find_candidate(candidates) ++ rustc_target = os.environ['RUST_TARGET'] + + if rustc_target is None: + die("Don't know how to translate {} for rustc".format(host_or_target.alias)) + +- return rustc_target ++ return ensure_unicode(rustc_target, system_encoding) + + + @imports('os') diff --git a/user/firefox-esr/fix-webrtc-glibcisms.patch b/user/firefox-esr/fix-webrtc-glibcisms.patch new file mode 100644 index 0000000..4f9043b --- /dev/null +++ b/user/firefox-esr/fix-webrtc-glibcisms.patch @@ -0,0 +1,20 @@ +--- a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc ++++ b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc +@@ -18,7 +18,7 @@ + #define WEBRTC_GLIBC_PREREQ(a, b) 0 + #endif + +-#if WEBRTC_GLIBC_PREREQ(2, 16) ++#if !__GLIBC__ || WEBRTC_GLIBC_PREREQ(2, 16) + #include + #else + #include +@@ -40,7 +40,7 @@ + int architecture = 0; + uint64_t hwcap = 0; + const char* platform = NULL; +-#if WEBRTC_GLIBC_PREREQ(2, 16) ++#if !__GLIBC__ || WEBRTC_GLIBC_PREREQ(2, 16) + hwcap = getauxval(AT_HWCAP); + platform = (const char*)getauxval(AT_PLATFORM); + #else diff --git a/user/firefox-esr/gcc13.patch b/user/firefox-esr/gcc13.patch new file mode 100644 index 0000000..c3619f3 --- /dev/null +++ b/user/firefox-esr/gcc13.patch @@ -0,0 +1,30 @@ +--- a/gfx/2d/Rect.h ++++ b/gfx/2d/Rect.h +@@ -14,6 +14,7 @@ + #include "Tools.h" + #include "mozilla/Maybe.h" + ++#include + #include + + namespace mozilla { +--- a/dom/media/webrtc/sdp/RsdparsaSdpGlue.cpp ++++ b/dom/media/webrtc/sdp/RsdparsaSdpGlue.cpp +@@ -3,6 +3,7 @@ + /* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ ++#include + #include + + #include "sdp/RsdparsaSdpInc.h" +--- a/toolkit/components/telemetry/pingsender/pingsender.cpp ++++ b/toolkit/components/telemetry/pingsender/pingsender.cpp +@@ -3,6 +3,7 @@ + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + ++#include + #include + #include + #include diff --git a/user/firefox-esr/mallinfo.patch b/user/firefox-esr/mallinfo.patch new file mode 100644 index 0000000..7916a20 --- /dev/null +++ b/user/firefox-esr/mallinfo.patch @@ -0,0 +1,20 @@ +diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp +index 865e1b5430..9a00dafecb 100644 +--- a/xpcom/base/nsMemoryReporterManager.cpp ++++ b/xpcom/base/nsMemoryReporterManager.cpp +@@ -124,6 +124,7 @@ static MOZ_MUST_USE nsresult ResidentUniqueDistinguishedAmount(int64_t* aN) { + return GetProcSelfSmapsPrivate(aN); + } + ++#ifdef __GLIBC__ + # ifdef HAVE_MALLINFO + # define HAVE_SYSTEM_HEAP_REPORTER 1 + static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) { +@@ -143,6 +144,7 @@ static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) { + return NS_OK; + } + # endif ++#endif + + #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \ + defined(__OpenBSD__) || defined(__FreeBSD_kernel__) diff --git a/user/firefox-esr/mozilla-location.keys b/user/firefox-esr/mozilla-location.keys new file mode 100644 index 0000000..8a3262d --- /dev/null +++ b/user/firefox-esr/mozilla-location.keys @@ -0,0 +1 @@ +NjhhZGJjMDEtMDM3OC00Zjc0LTk0N2UtMzBiYzA5NjlhMDc3Cg== diff --git a/user/firefox-esr/python-deps.patch b/user/firefox-esr/python-deps.patch new file mode 100644 index 0000000..dea6345 --- /dev/null +++ b/user/firefox-esr/python-deps.patch @@ -0,0 +1,9 @@ +--- a/python/sites/mach.txt ++++ b/python/sites/mach.txt +@@ -134,4 +134,4 @@ + # We aren't (yet) able to pin packages in automation, so we have to + # support down to the oldest locally-installed version (5.4.2). +-pypi-optional:psutil>=5.4.2,<=5.8.0:telemetry will be missing some data ++pypi-optional:psutil>=5.4.2,<=5.10.0:telemetry will be missing some data +-pypi-optional:zstandard>=0.11.1,<=0.17.0:zstd archives will not be possible to extract ++pypi-optional:zstandard>=0.11.1,<=0.18.0:zstd archives will not be possible to extract diff --git a/user/firefox-esr/sandbox-fork.patch b/user/firefox-esr/sandbox-fork.patch new file mode 100644 index 0000000..c7222ab --- /dev/null +++ b/user/firefox-esr/sandbox-fork.patch @@ -0,0 +1,15 @@ +make SYS_fork non-fatal, musl uses it for fork(2) + +--- a/security/sandbox/linux/SandboxFilter.cpp ++++ b/security/sandbox/linux/SandboxFilter.cpp +@@ -1253,6 +1253,10 @@ + // usually do something reasonable on error. + case __NR_clone: + return ClonePolicy(Error(EPERM)); ++#ifdef __NR_fork ++ case __NR_fork: ++ return Error(ENOSYS); ++#endif + + # ifdef __NR_fadvise64 + case __NR_fadvise64: diff --git a/user/firefox-esr/sandbox-largefile.patch b/user/firefox-esr/sandbox-largefile.patch new file mode 100644 index 0000000..f1cf28b --- /dev/null +++ b/user/firefox-esr/sandbox-largefile.patch @@ -0,0 +1,17 @@ +--- a/security/sandbox/linux/SandboxFilter.cpp 2020-11-23 22:41:14.556378950 +0100 ++++ b/security/sandbox/linux/SandboxFilter.cpp 2020-11-23 22:40:23.595806444 +0100 +@@ -68,7 +68,13 @@ + + // The headers define O_LARGEFILE as 0 on x86_64, but we need the + // actual value because it shows up in file flags. +-#define O_LARGEFILE_REAL 00100000 ++#if defined(__x86_64__) || defined(__i386__) || defined(__mips__) ++#define O_LARGEFILE_REAL 0100000 ++#elif defined(__powerpc__) ++#define O_LARGEFILE_REAL 0200000 ++#else ++#define O_LARGEFILE_REAL O_LARGEFILE ++#endif + + // Not part of UAPI, but userspace sees it in F_GETFL; see bug 1650751. + #define FMODE_NONOTIFY 0x4000000 diff --git a/user/firefox-esr/sandbox-sched_setscheduler.patch b/user/firefox-esr/sandbox-sched_setscheduler.patch new file mode 100644 index 0000000..3163c9e --- /dev/null +++ b/user/firefox-esr/sandbox-sched_setscheduler.patch @@ -0,0 +1,16 @@ +upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1657849 +--- a/security/sandbox/linux/SandboxFilter.cpp ++++ b/security/sandbox/linux/SandboxFilter.cpp +@@ -1694,10 +1694,10 @@ + return Allow(); + case __NR_sched_get_priority_min: + case __NR_sched_get_priority_max: ++ case __NR_sched_setscheduler: + return Allow(); + case __NR_sched_getparam: +- case __NR_sched_getscheduler: +- case __NR_sched_setscheduler: { ++ case __NR_sched_getscheduler: { + Arg pid(0); + return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr)); + } diff --git a/user/firefox-esr/stab.h b/user/firefox-esr/stab.h new file mode 100644 index 0000000..6f70af3 --- /dev/null +++ b/user/firefox-esr/stab.h @@ -0,0 +1,71 @@ +/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */ +/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */ + +/*- + * Copyright (c) 1991 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)stab.h 5.2 (Berkeley) 4/4/91 + */ + +#ifndef _STAB_H_ +#define _STAB_H_ + +/* + * The following are symbols used by various debuggers and by the Pascal + * compiler. Each of them must have one (or more) of the bits defined by + * the N_STAB mask set. + */ + +#define N_GSYM 0x20 /* global symbol */ +#define N_FNAME 0x22 /* F77 function name */ +#define N_FUN 0x24 /* procedure name */ +#define N_STSYM 0x26 /* data segment variable */ +#define N_LCSYM 0x28 /* bss segment variable */ +#define N_MAIN 0x2a /* main function name */ +#define N_PC 0x30 /* global Pascal symbol */ +#define N_RSYM 0x40 /* register variable */ +#define N_SLINE 0x44 /* text segment line number */ +#define N_DSLINE 0x46 /* data segment line number */ +#define N_BSLINE 0x48 /* bss segment line number */ +#define N_SSYM 0x60 /* structure/union element */ +#define N_SO 0x64 /* main source file name */ +#define N_LSYM 0x80 /* stack variable */ +#define N_BINCL 0x82 /* include file beginning */ +#define N_SOL 0x84 /* included source file name */ +#define N_PSYM 0xa0 /* parameter variable */ +#define N_EINCL 0xa2 /* include file end */ +#define N_ENTRY 0xa4 /* alternate entry point */ +#define N_LBRAC 0xc0 /* left bracket */ +#define N_EXCL 0xc2 /* deleted include file */ +#define N_RBRAC 0xe0 /* right bracket */ +#define N_BCOMM 0xe2 /* begin common */ +#define N_ECOMM 0xe4 /* end common */ +#define N_ECOML 0xe8 /* end common (local name) */ +#define N_LENG 0xfe /* length of preceding entry */ + +#endif /* !_STAB_H_ */ diff --git a/user/firefox-esr/vendor-prefs.js b/user/firefox-esr/vendor-prefs.js new file mode 100644 index 0000000..3b75075 --- /dev/null +++ b/user/firefox-esr/vendor-prefs.js @@ -0,0 +1,12 @@ +// Use LANG environment variable to choose locale +pref("intl.locale.requested", ""); + +// Use system-provided dictionaries +pref("spellchecker.dictionary_path", "/usr/share/hunspell"); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable our bundled extensions in the application directory +pref("extensions.autoDisableScopes", 11); +pref("extensions.shownSelectionUI", true); diff --git a/user/firefox-esr/zstandard.patch b/user/firefox-esr/zstandard.patch new file mode 100644 index 0000000..e842843 --- /dev/null +++ b/user/firefox-esr/zstandard.patch @@ -0,0 +1,8 @@ +--- a/python/sites/mach.txt ++++ b/python/sites/mach.txt +@@ -134,4 +134,4 @@ + # We aren't (yet) able to pin packages in automation, so we have to + # support down to the oldest locally-installed version (5.4.2). + pypi-optional:psutil>=5.4.2,<=5.10.0:telemetry will be missing some data +-pypi-optional:zstandard>=0.11.1,<=0.18.0:zstd archives will not be possible to extract ++pypi-optional:zstandard>=0.11.1:zstd archives will not be possible to extract diff --git a/unmaintained/freshrss-auto-refresh/APKBUILD b/user/freshrss-auto-refresh/APKBUILD similarity index 100% rename from unmaintained/freshrss-auto-refresh/APKBUILD rename to user/freshrss-auto-refresh/APKBUILD diff --git a/unmaintained/freshrss-customcss/APKBUILD b/user/freshrss-customcss/APKBUILD similarity index 100% rename from unmaintained/freshrss-customcss/APKBUILD rename to user/freshrss-customcss/APKBUILD diff --git a/unmaintained/freshrss-customjs/APKBUILD b/user/freshrss-customjs/APKBUILD similarity index 100% rename from unmaintained/freshrss-customjs/APKBUILD rename to user/freshrss-customjs/APKBUILD diff --git a/unmaintained/freshrss-fixednavmenu/APKBUILD b/user/freshrss-fixednavmenu/APKBUILD similarity index 100% rename from unmaintained/freshrss-fixednavmenu/APKBUILD rename to user/freshrss-fixednavmenu/APKBUILD diff --git a/unmaintained/freshrss-imageproxy/APKBUILD b/user/freshrss-imageproxy/APKBUILD similarity index 100% rename from unmaintained/freshrss-imageproxy/APKBUILD rename to user/freshrss-imageproxy/APKBUILD diff --git a/unmaintained/freshrss-keepfolderstate/APKBUILD b/user/freshrss-keepfolderstate/APKBUILD similarity index 100% rename from unmaintained/freshrss-keepfolderstate/APKBUILD rename to user/freshrss-keepfolderstate/APKBUILD diff --git a/unmaintained/freshrss-latex/APKBUILD b/user/freshrss-latex/APKBUILD similarity index 100% rename from unmaintained/freshrss-latex/APKBUILD rename to user/freshrss-latex/APKBUILD diff --git a/unmaintained/freshrss-mobilescrollmenu/APKBUILD b/user/freshrss-mobilescrollmenu/APKBUILD similarity index 100% rename from unmaintained/freshrss-mobilescrollmenu/APKBUILD rename to user/freshrss-mobilescrollmenu/APKBUILD diff --git a/unmaintained/freshrss-quickcollapse/APKBUILD b/user/freshrss-quickcollapse/APKBUILD similarity index 100% rename from unmaintained/freshrss-quickcollapse/APKBUILD rename to user/freshrss-quickcollapse/APKBUILD diff --git a/unmaintained/freshrss-readingtime/APKBUILD b/user/freshrss-readingtime/APKBUILD similarity index 100% rename from unmaintained/freshrss-readingtime/APKBUILD rename to user/freshrss-readingtime/APKBUILD diff --git a/unmaintained/freshrss-redditimage/APKBUILD b/user/freshrss-redditimage/APKBUILD similarity index 100% rename from unmaintained/freshrss-redditimage/APKBUILD rename to user/freshrss-redditimage/APKBUILD diff --git a/unmaintained/freshrss-sharebyemail/APKBUILD b/user/freshrss-sharebyemail/APKBUILD similarity index 100% rename from unmaintained/freshrss-sharebyemail/APKBUILD rename to user/freshrss-sharebyemail/APKBUILD diff --git a/unmaintained/freshrss-smartmobilemenu/APKBUILD b/user/freshrss-smartmobilemenu/APKBUILD similarity index 100% rename from unmaintained/freshrss-smartmobilemenu/APKBUILD rename to user/freshrss-smartmobilemenu/APKBUILD diff --git a/unmaintained/freshrss-threepanesview/APKBUILD b/user/freshrss-threepanesview/APKBUILD similarity index 100% rename from unmaintained/freshrss-threepanesview/APKBUILD rename to user/freshrss-threepanesview/APKBUILD diff --git a/unmaintained/freshrss-titlewrap/APKBUILD b/user/freshrss-titlewrap/APKBUILD similarity index 100% rename from unmaintained/freshrss-titlewrap/APKBUILD rename to user/freshrss-titlewrap/APKBUILD diff --git a/unmaintained/freshrss-touchcontrol/APKBUILD b/user/freshrss-touchcontrol/APKBUILD similarity index 100% rename from unmaintained/freshrss-touchcontrol/APKBUILD rename to user/freshrss-touchcontrol/APKBUILD diff --git a/unmaintained/freshrss-ttrss-api/APKBUILD b/user/freshrss-ttrss-api/APKBUILD similarity index 100% rename from unmaintained/freshrss-ttrss-api/APKBUILD rename to user/freshrss-ttrss-api/APKBUILD diff --git a/unmaintained/freshrss-wallabag/APKBUILD b/user/freshrss-wallabag/APKBUILD similarity index 100% rename from unmaintained/freshrss-wallabag/APKBUILD rename to user/freshrss-wallabag/APKBUILD diff --git a/unmaintained/freshrss-youtube/APKBUILD b/user/freshrss-youtube/APKBUILD similarity index 100% rename from unmaintained/freshrss-youtube/APKBUILD rename to user/freshrss-youtube/APKBUILD diff --git a/unmaintained/freshrss-youtubechannel2rssfeed/APKBUILD b/user/freshrss-youtubechannel2rssfeed/APKBUILD similarity index 100% rename from unmaintained/freshrss-youtubechannel2rssfeed/APKBUILD rename to user/freshrss-youtubechannel2rssfeed/APKBUILD diff --git a/unmaintained/freshrss/APKBUILD b/user/freshrss/APKBUILD similarity index 100% rename from unmaintained/freshrss/APKBUILD rename to user/freshrss/APKBUILD diff --git a/unmaintained/gconf/APKBUILD b/user/gconf/APKBUILD similarity index 100% rename from unmaintained/gconf/APKBUILD rename to user/gconf/APKBUILD diff --git a/user/gitaly/APKBUILD b/user/gitaly/APKBUILD new file mode 100644 index 0000000..c06bf97 --- /dev/null +++ b/user/gitaly/APKBUILD @@ -0,0 +1,86 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka +pkgname=gitaly +pkgver=16.2.0 +pkgrel=1 +pkgdesc="A Git RPC service for handling all the git calls made by GitLab" +url="https://gitlab.com/gitlab-org/gitaly/" +arch="all" +# GPL-2.0-only WITH GCC-exception-2.0: bundled libgit2 +license="MIT AND GPL-2.0-only WITH GCC-exception-2.0" +depends=" + git>=2.41 + " +makedepends=" + bash + cmake + go + icu-dev + libssh2-dev + libxml2-dev + libxslt-dev + " +subpackages=" + $pkgname-backup + $pkgname-blackbox + $pkgname-praefect + $pkgname-openrc + " +source="https://gitlab.com/gitlab-org/gitaly/-/archive/v$pkgver/gitaly-v$pkgver.tar.gz + config.patch + $pkgname.initd + " +builddir="$srcdir/$pkgname-v$pkgver" +options="!check" + +build() { + make V=1 BUILD_TAGS="tracer_static tracer_static_jaeger" +} + +package() { + ## Go part + + make install DESTDIR="$pkgdir" PREFIX=/usr + + # Not very useful for us. + rm "$pkgdir"/usr/bin/gitaly-debug + rm "$pkgdir"/usr/bin/gitaly-wrapper + + install -m644 -D config.toml.example "$pkgdir"/etc/gitlab/gitaly.toml + install -m644 -D config.praefect.toml.example "$pkgdir"/etc/gitlab/praefect.toml + install -m644 -D cmd/gitaly-blackbox/config.toml.example "$pkgdir"/etc/gitlab/gitaly-blackbox.toml + + install -m755 -D "$srcdir"/gitaly.initd "$pkgdir"/etc/init.d/gitlab.gitaly +} + +backup() { + pkgdesc="Utility used by the backup Rake task to create/restore repository backups from Gitaly" + depends="" + + amove usr/bin/gitaly-backup +} + +# TODO: Add init script. +blackbox() { + pkgdesc="Prometheus exporter that measures GitLab server performance by performing a Git HTTP clone" + depends="" + + amove etc/gitlab/gitaly-blackbox.toml + amove usr/bin/gitaly-blackbox +} + +# TODO: Add init script. +praefect() { + pkgdesc="A reverse-proxy for Gitaly to manage a cluster of Gitaly nodes for HA" + depends="" + + amove etc/gitlab/praefect.toml + amove usr/bin/praefect +} + +sha512sums=" +7576dd5ef690c42582703ba571bb9e6856e85d209025f32b0797c3cecca88e10b538dc75a27d8cd2a99e30e2e99d03d0a61c681a8af692e3e34420775792598a gitaly-v16.2.0.tar.gz +7760ee96abd45103a99e3c3fff31538aeac0e10254c88ab600bfc6fed04c0c34b43a4d54295463663a9707204622cfc06d1de672fe2826d22c017850ddac24e4 config.patch +c32105d921be16eaf559cf21d6840bc346cd92b5e37974cedecdb5a2d2ca1eb5e8fbb144f5fc8a1289bf9415102b313cf2d61ee510c80f08ab33a799f5ac7122 gitaly.initd +" diff --git a/user/gitaly/config.patch b/user/gitaly/config.patch new file mode 100644 index 0000000..80d15bb --- /dev/null +++ b/user/gitaly/config.patch @@ -0,0 +1,100 @@ +diff --git a/config.toml.example.orig b/config.toml.example +index 2ddb368..0a8a0e2 100644 +--- a/config.toml.example.orig ++++ b/config.toml.example +@@ -2,15 +2,15 @@ + # Documentation lives at https://docs.gitlab.com/ee/administration/gitaly/ and + # https://docs.gitlab.com/ee//administration/gitaly/reference + +-socket_path = "/home/git/gitlab/tmp/sockets/private/gitaly.socket" ++socket_path = "/run/gitlab/gitaly.socket" + + # The directory where Gitaly's executables are stored +-bin_dir = "/home/git/gitaly/_build/bin" ++bin_dir = "/usr/bin" + +-# # Optional: The directory where Gitaly can create all files required to +-# # properly operate at runtime. If not set, Gitaly will create a directory in +-# # the global temporary directory. This directory must exist. +-# runtime_dir = "/home/git/gitaly/run" ++# Optional: The directory where Gitaly can create all files required to ++# properly operate at runtime. If not set, Gitaly will create a directory in ++# the global temporary directory. This directory must exist. ++runtime_dir = "/run/gitaly" + + # # Optional: listen on a TCP socket. This is insecure (no authentication) + # listen_addr = "localhost:9999" +@@ -22,7 +22,7 @@ bin_dir = "/home/git/gitaly/_build/bin" + # # Optional: configure where the Gitaly creates the sockets for internal connections. If unset, Gitaly will create a randomly + # # named temp directory each time it boots. + # # Non Gitaly clients should never connect to these sockets. +-# internal_socket_dir = "/home/git/gitlab/tmp/sockets/private/internal" ++internal_socket_dir = "/run/gitaly/internal" + + # # Optional: authenticate Gitaly requests using a shared secret + # [auth] +@@ -30,8 +30,8 @@ bin_dir = "/home/git/gitaly/_build/bin" + # transitioning = false # Set `transitioning` to true to temporarily allow unauthenticated while rolling out authentication. + + # [tls] +-# certificate_path = '/home/git/cert.cert' +-# key_path = '/home/git/key.pem' ++# certificate_path = '/etc/gitlab/ssl/gitaly.crt' ++# key_path = '/etc/gitlab/ssl/gitaly.key' + + # # Git settings + # [git] +@@ -44,7 +44,7 @@ bin_dir = "/home/git/gitaly/_build/bin" + + [[storage]] + name = "default" +-path = "/home/git/repositories" ++path = "/var/lib/gitlab/repositories" + + # # You can optionally configure more storages for this Gitaly instance to serve up + # +@@ -54,15 +54,15 @@ path = "/home/git/repositories" + # + + # # You can optionally configure Gitaly to output JSON-formatted log messages to stdout +-# [logging] +-# # The directory where Gitaly stores extra log files +-dir = "/home/git/gitlab/log" +-# format = "json" +-# # Optional: Set log level to only log entries with that severity or above +-# # One of, in order: debug, info, warn, errror, fatal, panic +-# # Defaults to "info" +-# level = "warn" +-# ++[logging] ++# The directory where Gitaly stores extra log files ++dir = "/var/log/gitlab" ++format = "text" ++# Optional: Set log level to only log entries with that severity or above ++# One of, in order: debug, info, warn, errror, fatal, panic ++# Defaults to "info" ++level = "warn" ++ + # # Additionally exceptions from the Go server can be reported to Sentry + # sentry_dsn = "https://:@sentry.io/" + +@@ -72,14 +72,14 @@ dir = "/home/git/gitlab/log" + + [gitlab-shell] + # The directory where gitlab-shell is installed +-dir = "/home/git/gitlab-shell" ++dir = "/usr/lib/gitlab-shell" + +-[hooks] +-custom_hooks_dir = "/home/git/custom_hooks" ++# [hooks] ++# custom_hooks_dir = "/etc/gitlab/custom_hooks" + + [gitlab] +-secret_file = "/home/git/gitlab-shell/.gitlab_shell_secret" +-url = "http+unix://%2Fhome%2Fgit%2Fgitlab%2Ftmp%2Fsockets%2Fgitlab-workhorse.socket" ++secret_file = "/etc/gitlab/gitlab_shell_secret" ++url = "http+unix://%2Frun%2Fgitlab%2Fworkhorse.socket" + # Only needed if a UNIX socket is used in `url` and GitLab is configured to + # use a relative path (e.g. /gitlab). + # relative_url_root = '/' diff --git a/user/gitaly/gitaly.initd b/user/gitaly/gitaly.initd new file mode 100644 index 0000000..290c922 --- /dev/null +++ b/user/gitaly/gitaly.initd @@ -0,0 +1,39 @@ +#!/sbin/openrc-run + +name="Gitaly" +description="A Git RPC service for handling all the git calls made by GitLab" + +: ${gitaly_config:="/etc/gitlab/gitaly.toml"} +: ${gitaly_logfile:="/var/log/gitlab/gitaly.log"} + +command="/usr/bin/gitaly" +command_args="$gitaly_config" +command_background="yes" +command_user="git" + +output_log="$gitaly_logfile" +error_log="$gitaly_logfile" +pidfile="/run/gitaly.pid" +supervise_daemon_args="--env TZ=:/etc/localtime" +start_stop_daemon_args="$supervise_daemon_args" + +rc_ulimit="-n 15000" + +required_files="$gitaly_config" + +depend() { + use net +} + +start_pre() { + local socket_path=$(sed -En "s/^\s*socket_path\s*=\s*[\"']([^\"']+)[\"']/\1/p" "$gitaly_config") + local runtime_dir=$(sed -En "s/^\s*runtime_dir\s*=\s*[\"']([^\"']+)[\"']/\1/p" "$gitaly_config") + + if [ "$socket_path" ]; then + checkpath -q -d -m 755 -o $command_user "${socket_path%/*}" || return 1 + fi + if [ "$runtime_dir" ]; then + checkpath -q -d -m 750 -o $command_user "$runtime_dir" || return 1 + fi + checkpath -f -m 640 -o $command_user "$gitaly_logfile" +} diff --git a/user/gitlab-foss/APKBUILD b/user/gitlab-foss/APKBUILD new file mode 100644 index 0000000..f14ab26 --- /dev/null +++ b/user/gitlab-foss/APKBUILD @@ -0,0 +1,388 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka +# Contributor: Antoine Martin (ayakael) +pkgname=gitlab-foss +_pkgname=${pkgname%-foss} +pkgver=16.2.4 +_gittag=v$pkgver +pkgrel=0 +pkgdesc="A version control for your server" +url="https://gitlab.com/gitlab-org/gitlab-foss" +# grpc needs fixing, due to protodev upgrade +#arch="x86_64" +license="MIT" +# ruby-irb is needed only for Rails console (gitlab-rails console) +depends=" + $pkgname-assets=$pkgver-r$pkgrel + ca-certificates + cmd:dpkg-deb + exiftool + git>=2.40.0 + gitaly~=16.2 + gitlab-shell~=14.24 + graphicsmagick + http-parser + procps + py-docutils + python3 + redis>=2.8 + ruby3.0 + ruby3.0-bigdecimal + ruby3.0-bundler + ruby3.0-fiddle + ruby3.0-io-console + ruby3.0-irb + ruby3.0-json + ruby3.0-rake + ruby3.0-webrick + shared-mime-info + tzdata + " +makedepends=" + cmd:chrpath + cmake + file-dev + go + gpgme-dev + icu-dev + libffi-dev + libgcrypt-dev + libpq-dev + libxml2-dev + libxslt-dev + linux-headers + nodejs + openssl-dev + protobuf-dev + re2-dev + ruby3.0-dev + ruby3.0-grpc~=1.55 + ruby3.0-rugged + yarn>=1.2.0 + " +pkgusers="git" +pkggroups="git www-data" +install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade" +subpackages="$pkgname-assets::noarch $pkgname-openrc" +source="https://gitlab.com/gitlab-org/gitlab-foss/-/archive/$_gittag/gitlab-foss-$_gittag.tar.gz + database-config.patch + $_pkgname.initd + $_pkgname.mailroom.initd + $_pkgname.rails.initd + $_pkgname.sidekiq.initd + $_pkgname.workhorse.initd + $_pkgname.confd + $_pkgname.logrotate + bin-wrapper.in + " +builddir="$srcdir/gitlab-foss-$_gittag" + +_prefix="usr/lib/bundles/$_pkgname" + +export BUNDLE_DEPLOYMENT=true +export BUNDLE_FORCE_RUBY_PLATFORM=true +export BUNDLE_FROZEN=true +export BUNDLE_JOBS=${JOBS:-2} + +prepare() { + local sysgemdir=$(ruby -e 'puts Gem.default_dir') + + default_prepare + + # The default log level is very chatty. + sed -i 's/^\(\s*config.log_level\s*=\).*$/\1 :warn/' \ + config/environments/production.rb + + # This is not needed, the secret_token is generated by the + # gitlab-shell package. It also makes problems in the build phase. + rm config/initializers/gitlab_shell_secret_token.rb + + # Remove all locale files except en. + find locale -type d -mindepth 1 ! -name en -exec rm -rf {} + + + # Allow use of any bundler + sed -i -e '/BUNDLED/,+1d' Gemfile.lock + + # Some gems are broken, so we copy our fixed version + # instead of installing it from RubyGems using Bundler. + for i in grpc rugged; do + mkdir -p vendor/gems/$i/src/ruby/lib/$i + cp -r "$sysgemdir"/gems/$i-*/* vendor/gems/$i/ + cp "$sysgemdir"/specifications/$i-*.gemspec \ + vendor/gems/$i/$i.gemspec + cp "$sysgemdir"/extensions/*/*/$i-*/$i/*.so \ + vendor/gems/$i/src/ruby/lib/$i/ + done +} + +build() { + local bundle_without='exclude development kerberos mysql test' + + cd "$builddir"/workhorse + + make + + cd "$builddir" + + msg "Installing Ruby gems..." + bundle config --local without "$bundle_without" + bundle config --local build.ffi --enable-system-libffi + bundle config --local build.gpgme --use-system-libraries + bundle config --local build.nokogiri --use-system-libraries \ + --with-xml2-include=/usr/include/libxml2 \ + --with-xslt-include=/usr/include/libxslt + bundle config --local build.ruby-magic --enable-system-libraries + bundle config --local build.google-protobuf --with-cflags=-D__va_copy=va_copy + bundle config --local path "vendor/bundle" + + bundle install --no-cache + + # Replace bundled CA bundle with symlink. + ( + cd vendor/bundle/ruby/*/gems/aws-sdk-core-*/ + rm ca-bundle.crt + ln -s /etc/ssl/certs/ca-certificates.crt ca-bundle.crt + ) + + # Remove faulty RPATH. + chrpath -d vendor/bundle/ruby/*/extensions/*/*/ruby-magic-*/magic/magic.so + + # cp grpc lib + cp vendor/gems/grpc/src/ruby/lib/grpc/grpc_c.so vendor/bundle/ruby/*/gems/grpc-*/src/ruby/lib/grpc/grpc_c.so + + # Patch installed gem gitlab-markup to use python3. + # Option "-S" causes that Python cannot find docutils module. + sed -i 's/python2 -S/python3/g' \ + vendor/bundle/ruby/*/gems/gitlab-markup-*/lib/github/markups.rb + + # Remove non-sense require of code for tests from top-level module + # (we're gonna delete tests from the package). + sed -i '/require .carrierwave\/test\/matchers./d' \ + vendor/bundle/ruby/*/gems/carrierwave-*/lib/carrierwave.rb + + msg "Installing npm modules..." + yarn install --production --frozen-lockfile + + # Since we have moved assets gems into a group, they are not implicitly + # loaded by default. This will be reverted after compiling assets. + sed -i.bak '/Bundler.require(\*Rails.groups/s/)/, :assets)/' \ + config/application.rb + + # assets:precompile and gettext:compile bootstraps the app, + # so they needs configs. + cp config/gitlab.yml.example config/gitlab.yml + cp config/database.yml.postgresql config/database.yml + cp config/secrets.yml.example config/secrets.yml + + # The configured path is not readable for the user building + # the package, so we must remove it; GitLab will use the default path. + sed -i '/^\s*secret_file:.*/d' config/gitlab.yml + + ( + export NODE_ENV=production + export RAILS_ENV=production + export SKIP_STORAGE_VALIDATION=true + export USE_DB=false + export NO_SOURCEMAPS=true + export NODE_OPTIONS="--max_old_space_size=3584" + + msg "Compiling GetText PO files..." + bundle exec rake gettext:compile + + msg "Compiling assets (this will take few minutes)..." + bundle exec rake gitlab:assets:compile + ) + + # Revert changes. + mv config/application.rb.bak config/application.rb + + msg "Cleaning assets gems..." + bundle config --local without 'exclude development kerberos mysql test assets' + bundle clean + + # Create executables in bin/*. + # See also https://github.com/bundler/bundler/issues/6149. + bundle binstubs --force bundler gitlab-mail_room puma sidekiq + + # Cleanup + rm config/database.yml config/gitlab.yml config/secrets.yml +} + +package() { + local destdir="$pkgdir/$_prefix" + local datadir="$pkgdir/var/lib/gitlab" + local file dest + + install -d -m755 "$destdir" "$destdir"/bin + + install -d -m755 -o git -g git \ + "$datadir" \ + "$pkgdir"/etc/gitlab \ + "$pkgdir"/var/log/gitlab \ + "$datadir"/pages + + install -d -m700 -o git -g git \ + "$datadir"/artifacts \ + "$datadir"/builds \ + "$datadir"/ci_secure_files \ + "$datadir"/dependency_proxy \ + "$datadir"/encrypted_settings \ + "$datadir"/external-diffs \ + "$datadir"/lfs-objects \ + "$datadir"/packages \ + "$datadir"/pages \ + "$datadir"/terraform_state \ + "$datadir"/uploads \ + "$pkgdir"/var/tmp/gitlab \ + "$pkgdir"/var/tmp/gitlab/downloads \ + "$pkgdir"/var/tmp/gitlab/backups + + install -d -m0750 -o git -g www-data \ + "$datadir"/pages + + install -d -m02770 -o git -g git \ + "$datadir"/repositories + + # Install application files. + # Note: *VERSION files and doc directory are required (Help in GitLab + # menu refers to the doc directory). + cp -rl .bundle config.ru Gemfile* INSTALLATION_TYPE Rakefile ./*VERSION \ + app data db doc fixtures config lib locale metrics_server public sidekiq_cluster vendor gems \ + "$destdir"/ + + install -m755 -t "$destdir"/bin/ \ + bin/bundle \ + bin/mail_room \ + bin/metrics-server \ + bin/rails \ + bin/rake \ + bin/sidekiq \ + bin/sidekiq-cluster \ + bin/sidekiqmon \ + bin/puma + + cd "$destdir" + + # Not needed in runtime since we have already compiled all assets. + rm -r app/assets + rm -r vendor/assets + find public/assets -name '*.vue' -delete + find public/assets -type d -exec rmdir --ignore-fail-on-non-empty '{}' \; + # These load gems in the assets group. + rm config/initializers/sprockets.rb + + # Remove more stuff not neeeded in production. + rm -r lib/support + rm -r db/fixtures/development + find lib/tasks -maxdepth 1 -type f ! -name cache.rake ! -name setup.rake -delete + find lib/tasks/gitlab \( -name 'generate_docs.*' \ + -o -name 'shell.*' \ + -o -name 'test.*' \) -delete + + + cd "$destdir"/vendor/bundle/ruby/*/ + + # Remove tests, documentations and other useless files. + find gems/ \( -name 'doc' \ + -o -name 'spec' \ + -o -name 'test' \) \ + -type d -maxdepth 2 -exec rm -fr "{}" + + find gems/ \( -name 'README*' \ + -o -name 'CHANGELOG*' \ + -o -name 'CONTRIBUT*' \ + -o -name '*LICENSE*' \ + -o -name 'Rakefile' \ + -o -name '.*' \) \ + -type f -delete + + # Remove bundled libgit2 sources. + rm -r gems/rugged-*/vendor/libgit2 + + # Remove assets, they are already compiled. + rm -r gems/tanuki_emoji-*/app/assets + + # Remove build logs and cache. + rm -rf build_info/ cache/ + find extensions/ \( -name gem_make.out -o -name mkmf.log \) -delete + + + cd "$destdir" + + # Install and symlink config files. + for file in cable.yml.example \ + database.yml.postgresql \ + gitlab.yml.example \ + puma.rb.example \ + resque.yml.example \ + sidekiq.yml.example \ + initializers/smtp_settings.rb.sample + do + dest="$(basename "${file%.*}")" + install -m640 -g git -D config/$file "$pkgdir"/etc/gitlab/$dest + ln -sf /etc/gitlab/$dest "$pkgdir"/$_prefix/config/${file%.*} + done + + # This file will be generated by the post-install script, just prepare symlink. + ln -sf /etc/gitlab/secrets.yml config/secrets.yml + # These shouldn't be necessary, they are all configurable, but OmniBus + # creates them too, so just to be sure... + ln -sf /etc/gitlab/gitlab_kas_secret .gitlab_kas_secret + ln -sf /etc/gitlab/gitlab_pages_secret .gitlab_pages_secret + ln -sf /etc/gitlab/gitlab_shell_secret .gitlab_shell_secret + ln -sf /etc/gitlab/gitlab_workhorse_secret .gitlab_workhorse_secret + + # Some paths are hard-coded in GitLab, so we must make symlinks. :( + ln -sf /var/lib/gitlab/uploads public/uploads + ln -sf /var/log/gitlab log + ln -sf /var/tmp/gitlab tmp + + cat > "$datadir"/.profile <<-EOF + export RAILS_ENV=production + export NODE_ENV=production + export EXECJS_RUNTIME=Disabled + EOF + + # Install wrapper scripts to /usr/bin. + local name; for name in rake rails; do + sed "s/__COMMAND__/$name/g" "$srcdir"/bin-wrapper.in \ + > "$builddir"/gitlab-$name + install -m755 -D "$builddir"/gitlab-$name "$pkgdir"/usr/bin/gitlab-$name + done + + + cd "$builddir"/workhorse + + # Install workhorse. + make install DESTDIR="$pkgdir" PREFIX=/usr + install -m644 config.toml.example "$pkgdir"/etc/gitlab/workhorse.toml + + + for file in $_pkgname $_pkgname.rails $_pkgname.sidekiq $_pkgname.mailroom $_pkgname.workhorse; do + install -m755 -D "$srcdir"/$file.initd "$pkgdir"/etc/init.d/$file + done + + install -m644 -D "$srcdir"/$_pkgname.confd \ + "$pkgdir"/etc/conf.d/$_pkgname + + install -m644 -D "$srcdir"/$_pkgname.logrotate \ + "$pkgdir"/etc/logrotate.d/$_pkgname +} + +assets() { + depends="" + + amove $_prefix/public/assets +} + +sha512sums=" +96d2146f81bcecae9e8a4a72ef1dd136a2203649af38dbcb560c8071ca9a409b54b7e220b7c233b66ce1ee9423700e8150e445902971f951282764bded2bc717 gitlab-foss-v16.2.4.tar.gz +cdba615287c0a024c6589b5142543856393c8e5df3d21d2158908b34857d3d56581fe0bd66fa31cd3ff756c60f9f65f235c8ec7615a0970f7a87bbeb41be93ed database-config.patch +55b0667d3969113ffd6860652ee8bdb9a534c25f413f33b2739e922c886988e7cea72c1c00c7eecf29fcff3682b1324156365605ffc6aae45d1e0ccddf96288b gitlab.initd +1f451b67a5d5e58650b0fe862a2b65cfb8bff5502b37d94ae90619c1ff9affbecf24428303a2849bebce5f94bef37078f0e5710e344bbab616134e910938384a gitlab.mailroom.initd +b6a6d9ba20557e61efa24f2d5a489873fefbb981f7d4465794a857b2971263c08ec29cc001c372522cdc0d48245e59751307c9f44f6ef4d87bf2e3ec5c23fb1c gitlab.rails.initd +cb4ec100f0ea7ffcbb37aead8423e636629e2f4848b2974a7b2468e96cb1081ca732ac336417b08dd943afb961df888c73af1334dcbe054dfd361e74f492fd86 gitlab.sidekiq.initd +85c4e257a030832bd70ad1e257ae7cb568b31e01201fc845abac02d00f02492ca694be1fa2bf743dd8c8623e6a79d36adee3f4de02040134c11158a6001c064b gitlab.workhorse.initd +4dc00b16462f30591297fcb535fc364185d3ed76e9956597f0423a8dfd8a9a351f6ac29d9f0c73052c11324fba4768eb89a21c6bef4da99f15baaea8c9ab8407 gitlab.confd +57f258246925fbef0780caebdf005983c72fe3db1ab3242a1e00137bd322f5ec6c0fd958db7178b8fc22103d071f550d6f71f08422bcd9e859d2a734b2ecef00 gitlab.logrotate +a944c3886388ba1574bf8c96b6de4d9f24ef4a83f553c31a224e17a3b01f2a5c65b60c59b7ed7ca4b25670c60ea8dd41b96a8a623d909d2bb09bdf2520ed7f23 bin-wrapper.in +" diff --git a/user/gitlab-foss/bin-wrapper.in b/user/gitlab-foss/bin-wrapper.in new file mode 100644 index 0000000..aa1d411 --- /dev/null +++ b/user/gitlab-foss/bin-wrapper.in @@ -0,0 +1,15 @@ +#!/bin/sh + +BUNDLE_DIR='/usr/lib/bundles/gitlab' +export RAILS_ENV='production' +export NODE_ENV='production' +export EXECJS_RUNTIME='Disabled' + +cd $BUNDLE_DIR +install -m 700 -o git -g git -d "$(readlink ./tmp)" + +if [ "$(id -un)" != 'git' ]; then + exec su git -c '"$0" "$@"' -- bin/__COMMAND__ "$@" +else + exec bin/__COMMAND__ "$@" +fi diff --git a/user/gitlab-foss/database-config.patch b/user/gitlab-foss/database-config.patch new file mode 100644 index 0000000..6ed3592 --- /dev/null +++ b/user/gitlab-foss/database-config.patch @@ -0,0 +1,64 @@ +diff --git a/config/database.yml.postgresql.orig b/config/database.yml.postgresql +index b210b9c..9006120 100644 +--- a/config/database.yml.postgresql.orig ++++ b/config/database.yml.postgresql +@@ -26,13 +26,6 @@ production: + username: git + password: "secure password" + host: localhost +- geo: +- adapter: postgresql +- encoding: unicode +- database: gitlabhq_geo_production +- username: git +- password: "secure password" +- host: localhost + + # + # Development specific +@@ -57,13 +50,6 @@ development: + host: localhost + variables: + statement_timeout: 15s +- geo: +- adapter: postgresql +- encoding: unicode +- database: gitlabhq_geo_development +- username: postgres +- password: "secure password" +- host: localhost + + # + # Staging specific +@@ -84,13 +70,6 @@ staging: + username: git + password: "secure password" + host: localhost +- geo: +- adapter: postgresql +- encoding: unicode +- database: gitlabhq_geo_staging +- username: git +- password: "secure password" +- host: localhost + + # Warning: The database defined as "test" will be erased and + # re-generated from your development database when you run "rake". +@@ -117,17 +96,3 @@ test: &test + prepared_statements: false + variables: + statement_timeout: 15s +- geo: +- adapter: postgresql +- encoding: unicode +- database: gitlabhq_geo_test +- username: postgres +- password: +- host: localhost +- embedding: +- adapter: postgresql +- encoding: unicode +- database: gitlabhq_embedding_test +- username: postgres +- password: +- host: localhost diff --git a/user/gitlab-foss/gitlab-foss.post-install b/user/gitlab-foss/gitlab-foss.post-install new file mode 100644 index 0000000..65d05cc --- /dev/null +++ b/user/gitlab-foss/gitlab-foss.post-install @@ -0,0 +1,108 @@ +#!/bin/sh +set -eu + +group='git' +data_dir='/var/lib/gitlab' +secrets_file='/etc/gitlab/secrets.yml' +shell_secret_file='/etc/gitlab/gitlab_shell_secret' +workhorse_secret_file='/etc/gitlab/gitlab_workhorse_secret' +kas_secret_file='/etc/gitlab/gitlab_kas_secret' + +gen_random_b64() { + local bits="$1" + ruby <<-EOF + require 'securerandom' + require 'base64' + puts Base64.strict_encode64(SecureRandom.random_bytes($bits)) + EOF +} + + +echo "* Checking $secrets_file" >&2 + +ruby <<-EOF + require 'openssl' + require 'securerandom' + require 'yaml' + + secrets_file = '$secrets_file' + changed = false + + secrets = YAML.load_file(secrets_file) if File.exist?(secrets_file) + secrets ||= {} + prod = secrets['production'] ||= {} + prod['db_key_base'] ||= ( changed = true; SecureRandom.hex(64) ) + prod['secret_key_base'] ||= ( changed = true; SecureRandom.hex(64) ) + prod['otp_key_base'] ||= ( changed = true; SecureRandom.hex(64) ) + prod['encrypted_settings_key_base'] ||= ( changed = true; SecureRandom.hex(64) ) + prod['openid_connect_signing_key'] ||= begin + changed = true + prod.delete('jws_private_key') || OpenSSL::PKey::RSA.new(2048).to_pem + end + # db/fixtures/production/010_settings.rb + prod['ci_jwt_signing_key'] ||= ( changed = true; OpenSSL::PKey::RSA.new(2048).to_pem ) + + if changed + STDERR.puts "* Generating random secrets into #{secrets_file}" + File.write(secrets_file, YAML.dump(secrets), mode: 'w', perm: 0640) + end +EOF +chown root:$group "$secrets_file" + +if [ ! -f "$shell_secret_file" ]; then + echo "* Generating random secret in $shell_secret_file" >&2 + + head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64 > "$shell_secret_file" + chown root:$group "$shell_secret_file" + chmod 0640 "$shell_secret_file" +fi + +if [ ! -f "$workhorse_secret_file" ]; then + echo "* Generating random secret in $workhorse_secret_file" >&2 + + # Sync with lib/gitlab/workhorse.rb. + gen_random_b64 32 > "$workhorse_secret_file" + chown root:$group "$workhorse_secret_file" + chmod 0640 "$workhorse_secret_file" +fi + +if [ ! -f "$kas_secret_file" ]; then + echo "* Generating random secret in $kas_secret_file" >&2 + + # Sync with lib/gitlab/workhorse.rb. + gen_random_b64 32 > "$kas_secret_file" + chown root:$group "$kas_secret_file" + chmod 0640 "$kas_secret_file" +fi + +# NOTE: We create this symlink in post-install script instead of APKBULD, +# so user can decide to have tmp dir inside $data_dir (e.g. it's on bigger disk). +if [ ! -e "$data_dir"/tmp ]; then + ln -s /var/tmp/gitlab "$data_dir"/tmp +fi + + +if [ "${0##*.}" = 'post-upgrade' ]; then + cat >&2 <<-EOF + * + * To finish GitLab upgrade run: + * + * gitlab-rake gitlab:db:configure + * + EOF +else + cat >&2 <<-EOF + * + * 1. Adjust settings in /etc/gitlab/database.yml and gitlab.yml. + * + * 2. Create database for GitLab: + * + * psql -c "CREATE ROLE gitlab PASSWORD 'top-secret' INHERIT LOGIN;" + * psql -c "CREATE DATABASE gitlab OWNER gitlab ENCODING 'UTF-8';" + * psql -d gitlab -c "CREATE EXTENSION pg_trgm; CREATE EXTENSION btree_gist;" + * + * 3. Run "gitlab-rake gitlab:setup", or "gitlab-rake gitlab:db:configure" if + * you are updating existing database. + * + EOF +fi diff --git a/user/gitlab-foss/gitlab-foss.post-upgrade b/user/gitlab-foss/gitlab-foss.post-upgrade new file mode 120000 index 0000000..20d2b0c --- /dev/null +++ b/user/gitlab-foss/gitlab-foss.post-upgrade @@ -0,0 +1 @@ +gitlab-foss.post-install \ No newline at end of file diff --git a/user/gitlab-foss/gitlab-foss.pre-install b/user/gitlab-foss/gitlab-foss.pre-install new file mode 100644 index 0000000..66ad895 --- /dev/null +++ b/user/gitlab-foss/gitlab-foss.pre-install @@ -0,0 +1,53 @@ +#!/bin/sh +# It's very important to set user/group correctly. + +git_dir='/var/lib/gitlab' + +if ! getent group git 1>/dev/null; then + echo '* Creating group git' 1>&2 + + addgroup -S git +fi + +if ! id git 2>/dev/null 1>&2; then + echo '* Creating user git' 1>&2 + + adduser -DHS -G git -h "$git_dir" -s /bin/sh \ + -g "added by apk for gitlab-foss" git + passwd -u git 1>/dev/null # unlock +fi + +if ! id -Gn git | grep -Fq redis; then + echo '* Adding user git to group redis' 1>&2 + + addgroup git redis +fi + +if [ "$(id -gn git)" != 'git' ]; then + cat >&2 <<-EOF + !! + !! User git has primary group $(id -gn git). We strongly recommend to change + !! git's primary group to git, otherwise GitLab may not work correctly. + !! + EOF + + # Add it at least as a supplementary group. + adduser git git +fi + +user_home="$(getent passwd git | cut -d: -f6)" + +if [ "$user_home" != "$git_dir" ]; then + cat >&2 <<-EOF + !! + !! User git has home directory in $user_home, but this package assumes + !! $git_dir. Although it's possible to use a different directory, + !! it's really not easy. + !! + !! Please change git's home directory to $git_dir, or adjust settings + !! and move files yourself. Otherwise GitLab will not work! + !! + EOF +fi + +exit 0 diff --git a/user/gitlab-foss/gitlab-rails.confd b/user/gitlab-foss/gitlab-rails.confd new file mode 100644 index 0000000..d85aa9c --- /dev/null +++ b/user/gitlab-foss/gitlab-rails.confd @@ -0,0 +1,20 @@ +# Configuration for /etc/init.d/gitlab.rails + +# Path to the Puma configuration file. +#puma_config="/etc/gitlab/puma.rb" + +# IP address and port for Puma server to listen on. +#puma_listen_tcp="127.0.0.1:8080" + +# Absolute path of unix socket for Puma server to listen on. +#puma_listen_unix="/run/gitlab/gitlab.socket" + +# Path to the file to redirect stdout from Puma server to. +#puma_stdout_file="/var/log/gitlab/puma_stdout.log" + +# Path to the file to redirect stderr from Puma server to. +#puma_stderr_file="/var/log/gitlab/puma_stderr.log" + +# Action Cable uses a separate thread pool per Puma worker. This configures +# number of threads in the pool. +#action_cable_worker_pool_size=4 diff --git a/user/gitlab-foss/gitlab.confd b/user/gitlab-foss/gitlab.confd new file mode 100644 index 0000000..ade6bcc --- /dev/null +++ b/user/gitlab-foss/gitlab.confd @@ -0,0 +1,85 @@ +# Configuration file for /etc/init.d/gitlab and +# /etc/init.d/gitlab.{mailroom,rails,sidekiq,workhorse} + + +# Path to the base directory for the Prometheus metrics used by Puma and +# Sidekiq. +#metrics_dir=/dev/shm/gitlab + + +# How many Puma worker processes to create (0 to disable cluster mode). +#puma_workers=3 + +# IP address and port for Puma server to listen on. +#puma_listen_tcp="127.0.0.1:8080" + +# Absolute path of unix socket for Puma server to listen on. +#puma_listen_unix="/run/gitlab/gitlab.socket" + +# Action Cable uses a separate thread pool per Puma worker. This configures +# number of threads in the pool. +#action_cable_worker_pool_size=4 + + +# IP address and port, or absolute path of the unix socket, where should +# Workhorse listen on for connections from a web server. +#workhorse_listen="/run/gitlab/workhorse.socket" + +# How long to wait for response headers when proxying the request. +#workhorse_proxy_header_timeout="1m0s" + +# Number of API requests allowed at single time. +#workhorse_api_limit= + +# Maximum queueing duration of requests (default 30s). +#workhorse_api_queue_duration= + +# Number of API requests allowed to be queued. +#workhorse_api_queue_limit= + +# Long polling duration for job requesting for runners (default 0s - disabled) +#workhorse_ci_long_polling_duration= + +# Log format to use: text, json, structured, none. Defaults to "text". +#workhorse_log_format= + +# Prometheus listening address. +#workhorse_prometheus_listen= + +# Sentry DSN for Workhorse. +#workhorse_sentry_dsn= + + +# Specify how many processes to create using sidekiq-cluster and which queue +# they should handle. Each whitespace-separated item equates to one additional +# Sidekiq process, and comma-separated values in each item determine the queues +# it works on. The special queue name "*" means all queues. +# Example: "* gitlab_shell process_commit,post_receive" +# See https://docs.gitlab.com/ee/administration/sidekiq/extra_sidekiq_processes.html. +#sidekiq_queue_groups="*" + +# Maximum threads to use with Sidekiq (default: 50, 0 to disable). +#sidekiq_max_concurrency= + +# Minimum threads to use with Sidekiq (default: 0). +#sidekiq_min_concurrency= + +# The number of seconds to wait between worker checks. +#sidekiq_interval= + +# Graceful timeout for all running processes. +#sidekiq_shutdown_timeout= + +# Run workers for all queues in sidekiq_queues.yml except the given ones. +#sidekiq_negate=no + +# Run workers based on the provided selector. +#sidekiq_queue_selector=no + +# Memory limit (in MiB) for the Sidekiq process. If the RSS (Resident Set Size) +# of the Sidekiq process exceeds this limit, a delayed shutdown is triggered. +#sidekiq_memkiller_max_rss=2000 + + +# Enable mail_room to handle incoming mails? +#mailroom_enabled="no" diff --git a/user/gitlab-foss/gitlab.initd b/user/gitlab-foss/gitlab.initd new file mode 100644 index 0000000..c286ae2 --- /dev/null +++ b/user/gitlab-foss/gitlab.initd @@ -0,0 +1,49 @@ +#!/sbin/openrc-run + +name="GitLab" +description="Meta script for starting/stopping all the GitLab components" + +: ${mailroom_enabled:="no"} +: ${pages_enabled:="yes"} + +subservices="gitlab.rails gitlab.gitaly gitlab.sidekiq gitlab.workhorse" +if yesno "$mailroom_enabled"; then + subservices="$subservices gitlab.mailroom" +fi +if yesno "$pages_enabled" && [ -e /etc/init.d/gitlab.pages ]; then + subservices="$subservices gitlab.pages" +fi + +depend() { + use net +} + +start() { + local ret=0 + + ebegin "Starting all GitLab components" + local svc; for svc in $subservices; do + service $svc start || ret=1 + done + eend $ret +} + +stop() { + local ret=0 + + ebegin "Stopping all GitLab components" + local svc; for svc in $subservices; do + service $svc stop || ret=1 + done + eend $ret +} + +status() { + local ret=0 + + local svc; for svc in $subservices; do + echo "$svc:" + service $svc status || ret=1 + done + eend $ret +} diff --git a/user/gitlab-foss/gitlab.logrotate b/user/gitlab-foss/gitlab.logrotate new file mode 100644 index 0000000..721ff49 --- /dev/null +++ b/user/gitlab-foss/gitlab.logrotate @@ -0,0 +1,24 @@ +/var/log/gitlab/workhorse.log { + compress + maxsize 10M + minsize 1M + missingok + postrotate + /etc/init.d/gitlab.workhorse --quiet --ifstarted reopen + endscript + sharedscripts + rotate 5 + weekly +} + +/var/log/gitlab/*.log { + compress + copytruncate + delaycompress + maxsize 10M + minsize 1M + missingok + sharedscripts + rotate 10 + weekly +} diff --git a/user/gitlab-foss/gitlab.mailroom.initd b/user/gitlab-foss/gitlab.mailroom.initd new file mode 100644 index 0000000..e6d6a64 --- /dev/null +++ b/user/gitlab-foss/gitlab.mailroom.initd @@ -0,0 +1,40 @@ +#!/sbin/openrc-run + +supervisor=supervise-daemon + +name="GitLab (mailroom)" +description="GitLab service for processing incoming mails." + +: ${gitlab_base:="/usr/lib/bundles/gitlab"} +: ${gitlab_config:="/etc/gitlab/gitlab.yml"} +: ${mailroom_logfile:="/var/log/gitlab/mail_room.log"} +: ${mailroom_config:="$gitlab_base/config/mail_room.yml"} + +command="$gitlab_base/bin/mail_room" +command_args="-c $mailroom_config" +command_background="yes" +command_user="git" + +directory="$gitlab_base" +error_log="$mailroom_logfile" +output_log="$mailroom_logfile" + +supervise_daemon_args=" + --env RAILS_ENV=production + --env TZ=:/etc/localtime + --env MAIL_ROOM_GITLAB_CONFIG_FILE=$gitlab_config + " +start_stop_daemon_args="--interpreted $supervise_daemon_args" +pidfile="/run/gitlab/mail_room.pid" + +required_files="$mailroom_config $gitlab_config" + +depend() { + need redis + use net +} + +start_pre() { + checkpath -d -m 755 -o $command_user -q "${pidfile%/*}" || return 1 + checkpath -f -m 640 -o $command_user "$mailroom_logfile" +} diff --git a/user/gitlab-foss/gitlab.rails.initd b/user/gitlab-foss/gitlab.rails.initd new file mode 100644 index 0000000..051cbcd --- /dev/null +++ b/user/gitlab-foss/gitlab.rails.initd @@ -0,0 +1,114 @@ +#!/sbin/openrc-run + +name="GitLab Rails" +description="GitLab application" + +extra_started_commands="reload reopen" +description_reload="Reload configuration" +description_reopen="Reopen log files" + +: ${gitlab_base:="/usr/lib/bundles/gitlab"} +: ${metrics_dir:="/dev/shm/gitlab"} + +: ${action_cable_worker_pool_size:=4} +: ${gitlab_config:="/etc/gitlab/gitlab.yml"} +: ${puma_workers:=3} +: ${puma_listen_unix:="/run/gitlab/gitlab.socket"} +: ${puma_listen_tcp:="127.0.0.1:8080"} +: ${puma_stdout_file:="/var/log/gitlab/puma_stdout.log"} +: ${puma_stderr_file:="/var/log/gitlab/puma_stderr.log"} +: ${puma_config:="/etc/gitlab/puma.rb"} +: ${puma_metrics_dir:="$metrics_dir/puma"} + +command="$gitlab_base/bin/puma" +command_args=" + --config $puma_config + --workers $puma_workers + --bind tcp://$puma_listen_tcp + --bind unix://$puma_listen_unix + --redirect-stdout $puma_stdout_file + --redirect-stderr $puma_stderr_file + --redirect-append + --state /run/gitlab/puma.state + " +command_background="yes" +command_user="git" +directory="$gitlab_base" + +supervise_daemon_args=" + --env ACTION_CABLE_WORKER_POOL_SIZE=$action_cable_worker_pool_size + --env RAILS_ENV=production + --env NODE_ENV=production + --env EXECJS_RUNTIME=Disabled + --env GITLAB_BASE=$gitlab_base + --env TZ=:/etc/localtime + --env prometheus_multiproc_dir=$puma_metrics_dir + ${supervise_daemon_args:-} + " +start_stop_daemon_args=" + --interpreted + $supervise_daemon_args + $start_stop_daemon_args + " +pidfile="/run/gitlab/puma.pid" + +required_files="$gitlab_config $puma_config" + +depend() { + need redis + want sshd postgresql docker-registry + use net +} + +start_pre() { + checkpath -d -m 755 -o $command_user -q "${pidfile%/*}" || return 1 + checkpath -d -m 700 -o $command_user -q "$(readlink -f "$gitlab_base"/tmp)" || return 1 + checkpath -d -m 700 -o $command_user -q "$metrics_dir" || return 1 + checkpath -d -m 700 -o $command_user --directory-truncate "$puma_metrics_dir" || return 1 + checkpath -f -m 644 -o $command_user "$puma_stdout_file" || return 1 + checkpath -f -m 644 -o $command_user "$puma_stderr_file" || return 1 + + # Ruby requires sticky bit on TMP directory. + checkpath -d -m 1777 /tmp + + local downloads_path="$(_parse_yaml "$gitlab_config" \ + production.gitlab.repository_downloads_path)" + + if [ -n "$downloads_path" ]; then + checkpath -d -m 700 -o $command_user -q "$downloads_path" + fi +} + +reload() { + ebegin "Reloading $name" + + if [ "$supervisor" ]; then + $supervisor "$RC_SVCNAME" --signal USR2 + else + start-stop-daemon --pidfile "$pidfile" --signal USR2 + fi + eend $? +} + +reopen() { + ebegin "Telling $name to reopen log files" + + if [ "$supervisor" ]; then + $supervisor "$RC_SVCNAME" --signal USR1 + else + start-stop-daemon --pidfile "$pidfile" --signal USR1 + fi + eend $? +} + +_parse_yaml() { + local file="$1" + local key="$2" + local default="${3:-}" + local key_path="$(echo "[\"$key\"]" | sed 's/\./"]["/g')" + + ruby <<-EOF + require "yaml" + puts YAML.load_file("$file")$key_path rescue puts "$default" + EOF +} diff --git a/user/gitlab-foss/gitlab.sidekiq.initd b/user/gitlab-foss/gitlab.sidekiq.initd new file mode 100644 index 0000000..eb30f4c --- /dev/null +++ b/user/gitlab-foss/gitlab.sidekiq.initd @@ -0,0 +1,76 @@ +#!/sbin/openrc-run + +extra_started_commands="finish" + +name="GitLab Sidekiq" +description="GitLab backgroud workers" +description_finish="Stop fetching new jobs and finish current ones" + +: ${gitlab_base:="/usr/lib/bundles/gitlab"} +: ${metrics_dir:="/dev/shm/gitlab"} + +: ${sidekiq_logfile:="/var/log/gitlab/sidekiq.log"} +: ${sidekiq_memkiller_max_rss:="2000"} # default per Omnibus +: ${sidekiq_metrics_dir:="$metrics_dir/sidekiq"} +: ${sidekiq_negate:="no"} +: ${sidekiq_queue_groups:="*"} +: ${sidekiq_queue_selector:="no"} + +command="$gitlab_base/bin/sidekiq-cluster" +# Note: The rest of the options is set in start_pre(). +command_args="-r $gitlab_base -e production ${command_args:-}" +command_background="yes" +command_user="git" + +directory="$gitlab_base" +error_log="$sidekiq_logfile" +output_log="$sidekiq_logfile" + +supervise_daemon_args=" + --env RAILS_ENV=production + --env NODE_ENV=production + --env EXECJS_RUNTIME=Disabled + --env TZ=:/etc/localtime + --env SIDEKIQ_MEMORY_KILLER_MAX_RSS=$(( sidekiq_memkiller_max_rss * 1024 )) + --env prometheus_multiproc_dir=$sidekiq_metrics_dir + " +start_stop_daemon_args="--interpreted $supervise_daemon_args" +pidfile="/run/gitlab/sidekiq.pid" + +depend() { + need redis + use net postgresql +} + +start_pre() { + yesno "$sidekiq_queue_selector" && command_args="$command_args --queue-selector" + + command_args="$command_args + $(optif --max-concurrency ${sidekiq_max_concurrency:-}) + $(optif --min-concurrency ${sidekiq_min_concurrency:-}) + $(optif --interval ${sidekiq_interval:-}) + $(optif --timeout ${sidekiq_shutdown_timeout:-}) + $(set -f; printf "'%s' " $sidekiq_queue_groups) + " + yesno "$sidekiq_negate" && command_args="$command_args --negate" + + checkpath -d -m 755 -o $command_user -q "${pidfile%/*}" || return 1 + checkpath -d -m 700 -o $command_user -q "$metrics_dir" || return 1 + checkpath -d -m 700 -o $command_user --directory-truncate "$sidekiq_metrics_dir" || return 1 + checkpath -f -m 644 -o $command_user "$sidekiq_logfile" +} + +finish() { + ebegin "Telling $name to stop fetching new jobs" + + if [ "$supervisor" ]; then + $supervisor "$RC_SVCNAME" --signal TSTP + else + start-stop-daemon --pidfile "$pidfile" --signal TSTP + fi + eend $? +} + +optif() { + test -n "$2" && printf '%s/n' "$1=$2" || true +} diff --git a/user/gitlab-foss/gitlab.workhorse.initd b/user/gitlab-foss/gitlab.workhorse.initd new file mode 100644 index 0000000..4b04d7c --- /dev/null +++ b/user/gitlab-foss/gitlab.workhorse.initd @@ -0,0 +1,75 @@ +#!/sbin/openrc-run + +extra_started_commands="reopen" + +name="GitLab Workhorse" +description="A reverse proxy for GitLab." +description_reopen="Reopen log files" + +: ${gitlab_base:="/usr/lib/bundles/gitlab"} +: ${workhorse_logfile:="/var/log/gitlab/workhorse.log"} +: ${workhorse_access_log:="no"} + +command="/usr/bin/gitlab-workhorse" +# Note: The rest of the options is set in start_pre(). +command_args=" + -authBackend=http://${puma_listen_tcp:="127.0.0.1:8080"} + -config=${workhorse_config:="/etc/gitlab/workhorse.toml"} + -documentRoot=${gitlab_public_dir:="$gitlab_base/public"} + -listenAddr=${workhorse_listen:="/run/gitlab/workhorse.socket"} + -listenUmask=${workhorse_listen_umask:="000"} + -logFile=$workhorse_logfile + -secretPath=${workhorse_secret_path:="/etc/gitlab/gitlab_workhorse_secret"} + " +command_background="yes" +command_user="git" +directory="$gitlab_base" +pidfile="/run/gitlab/workhorse.pid" + +depend() { + use net +} + +start_pre() { + local listen_net="tcp" + [ "${workhorse_listen:0:1}" = '/' ] && listen_net="unix" + + command_args="$command_args + -listenNetwork=$listen_net + $(optif -apiCiLongPollingDuration "$workhorse_ci_long_polling_duration") + $(optif -apiLimit "$workhorse_api_limit") + $(optif -apiQueueDuration "$workhorse_api_queue_duration") + $(optif -apiQueueLimit "$workhorse_api_queue_limit") + $(optif -authSocket "$puma_listen_unix") + $(optif -logFormat "$workhorse_log_format") + $(optif -prometheusListenAddr "$workhorse_prometheus_listen_addr") + $(optif -proxyHeadersTimeout "$workhorse_proxy_header_timeout")" + # FIXME: not implemented + #yesno "$workhorse_access_log" || command_args="$command_args -disableAccessLog" + + start_stop_daemon_args="$start_stop_daemon_args + $(optif '--env GITLAB_WORKHORSE_SENTRY_DSN' "$workhorse_sentry_dns")" + supervise_daemon_args="$supervise_daemon_args + $(optif '--env GITLAB_WORKHORSE_SENTRY_DSN' "$workhorse_sentry_dns")" + + checkpath -d -m 755 -o $command_user -q "${pidfile%/*}" || return 1 + if [ "$listen_net" = "unix" ]; then + checkpath -d -m 755 -o $command_user -q "${workhorse_listen%/*}" || return 1 + fi + checkpath -f -m 640 -o $command_user "$workhorse_logfile" +} + +reopen() { + ebegin "Telling $name to reopen log files" + + if [ "$supervisor" ]; then + $supervisor "$RC_SVCNAME" --signal HUP + else + start-stop-daemon --pidfile "$pidfile" --signal HUP + fi + eend $? +} + +optif() { + test -n "$2" && printf '%s/n' "$1=$2" || true +} diff --git a/user/gitlab-pages/APKBUILD b/user/gitlab-pages/APKBUILD new file mode 100644 index 0000000..d305a8b --- /dev/null +++ b/user/gitlab-pages/APKBUILD @@ -0,0 +1,35 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka +pkgname=gitlab-pages +pkgver=16.2.4 +_gittag="v$pkgver" +pkgrel=0 +pkgdesc="A daemon used to serve static websites for GitLab users" +url="https://gitlab.com/gitlab-org/gitlab-pages/" +arch="all" +license="MIT" +makedepends="go>=1.5" +source=" + https://gitlab.com/gitlab-org/gitlab-pages/-/archive/$_gittag/gitlab-pages-$_gittag.tar.gz + ungit-makefile.patch + $pkgname.initd + " +subpackages="$pkgname-openrc" +builddir="$srcdir"/$pkgname-$_gittag + +build() { + make VERSION=$pkgver REVISION=$pkgrel GOPATH="$srcdir" CGO_ENABLED=0 +} + +package() { + install -D -m 755 $pkgname "$pkgdir"/usr/bin/$pkgname + install -m755 -D "$srcdir"/$pkgname.initd \ + "$pkgdir"/etc/init.d/gitlab.pages +} + +sha512sums=" +d05b99d48a88a008a729f15471284169ea7ce664aa19894c93f0c95e4259d79891c7e58d2204c21fa2d11bfb9c59c77ed2d3d7effa5235263e7aa046233f4acc gitlab-pages-v16.2.4.tar.gz +710a9b652327e57e620c2bdb02bf912a6f61044eaaf61d36c6612284e9b951d2ac6f5eef77dfea16a0cde328bd4c556d9e47791c560139c27cb9659076f809b1 ungit-makefile.patch +20bc66c1c3548568ed353ca8d584f9108b9688f9375f212a18efc7b8386fdaafb3b2dc9e865f21c7f8fd31ada6e91842a8bb8d397f64851d853bb0de3e0e60bb gitlab-pages.initd +" diff --git a/user/gitlab-pages/gitlab-pages.initd b/user/gitlab-pages/gitlab-pages.initd new file mode 100644 index 0000000..4a34507 --- /dev/null +++ b/user/gitlab-pages/gitlab-pages.initd @@ -0,0 +1,55 @@ +#!/sbin/openrc-run + +name="GitLab Pages" +description="A daemon used to serve static websites for GitLab users" + +: ${pages_user:=${user:-"git"}} +: ${pages_root:="/var/lib/gitlab/pages"} +: ${pages_logfile:="/var/log/gitlab/pages.log"} + +command="/usr/bin/gitlab-pages" +# Note: The rest of the options is set in start_pre(). +command_args=" + -pages-domain=$pages_domain + -pages-root=$pages_root + -redirect-http=${pages_redirect_http:-true} + -use-http2=${pages_use_http2:-true} + " +command_background="yes" + +start_stop_daemon_args=" + --chdir $pages_root + --user $pages_user + --stdout $pages_logfile + --stderr $pages_logfile" +pidfile="/run/gitlab-pages.pid" + + +depend() { + use net +} + +start_pre() { + local item + + for item in $pages_listen_http; do + command_args="$command_args -listen-http=$item" + done + for item in $pages_listen_https; do + command_args="$command_args -listen-https=$item" + done + for item in $pages_listen_proxy; do + command_args="$command_args -listen-proxy=$item" + done + + command_args="$command_args + $(optif -metrics-address "$pages_metrics_address") + $(optif -root-cert "$pages_root_cert") + $(optif -root-key "$pages_root_key")" + + checkpath -m 640 -o $pages_user -f "$pages_logfile" +} + +optif() { + test -n "$2" && printf '%s/n' "$1=$2" || true +} diff --git a/user/gitlab-pages/ungit-makefile.patch b/user/gitlab-pages/ungit-makefile.patch new file mode 100644 index 0000000..4cbc132 --- /dev/null +++ b/user/gitlab-pages/ungit-makefile.patch @@ -0,0 +1,18 @@ +diff --git a/Makefile.internal.mk.orig b/Makefile.internal.mk +index 6dfaa1b..207bdaf 100644 +--- a/Makefile.internal.mk.orig ++++ b/Makefile.internal.mk +@@ -1,13 +1,3 @@ +-REVISION := $(shell git rev-parse --short HEAD || echo unknown) +-LAST_TAG := $(shell git describe --tags --abbrev=0) +-COMMITS := $(shell echo `git log --oneline $(LAST_TAG)..HEAD | wc -l`) +-VERSION := $(shell cat VERSION) +-BRANCH := $(shell git rev-parse --abbrev-ref HEAD) +- +-ifneq (v$(VERSION),$(LAST_TAG)) +- VERSION := $(shell echo $(VERSION)~beta.$(COMMITS).g$(REVISION)) +-endif +- + VERSION_FLAGS :=-X "main.VERSION=$(VERSION)" -X "main.REVISION=$(REVISION)" + + export GOBIN := $(CURDIR)/bin diff --git a/user/gitlab-shell/APKBUILD b/user/gitlab-shell/APKBUILD new file mode 100644 index 0000000..8e31797 --- /dev/null +++ b/user/gitlab-shell/APKBUILD @@ -0,0 +1,66 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka +pkgname=gitlab-shell +pkgver=14.24.0 +pkgrel=0 +pkgdesc="GitLab Shell handles git SSH sessions for GitLab" +url="https://gitlab.com/gitlab-org/gitlab-shell" +arch="all" +license="MIT" +depends="git openssh" +makedepends="go krb5-dev" +pkgusers="git" +pkggroups="git" +install="$pkgname.pre-install $pkgname.post-install" +# NOTE: user vs system gitconfig, see https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/6166 +source="https://gitlab.com/gitlab-org/gitlab-shell/-/archive/v$pkgver/gitlab-shell-v$pkgver.tar.gz + config.patch + change-config-path.patch + gitconfig + " +builddir="$srcdir/$pkgname-v$pkgver" +options="!check" + +build() { + # BUILD_TAGS - build without tracing libs, + # see https://gitlab.com/gitlab-org/labkit/-/merge_requests/2 + make build \ + VERSION_STRING="$pkgver" \ + BUILD_TAGS="" +} + +package() { + local datadir="$pkgdir/var/lib/gitlab" + local libdir="$pkgdir/usr/lib/gitlab-shell" + + # XXX: I couldn't figure out how/where is gitlab-shell called, + # so I kept /usr/lib/gitlab-shell. It should be changed to /usr. + make install DESTDIR="$pkgdir" PREFIX=/usr/lib/gitlab-shell + + install -m644 VERSION "$libdir"/ + install -m644 -D config.yml.example "$pkgdir"/etc/gitlab/gitlab-shell.yml + + cd "$pkgdir" + + rm "$libdir"/bin/gitlab-sshd + + install -d -m755 -o git -g git \ + "$pkgdir"/var/log/gitlab \ + "$datadir" + + install -d -m02770 -o git -g git \ + "$datadir"/repositories + + install -m644 -o git -g git "$srcdir"/gitconfig "$datadir"/.gitconfig + + ln -s /etc/gitlab/gitlab-shell.yml "$libdir"/config.yml + ln -s /etc/gitlab/gitlab_shell_secret "$libdir"/.gitlab_shell_secret +} + +sha512sums=" +5a05217b1055c4658c3b7209c348253d590d4f99a877af012687cf9b60196d7f7051b615612bfc7d6992c9dc7d176b74da447ce22ca681f3703ce92379d15350 gitlab-shell-v14.24.0.tar.gz +8cf13bf472e22b1c429bba5df98afb931c80b043ec83c8366d59f15a1e9b21daf09078f134e7aa622c87b32c774d1d5cf129878d5035102c06d0b12ead33f804 config.patch +499b3a46ea94a33a23b01f6a7509d74f5a6781b930619b3b8ae42bdeae8a052cc636578744d7992b4ae4f9b9f72b11ee3d3c0f5e50986fa3f7e35b979b08aada change-config-path.patch +c53da7f145593693392d9fa880ad5a1909bfc7504fd1c93d94a468c3e0f5cc80f712f41ee1dc8bf38105b410c1165658f208bd88a70c4674104c78af33d8d09c gitconfig +" diff --git a/user/gitlab-shell/change-config-path.patch b/user/gitlab-shell/change-config-path.patch new file mode 100644 index 0000000..52d44ce --- /dev/null +++ b/user/gitlab-shell/change-config-path.patch @@ -0,0 +1,11 @@ +--- a/support/gitlab_config.rb ++++ b/support/gitlab_config.rb +@@ -4,7 +4,7 @@ class GitlabConfig + attr_reader :config + + def initialize +- @config = YAML.load_file(File.join(ROOT_PATH, 'config.yml')) ++ @config = YAML.load_file(ENV.fetch('GITLAB_SHELL_CONFIG', '/etc/gitlab/gitlab-shell.yml')) + end + + def home diff --git a/user/gitlab-shell/config.patch b/user/gitlab-shell/config.patch new file mode 100644 index 0000000..b4b1e92 --- /dev/null +++ b/user/gitlab-shell/config.patch @@ -0,0 +1,107 @@ +diff --git a/config.yml.example.orig b/config.yml.example +index 886fde0..f03c897 100644 +--- a/config.yml.example.orig ++++ b/config.yml.example +@@ -13,7 +13,7 @@ user: git + # only listen on a Unix domain socket. For Unix domain sockets use + # "http+unix://", e.g. + # "http+unix://%2Fpath%2Fto%2Fsocket" +-gitlab_url: "http+unix://%2Fhome%2Fgit%2Fgitlab%2Ftmp%2Fsockets%2Fgitlab-workhorse.socket" ++gitlab_url: "http+unix://%2Frun%2Fgitlab%2Fworkhorse.socket" + + # When a http+unix:// is used in gitlab_url, this is the relative URL root to GitLab. + # Not used if gitlab_url is http:// or https://. +@@ -29,15 +29,15 @@ http_settings: + # + + # File used as authorized_keys for gitlab user +-auth_file: "/home/git/.ssh/authorized_keys" ++auth_file: "/var/lib/gitlab/.ssh/authorized_keys" + + # SSL certificate dir where custom certificates can be placed + # https://golang.org/pkg/crypto/x509/ +-# ssl_cert_dir: /opt/gitlab/embedded/ssl/certs/ ++# ssl_cert_dir: /etc/gitlab/ssl/certs/ + + # File that contains the secret key for verifying access to GitLab. + # Default is .gitlab_shell_secret in the gitlab-shell directory. +-# secret_file: "/home/git/gitlab-shell/.gitlab_shell_secret" ++secret_file: "/etc/gitlab/gitlab_shell_secret" + # + # The secret field supersedes the secret_file, and if set that + # file will not be read. +@@ -45,13 +45,13 @@ auth_file: "/home/git/.ssh/authorized_keys" + + # Log file. + # Default is gitlab-shell.log in the root directory. +-# log_file: "/home/git/gitlab-shell/gitlab-shell.log" ++log_file: "/var/log/gitlab/gitlab-shell.log" + + # Log level. INFO by default +-log_level: INFO ++log_level: WARN + + # Log format. 'json' by default, can be changed to 'text' if needed +-# log_format: json ++log_format: text + + # Audit usernames. + # Set to true to see real usernames in the logs instead of key ids, which is easier to follow, but +@@ -61,57 +61,3 @@ audit_usernames: false + # Distributed Tracing. GitLab-Shell has distributed tracing instrumentation. + # For more details, visit https://docs.gitlab.com/ee/development/distributed_tracing.html + # gitlab_tracing: opentracing://driver +- +-# This section configures the built-in SSH server. Ignored when running on OpenSSH. +-sshd: +- # Address which the SSH server listens on. Defaults to [::]:22. +- listen: "[::]:22" +- # Set to true if gitlab-sshd is being fronted by a load balancer that implements +- # the PROXY protocol. +- proxy_protocol: false +- # Proxy protocol policy ("use", "require", "reject", "ignore"), "use" is the default value +- # Values: https://github.com/pires/go-proxyproto/blob/195fedcfbfc1be163f3a0d507fac1709e9d81fed/policy.go#L20 +- proxy_policy: "use" +- # Proxy allowed IP addresses. Takes precedent over proxy_policy. Disabled by default. +- # proxy_allowed: +- # - "192.168.0.1" +- # - "192.168.1.0/24" +- # Address which the server listens on HTTP for monitoring/health checks. Defaults to localhost:9122. +- web_listen: "localhost:9122" +- # Maximum number of concurrent sessions allowed on a single SSH connection. Defaults to 10. +- concurrent_sessions_limit: 10 +- # Sets an interval after which server will send keepalive message to a client. Defaults to 15s. +- client_alive_interval: 15 +- # The server waits for this time for the ongoing connections to complete before shutting down. Defaults to 10s. +- grace_period: 10 +- # The server disconnects after this time if the user has not successfully logged in. Defaults to 60s. +- login_grace_time: 60 +- # A short timeout to decide to abort the connection if the protocol header is not seen within it. Defaults to 500ms +- proxy_header_timeout: 500ms +- # The endpoint that returns 200 OK if the server is ready to receive incoming connections; otherwise, it returns 503 Service Unavailable. Defaults to "/start". +- readiness_probe: "/start" +- # The endpoint that returns 200 OK if the server is alive. Defaults to "/health". +- liveness_probe: "/health" +- # Specifies the available message authentication code algorithms that are used for protecting data integrity +- macs: [hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1] +- # Specifies the available Key Exchange algorithms +- kex_algorithms: [curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1] +- # Specified the ciphers allowed +- ciphers: [aes128-gcm@openssh.com, chacha20-poly1305@openssh.com, aes256-gcm@openssh.com, aes128-ctr, aes192-ctr,aes256-ctr] +- # SSH host key files. +- host_key_files: +- - /run/secrets/ssh-hostkeys/ssh_host_rsa_key +- - /run/secrets/ssh-hostkeys/ssh_host_ecdsa_key +- - /run/secrets/ssh-hostkeys/ssh_host_ed25519_key +- host_key_certs: +- - /run/secrets/ssh-hostkeys/ssh_host_rsa_key-cert.pub +- - /run/secrets/ssh-hostkeys/ssh_host_ecdsa_key-cert.pub +- - /run/secrets/ssh-hostkeys/ssh_host_ed25519_key-cert.pub +- # GSSAPI-related settings +- gssapi: +- # Enable the gssapi-with-mic authentication method. Defaults to false. +- enabled: false +- # Keytab path. Defaults to "", system default (usually /etc/krb5.keytab). +- keytab: "" +- # The Kerberos service name to be used by sshd. Defaults to "", accepts any service name in keytab file. +- service_principal_name: "" diff --git a/user/gitlab-shell/gitconfig b/user/gitlab-shell/gitconfig new file mode 100644 index 0000000..ccf8053 --- /dev/null +++ b/user/gitlab-shell/gitconfig @@ -0,0 +1,17 @@ +# Based on files/gitlab-cookbooks/gitlab/templates/default/gitconfig.erb +# in omnibus-gitlab. + +[user] +name = GitLab +email = gitlab@local.host + +[core] +# Needed for the web editor. +autocrlf = input +alternateRefsCommand="exit 0 #" +# This option is unnecessary on journaled file systems and it's not recognized +# by git >= 2.36. +# fsyncObjectFiles = true + +[gc] +auto = 0 diff --git a/user/gitlab-shell/gitlab-shell.post-install b/user/gitlab-shell/gitlab-shell.post-install new file mode 100644 index 0000000..01c425c --- /dev/null +++ b/user/gitlab-shell/gitlab-shell.post-install @@ -0,0 +1,23 @@ +#!/bin/sh +set -eu + +keys_file='/var/lib/gitlab/.ssh/authorized_keys' + +if [ ! -f "$keys_file" ]; then + keys_dir="$(dirname "$keys_file")" + echo "* Initializing authorized_keys file in $keys_dir" 1>&2 + + mkdir -m0700 -p "$keys_dir" + chown git:git "$keys_dir" + + touch "$keys_file" + chmod 0600 "$keys_file" + chown git:git "$keys_file" +fi + +cat <&2 +* +* GitLab Shell has been initialized. Read /etc/gitlab/gitlab-shell.yml and +* modify settings as need. +* +EOF diff --git a/user/gitlab-shell/gitlab-shell.pre-install b/user/gitlab-shell/gitlab-shell.pre-install new file mode 100644 index 0000000..9421862 --- /dev/null +++ b/user/gitlab-shell/gitlab-shell.pre-install @@ -0,0 +1,41 @@ +#!/bin/sh +# It's very important to set user/group correctly. + +git_dir='/var/lib/gitlab' + +if ! getent group git >/dev/null; then + echo '* Creating group git' >&2 + + addgroup -S git +fi + +if ! id git 2>/dev/null 1>&2; then + echo '* Creating user git' >&2 + + adduser -DHS -G git -h "$git_dir" -s /bin/sh \ + -g "added by apk for gitlab-shell" git + passwd -u git >/dev/null # unlock +fi + +if ! id -Gn git | grep -Fq redis; then + echo '* Adding user git to group redis' >&2 + + addgroup git redis +fi + +user_home="$(getent passwd git | cut -d: -f6)" + +if [ "$user_home" != "$git_dir" ]; then + cat >&2 <<-EOF + !! + !! User git has home directory in $user_home, but this package and gitlab-ce + !! package assumes $git_dir. Although it's possible to use a different + !! directory, it's really not easy. + !! + !! Please change git's home directory to $git_dir, or adjust settings + !! and move files yourself. Otherwise GitLab will not work! + !! + EOF +fi + +exit 0 diff --git a/user/grpc/01-chttp2-maybe-uninitialized.patch b/user/grpc/01-chttp2-maybe-uninitialized.patch new file mode 100644 index 0000000..b531fbc --- /dev/null +++ b/user/grpc/01-chttp2-maybe-uninitialized.patch @@ -0,0 +1,10 @@ +--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc ++++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +@@ -978,6 +978,7 @@ + } else { + r = grpc_chttp2_begin_write(t); + } ++ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" + if (r.writing) { + if (r.partial) { + GRPC_STATS_INC_HTTP2_PARTIAL_WRITES(); diff --git a/user/grpc/APKBUILD b/user/grpc/APKBUILD new file mode 100644 index 0000000..49b11db --- /dev/null +++ b/user/grpc/APKBUILD @@ -0,0 +1,265 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Keith Maxwell +# Contributor: wener + +pkgname=grpc +# This version is used in gitlab-foss 15.2.2. +pkgver=1.42.0 +pkgrel=3 +pkgdesc="The C based gRPC" +url="https://grpc.io/" +# will fix later +#arch="all" +# BSD-3-Clause: third_party/upb, third_party/address_sorting +# MIT: third_party/upb/third_party/utf8_range +license="Apache-2.0 AND BSD-3-Clause AND MIT" +depends="ca-certificates" +depends_dev=" + $pkgname-cpp=$pkgver-r$pkgrel + $pkgname-plugins=$pkgver-r$pkgrel + " +_pythondepends=" + cython + python3-dev + py3-setuptools + " +# XXX: should also depend on ruby-google-protobuf=3.18 +_rubydepends=" + $pkgname=$pkgver-r$pkgrel + ruby3.0-etc + " +makedepends=" + abseil-cpp + abseil-cpp-dev + autoconf + automake + c-ares-dev + chrpath + cmake + libstdc++ + libtool + linux-headers + openssl-dev + protobuf-dev + re2-dev + ruby3.0-dev + samurai + yaml-dev + xxhash-dev + zlib-dev + $_pythondepends + $_rubydepends + " +checkdepends="coreutils python3 py3-six" +subpackages=" + $pkgname-dev + $pkgname-cpp + $pkgname-plugins + $pkgname-doc + ruby3.0-grpc:_ruby + " +_googletest_rev=0e402173c97aea7a00749e825b194bfede4f2e45 +source="https://github.com/grpc/grpc/archive/v$pkgver/grpc-v$pkgver.tar.gz + googletest-$_googletest_rev.tar.gz::https://github.com/google/googletest/archive/$_googletest_rev.tar.gz + fix-compiler-error.patch + minimal-fix-for-invalid-implicit-absl-string_view-nu.patch + 01-chttp2-maybe-uninitialized.patch + ruby-use-shared-libs.patch + ruby-dont-strip-library.patch + ruby-fix-protoc-path.patch + ruby-use-system-certs.patch + makefile-use-system-abseil.patch + makefile-add-wrap-memcpy-flags.patch + " +options="!check" # sometimes hang indefinitely on builders + +prepare() { + rm -r third_party/googletest + mv "$srcdir"/googletest-$_googletest_rev third_party/googletest + + # Remove bundled xxhash. + # Since grpc sets XXH_INCLUDE_ALL wherever it uses xxhash, it is using xxhash + # as a header-only library. This means we can replace it with the system copy + # by doing nothing further; xxhash.h is in the system include path and will be + # found instead, and there are no linker flags to add. See also + # https://github.com/grpc/grpc/issues/25945. + rm -rvf third_party/xxhash/* + + # This will be replaced with a symlink to system certs. + echo '' > etc/roots.pem + + default_prepare + + # Remove some bundled dependencies from the gem's files list. + sed -i \ + -e '/etc\/roots.pem/d' \ + -e '/third_party\/abseil/d' \ + -e '/third_party\/boringssl/d' \ + -e '/third_party\/cares/d' \ + -e '/third_party\/re2/d' \ + -e '/third_party\/xxhash/d' \ + -e '/third_party\/zlib/d' \ + grpc.gemspec + + # Remove unused dependency from gemspec - it's not required anyhwere, + # it's just Google pushing their crap everywhere... + sed -i '/add_dependency.*googleapis-common-protos-types/d' \ + grpc.gemspec +} + +build() { + cmake -B _build \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS -w" \ + -DCMAKE_C_FLAGS="$CFLAGS -w" \ + -DCMAKE_CXX_STANDARD=17 \ + -DBUILD_SHARED_LIBS=True \ + -DgRPC_INSTALL=ON \ + -DgRPC_CARES_PROVIDER=package \ + -DgRPC_PROTOBUF_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_ABSL_PROVIDER=package \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_BACKWARDS_COMPATIBILITY_MODE=OFF \ + -DgRPC_BUILD_TESTS="$(want_check && echo ON || echo OFF)" \ + -G Ninja + cmake --build _build + + # XXX: Fails to build and I don't need it here, so screw it. + #GRPC_PYTHON_CFLAGS="-std=c++17" \ + #GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=1 \ + #GRPC_PYTHON_BUILD_SYSTEM_CARES=1 \ + #GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 \ + #GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 \ + #GRPC_PYTHON_BUILD_SYSTEM_RE2=1 \ + #GRPC_PYTHON_BUILD_SYSTEM_ABSL=1 \ + #python3 setup.py build + + # grpcio-tools + #cd tools/distrib/python + #python3 make_grpcio_tools.py + + cd "$builddir" + gem build grpc.gemspec + TOPDIR="$PWD/_build" gem install \ + --local \ + --install-dir _build/ruby \ + --ignore-dependencies \ + --no-document \ + --verbose \ + grpc-$pkgver.gem +} + +check() { + # delete times out in ci or broken for ci tests + rm -f _build/spinlock_test _build/resolve_address_using_ares_resolver_posix_test build/resolve_address_using_native_resolver_posix_test + rm -f _build/flaky_network_test _build/unknown_frame_bad_client_test _build/ssl_transport_security_test _build/httpscli_test + rm -f _build/headers_bad_client_test _build/httpcli_test + case $CARCH in + aarch64|ppc64le) rm -f _build/server_test _build/grpc_tool_test ;; + s390x) rm -f _build/client_lb_end2end_test _build/alts_frame_protector_test _build/alts_iovec_record_protocol_test ;; + armv7) rm -f _build/initial_settings_frame_bad_client_test ;; + x86) rm -f _build/time_jump_test _build/connection_prefix_bad_client_test ;; + esac + + # start helper + ./tools/run_tests/start_port_server.py & + find build/ -maxdepth 1 -type f -executable -name "*_test" -exec {} \; + # kill helper + pkill -9 python3 +} + +package() { + DESTDIR="$pkgdir" cmake --install _build + + cd doc + find ./ -type f -print -exec install -Dm644 {} "$pkgdir"/usr/share/doc/grpc/{} \; + rm "$pkgdir"/usr/share/doc/grpc/.gitignore + + find "$pkgdir" -type f -name roots.pem -exec \ + sh -c 'rm $0 && ln -s /etc/ssl/certs/ca-certificates.crt $0' "{}" \; +} + +cpp() { + pkgdesc="C++ language bindings for gRPC" + depends="$pkgname=$pkgver-r$pkgrel" + + amove usr/lib/libgrpc++*.so.* + amove usr/lib/libgrpc_plugin_support.so.* + amove usr/lib/libgrpcpp*.so.* +} + +plugins() { + pkgdesc="Protocol buffers compiler plugins for gRPC" + depends="$pkgname-cpp=$pkgver-r$pkgrel protobuf" + + amove usr/bin/grpc_*_plugin +} + +cli() { + pkgdesc="gRPC command line tool" + + install -Dm644 -t "$subpkgdir"/usr/lib "$builddir"/_build/libgrpc++_test_config.so.$pkgver + install -Dm755 -t "$subpkgdir"/usr/bin "$builddir"/_build/grpc_cli + + # Fix "Has /home/... in rpath" + chrpath -d "$subpkgdir"/usr/lib/libgrpc++_test_config.so.$pkgver + chrpath -d "$subpkgdir"/usr/bin/grpc_cli +} + +grpcio() { + pkgdesc="gRPC Python HTTP/2-based RPC framework" + depends="py3-six" + cd "$builddir" + python3 setup.py install --skip-build --prefix=/usr --root="$subpkgdir" +} + +_ruby() { + pkgdesc="Send RPCs from Ruby using GRPC" + depends="$_rubydepends" + + local gemdir="$subpkgdir/$(ruby -e 'puts Gem.default_dir')" + + cd "$builddir"/_build/ruby + + mkdir -p "$gemdir" + cp -r extensions gems specifications "$gemdir"/ + + # Remove unnecessary files and rubbish... + cd "$gemdir"/extensions/*/*/grpc-$pkgver + rm gem_make.out mkmf.log || true + + cd "$gemdir"/gems/grpc-$pkgver + rm -rf .yardopts \ + Makefile \ + include/ \ + src/core/ \ + third_party/ + + cd src/ruby + rm -rf bin/ \ + ext/ \ + lib/grpc/*.so \ + pb/generate_proto_ruby.sh \ + pb/README.md \ + pb/src/ \ + pb/test/ \ + spec/ +} + +sha512sums=" +39f37a41d1df6015dc36344f1b5e634be7f0edbc99723de73de8b81cdab6aa3e09cef6b3c6c9ecb2c9c9db9b8454474b2ac7fbe49fe23d17a6c78f999b459ce5 grpc-v1.42.0.tar.gz +5c5eaf6ff9f3c1bca025b7ef0234ba97232ba85b43e6354a92f49b7208f5c47581ebaf18bf58618498e5d264f2620c2b6676e81bb0f7df77112b96ba271ececf googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz +ce7b72169b22e6e92f31b74cacf6edf6395aeb7c70fd42d7e9eaa188395b4e6e4b3acad5edfbe75c8304b049049cee76ce5ceaaeed824bffb7defc103ef23580 fix-compiler-error.patch +95a88beb681616a9d793c3118c8e25473d9a8cb29733db38edc8b7af205ffea964dc27dc48d268f735f27fee84782be3eda0b7f398c2e568116e679febe563b7 minimal-fix-for-invalid-implicit-absl-string_view-nu.patch +7fa146ce86ddd4f160bb1ca9ff01cb7aca6b2b8c9aa50e4fa6b84504b9117b104be0d1e31ccb452d846549dfe1e9012ceccfcdc1f2357ed567621d71fb8b08c5 01-chttp2-maybe-uninitialized.patch +0bf65cca05b6d41c8259a5a59573e16a3f40913aa1c1a185b7dcd295d4ae7f1cedbbd465fcff33d6f8d8ee8735a77f744708a097a32a4598b9bfc4ecaf9414df ruby-use-shared-libs.patch +0a2560d22df71abbeea33a37f0cb42a811b244af25284d7fb564cb8ea0b944d23acf6601413bdb2613bcb87011340334489f1b40ab2f9024db013adde0d094e8 ruby-dont-strip-library.patch +4ea72d2acd8bee9c9022a4412aa0af0477faca7b0810d14decb3ad5d4da044247f51189512323bfee855b9b260a7f82b812310391451e5d8ee718297800d7a73 ruby-fix-protoc-path.patch +631af4b9ac29c1ebabb2c88394ea2993e36cec1beda38195e1587dbd9d3c8c9eef75a17d2326d3cd2e682de551401216075ba08fdc501c098b8092d718ded381 ruby-use-system-certs.patch +3c7e8e9a6c6009278569dccdf3e79fabdb266336b894a7fe65f2a57d3cfbef72364c331ec46d9e3a05bb0deaeb841194a39d6f77d98f9e9ce609de0636f675bd makefile-use-system-abseil.patch +66b709cd1fb291ab140ec87e584db13d15c308c0ea9f2ee0fa10ddb00cf33641f559235b1445137ff071dfbda9d7279bd482411fbf2f33dacbc5b14cd7f9ffa5 makefile-add-wrap-memcpy-flags.patch +" diff --git a/user/grpc/fix-compiler-error.patch b/user/grpc/fix-compiler-error.patch new file mode 100644 index 0000000..2023cee --- /dev/null +++ b/user/grpc/fix-compiler-error.patch @@ -0,0 +1,23 @@ +Patch-Source: https://github.com/grpc/grpc/pull/28196 +-- +From 3991a4c0bcf57e5058a93c4c8255cc80cd0482ca Mon Sep 17 00:00:00 2001 +From: Runming Wu +Date: Tue, 23 Nov 2021 12:10:43 -0800 +Subject: [PATCH] Fix compiler error for certain gcc version. + +--- + src/core/ext/xds/xds_api.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/core/ext/xds/xds_api.h b/src/core/ext/xds/xds_api.h +index 643febdf2203..f25a21f8f831 100644 +--- a/src/core/ext/xds/xds_api.h ++++ b/src/core/ext/xds/xds_api.h +@@ -55,6 +55,7 @@ class XdsApi { + static const char* kEdsTypeUrl; + + struct Duration { ++ Duration() {} + int64_t seconds = 0; + int32_t nanos = 0; + bool operator==(const Duration& other) const { diff --git a/user/grpc/makefile-add-wrap-memcpy-flags.patch b/user/grpc/makefile-add-wrap-memcpy-flags.patch new file mode 100644 index 0000000..3cc8bba --- /dev/null +++ b/user/grpc/makefile-add-wrap-memcpy-flags.patch @@ -0,0 +1,15 @@ +diff --git a/Makefile b/Makefile +index 6c9f22d..6f21708 100644 +--- a/Makefile ++++ b/Makefile +@@ -1672,7 +1672,7 @@ $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_ + ifeq ($(SYSTEM),Darwin) + $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS) + else +- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.20 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS) ++ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.20 -Wl,-wrap,memcpy -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS) + $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.20 + $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so + endif + + diff --git a/user/grpc/makefile-use-system-abseil.patch b/user/grpc/makefile-use-system-abseil.patch new file mode 100644 index 0000000..e551f00 --- /dev/null +++ b/user/grpc/makefile-use-system-abseil.patch @@ -0,0 +1,22 @@ +--- a/Makefile ++++ b/Makefile +@@ -576,8 +576,8 @@ + + # Setup abseil dependency + +-GRPC_ABSEIL_DEP = $(LIBDIR)/$(CONFIG)/libgrpc_abseil.a +-GRPC_ABSEIL_MERGE_LIBS = $(LIBDIR)/$(CONFIG)/libgrpc_abseil.a ++GRPC_ABSEIL_DEP = -labsl_base -labsl_int128 -labsl_strings -labsl_time -labsl_bad_optional_access -labsl_throw_delegate -labsl_str_format_internal ++GRPC_ABSEIL_MERGE_LIBS = -labsl_base -labsl_int128 -labsl_strings -labsl_time -labsl_bad_optional_access -labsl_throw_delegate -labsl_str_format_internal + ifeq ($(HOST_IS_X86_64),true) + ABSL_RANDOM_HWAES_FLAGS = -maes + else +@@ -2675,7 +2675,7 @@ + third_party/abseil-cpp/absl/types/bad_variant_access.cc \ + + +-LIBGRPC_ABSEIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_ABSEIL_SRC)))) ++LIBGRPC_ABSEIL_OBJS = + + $(LIBGRPC_ABSEIL_OBJS): CPPFLAGS += -g $(ABSL_RANDOM_HWAES_FLAGS) -Ithird_party/abseil-cpp + diff --git a/user/grpc/minimal-fix-for-invalid-implicit-absl-string_view-nu.patch b/user/grpc/minimal-fix-for-invalid-implicit-absl-string_view-nu.patch new file mode 100644 index 0000000..51b1b76 --- /dev/null +++ b/user/grpc/minimal-fix-for-invalid-implicit-absl-string_view-nu.patch @@ -0,0 +1,45 @@ +Patch-Source: https://src.fedoraproject.org/rpms/grpc/blob/f36/f/0001-Minimal-fix-for-invalid-implicit-absl-string_view-nu.patch +-- +From 39d8f1440941ab56fe4bfa45ce4bd6177165f919 Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Sun, 16 Jan 2022 09:47:21 -0500 +Subject: [PATCH] Minimal fix for invalid implicit absl::string_view(nullptr_t) + +--- + .../client_channel/lb_policy/xds/xds_cluster_resolver.cc | 2 +- + test/core/security/evaluate_args_test.cc | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +index ff936b9100..a55d811527 100644 +--- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc ++++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +@@ -139,7 +139,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy { + // to use for LRS load reporting. Caller must ensure that config_ is set + // before calling. + std::pair GetLrsClusterKey() const { +- if (!parent_->is_xds_uri_) return {parent_->server_name_, nullptr}; ++ if (!parent_->is_xds_uri_) return {parent_->server_name_, absl::string_view()}; + return { + parent_->config_->discovery_mechanisms()[index_].cluster_name, + parent_->config_->discovery_mechanisms()[index_].eds_service_name}; +diff --git a/test/core/security/evaluate_args_test.cc b/test/core/security/evaluate_args_test.cc +index a8df9b3003..82fc26cd9d 100644 +--- a/test/core/security/evaluate_args_test.cc ++++ b/test/core/security/evaluate_args_test.cc +@@ -32,9 +32,9 @@ class EvaluateArgsTest : public ::testing::Test { + + TEST_F(EvaluateArgsTest, EmptyMetadata) { + EvaluateArgs args = util_.MakeEvaluateArgs(); +- EXPECT_EQ(args.GetPath(), nullptr); +- EXPECT_EQ(args.GetMethod(), nullptr); +- EXPECT_EQ(args.GetHost(), nullptr); ++ EXPECT_EQ(args.GetPath(), std::string_view()); ++ EXPECT_EQ(args.GetMethod(), std::string_view()); ++ EXPECT_EQ(args.GetHost(), std::string_view()); + EXPECT_THAT(args.GetHeaders(), ::testing::ElementsAre()); + EXPECT_EQ(args.GetHeaderValue("some_key", nullptr), absl::nullopt); + } +-- +2.33.1 + diff --git a/user/grpc/ruby-dont-strip-library.patch b/user/grpc/ruby-dont-strip-library.patch new file mode 100644 index 0000000..215a9f4 --- /dev/null +++ b/user/grpc/ruby-dont-strip-library.patch @@ -0,0 +1,30 @@ +From: Jakub Jirutka +Date: Wed, 24 Aug 2022 21:20:22 +0200 +Subject: [PATCH] Don't strip the built library + +abuild does it. + +--- a/src/ruby/ext/grpc/extconf.rb ++++ b/src/ruby/ext/grpc/extconf.rb +@@ -94,21 +94,3 @@ + output = File.join('grpc', 'grpc_c') + puts 'Generating Makefile for ' + output + create_makefile(output) +- +-strip_tool = RbConfig::CONFIG['STRIP'] +-strip_tool += ' -x' if darwin +- +-if grpc_config == 'opt' +- File.open('Makefile.new', 'w') do |o| +- o.puts 'hijack: all strip' +- o.puts +- File.foreach('Makefile') do |i| +- o.puts i +- end +- o.puts +- o.puts 'strip: $(DLLIB)' +- o.puts "\t$(ECHO) Stripping $(DLLIB)" +- o.puts "\t$(Q) #{strip_tool} $(DLLIB)" +- end +- File.rename('Makefile.new', 'Makefile') +-end diff --git a/user/grpc/ruby-fix-protoc-path.patch b/user/grpc/ruby-fix-protoc-path.patch new file mode 100644 index 0000000..91f0268 --- /dev/null +++ b/user/grpc/ruby-fix-protoc-path.patch @@ -0,0 +1,25 @@ +Patch-Source: https://sources.debian.org/src/grpc/1.44.0-3/debian/patches/fix-protoc-path.patch (modified) + +--- a/src/ruby/end2end/package_with_underscore_test.rb ++++ b/src/ruby/end2end/package_with_underscore_test.rb +@@ -20,8 +20,8 @@ def main + pb_dir = File.join(root_dir, 'src', 'ruby', 'end2end', 'protos') + +- bins_dir = File.join(root_dir, 'cmake', 'build') ++ bins_dir = '/usr/bin' + plugin = File.join(bins_dir, 'grpc_ruby_plugin') +- protoc = File.join(bins_dir, 'third_party', 'protobuf', 'protoc') ++ protoc = File.join(bins_dir, 'protoc') + + got = nil + +--- a/src/ruby/tools/bin/grpc_tools_ruby_protoc ++++ b/src/ruby/tools/bin/grpc_tools_ruby_protoc +@@ -25,6 +25,5 @@ plugin_name = 'grpc_ruby_plugin' + ext + +-protoc_dir = File.join(File.dirname(__FILE__), +- PLATFORM.architecture + '-' + PLATFORM.os_name) ++protoc_dir = '/usr/bin' + + protoc_path = File.join(protoc_dir, protoc_name) + diff --git a/user/grpc/ruby-use-shared-libs.patch b/user/grpc/ruby-use-shared-libs.patch new file mode 100644 index 0000000..1725393 --- /dev/null +++ b/user/grpc/ruby-use-shared-libs.patch @@ -0,0 +1,57 @@ +From: Jakub Jirutka +Date: Wed, 24 Aug 2022 21:20:22 +0200 +Subject: [PATCH] Link with shared libraries, don't embed anything + +- Don't statically link openssl, zlib and cares. +- Don't build and statically link libgrpc, link shared libgrpc. +- Don't statically link libgcc and libstdc++. + +--- a/src/ruby/ext/grpc/extconf.rb ++++ b/src/ruby/ext/grpc/extconf.rb +@@ -45,9 +45,9 @@ + ENV['ARFLAGS'] = '-o' + end + +-ENV['EMBED_OPENSSL'] = 'true' +-ENV['EMBED_ZLIB'] = 'true' +-ENV['EMBED_CARES'] = 'true' ++ENV['EMBED_OPENSSL'] = 'false' ++ENV['EMBED_ZLIB'] = 'false' ++ENV['EMBED_CARES'] = 'false' + + ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG'] + if darwin && !cross_compiling +@@ -65,23 +65,15 @@ + output_dir = File.expand_path(RbConfig::CONFIG['topdir']) + grpc_lib_dir = File.join(output_dir, 'libs', grpc_config) + ENV['BUILDDIR'] = output_dir ++$LDFLAGS << ' -L' + ENV.fetch('TOPDIR', '.') + +-unless windows +- puts 'Building internal gRPC into ' + grpc_lib_dir +- nproc = 4 +- nproc = Etc.nprocessors * 2 if Etc.respond_to? :nprocessors +- make = bsd ? 'gmake' : 'make' +- system("#{make} -j#{nproc} -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config} Q=") +- exit 1 unless $? == 0 +-end +- + $CFLAGS << ' -I' + File.join(grpc_root, 'include') + + ext_export_file = File.join(grpc_root, 'src', 'ruby', 'ext', 'grpc', 'ext-export') + $LDFLAGS << ' -Wl,--version-script="' + ext_export_file + '.gcc"' if linux + $LDFLAGS << ' -Wl,-exported_symbols_list,"' + ext_export_file + '.clang"' if darwin + +-$LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') unless windows ++$LDFLAGS << ' -Wl,-wrap,memcpy -lgrpc' unless windows + if grpc_config == 'gcov' + $CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage' + $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' +@@ -92,7 +84,6 @@ + end + + $LDFLAGS << ' -Wl,-wrap,memcpy' if linux +-$LDFLAGS << ' -static-libgcc -static-libstdc++' if linux + $LDFLAGS << ' -static' if windows + + $CFLAGS << ' -std=c99 ' diff --git a/user/grpc/ruby-use-system-certs.patch b/user/grpc/ruby-use-system-certs.patch new file mode 100644 index 0000000..5d3ba16 --- /dev/null +++ b/user/grpc/ruby-use-system-certs.patch @@ -0,0 +1,15 @@ +From: Jakub Jirutka +Date: Fri, 20 May 2017 01:35:00 +0200 +Subject: [PATCH] Use system CA certificates + +--- a/src/ruby/lib/grpc.rb ++++ b/src/ruby/lib/grpc.rb +@@ -12,7 +12,7 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-ssl_roots_path = File.expand_path('../../../../etc/roots.pem', __FILE__) ++ssl_roots_path = '/etc/ssl/certs/ca-certificates.crt' + + require_relative 'grpc/errors' + require_relative 'grpc/structs' diff --git a/unmaintained/grumble/APKBUILD b/user/grumble/APKBUILD similarity index 100% rename from unmaintained/grumble/APKBUILD rename to user/grumble/APKBUILD diff --git a/unmaintained/grumble/LICENSE b/user/grumble/LICENSE similarity index 100% rename from unmaintained/grumble/LICENSE rename to user/grumble/LICENSE diff --git a/unmaintained/grumble/grumble.initd b/user/grumble/grumble.initd similarity index 100% rename from unmaintained/grumble/grumble.initd rename to user/grumble/grumble.initd diff --git a/user/i18nspector/APKBUILD b/user/i18nspector/APKBUILD deleted file mode 100644 index 96d499d..0000000 --- a/user/i18nspector/APKBUILD +++ /dev/null @@ -1,31 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=i18nspector -pkgver=0.27.1 -pkgrel=0 -pkgdesc="checking tool for gettext POT, PO and MO files" -url="https://jwilk.net/software/i18nspector" -arch="noarch" -license="MIT" -depends="py3-polib py3-rply" -checkdepends="python3-dev py3-pytest" -makedepends="py3-docutils py3-setuptools py3-gpep517 py3-wheel perl" -source="$pkgname-$pkgver.tar.gz::https://github.com/jwilk/i18nspector/archive/refs/tags/$pkgver.tar.gz" -subpackages="$pkgname-doc" -options="!check" # test failure - -build() { - make -C doc -} - -check() { - pytest -v -} - -package() { - make PREFIX=/usr DESTDIR="$pkgdir" install -} - -sha512sums=" -b6b3d68ba03ead88393d6fff7233ec6d67196496f3eaaba8fe036ac9976746370885f72ec3c4e6b4dbf892f3d04c505a306900fafade1623e90ec9c1ad546166 i18nspector-0.27.1.tar.gz -" diff --git a/user/icedtea-web/APKBUILD b/user/icedtea-web/APKBUILD deleted file mode 100644 index 18f4c40..0000000 --- a/user/icedtea-web/APKBUILD +++ /dev/null @@ -1,72 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=icedtea-web -pkgver=2.0.0_alpha29 -_pkgver=2.0.0-alpha29 -pkgrel=1 -pkgdesc='Additional components for OpenJDK - Browser plug-in and Web Start implementation' -url='https://github.com/AdoptOpenJDK/IcedTea-Web' -arch="x86_64" -license="GPL-2.0-only" -depends="openjdk8-jre" -# optdepend: rhino -makedepends=" - cargo - bash - openjdk8 - autoconf - automake - zip - glib-dev - libxtst-dev - npapi-sdk - junit - firefox - epiphany - rust - bc - maven -" -source="https://github.com/AdoptOpenJDK/IcedTea-Web/archive/icedtea-web-$_pkgver.tar.gz" -builddir="$srcdir"/IcedTea-Web-icedtea-web-$_pkgver -options="!check" # investigate failures later - -export MAVEN_ARGS="--batch-mode -Duser.home=$srcdir/.home" - -build() { - mvn install -DskipTests - ( - cd launchers - JRE=/usr/lib/jvm/default-jvm bash ./build.sh - ) -} - -check() { - mvn test -} - -package() { - install -dm 755 \ - "$pkgdir"/usr/share/applications \ - "$pkgdir"/usr/share/pixmaps \ - "$pkgdir"/usr/lib/mozilla/plugins/ \ - "$pkgdir"/usr/bin - - cp -R launchers/target "$pkgdir"/usr/lib/icedtea-web - install -Dm 644 launchers/javaws.png -t "$pkgdir"/usr/share/pixmaps - - for i in javaws.desktop.in itweb-settings.desktop.in policyeditor.desktop.in; do - sed 's|PATH_TO_JAVAWS|/usr/bin/javaws|' launchers/xdesktop.in/$i > "$pkgdir"/usr/share/applications/${i/.in/} - done - - ## link binaries into /usr/bin + jre/bin - for file in "$builddir"/launchers/target/bin/*; do - ln -sf "/usr/lib/icedtea-web/bin/$(basename "$file")" "$pkgdir"/usr/bin - done - -# ## link the mozilla-plugin - test it here http://www.java.com/en/download/help/testvm.xml -# ln -sf /usr/lib/icedtea-web/lib/IcedTeaPlugin.so "$pkgdir"/usr/lib/mozilla/plugins/ -} -sha512sums=" -453cb206ea0d2e488c0709962e96f03e3658cf050c10242046e6a89dfa24a3351904650cf09398d0cc6caab56c22aa3ccde50e348dd5a8fb863cbe329881bc53 icedtea-web-2.0.0-alpha29.tar.gz -" diff --git a/user/ikiwiki/APKBUILD b/user/ikiwiki/APKBUILD new file mode 100644 index 0000000..504b545 --- /dev/null +++ b/user/ikiwiki/APKBUILD @@ -0,0 +1,46 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=ikiwiki +pkgver=3.20200202.3 +pkgrel=0 +pkgdesc="Ikiwiki is a wiki compiler. It converts wiki pages into HTML pages suitable for publishing on a website." +arch="noarch" +license="GPL-2.0-later" +url="https://ikiwiki.info" +depends=" + perl-yaml + perl-text-markdown + perl-cgi-session + perl-cgi-formbuilder + perl-timedate + perl-html-parser + perl-html-scrubber + perl-mail-sendmail + perl-time-duration + perl-uri + perl-html-template + perl-locale-gettext + perl-rpc-xml + perl-yaml-libyaml + " +source="https://git.joeyh.name/index.cgi/ikiwiki.git/snapshot/ikiwiki-$pkgver.tar.gz" +subpackages="$pkgname-doc" + +build() { + # Install module into the vendor directories + sed -i -e 's/sbin/bin/g' Makefile.PL + + perl Makefile.PL PREFIX="/usr" INSTALL_BASE= INSTALLDIRS=vendor + make PREFIX="/usr" +} + +package() { + make install DESTDIR="$pkgdir" + + # otherwise perl breaks + find "$pkgdir" \( -name '.packlist' -or -name '*.pod' \) -exec rm '{}' + +} +sha512sums=" +2d78b98f0f24823e29566b6abc20e09abee45da684adff4dcb708ae3c127adea08cb56c68429b94613b36410bc88a3ce27f718e82f4344a533307d3846f64572 ikiwiki-3.20200202.3.tar.gz +" diff --git a/unmaintained/jellysub/APKBUILD b/user/jellysub/APKBUILD similarity index 99% rename from unmaintained/jellysub/APKBUILD rename to user/jellysub/APKBUILD index fb42a9d..78e6356 100644 --- a/unmaintained/jellysub/APKBUILD +++ b/user/jellysub/APKBUILD @@ -1,9 +1,10 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=jellysub _pkgname=$pkgname pkgver=0.0.6 -pkgrel=1 +pkgrel=0 arch="noarch" pkgdesc="Jellysub is an HTTP service which sits between Subsonic-compatible clients and a Jellyfin server." url="https://pypi.python.org/project/$pkgname" diff --git a/unmaintained/jellysub/jellysub.conf b/user/jellysub/jellysub.conf similarity index 100% rename from unmaintained/jellysub/jellysub.conf rename to user/jellysub/jellysub.conf diff --git a/unmaintained/jellysub/jellysub.openrc b/user/jellysub/jellysub.openrc similarity index 100% rename from unmaintained/jellysub/jellysub.openrc rename to user/jellysub/jellysub.openrc diff --git a/user/kb/APKBUILD b/user/kb/APKBUILD deleted file mode 100644 index db1d678..0000000 --- a/user/kb/APKBUILD +++ /dev/null @@ -1,32 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=kb -pkgver=0.1.8 -pkgrel=0 -pkgdesc="A command line minimalist knowledge base manager" -arch="noarch" -url="https://github.com/gnebbia/kb" -license="GPL-3.0-only" -depends="py3-attrs py3-colored py3-gitpython py3-toml" -makedepends="py3-setuptools py3-gpep517 py3-wheel" -checkdepends="py3-pytest-cov" -source="$pkgname-$pkgver.tar.gz::https://github.com/gnebbia/kb/archive/refs/tags/v$pkgver.tar.gz" -subpackages="$pkgname-pyc" - -build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 -} - -check() { - pytest -v -} - -package() { - python3 -m installer -d "$pkgdir" \ - .dist/*.whl -} -sha512sums=" -95fab9b5baa728795a6ce1e126fe90dd599528bc13f2274c5484dc43bdbca8fd5807e8ed4ec4e9ffa8382c5ec71662022d792e8ae941bd1629ed47c72d87d7a2 kb-0.1.8.tar.gz -" diff --git a/user/koreader/APKBUILD b/user/koreader/APKBUILD deleted file mode 100644 index 73d1a63..0000000 --- a/user/koreader/APKBUILD +++ /dev/null @@ -1,82 +0,0 @@ -# Maintainer: Antoine Martin (ayakael) -pkgname=koreader -pkgver=2025.10 -pkgrel=0 -pkgdesc="An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats" -# s390x|riscv64|ppc64le|loongarch64: FTBFS -# armhf|armv7|x86: Tests fail, segmentation fault -arch="x86_64 aarch64" -url="https://github.com/koreader/koreader/" -license="AGPL-3.0-only" -depends=" - bash - sdl2 - procps-ng - " -makedepends=" - autoconf - automake - cmake - coreutils - curl - diffutils - findutils - gettext - grep - libtool - linux-headers - meson - nasm - ninja-build - perl - pkgconf - wget - " -source=" - https://ayakael.net/api/packages/mirrors/generic/koreader/v$pkgver/koreader-v$pkgver.tar.gz - reader-lua-use-absolute-path-to-luajit.patch - " -subpackages="$pkgname-doc" -builddir="$srcdir"/$pkgname-v$pkgver - -# has vendored copies of system libraries -sonameprefix="$pkgname:" - -prepare() { - default_prepare - - # no need to test manually set version - rm "$builddir"/spec/unit/version_spec.lua -} - -build() { - # add ninja bin to path - export PATH="$PATH":/usr/lib/ninja-build/bin - - # default target is emulator build - make TARGET= KODEBUG= VERBOSE= -} - -check() { - KODEBUG= TARGET= VERBOSE= ./base/utils/fake_tty.py make --assume-old=base testfront -} - -package() { - install -Dm755 "$builddir"/platform/linux/koreader.sh "$pkgdir"/usr/bin/koreader - install -Dm644 "$builddir"/platform/linux/koreader.desktop -t "$pkgdir"/usr/share/applications/ - install -Dm644 "$builddir"/resources/koreader.png -t "$pkgdir"/usr/share/pixmaps/ - install -Dm644 "$builddir"/platform/linux/koreader.1 -t "$pkgdir"/usr/share/man/man1/ - - mkdir -p "$pkgdir"/usr/lib - cp -RL "$builddir"/koreader-emulator-*/koreader "$pkgdir"/usr/lib/koreader - - # delete debug files - find "$pkgdir" -name '*.dbg' -delete - - # version information - echo "v$pkgver" > "$pkgdir"/usr/lib/koreader/git-rev -} -sha512sums=" -3fbbe49ae6134abd810d9932cfb650d031100c95570c8eaa6d6e5d4c6a9a86916961b989696a7d97c149920d63853108905eea34f75f987e58f89e3a49d63948 koreader-v2025.10.tar.gz -76dd6f2ea6416b135b76d95f3c8150378f577ddd68d48312eabd6e12adaa111253dc83fc02add3ded07d3e6174fd5f4bd6c9f7b635ef27e3d760d5acced9e6fe reader-lua-use-absolute-path-to-luajit.patch -" diff --git a/user/koreader/reader-lua-use-absolute-path-to-luajit.patch b/user/koreader/reader-lua-use-absolute-path-to-luajit.patch deleted file mode 100644 index 3d25e3f..0000000 --- a/user/koreader/reader-lua-use-absolute-path-to-luajit.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/reader.lua.orig b/reader.lua -index 6fe9489..c4cbb2b 100755 ---- a/reader.lua.orig -+++ b/reader.lua -@@ -1,4 +1,4 @@ --#!./luajit -+#!/usr/lib/koreader/luajit - - -- Enforce line-buffering for stdout (this is the default if it points to a tty, but we redirect to a file on most platforms). - io.stdout:setvbuf("line") diff --git a/user/linux-rm-headers/APKBUILD b/user/linux-rm-headers/APKBUILD new file mode 100644 index 0000000..fbffc82 --- /dev/null +++ b/user/linux-rm-headers/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=linux-rm-headers +pkgver=5.4.70 +_rmver=1.3.3 +pkgrel=1 +pkgdesc="Linux kernel headers with reMarkable patches" +url=https://github.com/reMarkable/linux +provides="linux-headers=$pkgver-r$pkgrel" +makedepends="perl" +options="!check !dbg !strip !tracedeps" +builddir="$srcdir"/linux-RM1XX_${pkgver}_v$_rmver +source="https://github.com/reMarkable/linux/archive/refs/tags/RM1XX_${pkgver}_v$_rmver.tar.gz" +arch="noarch" +license="GPL-2.0" + +_carch=$CARCH +case "$CARCH" in + aarch64) _carch="arm64" ;; + arm*) _carch="arm" ;; +esac + +build() { + make headers ARCH="$_carch" +} + +package() { + mkdir -p "$pkgdir"/usr/ + cp -a usr/include/ "$pkgdir"/usr/include/ + + msg "purging non header files.." + find "$pkgdir"/usr/include/ ! -iname "*.h" -type f -exec rm -v {} \+ + + # provided by libdrm + rm -rf "$pkgdir"/usr/include/drm +} +sha512sums=" +80ab274ca3d30935d9913490662f17499c1ceedb438fe171554097d25ffc1cf85ee53f0c1642e94c0b833fdfb17636cd554bf685e4a6f5dac20cf122c1a25447 RM1XX_5.4.70_v1.3.3.tar.gz +" diff --git a/user/linux-rm/APKBUILD b/user/linux-rm/APKBUILD new file mode 100644 index 0000000..11bec0b --- /dev/null +++ b/user/linux-rm/APKBUILD @@ -0,0 +1,256 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=linux-rm +pkgver=5.4.70 +_rmver=1.3.3 +pkgrel=10 +pkgdesc="Linux kernel with reMarkable patches" +url=https://github.com/reMarkable/linux +depends="initramfs-generator linux-firmware-brcm linux-firmware-cypress" +_depends_dev="perl gmp-dev elfutils-dev bash mpc1-dev mpfr-dev" +makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware mawk + bison flex openssl-dev>3 diffutils pahole findutils xz lzop +" +options="!strip !check" +builddir="$srcdir"/linux-RM1XX_${pkgver}_v$_rmver +source=" + https://github.com/reMarkable/linux/archive/refs/tags/RM1XX_${pkgver}_v$_rmver.tar.gz + https://raw.githubusercontent.com/ichaozi/RemarkableFramebuffer/0f37dc8c06d340dc1af52ff2d4d6d5789ccf14bb/kernel-mxc-epdc-fb-reference/epdc_ES103CS1.fw + brcmfmac-disable-power-management.patch + brcmfmac-fix-suspend-resume-when-power-is-cut-off.patch + enable-automatic-partial-refreshing.patch + config-changes-rm.armv7 + config-changes-rm.armhf + " +arch="armv7" +license="GPL-2.0" +for _i in $source; do + case $_i in + config-*.$CARCH) + _f=${_i%."$CARCH"} + _f=${_f#config-changes-} + _flavors="$_flavors $_f" + [ "linux-$_f" != "$pkgname" ] && subpackages="$subpackages linux-$_f::$CTARGET_ARCH" + subpackages="$subpackages linux-$_f-dev:_dev:$CTARGET_ARCH" + ;; + esac +done + +_carch=$CARCH +case "$CARCH" in + aarch64) _carch="arm64" ;; + arm*) _carch="arm" ;; +esac + +# generate config from defconfig and apply local changes. +# config-changes-$flavor.$CARCH holds a list of = delimited +# config command and values used by kernel scripts/config script. +_genconfig() { + local flavor=$1 defconfig= + local subbuilddir="$srcdir"/build-$flavor + local defconfig= + case $flavor in + rm) defconfig=zero-gravitas_defconfig ;; + rm2) defconfig=zero-sugar_defconfig ;; + *) die "Unknown flavor: $flavor" ;; + esac + + cp "$builddir"/arch/$_carch/configs/$defconfig \ + "$subbuilddir"/.config + + while read -r line; do + # skip comments + case "$line" in + "#"*) continue;; + esac + local option=${line%%=*} str= + local cmd=$(echo $line | cut -d= -f2) + case "$cmd" in + y) cmd="enable";; + n) cmd="disable";; + m) cmd="module";; + '"'*) cmd="set-str"; str="${line#*=}";; + [0-9]*) cmd="set-val"; str="${line#*=}";; + *) die "Command $cmd not accepted" ;; + esac + msg "[$flavor] $cmd: $option $str" + "$builddir"/scripts/config \ + --file "$subbuilddir"/.config \ + --$cmd "$option" "${str//\"/}" + done < "$srcdir"/config-changes-$flavor.$CARCH +} + +# verify if options are set to correct value +_verifyconfig() { + local flavor=$1 + local subbuilddir="$srcdir"/build-$flavor + while read -r line; do + [ ${line:0:1} = "#" ] && continue + local option=${line%%=*} str= invert= + local cmd=$(echo $line | cut -d= -f2) + case "$cmd" in + enable) str="$option=y" ;; + disable) str="$option"; invert="-v" ;; + module) str="$option=m" ;; + set-val) str="$option=${line##*=}" ;; + set-str) str=${line##*=} + str="$option=\"${str//\"/}\"" ;; + esac + grep -q $invert "^$str" "$subbuilddir"/.config || \ + die "Config: $option not properly set!" + done < "$srcdir"/config-changes-$flavor.$CARCH +} + +prepare() { + default_prepare + + local flavor= + for flavor in $_flavors; do + local _builddir="$srcdir"/build-$flavor + mkdir -p "$_builddir" + echo "-$pkgrel-$flavor" > "$_builddir"/localversion-alpine + _genconfig $flavor + make -C "$builddir" \ + O="$_builddir" \ + ARCH="$_carch" \ + olddefconfig + _verifyconfig $flavor + done +} + +build() { + unset LDFLAGS + for i in $_flavors; do + cd "$srcdir"/build-$i + local _kver=$(make kernelversion) + if [ "$_kver" != "$pkgver" ]; then + error "Version in Makefile ($_kver) does not correspond with pkgver ($pkgver)" + return 1 + fi + + make ARCH="$_carch" CC="${CC:-gcc}" KLZOP="/usr/bin/lzop" \ + KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine" + done +} + +_package() { + local _flavor="$1" _outdir="$2" + local _builddir="$srcdir"/build-$_flavor + local _abi_release="$(make -C "$_builddir" -s kernelrelease)" + + cd "$srcdir"/build-$_flavor + + mkdir -p "$_outdir"/boot "$_outdir"/lib/modules + + local _install="zinstall dtbs_install" + + cd "$srcdir"/build-$_flavor + # modules_install seems to regenerate a defect Modules.symvers. Work + # around it by backing it up and restore it after modules_install + cp Module.symvers Module.symvers.backup + + local INSTALL_DTBS_PATH="$_outdir"/boot + make -j1 modules_install $_install \ + ARCH="$_carch" \ + INSTALL_MOD_PATH="$_outdir" \ + INSTALL_MOD_STRIP=1 \ + INSTALL_PATH="$_outdir"/boot \ + INSTALL_DTBS_PATH="$INSTALL_DTBS_PATH" + cp Module.symvers.backup Module.symvers + + cp "$_builddir"/arch/arm/boot/zImage "$_outdir"/boot/zImage + rm "$_outdir"/boot/vmlinuz-$_flavor + + rm -f "$_outdir"/lib/modules/$_abi_release/build \ + "$_outdir"/lib/modules/$_abi_release/source + rm -rf "$_outdir"/lib/firmware + + install -D -m644 include/config/kernel.release \ + "$_outdir"/usr/share/kernel/$_flavor/kernel.release + + # install missing firmware + install -vDm644 "$srcdir"/epdc_ES103CS1.fw "$_outdir"/lib/firmware/imx/epdc/epdc_ES103CS1.fw +} + +# main flavor installs in $pkgdir +package() { + _package rm "$pkgdir" +} + +# subflavors install in $subpkgdir +rm2() { + depends="initramfs-generator linux-firmware-brcm linux-firmware-cypress" + _package rm2 "$subpkgdir" +} + +_dev() { + local _flavor=$(echo $subpkgname | sed -E 's/(^linux-|-dev$)//g') + local _builddir="$srcdir"/build-$_flavor + local _abi_release="$(make -C "$_builddir" -s kernelrelease)" + # copy the only the parts that we really need for build 3rd party + # kernel modules and install those as /usr/src/linux-headers, + # simlar to what ubuntu does + # + # this way you dont need to install the 300-400 kernel sources to + # build a tiny kernel module + # + pkgdesc="Headers and script for third party modules for $_flavor kernel" + depends="$_depends_dev" + local dir="$subpkgdir"/usr/src/linux-headers-$_abi_release + + # first we import config, run prepare to set up for building + # external modules, and create the scripts + mkdir -p "$dir" + cp "$_builddir"/.config "$dir"/.config + echo "-$pkgrel-$_flavor" > "$dir"/localversion-alpine + + make -j1 -C "$builddir" \ + O="$dir" \ + ARCH="$_carch" \ + AWK="${AWK:-mawk}" \ + syncconfig prepare modules_prepare scripts + + # remove the stuff that points to real sources. we want 3rd party + # modules to believe this is the soruces + rm "$dir"/Makefile "$dir"/source + + # scripts aren't being crossbuilt from some reason + if cross_compiling; then + for i in $(scanelf -R "$dir" | awk '{print $2}' | sed '1d'); do rm "$i"; done + fi + + # copy the needed stuff from real sources + # + # this is taken from ubuntu kernel build script + # http://kernel.ubuntu.com/git/ubuntu/ubuntu-zesty.git/tree/debian/rules.d/3-binary-indep.mk + cd "$builddir" + find . -path './include/*' -prune \ + -o -path './scripts/*' -prune -o -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \ + -print | cpio -pdm "$dir" + + cp -a scripts include "$dir" + + # shellcheck disable=SC2046 + find $(find arch -name include -type d -print) -type f \ + | cpio -pdm "$dir" + + install -Dm644 "$_builddir"/Module.symvers \ + "$dir"/Module.symvers + + mkdir -p "$subpkgdir"/lib/modules/$_abi_release + ln -sf /usr/src/linux-headers-$_abi_release \ + "$subpkgdir"/lib/modules/$_abi_release/build +} + +sha512sums=" +80ab274ca3d30935d9913490662f17499c1ceedb438fe171554097d25ffc1cf85ee53f0c1642e94c0b833fdfb17636cd554bf685e4a6f5dac20cf122c1a25447 RM1XX_5.4.70_v1.3.3.tar.gz +ad4bd6f332319aceee7a1c7b71b49439e8217621214b6249c7e20198360d02ea442f31edfc8e1af1b85ed71e6f97c1cb7decf7b0885c9d0293361eef47f218b2 epdc_ES103CS1.fw +c5fc4f2f70112cc66a91a2948f7fd4adcd7172a95191b4c862084c7b80093cfa696925aa9a825c41bddac7441ba153eb264b8146e52a4556a73349e6fd10e641 brcmfmac-disable-power-management.patch +27ec1bc1d916dbd2258192c1ed864eacbd2746b49caa554fbaf1124bac478bab0b729e7fabbab8705ae175bb098800f795d415f4de4964da921c1b802560b67a brcmfmac-fix-suspend-resume-when-power-is-cut-off.patch +0f47278c5bfafb939e46224fbf16f9491e3cc560ac128dcf430a1f6cf9064fb1c5bf5db1a3076c35d30c004aec525a7d6616a647564f197bb29c57701c1db982 enable-automatic-partial-refreshing.patch +f7891cc029c362a270b98e488da0b8ac941d73971735fcdef88b872a00ffa5b90b98f4f5ece7f8e62506e23e88b1badccf439082d80a5433a564b28095f6007a config-changes-rm.armv7 +f7891cc029c362a270b98e488da0b8ac941d73971735fcdef88b872a00ffa5b90b98f4f5ece7f8e62506e23e88b1badccf439082d80a5433a564b28095f6007a config-changes-rm.armhf +" diff --git a/user/linux-rm/brcmfmac-disable-power-management.patch b/user/linux-rm/brcmfmac-disable-power-management.patch new file mode 100644 index 0000000..2d48b3f --- /dev/null +++ b/user/linux-rm/brcmfmac-disable-power-management.patch @@ -0,0 +1,13 @@ +diff --git a/./drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c.orig b/./drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +index f507d82..6c06044 100644 +--- a/./drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c.orig ++++ b/./drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -2743,6 +2743,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, + * preference in cfg struct to apply this to + * FW later while initializing the dongle + */ ++ pr_info("power management disabled\n"); ++ enabled = false; + cfg->pwr_save = enabled; + if (!check_vif_up(ifp->vif)) { + diff --git a/user/linux-rm/brcmfmac-fix-suspend-resume-when-power-is-cut-off.patch b/user/linux-rm/brcmfmac-fix-suspend-resume-when-power-is-cut-off.patch new file mode 100644 index 0000000..713c034 --- /dev/null +++ b/user/linux-rm/brcmfmac-fix-suspend-resume-when-power-is-cut-off.patch @@ -0,0 +1,221 @@ +From patchwork Wed Sep 25 13:44:57 2019 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Adrian Ratiu +X-Patchwork-Id: 11160709 +X-Patchwork-Delegate: kvalo@adurom.com +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E6264924 + for ; + Wed, 25 Sep 2019 13:45:07 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) + by mail.kernel.org (Postfix) with ESMTP id CEE8421D7E + for ; + Wed, 25 Sep 2019 13:45:07 +0000 (UTC) +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S2406776AbfIYNo5 (ORCPT + ); + Wed, 25 Sep 2019 09:44:57 -0400 +Received: from bhuna.collabora.co.uk ([46.235.227.227]:57998 "EHLO + bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S2406646AbfIYNo5 (ORCPT + ); + Wed, 25 Sep 2019 09:44:57 -0400 +Received: from [127.0.0.1] (localhost [127.0.0.1]) + (Authenticated sender: aratiu) + with ESMTPSA id 34818280400 +From: Adrian Ratiu +To: brcm80211-dev-list.pdl@broadcom.com +Cc: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, + linux-kernel@vger.kernel.org, + Martyn Welch +Subject: [PATCH 1/2] brcmfmac: don't WARN when there are no requests +Date: Wed, 25 Sep 2019 16:44:57 +0300 +Message-Id: <20190925134458.1413790-1-adrian.ratiu@collabora.com> +X-Mailer: git-send-email 2.23.0 +MIME-Version: 1.0 +Sender: linux-wireless-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-wireless@vger.kernel.org + +When n_reqs == 0 there is nothing to do so it doesn't make sense to +search for requests and issue a warning because none is found. + +Signed-off-by: Martyn Welch +Signed-off-by: Adrian Ratiu +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c +index 14e530601ef3..fabfbb0b40b0 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c +@@ -57,6 +57,10 @@ static int brcmf_pno_remove_request(struct brcmf_pno_info *pi, u64 reqid) + + mutex_lock(&pi->req_lock); + ++ /* Nothing to do if we have no requests */ ++ if (pi->n_reqs == 0) ++ goto done; ++ + /* find request */ + for (i = 0; i < pi->n_reqs; i++) { + if (pi->reqs[i]->reqid == reqid) + +From patchwork Wed Sep 25 13:44:58 2019 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Adrian Ratiu +X-Patchwork-Id: 11160707 +X-Patchwork-Delegate: kvalo@adurom.com +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 47A3C14DB + for ; + Wed, 25 Sep 2019 13:45:03 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) + by mail.kernel.org (Postfix) with ESMTP id 2F3CC21D7F + for ; + Wed, 25 Sep 2019 13:45:03 +0000 (UTC) +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S2406832AbfIYNo6 (ORCPT + ); + Wed, 25 Sep 2019 09:44:58 -0400 +Received: from bhuna.collabora.co.uk ([46.235.227.227]:58004 "EHLO + bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S2406650AbfIYNo5 (ORCPT + ); + Wed, 25 Sep 2019 09:44:57 -0400 +Received: from [127.0.0.1] (localhost [127.0.0.1]) + (Authenticated sender: aratiu) + with ESMTPSA id 8EFA628BCCF +From: Adrian Ratiu +To: brcm80211-dev-list.pdl@broadcom.com +Cc: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, + linux-kernel@vger.kernel.org, + Gustavo Padovan +Subject: [PATCH 2/2] brcmfmac: fix suspend/resume when power is cut off +Date: Wed, 25 Sep 2019 16:44:58 +0300 +Message-Id: <20190925134458.1413790-2-adrian.ratiu@collabora.com> +X-Mailer: git-send-email 2.23.0 +In-Reply-To: <20190925134458.1413790-1-adrian.ratiu@collabora.com> +References: <20190925134458.1413790-1-adrian.ratiu@collabora.com> +MIME-Version: 1.0 +Sender: linux-wireless-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-wireless@vger.kernel.org + +brcmfmac assumed the wifi device always remains powered on and thus +hardcoded the MMC_PM_KEEP_POWER flag expecting the wifi device to +remain on even during suspend/resume cycles. + +This is not always the case, some appliances cut power to everything +connected via SDIO for efficiency reasons and this leads to wifi not +being usable after coming out of suspend because the device was not +correctly reinitialized. + +So we check for the keep_power capability and if it's not present then +we remove the device and probe it again during resume to mirror what's +happening in hardware and ensure correct reinitialization in the case +when MMC_PM_KEEP_POWER is not supported. + +Suggested-by: Gustavo Padovan +Signed-off-by: Adrian Ratiu +--- + .../broadcom/brcm80211/brcmfmac/bcmsdh.c | 53 ++++++++++++++----- + 1 file changed, 39 insertions(+), 14 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +index 987731b..dac4685 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +@@ -1136,7 +1136,8 @@ static int brcmf_ops_sdio_suspend(struct device *dev) + struct sdio_func *func; + struct brcmf_bus *bus_if; + struct brcmf_sdio_dev *sdiodev; +- mmc_pm_flag_t sdio_flags; ++ mmc_pm_flag_t pm_caps, sdio_flags; ++ int ret = 0; + struct brcmf_cfg80211_info *config; + int retry = BRCMF_PM_WAIT_MAXRETRY; + +@@ -1159,19 +1160,33 @@ static int brcmf_ops_sdio_suspend(struct device *dev) + + sdiodev = bus_if->bus_priv.sdio; + +- brcmf_sdiod_freezer_on(sdiodev); +- brcmf_sdio_wd_timer(sdiodev->bus, 0); +- +- sdio_flags = MMC_PM_KEEP_POWER; +- if (sdiodev->wowl_enabled) { +- if (sdiodev->settings->bus.sdio.oob_irq_supported) +- enable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr); +- else +- sdio_flags |= MMC_PM_WAKE_SDIO_IRQ; ++ pm_caps = sdio_get_host_pm_caps(func); ++ ++ if (pm_caps & MMC_PM_KEEP_POWER) { ++ /* preserve card power during suspend */ ++ brcmf_sdiod_freezer_on(sdiodev); ++ brcmf_sdio_wd_timer(sdiodev->bus, 0); ++ ++ sdio_flags = MMC_PM_KEEP_POWER; ++ if (sdiodev->wowl_enabled) { ++ if (sdiodev->settings->bus.sdio.oob_irq_supported) ++ enable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr); ++ else ++ sdio_flags |= MMC_PM_WAKE_SDIO_IRQ; ++ } ++ ++ if (sdio_set_host_pm_flags(sdiodev->func1, sdio_flags)) ++ brcmf_err("Failed to set pm_flags %x\n", sdio_flags); ++ ++ } else { ++ /* power will be cut so remove device, probe again in resume */ ++ brcmf_sdiod_intr_unregister(sdiodev); ++ ret = brcmf_sdiod_remove(sdiodev); ++ if (ret) ++ brcmf_err("Failed to remove device on suspend\n"); + } +- if (sdio_set_host_pm_flags(sdiodev->func1, sdio_flags)) +- brcmf_err("Failed to set pm_flags %x\n", sdio_flags); +- return 0; ++ ++ return ret; + } + + static int brcmf_ops_sdio_resume(struct device *dev) +@@ -1179,13 +1194,23 @@ static int brcmf_ops_sdio_resume(struct device *dev) + struct brcmf_bus *bus_if = dev_get_drvdata(dev); + struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio; + struct sdio_func *func = container_of(dev, struct sdio_func, dev); ++ mmc_pm_flag_t pm_caps = sdio_get_host_pm_caps(func); ++ int ret = 0; + + brcmf_dbg(SDIO, "Enter: F%d\n", func->num); + if (func->num != 2) + return 0; + +- brcmf_sdiod_freezer_off(sdiodev); +- return 0; ++ if (!(pm_caps & MMC_PM_KEEP_POWER)) { ++ /* bus was powered off and device removed, probe again */ ++ ret = brcmf_sdiod_probe(sdiodev); ++ if (ret) ++ brcmf_err("Failed to probe device on resume\n"); ++ } else { ++ brcmf_sdiod_freezer_off(sdiodev); ++ } ++ ++ return ret; + } + + static const struct dev_pm_ops brcmf_sdio_pm_ops = { diff --git a/user/linux-rm/config-changes-rm.armhf b/user/linux-rm/config-changes-rm.armhf new file mode 120000 index 0000000..6c4e6a5 --- /dev/null +++ b/user/linux-rm/config-changes-rm.armhf @@ -0,0 +1 @@ +config-changes-rm.armv7 \ No newline at end of file diff --git a/user/linux-rm/config-changes-rm.armv7 b/user/linux-rm/config-changes-rm.armv7 new file mode 100644 index 0000000..ba2e73e --- /dev/null +++ b/user/linux-rm/config-changes-rm.armv7 @@ -0,0 +1,60 @@ +# format is config=command +# where command can be one of: +# y,n,m,", +# from remarkable-microsd project +# see http://www.davisr.me/projects/remarkable-microsd/ +CONFIG_RTL_CARDS=y +CONFIG_BATTERY_BQ27XXX=y +CONFIG_BATTERY_BQ27XXX_I2C=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_GHASH=y +# serial through USB +CONFIG_USB_ACM=y +CONFIG_USB_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_CDC_COMPOSITE=y +# console through serial +CONFIG_USB_G_SERIAL=y +CONFIG_U_SERIAL_CONSOLE=y +# wifi module doesn't load early enough for lack of initramfs +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMUTIL=m +# iwd requires these modules +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_KEY_DH_OPERATIONS=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA1=y +# other +LOCALVERSION="" +CONFIG_DEFAULT_HOSTNAME="remarkable" +CONFIG_MODULE_UNLOAD=y +# f2fs support +CONFIG_F2FS_FS=y +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_CHECK_FS=n +CONFIG_F2FS_IO_TRACE=n +CONFIG_F2FS_FAULT_INJECTION=n +CONFIG_F2FS_FS_COMPRESSION=y +CONFIG_F2FS_FS_LZO=y +CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_ZSTD=y +CONFIG_F2FS_FS_LZORLE=y diff --git a/user/linux-rm/config-changes-rm2.armhf b/user/linux-rm/config-changes-rm2.armhf new file mode 120000 index 0000000..6c4e6a5 --- /dev/null +++ b/user/linux-rm/config-changes-rm2.armhf @@ -0,0 +1 @@ +config-changes-rm.armv7 \ No newline at end of file diff --git a/user/linux-rm/config-changes-rm2.armv7 b/user/linux-rm/config-changes-rm2.armv7 new file mode 120000 index 0000000..6c4e6a5 --- /dev/null +++ b/user/linux-rm/config-changes-rm2.armv7 @@ -0,0 +1 @@ +config-changes-rm.armv7 \ No newline at end of file diff --git a/user/linux-rm/enable-automatic-partial-refreshing.patch b/user/linux-rm/enable-automatic-partial-refreshing.patch new file mode 100644 index 0000000..e78bc13 --- /dev/null +++ b/user/linux-rm/enable-automatic-partial-refreshing.patch @@ -0,0 +1,26 @@ +diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c.orig b/drivers/video/fbdev/mxc/mxc_epdc_fb.c +index 5c7d87d..5c31379 100644 +--- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c.orig ++++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c +@@ -3489,10 +3489,10 @@ static void mxc_epdc_fb_update_pages(struct mxc_epdc_fb_data *fb_data, + update.update_region.top = y1; + update.update_region.height = y2 - y1; + update.waveform_mode = WAVEFORM_MODE_AUTO; +- update.update_mode = UPDATE_MODE_FULL; ++ update.update_mode = UPDATE_MODE_PARTIAL; + update.update_marker = 0; + update.temp = TEMP_USE_AMBIENT; +- update.flags = 0; ++ update.flags = EPDC_FLAG_USE_REGAL; + + mxc_epdc_fb_send_update(&update, &fb_data->info); + } +@@ -3687,7 +3687,7 @@ static struct fb_ops mxc_epdc_fb_ops = { + }; + + static struct fb_deferred_io mxc_epdc_fb_defio = { +- .delay = HZ, ++ .delay = HZ / 30, + .deferred_io = mxc_epdc_fb_deferred_io, + }; + diff --git a/user/linux-rm/enable-sdhc1.patch b/user/linux-rm/enable-sdhc1.patch new file mode 100644 index 0000000..31c2b72 --- /dev/null +++ b/user/linux-rm/enable-sdhc1.patch @@ -0,0 +1,790 @@ +diff --git a/arch/arm/boot/dts/zero-gravitas.dts b/arch/arm/boot/dts/zero-gravitas.dts +index f51edfdedf8a..947f43c3434c 100644 +--- a/arch/arm/boot/dts/zero-gravitas.dts ++++ b/arch/arm/boot/dts/zero-gravitas.dts +@@ -1,6 +1,783 @@ +-#include "zero-gravitas-factory.dts" ++/* ++ * Copyright (C) 2013 Freescale Semiconductor, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++/dts-v1/; ++ ++#include ++#include ++#include "imx6sl.dtsi" ++#include "zero-gravitas-padctl.h" ++ ++/ { ++ model = "reMarkable 1.0"; ++ compatible = "remarkable,zero-gravitas", "fsl,imx6sl"; ++ ++ memory { ++ reg = <0x80000000 0x20000000>; ++ }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&gpio3 30 GPIO_ACTIVE_LOW>, ++ <&gpio4 0 GPIO_ACTIVE_LOW>; ++ clocks = <&clks IMX6SL_CLK_OSC>; ++ clock-names = "ext_clock"; ++ }; ++ ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ reg_usb_otg1_vbus: regulator@0 { ++ compatible = "regulator-fixed"; ++ reg = <0>; ++ regulator-name = "usb_otg1_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio4 15 0>; ++ enable-active-high; ++ vin-supply = <&swbst_reg>; ++ }; ++ ++ charger_regulator: regulator@1 { ++ reg = <1>; ++ compatible = "regulator-fixed"; ++ regulator-name = "charger-regulator"; ++ regulator-min-microamp = <5000000>; ++ regulator-max-microamp = <5000000>; ++ gpios = <&gpio3 27 GPIO_ACTIVE_LOW>; ++ enable-active-high; /* Don't invert twice */ ++ regulator-boot-on; ++ status = "disabled"; ++ }; ++ }; ++ ++ wacom_reset: wacom-reset { ++ compatible = "gpio-reset"; ++ reset-gpios = <&gpio4 4 1>; ++ reset-delay-us = <100000>; ++ #reset-cells = <0>; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&pinctrl_keys>; ++ pinctrl-names = "default"; ++ status = "okay"; ++ ++ button_0 { ++ label = "Power"; ++ gpios = <&gpio4 9 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ gpio-key,wakeup; ++ debounce-interval = <10>; ++ }; ++ ++ button_1 { ++ label = "Left"; ++ gpios = <&gpio3 24 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ gpio-key,wakeup; ++ debounce-interval = <5>; ++ }; ++ ++ button_2 { ++ label = "Home"; ++ gpios = <&gpio3 26 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ gpio-key,wakeup; ++ debounce-interval = <5>; ++ }; ++ button_3 { ++ label = "Right"; ++ gpios = <&gpio3 28 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ gpio-key,wakeup; ++ debounce-interval = <5>; ++ }; ++ button_4 { ++ label = "LowPower"; ++ gpios = <&gpio3 31 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ gpio-key,wakeup; ++ debounce-interval = <100>; ++ }; ++ }; ++ ++ usb_charger: usb_charger { ++ compatible = "gpio-charger"; ++ gpios = <&gpio4 1 0>; ++ status = "disabled"; ++ }; ++}; ++ ++&epdc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_epdc_0>; ++ VCOM-supply = <&VCOM_reg>; ++ DISPLAY-supply = <&DISPLAY_reg>; ++ TMST-supply = <&TMST_reg>; ++ status = "okay"; ++}; ++ ++&gpc { ++ fsl,ldo-bypass = <1>; ++}; ++ ++®_arm { ++ vin-supply = <&sw1a_reg>; ++ regulator-allow-bypass; ++}; ++ ++®_soc { ++ vin-supply = <&sw1c_reg>; ++ regulator-allow-bypass; ++}; ++ ++®_pu { ++ vin-supply = <&sw1c_reg>; ++ regulator-allow-bypass; ++}; ++ ++&i2c1 { ++ clock-frequency = <100000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1>; ++ status = "okay"; ++ ++ battery: bq27441@55 { ++ reg = <0x55>; ++ compatible = "ti,bq27441"; ++ /*power-supplies = <&usb_charger>;*/ ++ /*charger-supply = <&charger_regulator>;*/ ++ /*interrupt-parent = <&gpio3>; ++ interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;*/ ++ ti,resistor-sense = <10>; ++ }; ++ ++ pmic: pfuze100@8 { ++ compatible = "fsl,pfuze100"; ++ reg = <0x08>; ++ ++ regulators { ++ sw1a_reg: sw1ab { ++ regulator-min-microvolt = <300000>; ++ regulator-max-microvolt = <1875000>; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-ramp-delay = <6250>; ++ }; ++ ++ sw1c_reg: sw1c { ++ regulator-min-microvolt = <300000>; ++ regulator-max-microvolt = <1875000>; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-ramp-delay = <6250>; ++ }; ++ ++ sw2_reg: sw2 { ++ regulator-min-microvolt = <400000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ sw3a_reg: sw3a { ++ regulator-min-microvolt = <400000>; ++ regulator-max-microvolt = <1975000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ sw3b_reg: sw3b { ++ regulator-min-microvolt = <400000>; ++ regulator-max-microvolt = <1975000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ sw4_reg: sw4 { ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ swbst_reg: swbst { ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5150000>; ++ }; ++ ++ snvs_reg: vsnvs { ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ vref_reg: vrefddr { ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ vgen1_reg: vgen1 { ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1550000>; ++ regulator-always-on; ++ }; ++ ++ vgen2_reg: vgen2 { ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1550000>; ++ }; ++ ++ vgen3_reg: vgen3 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ vgen4_reg: vgen4 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vgen5_reg: vgen5 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vgen6_reg: vgen6 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ }; ++ }; ++ ++ max17135@48 { ++ compatible = "maxim,max17135"; ++ reg = <0x48>; ++ pass_num = <2>; ++ gvee_pwrup = <0>; /* ms */ ++ vneg_pwrup = <3>; ++ vpos_pwrup = <6>; ++ gvdd_pwrup = <3>; ++ ++ gvdd_pwrdn = <1>; ++ vpos_pwrdn = <2>; ++ vneg_pwrdn = <6>; ++ gvee_pwrdn = <50>; ++ /* These are only for passnum 1, we use i2c */ ++ gpio_pmic_pwrgood = <&gpio2 13 0>; ++ gpio_pmic_vcom_ctrl = <&gpio2 3 0>; ++ gpio_pmic_wakeup = <&gpio2 14 0>; ++ gpio_pmic_v3p3 = <&gpio2 7 0>; ++ gpio_pmic_intr = <&gpio2 12 0>; ++ ++ regulators { ++ DISPLAY_reg: DISPLAY { ++ regulator-name = "DISPLAY"; ++ }; ++ ++ GVDD_reg: GVDD { ++ /* 20v */ ++ regulator-name = "GVDD"; ++ }; ++ ++ GVEE_reg: GVEE { ++ /* -22v */ ++ regulator-name = "GVEE"; ++ }; ++ ++ HVINN_reg: HVINN { ++ /* -22v */ ++ regulator-name = "HVINN"; ++ }; ++ ++ HVINP_reg: HVINP { ++ /* 20v */ ++ regulator-name = "HVINP"; ++ }; ++ ++ VCOM_reg: VCOM { ++ regulator-name = "VCOM"; ++ /* Real max value: -500000 */ ++ regulator-max-microvolt = <4325000>; ++ /* Real min value: -4325000 */ ++ regulator-min-microvolt = <500000>; ++ }; ++ ++ VNEG_reg: VNEG { ++ /* -15v */ ++ regulator-name = "VNEG"; ++ }; ++ ++ VPOS_reg: VPOS { ++ /* 15v */ ++ regulator-name = "VPOS"; ++ }; ++ ++ TMST_reg: TMST { ++ regulator-name = "TMST"; ++ /* 2's-compliment, -127 */ ++ regulator-min-microvolt = <0xffffff81>; ++ /* 2's-compliment, +127 */ ++ regulator-max-microvolt = <0x0000007f>; ++ }; ++ }; ++ }; ++ ++}; ++ ++&i2c2 { ++ clock-frequency = <100000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c2>; ++ status = "okay"; ++ ++ digitizer: wacom-i2c@9 { ++ compatible = "wacom,wacom-i2c"; ++ reg = <0x09>; ++ interrupt-parent = <&gpio2>; ++ interrupts = <10 2>; ++ resets = <&wacom_reset>; ++ }; ++}; ++ ++&i2c3 { ++ clock-frequency = <100000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c3>; ++ status = "okay"; ++ ++ tsc@24 { ++ compatible = "cy,cyttsp5_i2c_adapter"; ++ reg = <0x24>; ++ interrupt-parent = <&gpio4>; ++ interrupts = <3 2>; ++ cy,adapter_id = "cyttsp5_i2c_adapter"; ++ status = "okay"; ++ ++ cy,core { ++ cy,name = "cyttsp5_core"; ++ ++ cy,irq_gpio = <&gpio4 3 0>; ++ cy,rst_gpio = <&gpio4 5 0>; ++ cy,hid_desc_register = <1>; ++ /* CY_CORE_FLAG_RESTORE_PARAMETERS */ ++ cy,flags = <4>; ++ /* CY_CORE_EWG_NONE */ ++ cy,easy_wakeup_gesture = <0>; ++ cy,btn_keys = <172 /* KEY_HOMEPAGE */ ++ /* previously was KEY_HOME, new Android versions use KEY_HOMEPAGE */ ++ 139 /* KEY_MENU */ ++ 158 /* KEY_BACK */ ++ 217 /* KEY_SEARCH */ ++ 114 /* KEY_VOLUMEDOWN */ ++ 115 /* KEY_VOLUMEUP */ ++ 212 /* KEY_CAMERA */ ++ 116>; /* KEY_POWER */ ++ cy,btn_keys-tag = <0>; ++ ++ cy,mt { ++ cy,name = "cyttsp5_mt"; ++ ++ cy,inp_dev_name = "cyttsp5_mt"; ++ cy,flags = <0>; ++ cy,abs = ++ /* ABS_MT_POSITION_X, CY_ABS_MIN_X, CY_ABS_MAX_X, 0, 0 */ ++ <0x35 0 880 0 0 ++ /* ABS_MT_POSITION_Y, CY_ABS_MIN_Y, CY_ABS_MAX_Y, 0, 0 */ ++ 0x36 0 1280 0 0 ++ /* ABS_MT_PRESSURE, CY_ABS_MIN_P, CY_ABS_MAX_P, 0, 0 */ ++ 0x3a 0 255 0 0 ++ /* CY_IGNORE_VALUE, CY_ABS_MIN_W, CY_ABS_MAX_W, 0, 0 */ ++ 0xffff 0 255 0 0 ++ /* ABS_MT_TRACKING_ID, CY_ABS_MIN_T, CY_ABS_MAX_T, 0, 0 */ ++ 0x39 0 15 0 0 ++ /* ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0 */ ++ 0x30 0 255 0 0 ++ /* ABS_MT_TOUCH_MINOR, 0, 255, 0, 0 */ ++ 0x31 0 255 0 0 ++ /* ABS_MT_ORIENTATION, -127, 127, 0, 0 */ ++ 0x34 0xffffff81 127 0 0 ++ /* ABS_MT_TOOL_TYPE, 0, MT_TOOL_MAX, 0, 0 */ ++ 0x37 0 1 0 0 ++ /* ABS_DISTANCE, 0, 255, 0, 0 */ ++ 0x19 0 255 0 0>; ++ ++ cy,vkeys_x = <720>; ++ cy,vkeys_y = <1280>; ++ ++ cy,virtual_keys = /* KeyCode CenterX CenterY Width Height */ ++ /* KEY_BACK */ ++ <158 1360 90 160 180 ++ /* KEY_MENU */ ++ 139 1360 270 160 180 ++ /* KEY_HOMEPAGE */ ++ 172 1360 450 160 180 ++ /* KEY SEARCH */ ++ 217 1360 630 160 180>; ++ }; ++ }; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hog>; ++ ++ zero-gravitas { ++ pinctrl_hog: hoggrp { ++ fsl,pins = < ++ /* MAX17135 pwrgood */ ++ MX6SL_PAD_EPDC_PWRSTAT__GPIO2_IO13 PAD_CTL_NONE ++ /* MAX17135 vcom ctrl */ ++ MX6SL_PAD_EPDC_VCOM0__GPIO2_IO03 PAD_CTL_NONE ++ /* MAX17135 wakeup */ ++ MX6SL_PAD_EPDC_PWRWAKEUP__GPIO2_IO14 PAD_CTL_NONE ++ /* MAX17135 v3p3 */ ++ MX6SL_PAD_EPDC_PWRCTRL0__GPIO2_IO07 PAD_CTL_NONE ++ /* MAX17135 intr */ ++ MX6SL_PAD_EPDC_PWRINT__GPIO2_IO12 PAD_CTL_NONE ++ ++ /* BQ27441 low power */ ++ MX6SL_PAD_KEY_ROW3__GPIO3_IO31 0x17000 ++ ++ /* Wacom interrupt */ ++ MX6SL_PAD_EPDC_PWRCTRL3__GPIO2_IO10 0x17000 ++ /* Wacom reset */ ++ MX6SL_PAD_KEY_COL6__GPIO4_IO04 0x110b0 ++ ++ /* CYTTSP interrupt */ ++ MX6SL_PAD_KEY_ROW5__GPIO4_IO03 0x17000 ++ /* CYTTSP reset */ ++ MX6SL_PAD_KEY_ROW6__GPIO4_IO05 0x110b0 ++ ++ /* USB OTG1 voltage control */ ++ /*MX6SL_PAD_ECSPI2_SS0__GPIO4_IO15 0x17000*/ ++ /*MX6SL_PAD_ECSPI2_SS0__GPIO4_IO15 0x000b0*/ ++ MX6SL_PAD_ECSPI2_SS0__GPIO4_IO15 PAD_CTL_NONE ++ /*MX6SL_PAD_ECSPI2_SS0__USB_OTG1_PWR 0x17000*/ ++ /* USB OTG1 over current detection */ ++ MX6SL_PAD_ECSPI2_MISO__USB_OTG1_OC 0x1b0b0 ++ ++ /* Charger control */ ++ MX6SL_PAD_KEY_ROW1__GPIO3_IO27 0x110b0 ++ /* Charger status */ ++ MX6SL_PAD_KEY_ROW4__GPIO4_IO01 PAD_CTL_NONE ++ ++ /* USDHC1 card detect */ ++ MX6SL_PAD_KEY_ROW7__GPIO4_IO07 0x17059 ++ ++ /* CHIP_WAKE_HOST */ ++ MX6SL_PAD_KEY_COL5__GPIO4_IO02 PAD_CTL_NONE ++ /* POWER_WIFI: WiFi external power control */ ++ MX6SL_PAD_KEY_COL3__GPIO3_IO30 PAD_CTL_NONE ++ /* WL_DIS: WiFi internal power control */ ++ MX6SL_PAD_KEY_COL4__GPIO4_IO00 PAD_CTL_NONE ++ ++ /* 32Khz clock from i.MX6 to WiFi for power saving */ ++ MX6SL_PAD_REF_CLK_32K__XTALOSC_REF_CLK_32K 0x1b0b0 ++ >; ++ }; ++ ++ pinctrl_epdc_0: epdcgrp-0 { ++ fsl,pins = < ++ MX6SL_PAD_EPDC_D0__EPDC_DATA00 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D1__EPDC_DATA01 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D2__EPDC_DATA02 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D3__EPDC_DATA03 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D4__EPDC_DATA04 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D5__EPDC_DATA05 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D6__EPDC_DATA06 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D7__EPDC_DATA07 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D8__EPDC_DATA08 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D9__EPDC_DATA09 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D10__EPDC_DATA10 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D11__EPDC_DATA11 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D12__EPDC_DATA12 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D13__EPDC_DATA13 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D14__EPDC_DATA14 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_D15__EPDC_DATA15 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_GDCLK__EPDC_GDCLK PAD_CTL_NONE ++ MX6SL_PAD_EPDC_GDOE__EPDC_GDOE PAD_CTL_NONE ++ MX6SL_PAD_EPDC_GDSP__EPDC_GDSP PAD_CTL_NONE ++ MX6SL_PAD_EPDC_SDCE0__EPDC_SDCE0 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_SDCLK__EPDC_SDCLK_P PAD_CTL_NONE ++ MX6SL_PAD_EPDC_SDLE__EPDC_SDLE PAD_CTL_NONE ++ MX6SL_PAD_EPDC_SDOE__EPDC_SDOE PAD_CTL_NONE ++ MX6SL_PAD_EPDC_BDR0__EPDC_BDR0 PAD_CTL_NONE ++ MX6SL_PAD_EPDC_BDR1__EPDC_BDR1 PAD_CTL_NONE ++ >; ++ }; ++ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = < ++ MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x4001b8b1 ++ MX6SL_PAD_I2C1_SDA__I2C1_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ ++ pinctrl_i2c2: i2c2grp { ++ fsl,pins = < ++ MX6SL_PAD_I2C2_SCL__I2C2_SCL 0x4001b8b1 ++ MX6SL_PAD_I2C2_SDA__I2C2_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ pinctrl_i2c3: i2c3grp { ++ fsl,pins = < ++ MX6SL_PAD_AUD_RXFS__I2C3_SCL 0x4001b8b1 ++ MX6SL_PAD_AUD_RXC__I2C3_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ pinctrl_keys: keygrp { ++ fsl,pins = < ++ MX6SL_PAD_ECSPI1_MOSI__GPIO4_IO09 0x100b1 ++ MX6SL_PAD_KEY_COL0__GPIO3_IO24 0x100b1 ++ MX6SL_PAD_KEY_COL1__GPIO3_IO26 0x100b1 ++ MX6SL_PAD_KEY_COL2__GPIO3_IO28 0x100b1 ++ >; ++ }; ++ ++ pinctrl_uart1: uart1grp { ++ fsl,pins = < ++ MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x1b0b1 ++ MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x1b0b1 ++ >; ++ }; ++ ++ pinctrl_usbotg1: usbotg1grp { ++ fsl,pins = < ++ MX6SL_PAD_EPDC_PWRCOM__USB_OTG1_ID 0x17059 ++ >; ++ }; ++ ++ pinctrl_usdhc1: usdhc1grp { ++ fsl,pins = < ++ MX6SL_PAD_SD1_CMD__SD1_CMD PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD1_CLK__SD1_CLK PAD_CTL_USDHC_CLK_DEFAULT ++ MX6SL_PAD_SD1_DAT0__SD1_DATA0 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD1_DAT1__SD1_DATA1 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD1_DAT2__SD1_DATA2 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD1_DAT3__SD1_DATA3 PAD_CTL_USDHC_DEFAULT ++ >; ++ }; ++ ++ pinctrl_usdhc1_100mhz: usdhc1grp100mhz { ++ fsl,pins = < ++ MX6SL_PAD_SD1_CMD__SD1_CMD PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD1_CLK__SD1_CLK PAD_CTL_USDHC_CLK_100MHZ ++ MX6SL_PAD_SD1_DAT0__SD1_DATA0 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD1_DAT1__SD1_DATA1 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD1_DAT2__SD1_DATA2 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD1_DAT3__SD1_DATA3 PAD_CTL_USDHC_100MHZ ++ >; ++ }; ++ ++ pinctrl_usdhc1_200mhz: usdhc1grp200mhz { ++ fsl,pins = < ++ MX6SL_PAD_SD1_CMD__SD1_CMD PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD1_CLK__SD1_CLK PAD_CTL_USDHC_CLK_200MHZ ++ MX6SL_PAD_SD1_DAT0__SD1_DATA0 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD1_DAT1__SD1_DATA1 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD1_DAT2__SD1_DATA2 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD1_DAT3__SD1_DATA3 PAD_CTL_USDHC_200MHZ ++ >; ++ }; ++ ++ pinctrl_usdhc2: usdhc2grp { ++ fsl,pins = < ++ MX6SL_PAD_SD2_CMD__SD2_CMD PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_CLK__SD2_CLK PAD_CTL_USDHC_CLK_DEFAULT ++ MX6SL_PAD_SD2_DAT0__SD2_DATA0 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT1__SD2_DATA1 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT2__SD2_DATA2 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT3__SD2_DATA3 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT4__SD2_DATA4 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT5__SD2_DATA5 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT6__SD2_DATA6 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_DAT7__SD2_DATA7 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD2_RST__SD2_RESET PAD_CTL_USDHC_CLK_DEFAULT ++ >; ++ }; ++ ++ pinctrl_usdhc2_100mhz: usdhc2grp100mhz { ++ fsl,pins = < ++ MX6SL_PAD_SD2_CMD__SD2_CMD PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_CLK__SD2_CLK PAD_CTL_USDHC_CLK_100MHZ ++ MX6SL_PAD_SD2_DAT0__SD2_DATA0 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT1__SD2_DATA1 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT2__SD2_DATA2 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT3__SD2_DATA3 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT4__SD2_DATA4 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT5__SD2_DATA5 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT6__SD2_DATA6 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_DAT7__SD2_DATA7 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD2_RST__SD2_RESET PAD_CTL_USDHC_CLK_DEFAULT ++ >; ++ }; ++ ++ pinctrl_usdhc2_200mhz: usdhc2grp200mhz { ++ fsl,pins = < ++ MX6SL_PAD_SD2_CMD__SD2_CMD PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_CLK__SD2_CLK PAD_CTL_USDHC_CLK_200MHZ ++ MX6SL_PAD_SD2_DAT0__SD2_DATA0 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT1__SD2_DATA1 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT2__SD2_DATA2 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT3__SD2_DATA3 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT4__SD2_DATA4 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT5__SD2_DATA5 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT6__SD2_DATA6 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_DAT7__SD2_DATA7 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD2_RST__SD2_RESET PAD_CTL_USDHC_CLK_DEFAULT ++ >; ++ }; ++ ++ pinctrl_usdhc3: usdhc3grp { ++ fsl,pins = < ++ MX6SL_PAD_SD3_CMD__SD3_CMD PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD3_CLK__SD3_CLK PAD_CTL_USDHC_CLK_DEFAULT ++ MX6SL_PAD_SD3_DAT0__SD3_DATA0 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD3_DAT1__SD3_DATA1 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD3_DAT2__SD3_DATA2 PAD_CTL_USDHC_DEFAULT ++ MX6SL_PAD_SD3_DAT3__SD3_DATA3 PAD_CTL_USDHC_DEFAULT ++ >; ++ }; ++ ++ pinctrl_usdhc3_100mhz: usdhc3grp100mhz { ++ fsl,pins = < ++ MX6SL_PAD_SD3_CMD__SD3_CMD PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD3_CLK__SD3_CLK PAD_CTL_USDHC_CLK_100MHZ ++ MX6SL_PAD_SD3_DAT0__SD3_DATA0 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD3_DAT1__SD3_DATA1 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD3_DAT2__SD3_DATA2 PAD_CTL_USDHC_100MHZ ++ MX6SL_PAD_SD3_DAT3__SD3_DATA3 PAD_CTL_USDHC_100MHZ ++ >; ++ }; ++ ++ pinctrl_usdhc3_200mhz: usdhc3grp200mhz { ++ fsl,pins = < ++ MX6SL_PAD_SD3_CMD__SD3_CMD PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD3_CLK__SD3_CLK PAD_CTL_USDHC_CLK_200MHZ ++ MX6SL_PAD_SD3_DAT0__SD3_DATA0 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD3_DAT1__SD3_DATA1 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD3_DAT2__SD3_DATA2 PAD_CTL_USDHC_200MHZ ++ MX6SL_PAD_SD3_DAT3__SD3_DATA3 PAD_CTL_USDHC_200MHZ ++ >; ++ }; ++ }; ++}; ++ ++&pxp { ++ status = "okay"; ++}; ++ ++&snvs_poweroff { ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart1>; ++ status = "okay"; ++}; ++ ++/*&usbmisc { ++ vbus-wakeup-supply = <®_usb_otg1_vbus>; ++};*/ + + &usbotg1 { +- vbus-supply = <®_usb_otg1_vbus>; ++ /*vbus-supply = <®_usb_otg1_vbus>;*/ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbotg1>; ++ disable-over-current; ++ /* This kills the speed */ ++ imx-usb-charger-detection; ++ srp-disable; ++ hnp-disable; ++ adp-disable; ++ status = "okay"; + }; + ++&usbotg2 { ++ dr_mode = "host"; ++ disable-over-current; ++ srp-disable; ++ hnp-disable; ++ adp-disable; ++ status = "disabled"; ++}; ++ ++ ++&usbphy1 { ++ tx-d-cal = <0x5>; ++}; ++ ++&usbphy2 { ++ tx-d-cal = <0x5>; ++ status = "disabled"; ++}; ++ ++&usdhc1 { ++ pinctrl-names = "default", "state_100mhz", "state_200mhz"; ++ pinctrl-0 = <&pinctrl_usdhc1>; ++ pinctrl-1 = <&pinctrl_usdhc1_100mhz>; ++ pinctrl-2 = <&pinctrl_usdhc1_200mhz>; ++ bus-width = <4>; ++ cd-gpios = <&gpio4 7 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ wp-controller; ++ keep-power-in-suspend; ++ enable-sdio-wakeup; ++ no-1-8-v; ++ status = "okay"; ++}; ++ ++&usdhc2 { ++ pinctrl-names = "default", "state_100mhz", "state_200mhz"; ++ pinctrl-0 = <&pinctrl_usdhc2>; ++ pinctrl-1 = <&pinctrl_usdhc2_100mhz>; ++ pinctrl-2 = <&pinctrl_usdhc2_200mhz>; ++ bus-width = <8>; ++ non-removable; ++ keep-power-in-suspend; ++ no-1-8-v; ++ disable-wp; ++ cap-mmc-highspeed; ++ status = "okay"; ++}; ++ ++&usdhc3 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ pinctrl-names = "default", "state_100mhz", "state_200mhz"; ++ pinctrl-0 = <&pinctrl_usdhc3>; ++ pinctrl-1 = <&pinctrl_usdhc3_100mhz>; ++ pinctrl-2 = <&pinctrl_usdhc3_200mhz>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ enable-sdio-wakeup; ++ non-removable; ++ disable-wp; ++ no-1-8-v; ++ wifi-host; ++ keep-power-in-suspend; ++ status = "okay"; ++ ++ brcmf: bcrmf@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ /*resets = <&wifi_reset>;*/ ++ }; ++}; diff --git a/user/mastodon/24073_prefer-stored-location-as-after-sign-in-path.patch b/user/mastodon/24073_prefer-stored-location-as-after-sign-in-path.patch new file mode 100644 index 0000000..efaf610 --- /dev/null +++ b/user/mastodon/24073_prefer-stored-location-as-after-sign-in-path.patch @@ -0,0 +1,23 @@ +From e48894bfe303b0d8b8f1c1bdf43f07e1baca3176 Mon Sep 17 00:00:00 2001 +From: CSDUMMI +Date: Sat, 11 Mar 2023 18:21:53 +0100 +Subject: [PATCH] Prefer the stored locatio in the omniauth callback controller + over the root path + +--- + app/controllers/auth/omniauth_callbacks_controller.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/app/controllers/auth/omniauth_callbacks_controller.rb b/app/controllers/auth/omniauth_callbacks_controller.rb +index 3d7962de56cb..9e0fb942aaff 100644 +--- a/app/controllers/auth/omniauth_callbacks_controller.rb ++++ b/app/controllers/auth/omniauth_callbacks_controller.rb +@@ -33,7 +33,7 @@ def self.provides_callback_for(provider) + + def after_sign_in_path_for(resource) + if resource.email_present? +- root_path ++ stored_location_for(resource) || root_path + else + auth_setup_path(missing_email: '1') + end diff --git a/user/mastodon/APKBUILD b/user/mastodon/APKBUILD new file mode 100644 index 0000000..4b70e1e --- /dev/null +++ b/user/mastodon/APKBUILD @@ -0,0 +1,204 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=mastodon +_pkgname=$pkgname +pkgver=4.1.8 +_gittag=v$pkgver +pkgrel=0 +pkgdesc="Self-hosted social media and network server based on ActivityPub and OStatus" +arch="x86_64 aarch64" +url="https://github.com/mastodon/mastodon" +license="AGPL-3.0-only" +depends=" + $pkgname-assets=$pkgver-r$pkgrel + ffmpeg + file + gcompat + imagemagick + nodejs + npm + protobuf + redis + ruby3.0 + ruby3.0-bundler + yarn + " +makedepends=" + gnu-libiconv-dev + icu-dev + libffi-dev + libidn-dev + libxml2-dev + libxslt-dev + openssl-dev + postgresql-dev + protobuf-dev + ruby3.0-dev + yaml-dev + zlib-dev + " +install=" + $pkgname.pre-install + $pkgname.post-upgrade + $pkgname.post-install + " +source=" + mastodon-$_gittag.tar.gz::https://github.com/mastodon/mastodon/archive/$_gittag.tar.gz + 24073_prefer-stored-location-as-after-sign-in-path.patch + mastodon.initd + mastodon.web.initd + mastodon.sidekiq.initd + mastodon.streaming.initd + mastodon.logrotate + bin-wrapper.in + " +subpackages="$pkgname-openrc $pkgname-assets::noarch" +options="!check" # No test suite + +_prefix="usr/lib/bundles/$_pkgname" + +export BUNDLE_DEPLOYMENT=true +export BUNDLE_FORCE_RUBY_PLATFORM=true +export BUNDLE_FROZEN=true +export BUNDLE_JOBS=${JOBS:-2} + +prepare() { + default_prepare + + # Allow use of any bundler + sed -i -e '/BUNDLED/,+1d' Gemfile.lock + + # Allow use of higher Node versions + sed -i 's/"node": .*"/"node": ">=14.15"/' package.json + + mkdir -p "$srcdir"/gem-cache +} + +build() { + local bundle_without='exclude development' + + msg "Installing Ruby gems..." + bundle config --local build.nokogiri --use-system-libraries \ + --with-xml2-include=/usr/include/libxml2 \ + --with-xslt-include=/usr/include/libxslt + bundle config --local build.ffi --enable-system-libffi + bundle config --local build.idn --enable-system-libidn + bundle config --local path "vendor/bundle" + bundle config --local set deployment 'false' + bundle config --local set without "$bundle_without" + + bundle install --no-cache -j"$(getconf _NPROCESSORS_ONLN)" + + msg "Installing npm modules..." + yarn install --production --frozen-lockfile + + ( + msg "Compiling assets..." + export NODE_ENV=production + export RAILS_ENV=production + export NODE_OPTIONS="--openssl-legacy-provider" + + OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder bundle exec rails assets:precompile + ) + + msg "Cleaning assets gems..." + bundle config --local without "$bundle_without" + bundle clean + + # Create executables in bin/*. + # See also https://github.com/bundler/bundler/issues/6149. + bundle binstubs --force bundler puma sidekiq +} + +package() { + local destdir="$pkgdir"/$_prefix + local datadir="$pkgdir/var/lib/gitlab" + # directory creation + install -dm 755 \ + "$destdir" \ + "$datadir" \ + "$pkgdir"/etc/init.d + + + # Install application files. + rmdir "$destdir" + cp -a "$builddir" "$destdir" + + install -m755 -t "$destdir"/bin/ \ + bin/bundle \ + bin/rails \ + bin/rake \ + bin/sidekiq \ + bin/sidekiqmon \ + bin/tootctl \ + bin/puma + + cd "$destdir"/vendor/bundle/ruby/*/ + + # Remove tests, documentations and other useless files. + find gems/ \( -name 'doc' \ + -o -name 'spec' \ + -o -name 'test' \) \ + -type d -maxdepth 2 -exec rm -fr "{}" + + find gems/ \( -name 'README*' \ + -o -name 'CHANGELOG*' \ + -o -name 'CONTRIBUT*' \ + -o -name '*LICENSE*' \ + -o -name 'Rakefile' \ + -o -name '.*' \) \ + -type f -delete + + # Remove assets, they are already compiled. + rm -r gems/doorkeeper-*/app/assets + rm -r gems/pghero-*/app/assets + + # Remove build logs and cache. + rm -rf build_info/ cache/ + find extensions/ \( -name gem_make.out -o -name mkmf.log \) -delete + + cat > "$datadir"/.profile <<-EOF + export RAILS_ENV=production + export NODE_ENV=production + export EXECJS_RUNTIME=Disabled + EOF + + # Install wrapper scripts to /usr/bin. + local name; for name in rake rails tootctl; do + sed "s/__COMMAND__/$name/g" "$srcdir"/bin-wrapper.in \ + > "$builddir"/mastodon-$name + install -m755 -D "$builddir"/mastodon-$name "$pkgdir"/usr/bin/mastodon-$name + done + + # Put the config file in /etc and link to it + touch "$pkgdir"/etc/mastodon.conf + ln -s /etc/mastodon.conf "$destdir"/.env.production + ln -s /usr/bin/node "$destdir"/node + + for file in $_pkgname $_pkgname.sidekiq $_pkgname.web $_pkgname.streaming; do + install -m755 -D "$srcdir"/$file.initd "$pkgdir"/etc/init.d/$file + done + + # Removing all prebuilt artifacts + rm -R "$destdir"/node_modules/*/prebuilds 2>&1 || true + + install -m644 -D "$srcdir"/$_pkgname.logrotate \ + "$pkgdir"/etc/logrotate.d/$_pkgname +} + +assets() { + depends="" + + amove $_prefix/public/assets +} + +sha512sums=" +3995f12f624fb4254f3e3785aa5e25f569c3551ab378aacaa2dd8e576dcbfda328b326f1589e6b5e6a021b3903875c5958ad771e63d4d680ff88d000645d9c18 mastodon-v4.1.8.tar.gz +730d3bef92b0da2ef400b5205fd8ab7159a458d654fa4d9a16cc0b579331ac67bec8b302096dff3470a3363b88a770ec857f1db7a0112effd07275da661c654a 24073_prefer-stored-location-as-after-sign-in-path.patch +36604cd630f0f5b4d88b630b1512cd26e922f859e5d19cbb85106ff29fc9048d2349f926d5c4b6947c655f67e60ec33e2f524a8154405a4369f283e00be7cdce mastodon.initd +9e77061fbdebe90492398f8089a7d2612ff4b6e70b5462dd67330b66d9788cb0133eab38c372b1f27a7214aacdd9f7f70381d4ecc6e92c8c38d794404ae0f840 mastodon.web.initd +6dacafca86dd39f6a6efa773cfe35b4632098175605a7c64488027237b01028d9785e50a3a0532b88ebf8f857c9a594c7b68f9e577b46e95104e7cffde51ccf8 mastodon.sidekiq.initd +63b67ec16107e4d1747ae956cdd41edd03be71da1ed96d21a18710cbba69ce37c856f4abc080a61f172a10859d0b9a33ba9290fc69213e1bc15a1ce8f8d40108 mastodon.streaming.initd +83b3bae5b6fdb4d0dbc1cbe546c62c0aa77397b97d1a5d5377af032466677de188065b556710c0d96576bbae89cc76800f1ffb8cd718155eb2784da818f27619 mastodon.logrotate +dfd0e43ac6c28387bd4aa57fd98ae41aeb5a098b6deb3e44b89f07818e2470773b025364afee7ef6fd0f664cb86bbbbe8796c9f222f5436c256a787282fbe3e1 bin-wrapper.in +" diff --git a/user/mastodon/bin-wrapper.in b/user/mastodon/bin-wrapper.in new file mode 100644 index 0000000..eb1d637 --- /dev/null +++ b/user/mastodon/bin-wrapper.in @@ -0,0 +1,15 @@ + +#!/bin/sh + +BUNDLE_DIR='/usr/lib/bundles/mastodon' +export RAILS_ENV='production' +export NODE_ENV='production' +export EXECJS_RUNTIME='Disabled' + +cd $BUNDLE_DIR + +if [ "$(id -un)" != 'mastodon' ]; then + exec su mastodon -c '"$0" "$@"' -- bin/__COMMAND__ "$@" +else + exec bin/__COMMAND__ "$@" +fi diff --git a/user/mastodon/mastodon.initd b/user/mastodon/mastodon.initd new file mode 100644 index 0000000..6d9c704 --- /dev/null +++ b/user/mastodon/mastodon.initd @@ -0,0 +1,40 @@ +#!/sbin/openrc-run + +name="Mastodon" +description="Meta script for starting/stopping all the Mastodon components" + +subservices="mastodon.sidekiq mastodon.streaming mastodon.web" + +depend() { + use net +} + +start() { + local ret=0 + + ebegin "Starting all Mastodon components" + local svc; for svc in $subservices; do + service $svc start || ret=1 + done + eend $ret +} + +stop() { + local ret=0 + + ebegin "Stopping all Mastodon components" + local svc; for svc in $subservices; do + service $svc stop || ret=1 + done + eend $ret +} + +status() { + local ret=0 + + local svc; for svc in $subservices; do + echo "$svc:" + service $svc status || ret=1 + done + eend $ret +} diff --git a/user/mastodon/mastodon.logrotate b/user/mastodon/mastodon.logrotate new file mode 100644 index 0000000..cbfecfc --- /dev/null +++ b/user/mastodon/mastodon.logrotate @@ -0,0 +1,11 @@ +/var/log/mastodon/*.log { + compress + copytruncate + delaycompress + maxsize 10M + minsize 1M + missingok + sharedscripts + rotate 10 + weekly +} diff --git a/user/mastodon/mastodon.post-install b/user/mastodon/mastodon.post-install new file mode 100644 index 0000000..9387d45 --- /dev/null +++ b/user/mastodon/mastodon.post-install @@ -0,0 +1,27 @@ +#!/bin/sh +set -eu + +if [ "${0##*.}" = 'post-upgrade' ]; then + cat >&2 <<-EOF + * + * To finish Mastodon upgrade run: + * + * mastodon-rails db:migrate + * + EOF +else + cat >&2 <<-EOF + * + * 1. Adjust settings in /etc/mastodon.conf + * + * 2. Create database for Mastodon: + * + * psql -c "CREATE ROLE mastodon PASSWORD 'top-secret' INHERIT LOGIN;" + * psql -c "CREATE DATABASE mastodon OWNER mastodon ENCODING 'UTF-8';" + * psql -d mastodon -c "CREATE EXTENSION pg_trgm; CREATE EXTENSION btree_gist;" + * psql -c "ALTER DATABASE name OWNER TO new_owner;" + * + * 3. Run "mastodon-rake db:migrate" + * + EOF +fi diff --git a/user/mastodon/mastodon.post-upgrade b/user/mastodon/mastodon.post-upgrade new file mode 120000 index 0000000..0fcc8b2 --- /dev/null +++ b/user/mastodon/mastodon.post-upgrade @@ -0,0 +1 @@ +mastodon.post-install \ No newline at end of file diff --git a/user/mastodon/mastodon.pre-install b/user/mastodon/mastodon.pre-install new file mode 100644 index 0000000..c869177 --- /dev/null +++ b/user/mastodon/mastodon.pre-install @@ -0,0 +1,54 @@ +#!/bin/sh +# It's very important to set user/group correctly. + +mastodon_dir='/var/lib/mastodon' + +if ! getent group mastodon 1>/dev/null; then + echo '* Creating group mastodon' 1>&2 + + addgroup -S mastodon +fi + +if ! id mastodon 2>/dev/null 1>&2; then + echo '* Creating user mastodon' 1>&2 + + adduser -DHS -G mastodon -h "$mastodon_dir" -s /bin/sh \ + -g "added by apk for mastodon" mastodon + passwd -u mastodon 1>/dev/null # unlock +fi + +if ! id -Gn mastodon | grep -Fq redis; then + echo '* Adding user mastodon to group redis' 1>&2 + + addgroup mastodon redis +fi + +if [ "$(id -gn mastodon)" != 'mastodon' ]; then + cat >&2 <<-EOF + !! + !! User mastodon has primary group $(id -gn mastodon). We strongly recommend to change + !! mastodon's primary group to mastodon. + !! + EOF + + # Add it at least as a supplementary group. + adduser mastodon mastodon +fi + +user_home="$(getent passwd mastodon | cut -d: -f6)" + +if [ "$user_home" != "$mastodon_dir" ]; then + cat >&2 <<-EOF + !! + !! User mastodon has home directory in $user_home, but this package assumes + !! $mastodon_dir. Although it's possible to use a different directory, + !! it's really not easy. + !! + !! Please change mastodon's home directory to $mastodon_dir, or adjust settings + !! and move files yourself. Otherwise Mastodon will not work! + !! + EOF +fi + +exit 0 + diff --git a/user/mastodon/mastodon.sidekiq.initd b/user/mastodon/mastodon.sidekiq.initd new file mode 100644 index 0000000..f7d62b0 --- /dev/null +++ b/user/mastodon/mastodon.sidekiq.initd @@ -0,0 +1,32 @@ +#!/sbin/openrc-run + +name="Mastodon background workers Service" +root="/usr/share/webapps/mastodon" +pidfile="/run/mastodon-sidekiq.pid" +logfile="/var/log/mastodon/sidekiq.log" + +depend() { + use net + need redis +} + +start() { + ebegin "Starting Mastodon background workers" + + cd $root + + start-stop-daemon --start --background \ + --chdir "${root}" \ + --user="mastodon" \ + --make-pidfile --pidfile="${pidfile}" \ + -1 "${logfile}" -2 "${logfile}" \ + --exec /usr/bin/env -- RAILS_ENV=production DB_POOL=25 MALLOC_ARENA_MAX=2 bundle exec sidekiq -c 25 + eend $? +} + +stop() { + ebegin "Stopping Mastodon background workers" + start-stop-daemon --stop \ + --pidfile=${pidfile} \ + eend $? +} diff --git a/user/mastodon/mastodon.streaming.initd b/user/mastodon/mastodon.streaming.initd new file mode 100644 index 0000000..647f719 --- /dev/null +++ b/user/mastodon/mastodon.streaming.initd @@ -0,0 +1,33 @@ +#!/sbin/openrc-run + +name="Mastodon streaming API service" +root="/usr/share/webapps/mastodon" +pidfile="/run/mastodon-streaming.pid" +logfile="/var/log/mastodon/streaming.log" + +depend() { + use net +} + +start() { + ebegin "Starting Mastodon streaming API" + + cd $root + + start-stop-daemon --start \ + --background --quiet \ + --chdir "${root}" \ + --user="mastodon" \ + --make-pidfile --pidfile="${pidfile}" \ + --stdout "${logfile}" --stderr "${logfile}" \ + --exec /usr/bin/env -- NODE_ENV=production PORT=4000 /usr/bin/node ./streaming/index.js + eend $? +} + +stop() { + ebegin "Stopping Mastodon streaming API" + start-stop-daemon --stop \ + --pidfile="${pidfile}" \ + eend $? +} + diff --git a/user/mastodon/mastodon.web.initd b/user/mastodon/mastodon.web.initd new file mode 100644 index 0000000..1a82acb --- /dev/null +++ b/user/mastodon/mastodon.web.initd @@ -0,0 +1,29 @@ +#!/sbin/openrc-run + +name="Mastodon Web Service" +root="/usr/share/webapps/mastodon" +pidfile="/run/mastodon-web.pid" +logfile="/var/log/mastodon/web.log" + +depend() { + use net +} + +start() { + ebegin "Starting Mastodon web workers" + cd $root + start-stop-daemon --start --background \ + --chdir "${root}" \ + --user="mastodon" \ + --pidfile="${pidfile}" --make-pidfile \ + --stdout="${logfile}" --stderr="${logfile}" \ + --exec /usr/bin/env -- RAILS_ENV=production PORT=3000 bundle exec puma -C config/puma.rb + eend $? +} + +stop() { + ebegin "Stopping Mastodon web workers" + start-stop-daemon --stop \ + --pidfile=${pidfile} \ + eend $? +} diff --git a/user/mathjax2/APKBUILD b/user/mathjax2/APKBUILD new file mode 100644 index 0000000..bc78cb6 --- /dev/null +++ b/user/mathjax2/APKBUILD @@ -0,0 +1,38 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=mathjax2 +pkgver=2.7.9 +pkgrel=0 +pkgdesc="An open source JavaScript display engine for mathematics that works in all modern browsers" +url="https://www.mathjax.org/" +arch=noarch +license="Apache-2.0" +source="$pkgname-$pkgver.tar.gz::https://github.com/mathjax/MathJax/archive/$pkgver.tar.gz" +builddir="$srcdir"/MathJax-$pkgver +options="!check" # No testsuite + +build() { + # Remove unneeded stuff, see https://github.com/mathjax/MathJax-docs/wiki/Guide%3A-reducing-size-of-a-mathjax-installation + for i in docs test unpacked fonts/HTML-CSS/TeX/png; do + rm -r $i + done + for _format in eot otf svg ; do + find . -type d -name "$_format" -prune -exec rm -rf {} \; + done +} + +package() { + mkdir -p \ + "$pkgdir"/usr/share/fonts \ + "$pkgdir"/usr/share/licenses/mathjax2 + + cp -a "$builddir" "$pkgdir"/usr/share/mathjax2 + + mv "$pkgdir"/usr/share/mathjax2/fonts "$pkgdir"/usr/share/fonts/mathjax2 + ln -s /usr/share/fonts/mathjax2 "$pkgdir"/usr/share/mathjax2/fonts + mv "$pkgdir"/usr/share/mathjax2/LICENSE "$pkgdir"/usr/share/licenses/mathjax2/ +} +sha512sums=" +ac7b2dfc6064148e941e5ee05361467514e5f28449dbb697ff1df556968ccb71f501c4021ade285cbbb995983513669c14d9c06886a7b83a5c75fa30504fa8ab mathjax2-2.7.9.tar.gz +" diff --git a/unmaintained/mumble-web/APKBUILD b/user/mumble-web/APKBUILD similarity index 100% rename from unmaintained/mumble-web/APKBUILD rename to user/mumble-web/APKBUILD diff --git a/unmaintained/mumble-web/LICENSE b/user/mumble-web/LICENSE similarity index 100% rename from unmaintained/mumble-web/LICENSE rename to user/mumble-web/LICENSE diff --git a/unmaintained/paperless-ngx/1746_add-OpenID-Connect-SSO-support-via-django-allauth.patch b/user/paperless-ngx/1746_add-OpenID-Connect-SSO-support-via-django-allauth.patch similarity index 100% rename from unmaintained/paperless-ngx/1746_add-OpenID-Connect-SSO-support-via-django-allauth.patch rename to user/paperless-ngx/1746_add-OpenID-Connect-SSO-support-via-django-allauth.patch diff --git a/unmaintained/paperless-ngx/APKBUILD b/user/paperless-ngx/APKBUILD similarity index 97% rename from unmaintained/paperless-ngx/APKBUILD rename to user/paperless-ngx/APKBUILD index 01ea699..522ed33 100644 --- a/unmaintained/paperless-ngx/APKBUILD +++ b/user/paperless-ngx/APKBUILD @@ -1,14 +1,14 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=paperless-ngx pkgver=1.17.4 -pkgrel=1 +pkgrel=0 pkgdesc="A community-supported supercharged version of paperless: scan, index and archive all your physical documents" url="https://github.com/paperless-ngx/paperless-ngx" license="GPL-3.0-only" # s390x: ocrmypdf py3-joblib py3-scikit-learn py3-watchfiles # armhf / ppc64le: py3-uvloop -# all: uvicorn doesn't yet work with websockets 14 arch="noarch !s390x !armhf !ppc64le" install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-install" depends=" @@ -37,8 +37,6 @@ depends=" py3-celery py3-chardet py3-charset-normalizer - py3-channels - py3-channels_redis py3-click py3-concurrent-log-handler py3-constantly @@ -47,6 +45,8 @@ depends=" py3-dateparser py3-deprecation py3-django-allauth + py3-django-channels + py3-django-channels-redis py3-django-compression-middleware py3-django-celery-results py3-django-cors-headers @@ -54,7 +54,7 @@ depends=" py3-django-filter py3-django-guardian py3-django-picklefield - py3-django-q2 + py3-django-q py3-django-rest-framework py3-django-rest-framework-guardian py3-filelock @@ -68,9 +68,9 @@ depends=" py3-idna py3-imap-tools py3-incremental - py3-inotify_simple + py3-inotify-simple py3-inotifyrecursive - py3-python-ipware + py3-ipware py3-joblib py3-langdetect py3-lxml diff --git a/unmaintained/paperless-ngx/paperless-consumer.openrc b/user/paperless-ngx/paperless-consumer.openrc similarity index 100% rename from unmaintained/paperless-ngx/paperless-consumer.openrc rename to user/paperless-ngx/paperless-consumer.openrc diff --git a/unmaintained/paperless-ngx/paperless-ngx.post-install b/user/paperless-ngx/paperless-ngx.post-install similarity index 100% rename from unmaintained/paperless-ngx/paperless-ngx.post-install rename to user/paperless-ngx/paperless-ngx.post-install diff --git a/unmaintained/paperless-ngx/paperless-ngx.post-upgrade b/user/paperless-ngx/paperless-ngx.post-upgrade similarity index 100% rename from unmaintained/paperless-ngx/paperless-ngx.post-upgrade rename to user/paperless-ngx/paperless-ngx.post-upgrade diff --git a/unmaintained/paperless-ngx/paperless-ngx.pre-install b/user/paperless-ngx/paperless-ngx.pre-install similarity index 100% rename from unmaintained/paperless-ngx/paperless-ngx.pre-install rename to user/paperless-ngx/paperless-ngx.pre-install diff --git a/unmaintained/paperless-ngx/paperless-scheduler.openrc b/user/paperless-ngx/paperless-scheduler.openrc similarity index 100% rename from unmaintained/paperless-ngx/paperless-scheduler.openrc rename to user/paperless-ngx/paperless-scheduler.openrc diff --git a/unmaintained/paperless-ngx/paperless-task-queue.openrc b/user/paperless-ngx/paperless-task-queue.openrc similarity index 100% rename from unmaintained/paperless-ngx/paperless-task-queue.openrc rename to user/paperless-ngx/paperless-task-queue.openrc diff --git a/unmaintained/paperless-ngx/paperless-webserver.openrc b/user/paperless-ngx/paperless-webserver.openrc similarity index 100% rename from unmaintained/paperless-ngx/paperless-webserver.openrc rename to user/paperless-ngx/paperless-webserver.openrc diff --git a/unmaintained/paperless-ngx/paperless.conf b/user/paperless-ngx/paperless.conf similarity index 100% rename from unmaintained/paperless-ngx/paperless.conf rename to user/paperless-ngx/paperless.conf diff --git a/user/papermc-plugin-essentialsx/APKBUILD b/user/papermc-plugin-essentialsx/APKBUILD deleted file mode 100644 index 51459a5..0000000 --- a/user/papermc-plugin-essentialsx/APKBUILD +++ /dev/null @@ -1,81 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=papermc-plugin-essentialsx -pkgver=2.21.1 -_gittag=$pkgver -pkgrel=0 -pkgdesc="EssentialsX is the essential plugin suite for Minecraft servers, with over 130 commands for servers of all size and scale." -# blocked by luckperms -# armv7: blocked my openjdk21-jdk -#arch='noarch !armv7' -url="https://essentialsx.net/" -license="GPL-3.0" -depends=" - papermc>=1.8.8 - papermc-plugin-luckperms - papermc-plugin-vault -" -makedepends="openjdk21-jdk" -source="$pkgname-$_gittag.tar.gz::https://github.com/EssentialsX/Essentials/archive/$_gittag.tar.gz" -builddir="$srcdir"/Essentials-$_gittag - -subpackages="$pkgname-chat $pkgname-spawn $pkgname-antibuild $pkgname-discord $pkgname-geo $pkgname-protect $pkgname-xmpp" - -build() { - ./gradlew build -} - -check() { - ./gradlew test -} - -package() { - install -Dm644 "$builddir"/jars/EssentialsX-*.jar "$pkgdir/var/lib/papermc/plugins/Essentials.jar" -} - -chat() { - pkgdesc="Chat formatting, local chat" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXChat-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsChat.jar" -} - -spawn() { - pkgdesc="Spawnpoint control, per-player spawns" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXSpawn-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsSpawn.jar" -} - -antibuild() { - pkgdesc="Simple permissions-based building control" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXAntiBuild-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsAntiBuild.jar" -} - -discord() { - pkgdesc="Lightweight chat, messaging and command integration with Discord" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXDiscord-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsDiscord.jar" - install -Dm644 "$builddir"/jars/EssentialsXDiscordLink-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsDiscordLink.jar" -} - -geo() { - pkgdesc="Geographical player lookup (formerly EssentialsX GeoIP)" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXGeoIP-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsGeo.jar" -} - -protect() { - pkgdesc="Configurable world protection and control" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXProtect-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsProtect.jar" -} - -xmpp() { - pkgdesc="Lightweight chat, messaging and server log integration with Jabber/XMPP services" - depends="$pkgname" - install -Dm644 "$builddir"/jars/EssentialsXXMPP-*.jar "$subpkgdir/var/lib/papermc/plugins/EssentialsXMPP.jar" -} - -sha512sums=" -2634a909e4fced837acfd89e0972511da418a9ab3d648f4eb466688b779c7d4215aa25ed891504bc39805d292f1ebf72bb71077c0354117fdaf28ba032483262 papermc-plugin-essentialsx-2.21.1.tar.gz -" diff --git a/user/papermc-plugin-luckperms/APKBUILD b/user/papermc-plugin-luckperms/APKBUILD deleted file mode 100644 index 6b7a4e4..0000000 --- a/user/papermc-plugin-luckperms/APKBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=papermc-plugin-luckperms -pkgver=5.4.151 -_gittag=0fef481d480737528491fc0b3b8487eb1612f955 -pkgrel=0 -pkgdesc="An advanced permissions plugin for Bukkit/Spigot, BungeeCord and Sponge." -# dependency not available upstream anymore -# armv7: blocked by openjdk21-jdk -#arch='noarch !armv7' -url="https://github.com/lucko/LuckPerms" -license="MIT" -depends="papermc>=1.8.8" -makedepends="openjdk21-jdk" -source="$pkgname-$_gittag.tar.gz::https://github.com/LuckPerms/LuckPerms/archive/$_gittag.tar.gz" -builddir="$srcdir"/LuckPerms-$_gittag - -prepare() { - default_prepare - sed -i "s|project.ext.patchVersion = determinePatchVersion()|project.ext.patchVersion = '${pkgver##*.}'|" build.gradle -} - -build() { - ./gradlew build -} - -check() { - ./gradlew test -} - -package() { - install -Dm644 "$builddir"/bukkit/loader/build/libs/LuckPerms-Bukkit-*.jar "$pkgdir/var/lib/papermc/plugins/LuckPerms.jar" -} -sha512sums=" -e016d2a161472974cc75151e1a6cb3495881d4db7e0aa75d81a1c54fd16d191fe721b1f9fadeaac0bef7ec4a7c47329a2cf367cf3a7577b284077ec173db0579 papermc-plugin-luckperms-0fef481d480737528491fc0b3b8487eb1612f955.tar.gz -" diff --git a/user/papermc-plugin-vault/1996cfa_finish-removal-native-support-for-abandonned-economy-plugins.patch b/user/papermc-plugin-vault/1996cfa_finish-removal-native-support-for-abandonned-economy-plugins.patch deleted file mode 100644 index 7ea071a..0000000 Binary files a/user/papermc-plugin-vault/1996cfa_finish-removal-native-support-for-abandonned-economy-plugins.patch and /dev/null differ diff --git a/user/papermc-plugin-vault/2022cb0_support-newer-jdk-for-building.patch b/user/papermc-plugin-vault/2022cb0_support-newer-jdk-for-building.patch deleted file mode 100644 index 5c1adee..0000000 --- a/user/papermc-plugin-vault/2022cb0_support-newer-jdk-for-building.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2022cb08922caa42aa77faca254c9b7d7506bee8 Mon Sep 17 00:00:00 2001 -From: Geolykt -Date: Mon, 27 Jun 2022 12:02:49 +0200 -Subject: [PATCH] Support newer JDKs for building - -Apparently the ancient version of lombok used -by a dependency is not compatible with newer -versions of java. As Vault proper did not make -use of lombok, it can be safely removed without -declaring an alternative. - -This commit allows Vault to build under Java 17. ---- - pom.xml | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/pom.xml b/pom.xml -index 5b8a6dfd..17c189fd 100644 ---- a/pom.xml -+++ b/pom.xml -@@ -324,6 +324,12 @@ Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms - craftconomy3 - 3.2.2-SNAPSHOT - true -+ -+ -+ org.projectlombok -+ lombok -+ -+ - - - net.crystalyx.bukkit.simplyperms diff --git a/user/papermc-plugin-vault/823_add-option-to-silence-no-update-logs.patch b/user/papermc-plugin-vault/823_add-option-to-silence-no-update-logs.patch deleted file mode 100644 index 7cb7ba1..0000000 --- a/user/papermc-plugin-vault/823_add-option-to-silence-no-update-logs.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 52df9d3287e8d593d0e4d999c6d5daaebe947ca1 Mon Sep 17 00:00:00 2001 -From: Ricardo Boss -Date: Tue, 28 Jun 2022 18:50:18 +0200 -Subject: [PATCH] Add option to silence "no update" logs (#823) - -* Added "silent-no-update" config option - -Added switch to turn off messages if no update is available. - -* Set default value for "silent-no-update" - -* Removed any "no update available" option and message ---- - src/net/milkbowl/vault/Vault.java | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/src/net/milkbowl/vault/Vault.java b/src/net/milkbowl/vault/Vault.java -index ef8b5578..fd2a9787 100644 ---- a/src/net/milkbowl/vault/Vault.java -+++ b/src/net/milkbowl/vault/Vault.java -@@ -171,8 +171,6 @@ public void run() { - log.warning("Update at: https://dev.bukkit.org/projects/vault"); - } else if (currentVersion > newVersion) { - log.info("Stable Version: " + newVersionTitle + " | Current Version: " + currentVersionTitle); -- } else { -- log.info("No new version available"); - } - } catch (Exception e) { - // ignore exceptions -@@ -182,7 +180,6 @@ public void run() { - }, 0, 432000); - - } -- - }); - - // Load up the Plugin metrics diff --git a/user/papermc-plugin-vault/868_update-bstats.patch b/user/papermc-plugin-vault/868_update-bstats.patch deleted file mode 100644 index 2ce8023..0000000 --- a/user/papermc-plugin-vault/868_update-bstats.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 3f20655f0b1b9c7a0f69eb241c5bedd8e748b5c9 Mon Sep 17 00:00:00 2001 -From: Leonardo Di Gianfelice Stornelli - -Date: Tue, 28 Jun 2022 00:34:40 +0200 -Subject: [PATCH] Update bStats (#868) - ---- - pom.xml | 2 +- - src/net/milkbowl/vault/Vault.java | 9 +++++---- - 2 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/pom.xml b/pom.xml -index 17c189fd..ccd8cde4 100644 ---- a/pom.xml -+++ b/pom.xml -@@ -85,7 +85,7 @@ Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms - - org.bstats - bstats-bukkit -- 1.5 -+ 3.0.0 - - - com.gmail.bleedobsidian.miconomy -diff --git a/src/net/milkbowl/vault/Vault.java b/src/net/milkbowl/vault/Vault.java -index 30f6f17f..ef8b5578 100644 ---- a/src/net/milkbowl/vault/Vault.java -+++ b/src/net/milkbowl/vault/Vault.java -@@ -78,6 +78,7 @@ - import net.milkbowl.vault.permission.plugins.Permission_KPerms; - - import org.bstats.bukkit.Metrics; -+import org.bstats.charts.SimplePie; - import org.bukkit.Bukkit; - import org.bukkit.OfflinePlayer; - import org.bukkit.command.Command; -@@ -185,7 +186,7 @@ public void run() { - }); - - // Load up the Plugin metrics -- Metrics metrics = new Metrics(this); -+ Metrics metrics = new Metrics(this, 887); - findCustomData(metrics); - - log.info(String.format("Enabled Version %s", getDescription().getVersion())); -@@ -581,7 +582,7 @@ private void findCustomData(Metrics metrics) { - econ = rspEcon.getProvider(); - } - final String econName = econ != null ? econ.getName() : "No Economy"; -- metrics.addCustomChart(new Metrics.SimplePie("economy", new Callable() { -+ metrics.addCustomChart(new SimplePie("economy", new Callable() { - @Override - public String call() { - return econName; -@@ -590,7 +591,7 @@ public String call() { - - // Create our Permission Graph and Add our permission Plotters - final String permName = Bukkit.getServer().getServicesManager().getRegistration(Permission.class).getProvider().getName(); -- metrics.addCustomChart(new Metrics.SimplePie("permission", new Callable() { -+ metrics.addCustomChart(new SimplePie("permission", new Callable() { - @Override - public String call() { - return permName; -@@ -604,7 +605,7 @@ public String call() { - chat = rspChat.getProvider(); - } - final String chatName = chat != null ? chat.getName() : "No Chat"; -- metrics.addCustomChart(new Metrics.SimplePie("chat", new Callable() { -+ metrics.addCustomChart(new SimplePie("chat", new Callable() { - @Override - public String call() { - return chatName; diff --git a/user/papermc-plugin-vault/APKBUILD b/user/papermc-plugin-vault/APKBUILD deleted file mode 100644 index 21897eb..0000000 --- a/user/papermc-plugin-vault/APKBUILD +++ /dev/null @@ -1,43 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=papermc-plugin-vault -pkgver=1.7.3 -pkgrel=0 -pkgdesc="Vault of common APIs for Bukkit Plugins" -# armv7: blocked by openjdk21-jdk -arch='noarch !armv7' -url="https://github.com/MilkBowl/Vault" -license="MIT" -depends="papermc>=1.8.8" -makedepends=" - openjdk21-jdk - maven -" -source=" - vault-$pkgver.tar.gz::https://github.com/MilkBowl/Vault/archive/refs/tags/1.7.3.tar.gz - 2022cb0_support-newer-jdk-for-building.patch - 868_update-bstats.patch - 823_add-option-to-silence-no-update-logs.patch - 1996cfa_finish-removal-native-support-for-abandonned-economy-plugins.patch - " -builddir="$srcdir"/Vault-$pkgver - -build() { - mvn compile - mvn package -} - -check() { - mvn test -} - -package() { - install -Dm644 "$builddir"/target/Vault-$pkgver.jar "$pkgdir/var/lib/papermc/plugins/Vault.jar" -} -sha512sums=" -3d154945e63b7824f0a0e0900fe6db7dc77c97f1967c29760d27a3322ca0b95d76965d8574c24b7cc0e86e822f9b5e3f860cb7167796351c9a921ddf5ef3d36b vault-1.7.3.tar.gz -8b7197b25acf06e545f10dd7dc5447aab6a73d3455bf89b01a4b466331eefa77c86152a47818348cfb901a0d65cff115b75ae37e0f8bb702c35cf13a3942a484 2022cb0_support-newer-jdk-for-building.patch -9124d0feef633f405c3aea6081d4b749df9828d99d0c93d09ba52adb680a781288523d2dfc71be566b8cafd58ac97f152258174ab02294c6e97020a033ee0faa 868_update-bstats.patch -b76b385ff62a955430db8d4d60592983e7475e1e63cd6a9e8c0be0a035662ec4472c6f9c8f09125745c198074695b3e04fe6ad96cbafa5faaba72bcf1bfee896 823_add-option-to-silence-no-update-logs.patch -ea5e36649e65ca690fd8a075bb5f251a8b449ab780a546007e242ec465c58c8c5ae346efac5f1b52e3287f4f400c658f745d130d1e361ecca3436dcf5cb46fb5 1996cfa_finish-removal-native-support-for-abandonned-economy-plugins.patch -" diff --git a/user/papermc-plugin-worldedit/APKBUILD b/user/papermc-plugin-worldedit/APKBUILD deleted file mode 100644 index f487664..0000000 --- a/user/papermc-plugin-worldedit/APKBUILD +++ /dev/null @@ -1,35 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=papermc-plugin-worldedit -pkgver=7.3.13 -_pkgver=$pkgver -pkgrel=0 -pkgdesc="WorldEdit is an easy-to-use in-game Minecraft map editor" -# missingupstream dependencies -# armv7: blocked by openjdk21-jdk -#arch='noarch !armv7' -url="https://github.com/EngineHub/WorldEdit" -license="GPL-3.0" -depends="papermc>=1.13.2" -makedepends="openjdk21-jdk" -source=" - $pkgname-$pkgver.tar.gz::https://github.com/EngineHub/WorldEdit/archive/refs/tags/$pkgver.tar.gz - papermc-fix-build.patch - " -builddir="$srcdir"/WorldEdit-$pkgver - -build() { - ./gradlew build --parallel -} - -check() { - ./gradlew test -} - -package() { - install -Dm644 "$builddir"/worldedit-bukkit/build/libs/worldedit-bukkit-$pkgver-dist.jar "$pkgdir/var/lib/papermc/plugins/WorldEdit.jar" -} -sha512sums=" -dbea1e2ff5b41ad25f8ddc5ae5456f9b7337d406cb4791fb3718b38bfbb94b0d8ba9fc7e2cd5c0d94c3c1845a35e68a87d89c0f147f9d988dd3fc3e375144198 papermc-plugin-worldedit-7.3.13.tar.gz -e36ac06da26e8817c7c666c972a09cbdba0fca8e0a511e53c5650d46ef1ee9a44d783900ed0afb39faab5dc718bf68e26d8c9b310ceedffa5d11bd15880aaa88 papermc-fix-build.patch -" diff --git a/user/papermc-plugin-worldedit/papermc-fix-build.patch b/user/papermc-plugin-worldedit/papermc-fix-build.patch deleted file mode 100644 index 95710e9..0000000 --- a/user/papermc-plugin-worldedit/papermc-fix-build.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/gradle/libs.versions.toml.orig b/gradle/libs.versions.toml -index 5f0e7da..ff0569b 100644 ---- a/gradle/libs.versions.toml.orig -+++ b/gradle/libs.versions.toml -@@ -77,7 +77,7 @@ mockito-junit-jupiter.module = "org.mockito:mockito-junit-jupiter" - commonsCli = "commons-cli:commons-cli:1.4" - - # https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/paper-api/ --paperApi = "io.papermc.paper:paper-api:1.21.5-R0.1-20250503.204036-71" -+paperApi = "io.papermc.paper:paper-api:1.21.5-R0.1-20250520.110141-3" - paperLib = "io.papermc:paperlib:1.0.8" - - dummypermscompat = "com.sk89q:dummypermscompat:1.10" diff --git a/user/papermc-plugin-worldguard/APKBUILD b/user/papermc-plugin-worldguard/APKBUILD deleted file mode 100644 index ba13b1d..0000000 --- a/user/papermc-plugin-worldguard/APKBUILD +++ /dev/null @@ -1,30 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=papermc-plugin-worldguard -pkgver=7.0.13_beta1 -_gittag=2f13ae0444409376feb6c7674591142fe854e12e -pkgrel=0 -pkgdesc="WorldGuard lets you and players guard areas of land against griefers and undesirables" -# armv7: blocked by openjdk21-jdk -arch='noarch !armv7' -url="https://github.com/EngineHub/WorldGuard" -license="GPL-3.0" -depends="papermc>=1.17.0" -makedepends="openjdk21-jdk" -source="$pkgname-$_gittag.tar.gz::https://github.com/EngineHub/WorldGuard/archive/$_gittag.tar.gz" -builddir="$srcdir"/WorldGuard-$_gittag - -build() { - ./gradlew build -} - -check() { - ./gradlew test -} - -package() { - install -Dm644 "$builddir"/worldguard-bukkit/build/libs/worldguard-bukkit-*dist.jar "$pkgdir/var/lib/papermc/plugins/WorldGuard.jar" -} -sha512sums=" -755646330c17df22b1d4eb6f38fc8ea712eff86a0165f2dba6dc1bcd420d2d112547adf60a35f268f45730b8444e540d7d08a02a50df0238bf16c9ff7dc799ff papermc-plugin-worldguard-2f13ae0444409376feb6c7674591142fe854e12e.tar.gz -" diff --git a/user/papermc/APKBUILD b/user/papermc/APKBUILD index f4a7f7b..e400914 100644 --- a/user/papermc/APKBUILD +++ b/user/papermc/APKBUILD @@ -1,51 +1,56 @@ # Maintainer: Antoine Martin (ayakael) # Contributor: Antoine Martin (ayakael) + pkgname=papermc -pkgver=1.21.7 -_gittag=${pkgver/.0} -pkgrel=0 +_pkgver=1.18.1 +_build=99 +_license_commit=4a7962c +pkgver="$_pkgver.$_build" +pkgrel=1 pkgdesc="Next generation of Minecraft server, compatible with Spigot plugins and offering uncompromising performance" -# armv7: blocked by openjdk21-jdk -arch='noarch !armv7' +pkgusers="craftbukkit" +pkggroups="craftbukkit" +arch='noarch' url="https://papermc.io/" license='custom' -depends='openjdk21-jdk screen sudo bash gawk sed netcat-openbsd' -makedepends="gradle zstd" +depends='openjdk17-jre-headless screen sudo bash gawk sed netcat-openbsd tar' options="!check" +provides="craftbukkit=$_pkgver" subpackages="$pkgname-openrc" -source=" - https://ayakael.net/api/packages/mirrors/generic/papermc/$_gittag/papermc-$_gittag.tar.zst +source="papermc.$pkgver.jar::https://papermc.io/api/v2/projects/paper/versions/$_pkgver/builds/$_build/downloads/paper-$_pkgver-$_build.jar papermc.initd papermc.conf papermc.sh + LICENSE_$pkgver.md::https://raw.githubusercontent.com/PaperMC/Paper/$_license_commit/LICENSE.md " -build() { - ./gradlew --parallel createMojmapBundlerJar -} - -check() { - ./gradlew --parallel check -} +_game="papermc" +_server_root="/var/lib/papermc" package() { - install -Dm644 "$srcdir"/$pkgname.conf "$pkgdir"/etc/conf.d/$pkgname - install -Dm755 "$srcdir"/$pkgname.sh "$pkgdir"/usr/bin/$pkgname - install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname - install -Dm644 "$builddir"/paper-server/build/libs/paper-server*.jar "$pkgdir"/var/lib/$pkgname/$pkgver.jar - ln -s $pkgver.jar "$pkgdir"/var/lib/$pkgname/server.jar + install -Dm644 "$srcdir"/$_game.conf "$pkgdir"/etc/conf.d/$_game + install -Dm755 "$srcdir"/$_game.sh "$pkgdir"/usr/bin/$_game + install -Dm755 "$srcdir"/$_game.initd "$pkgdir"/etc/init.d/$_game + install -Dm644 "$srcdir"/$_game.$pkgver.jar "$pkgdir"/$_server_root/$_game/$pkgver.jar + ln -s "$_game"/$pkgver.jar "$pkgdir"/$_server_root/$_game/server.jar + + # Link to craftbukkit plugins var + ln -s "/var/lib/craftbukkit/plugins" "$pkgdir"/$_server_root/plugins # Link the log files mkdir -p "$pkgdir"/var/log/ - install -dm2755 "$pkgdir"/var/lib/$pkgname/logs - ln -s "/var/lib/$pkgname"/logs "$pkgdir"/var/log/$pkgname + install -dm2755 "$pkgdir"/$_server_root/logs + ln -s "$_server_root"/logs "$pkgdir"/var/log/$_game # Give the group write permissions and set user or group ID on execution - chmod g+ws "$pkgdir"/var/lib/$pkgname + chmod g+ws "$pkgdir"/$_server_root + + install -D "$srcdir"/LICENSE_$pkgver.md "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } sha512sums=" -90c3017f7e4031816f6d4e30612a88d7b15d9e99cfb4e887b868e3d0d55ec5db0e9e71dc433dd399959da9b099e7fc4fd3768635ccabcce84d1adfc48837309a papermc-1.21.7.tar.zst +623d6423ee337671d546469e6bf1821005484192a1ae56d7b77f547f79102df50462e1d0144be13a0de9021c9d931bc974143b1e1526114627ba28688589d76a papermc.1.18.1.99.jar c5d1bf85ceb74162aaaf2bcd2d06dc2e3dd2e37c39f0cee2be7c8dbff9970a6aff1e48a43e6d1e83e6a0ac610bd89f62b1279bf27b64afa88d9831a36aebbd3e papermc.initd 9b8e267428731ee9255f82a93f1e8674d7e917a0f154bd395cd2280a49aa248a4b8427520b08dbb4b3a74a5471dac0e439eedc8ab94bf2e53bb8d411d2d8a789 papermc.conf 943ba0d4c10173246bdc6497dcedd54da0788f966841c8d3381398711d79f8d5eb07a24ce28f519b6f24f59d99fa9e74bc6bb882059f343df4eeda5de3660ac7 papermc.sh +d4c645a58e1a17a0a1e42856a3cc43097711a05bf3d9f18c77c3bc9874417f223552859042ff00b7d3dda0003f49a9ee568540c2eb24e9f8fbb3c055f3b6e0a5 LICENSE_1.18.1.99.md " diff --git a/user/papermc/APKBUILD.orig b/user/papermc/APKBUILD.orig new file mode 100644 index 0000000..fe78218 --- /dev/null +++ b/user/papermc/APKBUILD.orig @@ -0,0 +1,56 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=papermc +_pkgver=1.18.1 +_build=99 +_license_commit=4a7962c +pkgver="$_pkgver.$_build" +pkgrel=1 +pkgdesc="Next generation of Minecraft server, compatible with Spigot plugins and offering uncompromising performance" +pkgusers="craftbukkit" +pkggroups="craftbukkit" +arch='noarch' +url="https://papermc.io/" +license='custom' +depends='openjdk17-jre-headless screen sudo bash gawk sed netcat-openbsd tar' +options="!check" +provides="craftbukkit=$_pkgver" +subpackages="$pkgname.openrc" +source="papermc.$pkgver.jar::https://papermc.io/api/v2/projects/paper/versions/$_pkgver/builds/$_build/downloads/paper-$_pkgver-$_build.jar + papermc.initd + papermc.conf + papermc.sh + LICENSE_$pkgver.md::https://raw.githubusercontent.com/PaperMC/Paper/$_license_commit/LICENSE.md +" + +_game="papermc" +_server_root="/var/lib/papermc" + +package() { + install -Dm644 $srcdir.$_game.conf "$pkgdir.etc/conf.d/$_game" + install -Dm755 $srcdir.$_game.sh "$pkgdir.usr/bin/$_game" + install -Dm755 $srcdir.$_game.initd "$pkgdir.etc/init.d/$_game" + install -Dm644 $srcdir.$_game.$pkgver.jar "$pkgdir.$_server_root.$_game.$pkgver.jar" + ln -s "$_game.$pkgver.jar" "$pkgdir._server_root.$_game.server.jar" + + # Link to craftbukkit plugins var + ln -s "/var/lib/craftbukkit/plugins" "$pkgdir.$_server_root.plugins" + + # Link the log files + mkdir -p "$pkgdir.var/log/" + install -dm2755 "$pkgdir.$_server_root.logs" + ln -s "$_server_root.logs" "$pkgdir.var/log/$_game" + + # Give the group write permissions and set user or group ID on execution + chmod g+ws "$pkgdir._server_root" + + install -D $srcdir../LICENSE_$pkgver.md "$pkgdir.usr/share/licenses/$pkgname.LICENSE" +} +sha512sums=" +623d6423ee337671d546469e6bf1821005484192a1ae56d7b77f547f79102df50462e1d0144be13a0de9021c9d931bc974143b1e1526114627ba28688589d76a papermc.1.18.1.99.jar +c5d1bf85ceb74162aaaf2bcd2d06dc2e3dd2e37c39f0cee2be7c8dbff9970a6aff1e48a43e6d1e83e6a0ac610bd89f62b1279bf27b64afa88d9831a36aebbd3e papermc.initd +9b8e267428731ee9255f82a93f1e8674d7e917a0f154bd395cd2280a49aa248a4b8427520b08dbb4b3a74a5471dac0e439eedc8ab94bf2e53bb8d411d2d8a789 papermc.conf +943ba0d4c10173246bdc6497dcedd54da0788f966841c8d3381398711d79f8d5eb07a24ce28f519b6f24f59d99fa9e74bc6bb882059f343df4eeda5de3660ac7 papermc.sh +d4c645a58e1a17a0a1e42856a3cc43097711a05bf3d9f18c77c3bc9874417f223552859042ff00b7d3dda0003f49a9ee568540c2eb24e9f8fbb3c055f3b6e0a5 LICENSE_1.18.1.99.md +" diff --git a/user/papermc/APKBUILD.rej b/user/papermc/APKBUILD.rej new file mode 100644 index 0000000..f8c4908 --- /dev/null +++ b/user/papermc/APKBUILD.rej @@ -0,0 +1,38 @@ +--- user/papermc/APKBUILD ++++ user/papermc/APKBUILD +@@ -28,24 +28,24 @@ _game="papermc" + _server_root="/var/lib/papermc" + + package() { +- install -Dm644 $srcdir.$_game.conf "$pkgdir.etc/conf.d/$_game" +- install -Dm755 $srcdir.$_game.sh "$pkgdir.usr/bin/$_game" +- install -Dm755 $srcdir.$_game.initd "$pkgdir.etc/init.d/$_game" +- install -Dm644 $srcdir.$_game.$pkgver.jar "$pkgdir.$_server_root.$_game.$pkgver.jar" +- ln -s "$_game.$pkgver.jar" "$pkgdir._server_root.$_game.server.jar" ++ install -Dm644 "$srcdir"/$_game.conf "$pkgdir"/etc/conf.d/$_game ++ install -Dm755 "$srcdir"/$_game.sh "$pkgdir"/usr/bin/$_game ++ install -Dm755 "$srcdir"/$_game.initd "$pkgdir"/etc/init.d/$_game ++ install -Dm644 "$srcdir"/$_game.$pkgver.jar "$pkgdir"/$_server_root/$_game/$pkgver.jar ++ ln -s "$_game"/$pkgver.jar "$pkgdir"/$_server_root/$_game/server.jar + + # Link to craftbukkit plugins var +- ln -s "/var/lib/craftbukkit/plugins" "$pkgdir.$_server_root.plugins" ++ ln -s "/var/lib/craftbukkit/plugins" "$pkgdir"/$_server_root/plugins + + # Link the log files +- mkdir -p "$pkgdir.var/log/" +- install -dm2755 "$pkgdir.$_server_root.logs" +- ln -s "$_server_root.logs" "$pkgdir.var/log/$_game" ++ mkdir -p "$pkgdir"/var/log/ ++ install -dm2755 "$pkgdir"/$_server_root/logs ++ ln -s "$_server_root"/logs "$pkgdir"/var/log/$_game + + # Give the group write permissions and set user or group ID on execution +- chmod g+ws "$pkgdir._server_root" ++ chmod g+ws "$pkgdir"/$_server_root + +- install -D $srcdir../LICENSE_$pkgver.md "$pkgdir.usr/share/licenses/$pkgname.LICENSE" ++ install -D "$srcdir"/LICENSE_$pkgver.md "$pkgdir"/usr/share/licenses/$pkgname/LICENSE + } + sha512sums=" + 623d6423ee337671d546469e6bf1821005484192a1ae56d7b77f547f79102df50462e1d0144be13a0de9021c9d931bc974143b1e1526114627ba28688589d76a papermc.1.18.1.99.jar diff --git a/user/perl-cgi-formbuilder/APKBUILD b/user/perl-cgi-formbuilder/APKBUILD new file mode 100644 index 0000000..5b91b4b --- /dev/null +++ b/user/perl-cgi-formbuilder/APKBUILD @@ -0,0 +1,39 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=perl-cgi-formbuilder +_pkgname=CGI-FormBuilder +pkgver=3.10 +pkgrel=0 +pkgdesc="Easily generate and process stateful forms" +arch="noarch" +url="https://metacpan.org/release/CGI-FormBuilder" +license="Artistic-1.0-Perl" +depends="perl" +makedepends=" + perl-html-template + perl-text-template + perl-template-toolkit + perl-cgi-session + " +checkdepends="perl-cgi" +source="https://cpan.metacpan.org/authors/id/B/BI/BIGPRESH/$_pkgname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_pkgname-$pkgver + +build() { + perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + make test +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums=" +38d8e6eb729e188074d872b979ad46133152877bb30b95329a2c7275154646a4afb62dc3539cb34781149f424b1d384d05230efe8b174967742625a81765bad5 CGI-FormBuilder-3.10.tar.gz +" diff --git a/user/perl-crypt-random-source/APKBUILD b/user/perl-crypt-random-source/APKBUILD new file mode 100644 index 0000000..ffe4aba --- /dev/null +++ b/user/perl-crypt-random-source/APKBUILD @@ -0,0 +1,48 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_cpaname="Crypt-Random-Source" +_cpanauthor=ETHER +pkgname=perl-crypt-random-source +pkgver=0.14 +pkgrel=1 +pkgdesc="Perl Crypt::Random::Source CPAN module - load and instantiate sources of random data" +arch="noarch" +url="http://search.cpan.org/dist/$_cpaname/" +license="GPL"$ +makedepends=" + perl-module-build-tiny + " +depends=" + perl-capture-tiny + perl-module-find + perl-module-runtime + perl-moo + perl-namespace-clean + perl-sub-exporter + perl-sub-name + perl-test-fatal + perl-type-tiny + perl-yaml + " +source="http://www.cpan.org/authors/id/${_cpanauthor::1}/${_cpanauthor::2}/$_cpanauthor/$_cpaname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_cpaname-$pkgver + +build() { + export PERL_MM_FALLBACK_SILENCE_WARNING=true + perl Makefile.PL + make +} + +check() { + make test +} + +package() { + make install INSTALLDIRS=vendor DESTDIR="$pkgdir" + rm "$pkgdir"/usr/lib/perl5/core_perl/perllocal.pod +} +sha512sums=" +25760ccfae42f44bd132915e3796042b43c1bc43195a97fc1236579c90b96957b3d86d2e68adde9d7dd486336f132982867413af251c66e527584e7309e0c729 Crypt-Random-Source-0.14.tar.gz +" diff --git a/user/perl-email-valid/APKBUILD b/user/perl-email-valid/APKBUILD new file mode 100644 index 0000000..aae4aa0 --- /dev/null +++ b/user/perl-email-valid/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_cpaname="Email-Valid" +_cpanauthor=RJBS +pkgname=perl-email-valid +pkgver=1.203 +pkgrel=1 +pkgdesc="Check validity of Internet email addresses" +# disable missing depends +#arch="noarch" +url="http://search.cpan.org/dist/$_cpaname/" +license="GPL" +depends=" + perl-io-captureoutput + perl-mailtools + perl-net-dns + perl-net-domain-tld + " +source="http://www.cpan.org/authors/id/${_cpanauthor::1}/${_cpanauthor::2}/$_cpanauthor/$_cpaname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_cpaname-$pkgver + +build() { + export PERL_MM_FALLBACK_SILENCE_WARNING=true + perl Makefile.PL + make +} + +check() { + make test +} + +package() { + make install INSTALLDIRS=vendor DESTDIR="$pkgdir" + rm "$pkgdir"/usr/lib/perl5/core_perl/perllocal.pod +} +sha512sums=" +5c91298df72d1084401be47f035d44a350a0aa5de7bfa5019b7f2b44fe61a1e64875f77a4b3412d660f0136c548dde6158eae1a8fcba4442d0de0a19c51e84fd Email-Valid-1.203.tar.gz +" diff --git a/user/perl-locale-gettext/APKBUILD b/user/perl-locale-gettext/APKBUILD new file mode 100644 index 0000000..00dda39 --- /dev/null +++ b/user/perl-locale-gettext/APKBUILD @@ -0,0 +1,46 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=perl-locale-gettext +_pkgname=Locale-gettext +pkgver=1.07 +pkgrel=0 +license="Artistic-1.0-Perl OR GPL-1.0-or-later" +pkgdesc="Permits access from Perl to the gettext() family of functions" +arch="all" +url="https://search.cpan.org/dist/$_pkgname/" +depends=" + perl + gettext + " +makedepends=" + gettext-dev + perl-dev + " +checkdepends=" + musl-locales + " +options="!check" # failing test units +source="https://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/$_pkgname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_pkgname-$pkgver + +build() { + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + make test +} + +package() { + make install DESTDIR="$pkgdir" + + # otherwise perl breaks + find "$pkgdir" \( -name '.packlist' -or -name '*.pod' \) -exec rm '{}' + +} + +sha512sums=" +d3716a597d586ee2ff29472ca7b13aaf67770299de31e5f12abafebc879bbe4a1e1dbc0025cf4f3dc29992955f26cffc3be387d974c3911af095d5b49e67a1c6 Locale-gettext-1.07.tar.gz +" diff --git a/user/perl-math-random-isaac/APKBUILD b/user/perl-math-random-isaac/APKBUILD new file mode 100644 index 0000000..6c9ef3c --- /dev/null +++ b/user/perl-math-random-isaac/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=perl-math-random-isaac +pkgver=1.004 +pkgrel=1 +pkgdesc="Perl interface to the ISAAC PRNG algorithm" +arch="noarch" +url='https://search.cpan.org/dist/Math-Random-ISAAC/' +license="GPL" +depends="perl" +makedepends="perl-test-nowarnings" +source="https://search.cpan.org/CPAN/authors/id/J/JA/JAWNSY/Math-Random-ISAAC-$pkgver.tar.gz" +builddir="$srcdir"/Math-Random-ISAAC-$pkgver +subpackages="$pkgname-doc" + +build() { + export PERL_MM_USE_DEFAULT=1 PERL_AUTOINSTALL=--skipdeps \ + PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR=$pkgdir" \ + PERL_MB_OPT="--installdirs vendor --destdir $pkgdir" \ + MODULEBUILDRC=/dev/null + perl Makefile.PL + make +} + +check() { + make test +} + +package() { + make install + find "$pkgdir" \( -name .packlist -o -name perllocal.pod \) -delete +} +sha512sums=" +98fdfb28b207b4afe72ab82a2b564b06c5daaac15cdab2ce2ef698b16c0dcf5b23ac28fbebe170d2c6c7239fe6c97f634e5c03a8f2bd0aeb8369d0008b9ae0a2 Math-Random-ISAAC-1.004.tar.gz +" diff --git a/user/perl-math-random-secure/APKBUILD b/user/perl-math-random-secure/APKBUILD new file mode 100644 index 0000000..e7b2a24 --- /dev/null +++ b/user/perl-math-random-secure/APKBUILD @@ -0,0 +1,44 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_cpaname=Math-Random-Secure +_cpanauthor=FREW +pkgname=perl-math-random-secure +pkgver=0.080001 +pkgrel=1 +pkgdesc="Perl Math::Random::Secure CPAN module - cryptographically-secure, cross-platform replacement for rand()" +arch="noarch" +url="http://search.cpan.org/dist/$_cpaname/" +license="GPL" +options="!check" # Failure +makedepends=" + perl-moo + perl-moose + perl-test-sharedfork + perl-test-warn +" +depends=" + perl-crypt-random-source + perl-math-random-isaac +" +source="http://search.cpan.org/CPAN/authors/id/${_cpanauthor::1}/${_cpanauthor::2}/$_cpanauthor/$_cpaname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_cpaname-$pkgver + +build() { + perl Makefile.PL + make +} + +check() { + make test +} + +package() { + make install INSTALLDIRS=vendor DESTDIR="$pkgdir" + # provided by perl-crypt-random-source + rm "$pkgdir"/usr/lib/*/core_perl/perllocal.pod +} +sha512sums=" +2092fc01e224ebb438f927f72e835095efdb8790d8f4ef845fc7c4af3e20a05848e7632b0e752221bbe76cebbfa8186638043457ff4f80ff5727a42baec317ce Math-Random-Secure-0.080001.tar.gz +" diff --git a/user/perl-net-domain-tld/APKBUILD b/user/perl-net-domain-tld/APKBUILD new file mode 100644 index 0000000..efa4b57 --- /dev/null +++ b/user/perl-net-domain-tld/APKBUILD @@ -0,0 +1,34 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_cpaname="Net-Domain-TLD" +_cpanauthor=ALEXP +pkgname=perl-net-domain-tld +pkgver=1.75 +pkgrel=1 +pkgdesc="Work with TLD names" +arch="noarch" +url="http://search.cpan.org/dist/$_cpaname/" +license="GPL" +depends="perl" +source="http://www.cpan.org/authors/id/${_cpanauthor::1}/${_cpanauthor::2}/$_cpanauthor/$_cpaname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_cpaname-$pkgver + +build() { + export PERL_MM_FALLBACK_SILENCE_WARNING=true + perl Makefile.PL + make +} + +check() { + make test +} + +package() { + make install INSTALLDIRS=vendor DESTDIR="$pkgdir" + rm "$pkgdir"/usr/lib/perl5/core_perl/perllocal.pod +} +sha512sums=" +88b090f427e7fccd8394059b643f260a83fe9ec3fd6741972ec388325bb8c178d9d89fc8da9b1338441972e6744117c4effe3551c2c3f95d52022496667fa4f1 Net-Domain-TLD-1.75.tar.gz +" diff --git a/user/perl-rpc-xml/APKBUILD b/user/perl-rpc-xml/APKBUILD new file mode 100644 index 0000000..3057385 --- /dev/null +++ b/user/perl-rpc-xml/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=perl-rpc-xml +_pkgname='RPC-XML' +pkgver=0.82 +pkgrel=0 +pkgdesc="A set of classes for core data, message and XML handling" +url="https://metacpan.org/dist/RPC-XML" +arch="noarch" +license="Artistic-1.0-Perl OR GPL-1.0-or-later" +depends=" + perl + perl-xml-parser + perl-xml-libxml + perl-net-server + perl-http-daemon + perl-datetime-format-iso8601 + " +source="https://cpan.metacpan.org/authors/id/R/RJ/RJRAY/$_pkgname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_pkgname-$pkgver + +build() { + export PERL_MM_USE_DEFAULT=1 PERL5LIB='' \ + PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR=$pkgdir" + + perl Makefile.PL + make +} + +check() { + export PERL_MM_USE_DEFAULT=1 PERL5LIB='' + make test +} + +package() { + make install + + # otherwise perl breaks + find "$pkgdir" \( -name '.packlist' -or -name '*.pod' \) -exec rm '{}' + +} +sha512sums=" +e5d1092a2807c2bd423502dd2ed53a72c57384b67bb4709e86a64a6fe37ce8af580998e62fcfa6a48d66d5308d9dc270c74e4293617b9f23a654e379cde4025f RPC-XML-0.82.tar.gz +" diff --git a/user/perl-text-markdown/APKBUILD b/user/perl-text-markdown/APKBUILD new file mode 100644 index 0000000..d176272 --- /dev/null +++ b/user/perl-text-markdown/APKBUILD @@ -0,0 +1,31 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=perl-text-markdown +_pkgname=Text-Markdown +pkgver=1.000031 +pkgrel=0 +pkgdesc="Perl/CPAN Module Text::Markdown" +arch="noarch" +url="https://search.cpan.org/dist/$_pkgname" +license="Artistic-1.0-Perl OR GPL-1.0-or-later" +depends="perl" +source="https://search.cpan.org/CPAN/authors/id/B/BO/BOBTFISH/$_pkgname-$pkgver.tar.gz" +subpackages="$pkgname-doc" +builddir="$srcdir"/$_pkgname-$pkgver/ + +build() { + PERL_USE_UNSAFE_INC=1 \ + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +package() { + make install DESTDIR="$pkgdir" + find "$pkgdir" -name '.packlist' -delete + find "$pkgdir" -name '*.pod' -delete +} + +sha512sums=" +58bef4eba58572c4990849209005109a969bf404a7bc5dfbaae25aa1d0b89317ea9b412658180dcfd96b2c809d5c6900e2118838535dfa9cad6d9b45969bee05 Text-Markdown-1.000031.tar.gz +" diff --git a/user/php81-pecl-inotify/APKBUILD b/user/php81-pecl-inotify/APKBUILD new file mode 100644 index 0000000..20a311c --- /dev/null +++ b/user/php81-pecl-inotify/APKBUILD @@ -0,0 +1,33 @@ +# Contributor: Fabio Ribeiro +# Maintainer: Andy Postnikov +pkgname=php81-pecl-inotify +_extname=inotify +pkgver=3.0.0 +pkgrel=0 +pkgdesc="Inotify bindings for PHP 8.1" +url="https://pecl.php.net/package/inotify" +arch="all" +license="PHP-3.01" +depends="php81-common" +makedepends="php81-dev" +source="php-pecl-$_extname-$pkgver.tgz::https://pecl.php.net/get/$_extname-$pkgver.tgz" +builddir="$srcdir"/$_extname-$pkgver + +build() { + phpize81 + ./configure --prefix=/usr --with-php-config=php-config81 + make +} + +check() { + make NO_INTERACTION=1 REPORT_EXIT_STATUS=1 test +} + +package() { + make INSTALL_ROOT="$pkgdir" install + local _confdir="$pkgdir"/etc/php81/conf.d + install -d $_confdir + echo "extension=$_extname" > $_confdir/70_$_extname.ini +} + +sha512sums="f8b29f8611f16b92136ab8de89181c254bba1abee1e61cac2344440567a3155aae4b9b54b10fdb1b0254fd7a96da8c14b7dc5c9f7f08a03db30ab1645aca1eee php-pecl-inotify-3.0.0.tgz" diff --git a/user/php82-pecl-inotify/APKBUILD b/user/php82-pecl-inotify/APKBUILD new file mode 100644 index 0000000..698f0d5 --- /dev/null +++ b/user/php82-pecl-inotify/APKBUILD @@ -0,0 +1,33 @@ +# Contributor: Fabio Ribeiro +# Maintainer: Andy Postnikov +pkgname=php82-pecl-inotify +_extname=inotify +pkgver=3.0.0 +pkgrel=0 +pkgdesc="Inotify bindings for PHP 8.2" +url="https://pecl.php.net/package/inotify" +arch="all" +license="PHP-3.01" +depends="php82-common" +makedepends="php82-dev" +source="php-pecl-$_extname-$pkgver.tgz::https://pecl.php.net/get/$_extname-$pkgver.tgz" +builddir="$srcdir"/$_extname-$pkgver + +build() { + phpize82 + ./configure --prefix=/usr --with-php-config=php-config82 + make +} + +check() { + make NO_INTERACTION=1 REPORT_EXIT_STATUS=1 test +} + +package() { + make INSTALL_ROOT="$pkgdir" install + local _confdir="$pkgdir"/etc/php82/conf.d + install -d $_confdir + echo "extension=$_extname" > $_confdir/70_$_extname.ini +} + +sha512sums="f8b29f8611f16b92136ab8de89181c254bba1abee1e61cac2344440567a3155aae4b9b54b10fdb1b0254fd7a96da8c14b7dc5c9f7f08a03db30ab1645aca1eee php-pecl-inotify-3.0.0.tgz" diff --git a/user/py3-pytest-django/APKBUILD b/user/py3-pytest-django/APKBUILD new file mode 100644 index 0000000..9cd0a6b --- /dev/null +++ b/user/py3-pytest-django/APKBUILD @@ -0,0 +1,35 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=pytest-django +pkgname="py3-$_pyname" +pkgver=4.5.2 +pkgrel=0 +arch="noarch" +pkgdesc="A Django plugin for py.test" +url="https://pypi.python.org/project/$_pyname" +license="BSD-3-Clause" +depends="py3-pytest" +makedepends="py3-setuptools_scm" +checkdepends="py3-pytest-xdist py3-django" +source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz" +builddir="$srcdir"/$_pyname-$pkgver + +build() { + python setup.py build +} + +check() { + python setup.py install --root="$PWD/tmp_install" --optimize=1 + PYTHONPATH="$PWD/tmp_install/usr/lib/python3.10/site-packages:$PYTHONPATH:$PWD" \ + DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite \ + py.test tests || true +} + +package() { + python setup.py install --root="$pkgdir" --optimize=1 + install -Dm664 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE +} +sha512sums=" +bde0ee6f1c728ff2b6f965150fbbcb25c8ef5a24732256d2d688ee95c243ca2dd0f9606fac559b2c204dd2835ff5362a934cd176fabc7479b21a1e55fe284f4d py3-pytest-django-4.5.2.tar.gz +" diff --git a/user/py3-validators/APKBUILD b/user/py3-validators/APKBUILD deleted file mode 100644 index 973c198..0000000 --- a/user/py3-validators/APKBUILD +++ /dev/null @@ -1,35 +0,0 @@ -# Contributor: Leo -# Maintainer: -pkgname=py3-validators -pkgver=0.20.0 -pkgrel=2 -pkgdesc="Python3 Data Validation for Humans" -url="https://github.com/python-validators/validators" -arch="noarch" -license="MIT" -depends="py3-decorator py3-six" -makedepends="py3-gpep517 py3-setuptools py3-wheel" -checkdepends="py3-isort py3-pytest py3-flake8" -subpackages="$pkgname-pyc" -source="https://github.com/python-validators/validators/archive/$pkgver/py3-validators-$pkgver.tar.gz" -builddir="$srcdir/validators-$pkgver" - -build() { - gpep517 build-wheel \ - --wheel-dir .dist \ - --output-fd 3 3>&1 >&2 -} - -check() { - python3 -m venv --clear --without-pip --system-site-packages .testenv - .testenv/bin/python3 -m installer .dist/*.whl - .testenv/bin/python3 -m pytest -} - -package() { - python3 -m installer -d "$pkgdir" .dist/*.whl -} - -sha512sums=" -45a07c061022da453c31fc946950be3a701f36afbf0e0eb82b91f4bdb26c4d2d0ab47f6958ac88fd2e0a1563201e946014a5cb93cfa1c6710411982852d571c7 py3-validators-0.20.0.tar.gz -" diff --git a/user/py3-xmlsec/253_pkcs11-support.patch b/user/py3-xmlsec/253_pkcs11-support.patch new file mode 100644 index 0000000..e8be41d --- /dev/null +++ b/user/py3-xmlsec/253_pkcs11-support.patch @@ -0,0 +1,925 @@ +From a7f95d55cd660d1a212fa76a527063b3b7dbe8bb Mon Sep 17 00:00:00 2001 +From: Dan Vella +Date: Fri, 17 Mar 2023 13:58:25 +0100 +Subject: [PATCH 1/7] Added changes to enable 3.11 builds + +--- + .appveyor.yml | 4 ++++ + .github/workflows/macosx.yml | 2 +- + .github/workflows/manylinux.yml | 6 +++--- + .github/workflows/opensuse-tumbleweed.yml | 2 +- + .github/workflows/sdist.yml | 4 ++-- + .travis.yml | 3 +++ + setup.py | 1 + + 7 files changed, 15 insertions(+), 7 deletions(-) + +diff --git a/setup.py b/setup.py +index 9a3c927..5c7e0da 100644 +--- a/setup.py ++++ b/setup.py +@@ -533,6 +533,7 @@ def prepare_static_build_linux(self): + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', ++ 'Programming Language :: Python :: 3.11', + 'Topic :: Text Processing :: Markup :: XML', + 'Typing :: Typed', + ], + +From b7683774f747c7aed6a0b30e6045da679bc68760 Mon Sep 17 00:00:00 2001 +From: Dan Vella +Date: Fri, 17 Mar 2023 14:00:32 +0100 +Subject: [PATCH 2/7] Added changes to enable 3.11 builds + +--- + .appveyor.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +From bddf28e68a2509a287f9889aaeadc3adab80ccbc Mon Sep 17 00:00:00 2001 +From: Dan Vella +Date: Fri, 17 Mar 2023 14:52:40 +0100 +Subject: [PATCH 3/7] bumped isort to 5.11.5 + +--- + .pre-commit-config.yaml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +From 2c58d43eedf72590e3e201252f5fc5ddae36f8c6 Mon Sep 17 00:00:00 2001 +From: Tomas Divis +Date: Wed, 22 Mar 2023 20:36:45 +0100 +Subject: [PATCH 4/7] Fix #244 - Fix failing test with libxmlsec-1.2.36, also + make libxmlsec version available from Python. + +--- + src/main.c | 13 ++++ + tests/data/sign5-out-xmlsec_1_2_36_to_37.xml | 67 ++++++++++++++++++++ + tests/test_ds.py | 6 +- + 3 files changed, 85 insertions(+), 1 deletion(-) + create mode 100644 tests/data/sign5-out-xmlsec_1_2_36_to_37.xml + +diff --git a/src/main.c b/src/main.c +index ffcae14..5773db3 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -119,6 +119,13 @@ static PyObject* PyXmlSec_PyShutdown(PyObject* self) { + Py_RETURN_NONE; + } + ++static char PyXmlSec_GetLibXmlSecVersion__doc__[] = \ ++ "get_libxmlsec_version() -> tuple\n" ++ "Returns Version tuple of wrapped libxml library."; ++static PyObject* PyXmlSec_GetLibXmlSecVersion() { ++ return Py_BuildValue("(iii)", XMLSEC_VERSION_MAJOR, XMLSEC_VERSION_MINOR, XMLSEC_VERSION_SUBMINOR); ++} ++ + static char PyXmlSec_PyEnableDebugOutput__doc__[] = \ + "enable_debug_trace(enabled) -> None\n" + "Enables or disables calling LibXML2 callback from the default errors callback.\n\n" +@@ -386,6 +393,12 @@ static PyMethodDef PyXmlSec_MainMethods[] = { + METH_NOARGS, + PyXmlSec_PyShutdown__doc__ + }, ++ { ++ "get_libxmlsec_version", ++ (PyCFunction)PyXmlSec_GetLibXmlSecVersion, ++ METH_NOARGS, ++ PyXmlSec_GetLibXmlSecVersion__doc__ ++ }, + { + "enable_debug_trace", + (PyCFunction)PyXmlSec_PyEnableDebugOutput, +diff --git a/tests/data/sign5-out-xmlsec_1_2_36_to_37.xml b/tests/data/sign5-out-xmlsec_1_2_36_to_37.xml +new file mode 100644 +index 0000000..f359b13 +--- /dev/null ++++ b/tests/data/sign5-out-xmlsec_1_2_36_to_37.xml +@@ -0,0 +1,67 @@ ++ ++ ++ ++ ++ Hello, World! ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++HjY8ilZAIEM2tBbPn5mYO1ieIX4= ++ ++ ++SIaj/6KY3C1SmDXU2++Gm31U1xTadFp04WhBgfsJFbxrL+q7GKSKN9kfQ+UpN9+i ++D5fWmuavXEHe4Gw6RMaMEkq2URQo7F68+d5J/ajq8/l4n+xE6/reGScVwT6L4dEP ++XXVJcAi2ZnQ3O7GTNvNGCPibL9mUcyCWBFZ92Uemtc/vJFCQ7ZyKMdMfACgxOwyN ++T/9971oog241/2doudhonc0I/3mgPYWkZdX6yvr62mEjnG+oUZkhWYJ4ewZJ4hM4 ++JjbFqZO+OEzDRSbw3DkmuBA/mtlx+3t13SESfEub5hqoMdVmtth/eTb64dsPdl9r ++3k1ACVX9f8aHfQQdJOmLFQ== ++ ++ ++ ++ ++ ++ ++Test Issuer ++1 ++ ++MIIE3zCCBEigAwIBAgIBBTANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx ++EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE ++ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v ++eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl ++a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X ++DTAzMDMzMTA0MDIyMloXDTEzMDMyODA0MDIyMlowgb8xCzAJBgNVBAYTAlVTMRMw ++EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy ++eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhFeGFt ++cGxlcyBSU0EgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf ++BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCCASIwDQYJKoZIhvcNAQEB ++BQADggEPADCCAQoCggEBAJe4/rQ/gzV4FokE7CthjL/EXwCBSkXm2c3p4jyXO0Wt ++quaNC3dxBwFPfPl94hmq3ZFZ9PHPPbp4RpYRnLZbRjlzVSOq954AXOXpSew7nD+E ++mTqQrd9+ZIbGJnLOMQh5fhMVuOW/1lYCjWAhTCcYZPv7VXD2M70vVXDVXn6ZrqTg ++qkVHE6gw1aCKncwg7OSOUclUxX8+Zi10v6N6+PPslFc5tKwAdWJhVLTQ4FKG+F53 ++7FBDnNK6p4xiWryy/vPMYn4jYGvHUUk3eH4lFTCr+rSuJY8i/KNIf/IKim7g/o3w ++Ae3GM8xrof2mgO8GjK/2QDqOQhQgYRIf4/wFsQXVZcMCAwEAAaOCAVcwggFTMAkG ++A1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRp ++ZmljYXRlMB0GA1UdDgQWBBQkhCzy1FkgYosuXIaQo6owuicanDCB+AYDVR0jBIHw ++MIHtgBS0ue+a5pcOaGUemM76VQ2JBttMfKGB0aSBzjCByzELMAkGA1UEBhMCVVMx ++EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE ++ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v ++eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl ++a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggEA ++MA0GCSqGSIb3DQEBBAUAA4GBALU/mzIxSv8vhDuomxFcplzwdlLZbvSQrfoNkMGY ++1UoS3YJrN+jZLWKSyWE3mIaPpElqXiXQGGkwD5iPQ1iJMbI7BeLvx6ZxX/f+c8Wn ++ss0uc1NxfahMaBoyG15IL4+beqO182fosaKJTrJNG3mc//ANGU9OsQM9mfBEt4oL ++NJ2D ++ ++ ++ ++ ++ +diff --git a/tests/test_ds.py b/tests/test_ds.py +index 694ad43..38f0b25 100644 +--- a/tests/test_ds.py ++++ b/tests/test_ds.py +@@ -182,7 +182,11 @@ def test_sign_case5(self): + self.assertEqual("rsakey.pem", ctx.key.name) + + ctx.sign(sign) +- self.assertEqual(self.load_xml("sign5-out.xml"), root) ++ if (1, 2, 36) <= xmlsec.get_libxmlsec_version() <= (1, 2, 37): ++ expected_xml_file = 'sign5-out-xmlsec_1_2_36_to_37.xml' ++ else: ++ expected_xml_file = 'sign5-out.xml' ++ self.assertEqual(self.load_xml(expected_xml_file), root) + + def test_sign_binary_bad_args(self): + ctx = xmlsec.SignatureContext() + +From 1cf6785b3e06c2b8f6cac1266cf8f1934650bc4b Mon Sep 17 00:00:00 2001 +From: Tomas Divis +Date: Wed, 21 Dec 2022 14:01:14 +0100 +Subject: [PATCH 5/7] Fix #164 - Add support for loading keys from engine (e.g. + pkcs11). + +--- + README.rst | 2 +- + src/keys.c | 47 +++++++++++++++++++++++++++++++++++++++++ + src/xmlsec/__init__.pyi | 2 ++ + 3 files changed, 50 insertions(+), 1 deletion(-) + +diff --git a/README.rst b/README.rst +index 34bdd37..e192465 100644 +--- a/README.rst ++++ b/README.rst +@@ -37,7 +37,7 @@ Check the `examples `_ se + Requirements + ************ + - ``libxml2 >= 2.9.1`` +-- ``libxmlsec1 >= 1.2.18`` ++- ``libxmlsec1 >= 1.2.33`` + + Install + ******* +diff --git a/src/keys.c b/src/keys.c +index 1362b12..1440331 100644 +--- a/src/keys.c ++++ b/src/keys.c +@@ -185,6 +185,47 @@ static PyObject* PyXmlSec_KeyFromFile(PyObject* self, PyObject* args, PyObject* + return NULL; + } + ++static const char PyXmlSec_KeyFromEngine__doc__[] = \ ++ "from_engine(engine_and_key_id) -> xmlsec.Key\n" ++ "Loads PKI key from an engine.\n\n" ++ ":param engine_and_key_id: engine and key id, i.e. 'pkcs11;pkcs11:token=XmlsecToken;object=XmlsecKey;pin-value=password'\n" ++ ":type engine_and_key_id: :class:`str`, " ++ ":return: pointer to newly created key\n" ++ ":rtype: :class:`~xmlsec.Key`"; ++static PyObject* PyXmlSec_KeyFromEngine(PyObject* self, PyObject* args, PyObject* kwargs) { ++ static char *kwlist[] = {"engine_and_key_id", NULL}; ++ ++ const char* engine_and_key_id = NULL; ++ PyXmlSec_Key* key = NULL; ++ ++ PYXMLSEC_DEBUG("load key from engine - start"); ++ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:from_engine", kwlist, &engine_and_key_id)) { ++ goto ON_FAIL; ++ } ++ ++ if ((key = PyXmlSec_NewKey1((PyTypeObject*)self)) == NULL) goto ON_FAIL; ++ ++ Py_BEGIN_ALLOW_THREADS; ++ key->handle = xmlSecCryptoAppKeyLoad(engine_and_key_id, xmlSecKeyDataFormatEngine, NULL, xmlSecCryptoAppGetDefaultPwdCallback(), ++ (void*)engine_and_key_id); ++ Py_END_ALLOW_THREADS; ++ ++ if (key->handle == NULL) { ++ PyXmlSec_SetLastError("cannot read key"); ++ goto ON_FAIL; ++ } ++ ++ key->is_own = 1; ++ ++ PYXMLSEC_DEBUG("load key from engine - ok"); ++ return (PyObject*)key; ++ ++ON_FAIL: ++ PYXMLSEC_DEBUG("load key from engine - fail"); ++ Py_XDECREF(key); ++ return NULL; ++} ++ + static const char PyXmlSec_KeyGenerate__doc__[] = \ + "generate(klass, size, type) -> xmlsec.Key\n" + "Generates key of kind ``klass`` with ``size`` and ``type``.\n\n" +@@ -494,6 +535,12 @@ static PyMethodDef PyXmlSec_KeyMethods[] = { + METH_CLASS|METH_VARARGS|METH_KEYWORDS, + PyXmlSec_KeyFromFile__doc__ + }, ++ { ++ "from_engine", ++ (PyCFunction)PyXmlSec_KeyFromEngine, ++ METH_CLASS|METH_VARARGS|METH_KEYWORDS, ++ PyXmlSec_KeyFromEngine__doc__ ++ }, + { + "generate", + (PyCFunction)PyXmlSec_KeyGenerate, +diff --git a/src/xmlsec/__init__.pyi b/src/xmlsec/__init__.pyi +index 56356e5..6c326f5 100644 +--- a/src/xmlsec/__init__.pyi ++++ b/src/xmlsec/__init__.pyi +@@ -49,6 +49,8 @@ class Key: + @classmethod + def from_file(cls: type[Self], file: GenericPath[AnyStr] | IO[AnyStr], format: int, password: str | None = ...) -> Self: ... + @classmethod ++ def from_engine(cls: type[Self], engine_and_key_id: AnyStr) -> Self: ... ++ @classmethod + def from_memory(cls: type[Self], data: AnyStr, format: int, password: str | None = ...) -> Self: ... + @classmethod + def generate(cls: type[Self], klass: KeyData, size: int, type: int) -> Self: ... + +From 0b5939fc65e98cebb669d311b4fb58844bf887e5 Mon Sep 17 00:00:00 2001 +From: Tomas Divis +Date: Thu, 13 Apr 2023 14:28:02 +0200 +Subject: [PATCH 6/7] Fix #164 - Add tests for pkcs11 (softhsm) key. + +--- + .github/workflows/sdist.yml | 3 +- + tests/softhsm_setup.py | 265 ++++++++++++++++++++++++++++++++++++ + tests/test_pkcs11.py | 57 ++++++++ + 3 files changed, 323 insertions(+), 2 deletions(-) + create mode 100644 tests/softhsm_setup.py + create mode 100644 tests/test_pkcs11.py + +diff --git a/tests/softhsm_setup.py b/tests/softhsm_setup.py +new file mode 100644 +index 0000000..0a7c37d +--- /dev/null ++++ b/tests/softhsm_setup.py +@@ -0,0 +1,265 @@ ++""" ++Testing the PKCS#11 shim layer. ++Heavily inspired by from https://github.com/IdentityPython/pyXMLSecurity by leifj ++under licence "As is", see https://github.com/IdentityPython/pyXMLSecurity/blob/master/LICENSE.txt ++""" ++ ++import logging ++import os ++import shutil ++import subprocess ++import tempfile ++import traceback ++import unittest ++from typing import Dict, List, Optional, Tuple ++ ++DATA_DIR = os.path.join(os.path.dirname(__file__), "data") ++ ++ ++def paths_for_component(component: str, default_paths: List[str]): ++ env_path = os.environ.get(component) ++ return [env_path] if env_path else default_paths ++ ++ ++def find_alts(component_name, alts: List[str]) -> str: ++ for a in alts: ++ if os.path.exists(a): ++ return a ++ raise unittest.SkipTest("Required component is missing: {}".format(component_name)) ++ ++ ++def run_cmd(args, softhsm_conf=None) -> Tuple[bytes, bytes]: ++ env = {} ++ if softhsm_conf is not None: ++ env['SOFTHSM_CONF'] = softhsm_conf ++ env['SOFTHSM2_CONF'] = softhsm_conf ++ proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) ++ out, err = proc.communicate() ++ if err is not None and len(err) > 0: ++ logging.error(err) ++ if out is not None and len(out) > 0: ++ logging.debug(out) ++ rv = proc.wait() ++ if rv: ++ with open(softhsm_conf) as f: ++ conf = f.read() ++ msg = '[cmd: {cmd}] [code: {code}] [stdout: {out}] [stderr: {err}] [config: {conf}]' ++ msg = msg.format( ++ cmd=" ".join(args), code=rv, out=out.strip(), err=err.strip(), conf=conf, ++ ) ++ raise RuntimeError(msg) ++ return out, err ++ ++ ++component_default_paths: Dict[str, List[str]] = { ++ 'P11_MODULE': [ ++ '/usr/lib/softhsm/libsofthsm2.so', ++ '/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so', ++ '/usr/lib/softhsm/libsofthsm.so', ++ '/usr/lib64/softhsm/libsofthsm2.so', ++ ], ++ 'P11_ENGINE': [ ++ '/usr/lib/ssl/engines/libpkcs11.so', ++ '/usr/lib/engines/engine_pkcs11.so', ++ '/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so', ++ '/usr/lib64/engines-1.1/pkcs11.so', ++ '/usr/lib64/engines-1.1/libpkcs11.so', ++ '/usr/lib64/engines-3/pkcs11.so', ++ '/usr/lib64/engines-3/libpkcs11.so', ++ '/usr/lib/x86_64-linux-gnu/engines-3/pkcs11.so', ++ '/usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so', ++ ], ++ 'PKCS11_TOOL': [ ++ '/usr/bin/pkcs11-tool', ++ ], ++ 'SOFTHSM': [ ++ '/usr/bin/softhsm2-util', ++ '/usr/bin/softhsm', ++ ], ++ 'OPENSSL': [ ++ '/usr/bin/openssl', ++ ], ++} ++ ++component_path: Dict[str, str] = { ++ component_name: find_alts(component_name, paths_for_component(component_name, default_paths)) ++ for component_name, default_paths in component_default_paths.items() ++} ++ ++softhsm_version = 1 ++if component_path['SOFTHSM'].endswith('softhsm2-util'): ++ softhsm_version = 2 ++ ++openssl_version = subprocess.check_output([component_path['OPENSSL'], ++ 'version'] ++ )[8:11].decode() ++ ++p11_test_files: List[str] = [] ++softhsm_conf: Optional[str] = None ++softhsm_db: Optional[str] = None ++ ++ ++def _temp_file() -> str: ++ f = tempfile.NamedTemporaryFile(delete=False) ++ p11_test_files.append(f.name) ++ return f.name ++ ++ ++def _temp_dir() -> str: ++ d = tempfile.mkdtemp() ++ p11_test_files.append(d) ++ return d ++ ++ ++@unittest.skipIf(component_path['P11_MODULE'] is None, "SoftHSM PKCS11 module not installed") ++def setup() -> None: ++ logging.debug("Creating test pkcs11 token using softhsm") ++ try: ++ global softhsm_conf ++ softhsm_conf = _temp_file() ++ logging.debug("Generating softhsm.conf") ++ with open(softhsm_conf, "w") as f: ++ if softhsm_version == 2: ++ softhsm_db = _temp_dir() ++ f.write(""" ++# Generated by test ++directories.tokendir = %s ++objectstore.backend = file ++log.level = DEBUG ++""" % softhsm_db) ++ else: ++ softhsm_db = _temp_file() ++ f.write(""" ++# Generated by test ++0:%s ++""" % softhsm_db) ++ ++ logging.debug("Initializing the token") ++ out, err = run_cmd([component_path['SOFTHSM'], ++ '--slot', '0', ++ '--label', 'test', ++ '--init-token', ++ '--pin', 'secret1', ++ '--so-pin', 'secret2'], ++ softhsm_conf=softhsm_conf) ++ ++ # logging.debug("Generating 1024 bit RSA key in token") ++ # run_cmd([component_path['PKCS11_TOOL'], ++ # '--module', component_path['P11_MODULE'], ++ # '-l', ++ # '-k', ++ # '--key-type', 'rsa:1024', ++ # '--id', 'a1b2', ++ # '--label', 'test', ++ # '--pin', 'secret1'], softhsm_conf=softhsm_conf) ++ ++ hash_priv_key = _temp_file() ++ logging.debug("Converting test private key to format for softhsm") ++ run_cmd([component_path['OPENSSL'], 'pkcs8', ++ '-topk8', ++ '-inform', 'PEM', ++ '-outform', 'PEM', ++ '-nocrypt', ++ '-in', os.path.join(DATA_DIR, 'rsakey.pem'), ++ '-out', hash_priv_key], softhsm_conf=softhsm_conf) ++ ++ logging.debug("Importing the test key to softhsm") ++ run_cmd([component_path['SOFTHSM'], ++ '--import', hash_priv_key, ++ '--token', 'test', ++ '--id', 'a1b2', ++ '--label', 'test', ++ '--pin', 'secret1'], ++ softhsm_conf=softhsm_conf) ++ run_cmd([component_path['PKCS11_TOOL'], ++ '--module', component_path['P11_MODULE'], ++ '-l', ++ '--pin', 'secret1', '-O'], softhsm_conf=softhsm_conf) ++ signer_cert_pem = _temp_file() ++ openssl_conf = _temp_file() ++ logging.debug("Generating OpenSSL config for version {}".format(openssl_version)) ++ with open(openssl_conf, "w") as f: ++ # Might be needed with some versions of openssl, but in more recent versions dynamic_path breaks it. ++ # dynamic_path = ( ++ # "dynamic_path = %s" % component_path['P11_ENGINE'] ++ # if openssl_version.startswith(b'1.') ++ # else "" ++ # ) ++ f.write("\n".join([ ++ "openssl_conf = openssl_def", ++ "[openssl_def]", ++ "engines = engine_section", ++ "[engine_section]", ++ "pkcs11 = pkcs11_section", ++ "[req]", ++ "distinguished_name = req_distinguished_name", ++ "[req_distinguished_name]", ++ "[pkcs11_section]", ++ "engine_id = pkcs11", ++ # dynamic_path, ++ "MODULE_PATH = %s" % component_path['P11_MODULE'], ++ "init = 0", ++ ])) ++ ++ with open(openssl_conf, "r") as f: ++ logging.debug('-------- START DEBUG openssl_conf --------') ++ logging.debug(f.readlines()) ++ logging.debug('-------- END DEBUG openssl_conf --------') ++ logging.debug('-------- START DEBUG paths --------') ++ logging.debug(run_cmd(['ls', '-ld', component_path['P11_ENGINE']])) ++ logging.debug(run_cmd(['ls', '-ld', component_path['P11_MODULE']])) ++ logging.debug('-------- END DEBUG paths --------') ++ ++ signer_cert_der = _temp_file() ++ ++ logging.debug("Generating self-signed certificate") ++ run_cmd([component_path['OPENSSL'], 'req', ++ '-new', ++ '-x509', ++ '-subj', "/CN=Test Signer", ++ '-engine', 'pkcs11', ++ '-config', openssl_conf, ++ '-keyform', 'engine', ++ '-key', 'label_test', ++ '-passin', 'pass:secret1', ++ '-out', signer_cert_pem], softhsm_conf=softhsm_conf) ++ ++ run_cmd([component_path['OPENSSL'], 'x509', ++ '-inform', 'PEM', ++ '-outform', 'DER', ++ '-in', signer_cert_pem, ++ '-out', signer_cert_der], softhsm_conf=softhsm_conf) ++ ++ logging.debug("Importing certificate into token") ++ ++ run_cmd([component_path['PKCS11_TOOL'], ++ '--module', component_path['P11_MODULE'], ++ '-l', ++ '--slot-index', '0', ++ '--id', 'a1b2', ++ '--label', 'test', ++ '-y', 'cert', ++ '-w', signer_cert_der, ++ '--pin', 'secret1'], softhsm_conf=softhsm_conf) ++ ++ # TODO: Should be teardowned in teardown: ++ os.environ['SOFTHSM_CONF'] = softhsm_conf ++ os.environ['SOFTHSM2_CONF'] = softhsm_conf ++ ++ except Exception as ex: ++ print("-" * 64) ++ traceback.print_exc() ++ print("-" * 64) ++ logging.error("PKCS11 tests disabled: unable to initialize test token: %s" % ex) ++ raise ex ++ ++ ++def teardown() -> None: ++ global p11_test_files ++ for o in p11_test_files: ++ if os.path.exists(o): ++ if os.path.isdir(o): ++ shutil.rmtree(o) ++ else: ++ os.unlink(o) ++ p11_test_files = [] +diff --git a/tests/test_pkcs11.py b/tests/test_pkcs11.py +new file mode 100644 +index 0000000..accd29a +--- /dev/null ++++ b/tests/test_pkcs11.py +@@ -0,0 +1,57 @@ ++import xmlsec ++from tests import base ++from xmlsec import constants as consts ++ ++KEY_URL = "pkcs11;pkcs11:token=test;object=test;pin-value=secret1" ++ ++ ++def setUpModule(): ++ from tests import softhsm_setup ++ ++ softhsm_setup.setup() ++ ++ ++def tearDownModule(): ++ from tests import softhsm_setup ++ ++ softhsm_setup.teardown() ++ ++ ++class TestKeys(base.TestMemoryLeaks): ++ def test_del_key(self): ++ ctx = xmlsec.SignatureContext(manager=xmlsec.KeysManager()) ++ ctx.key = xmlsec.Key.from_engine(KEY_URL) ++ del ctx.key ++ self.assertIsNone(ctx.key) ++ ++ def test_set_key(self): ++ ctx = xmlsec.SignatureContext(manager=xmlsec.KeysManager()) ++ ctx.key = xmlsec.Key.from_engine(KEY_URL) ++ self.assertIsNotNone(ctx.key) ++ ++ def test_sign_bad_args(self): ++ ctx = xmlsec.SignatureContext() ++ ctx.key = xmlsec.Key.from_engine(KEY_URL) ++ with self.assertRaises(TypeError): ++ ctx.sign('') ++ ++ def test_sign_fail(self): ++ ctx = xmlsec.SignatureContext() ++ ctx.key = xmlsec.Key.from_engine(KEY_URL) ++ with self.assertRaisesRegex(xmlsec.Error, 'failed to sign'): ++ ctx.sign(self.load_xml('sign1-in.xml')) ++ ++ def test_sign_case1(self): ++ """Should sign a pre-constructed template file using a key from a pkcs11 engine.""" ++ root = self.load_xml("sign1-in.xml") ++ sign = xmlsec.tree.find_node(root, consts.NodeSignature) ++ self.assertIsNotNone(sign) ++ ++ ctx = xmlsec.SignatureContext() ++ ctx.key = xmlsec.Key.from_engine(KEY_URL) ++ self.assertIsNotNone(ctx.key) ++ ctx.key.name = 'rsakey.pem' ++ self.assertEqual("rsakey.pem", ctx.key.name) ++ ++ ctx.sign(sign) ++ self.assertEqual(self.load_xml("sign1-out.xml"), root) + +From 4f5daea286df89c64fbfc615f422be62b2cdf114 Mon Sep 17 00:00:00 2001 +From: "pre-commit-ci[bot]" + <66853113+pre-commit-ci[bot]@users.noreply.github.com> +Date: Mon, 17 Apr 2023 11:55:28 +0000 +Subject: [PATCH 7/7] [pre-commit.ci] auto fixes from pre-commit.com hooks + +for more information, see https://pre-commit.ci +--- + tests/softhsm_setup.py | 220 +++++++++++++++++++++++++++-------------- + 1 file changed, 147 insertions(+), 73 deletions(-) + +diff --git a/tests/softhsm_setup.py b/tests/softhsm_setup.py +index 0a7c37d..432d4b1 100644 +--- a/tests/softhsm_setup.py ++++ b/tests/softhsm_setup.py +@@ -45,7 +45,11 @@ def run_cmd(args, softhsm_conf=None) -> Tuple[bytes, bytes]: + conf = f.read() + msg = '[cmd: {cmd}] [code: {code}] [stdout: {out}] [stderr: {err}] [config: {conf}]' + msg = msg.format( +- cmd=" ".join(args), code=rv, out=out.strip(), err=err.strip(), conf=conf, ++ cmd=" ".join(args), ++ code=rv, ++ out=out.strip(), ++ err=err.strip(), ++ conf=conf, + ) + raise RuntimeError(msg) + return out, err +@@ -90,9 +94,7 @@ def run_cmd(args, softhsm_conf=None) -> Tuple[bytes, bytes]: + if component_path['SOFTHSM'].endswith('softhsm2-util'): + softhsm_version = 2 + +-openssl_version = subprocess.check_output([component_path['OPENSSL'], +- 'version'] +- )[8:11].decode() ++openssl_version = subprocess.check_output([component_path['OPENSSL'], 'version'])[8:11].decode() + + p11_test_files: List[str] = [] + softhsm_conf: Optional[str] = None +@@ -121,27 +123,41 @@ def setup() -> None: + with open(softhsm_conf, "w") as f: + if softhsm_version == 2: + softhsm_db = _temp_dir() +- f.write(""" ++ f.write( ++ """ + # Generated by test + directories.tokendir = %s + objectstore.backend = file + log.level = DEBUG +-""" % softhsm_db) ++""" ++ % softhsm_db ++ ) + else: + softhsm_db = _temp_file() +- f.write(""" ++ f.write( ++ """ + # Generated by test + 0:%s +-""" % softhsm_db) ++""" ++ % softhsm_db ++ ) + + logging.debug("Initializing the token") +- out, err = run_cmd([component_path['SOFTHSM'], +- '--slot', '0', +- '--label', 'test', +- '--init-token', +- '--pin', 'secret1', +- '--so-pin', 'secret2'], +- softhsm_conf=softhsm_conf) ++ out, err = run_cmd( ++ [ ++ component_path['SOFTHSM'], ++ '--slot', ++ '0', ++ '--label', ++ 'test', ++ '--init-token', ++ '--pin', ++ 'secret1', ++ '--so-pin', ++ 'secret2', ++ ], ++ softhsm_conf=softhsm_conf, ++ ) + + # logging.debug("Generating 1024 bit RSA key in token") + # run_cmd([component_path['PKCS11_TOOL'], +@@ -155,26 +171,45 @@ def setup() -> None: + + hash_priv_key = _temp_file() + logging.debug("Converting test private key to format for softhsm") +- run_cmd([component_path['OPENSSL'], 'pkcs8', +- '-topk8', +- '-inform', 'PEM', +- '-outform', 'PEM', +- '-nocrypt', +- '-in', os.path.join(DATA_DIR, 'rsakey.pem'), +- '-out', hash_priv_key], softhsm_conf=softhsm_conf) ++ run_cmd( ++ [ ++ component_path['OPENSSL'], ++ 'pkcs8', ++ '-topk8', ++ '-inform', ++ 'PEM', ++ '-outform', ++ 'PEM', ++ '-nocrypt', ++ '-in', ++ os.path.join(DATA_DIR, 'rsakey.pem'), ++ '-out', ++ hash_priv_key, ++ ], ++ softhsm_conf=softhsm_conf, ++ ) + + logging.debug("Importing the test key to softhsm") +- run_cmd([component_path['SOFTHSM'], +- '--import', hash_priv_key, +- '--token', 'test', +- '--id', 'a1b2', +- '--label', 'test', +- '--pin', 'secret1'], +- softhsm_conf=softhsm_conf) +- run_cmd([component_path['PKCS11_TOOL'], +- '--module', component_path['P11_MODULE'], +- '-l', +- '--pin', 'secret1', '-O'], softhsm_conf=softhsm_conf) ++ run_cmd( ++ [ ++ component_path['SOFTHSM'], ++ '--import', ++ hash_priv_key, ++ '--token', ++ 'test', ++ '--id', ++ 'a1b2', ++ '--label', ++ 'test', ++ '--pin', ++ 'secret1', ++ ], ++ softhsm_conf=softhsm_conf, ++ ) ++ run_cmd( ++ [component_path['PKCS11_TOOL'], '--module', component_path['P11_MODULE'], '-l', '--pin', 'secret1', '-O'], ++ softhsm_conf=softhsm_conf, ++ ) + signer_cert_pem = _temp_file() + openssl_conf = _temp_file() + logging.debug("Generating OpenSSL config for version {}".format(openssl_version)) +@@ -185,21 +220,25 @@ def setup() -> None: + # if openssl_version.startswith(b'1.') + # else "" + # ) +- f.write("\n".join([ +- "openssl_conf = openssl_def", +- "[openssl_def]", +- "engines = engine_section", +- "[engine_section]", +- "pkcs11 = pkcs11_section", +- "[req]", +- "distinguished_name = req_distinguished_name", +- "[req_distinguished_name]", +- "[pkcs11_section]", +- "engine_id = pkcs11", +- # dynamic_path, +- "MODULE_PATH = %s" % component_path['P11_MODULE'], +- "init = 0", +- ])) ++ f.write( ++ "\n".join( ++ [ ++ "openssl_conf = openssl_def", ++ "[openssl_def]", ++ "engines = engine_section", ++ "[engine_section]", ++ "pkcs11 = pkcs11_section", ++ "[req]", ++ "distinguished_name = req_distinguished_name", ++ "[req_distinguished_name]", ++ "[pkcs11_section]", ++ "engine_id = pkcs11", ++ # dynamic_path, ++ "MODULE_PATH = %s" % component_path['P11_MODULE'], ++ "init = 0", ++ ] ++ ) ++ ) + + with open(openssl_conf, "r") as f: + logging.debug('-------- START DEBUG openssl_conf --------') +@@ -213,34 +252,69 @@ def setup() -> None: + signer_cert_der = _temp_file() + + logging.debug("Generating self-signed certificate") +- run_cmd([component_path['OPENSSL'], 'req', +- '-new', +- '-x509', +- '-subj', "/CN=Test Signer", +- '-engine', 'pkcs11', +- '-config', openssl_conf, +- '-keyform', 'engine', +- '-key', 'label_test', +- '-passin', 'pass:secret1', +- '-out', signer_cert_pem], softhsm_conf=softhsm_conf) +- +- run_cmd([component_path['OPENSSL'], 'x509', +- '-inform', 'PEM', +- '-outform', 'DER', +- '-in', signer_cert_pem, +- '-out', signer_cert_der], softhsm_conf=softhsm_conf) ++ run_cmd( ++ [ ++ component_path['OPENSSL'], ++ 'req', ++ '-new', ++ '-x509', ++ '-subj', ++ "/CN=Test Signer", ++ '-engine', ++ 'pkcs11', ++ '-config', ++ openssl_conf, ++ '-keyform', ++ 'engine', ++ '-key', ++ 'label_test', ++ '-passin', ++ 'pass:secret1', ++ '-out', ++ signer_cert_pem, ++ ], ++ softhsm_conf=softhsm_conf, ++ ) ++ ++ run_cmd( ++ [ ++ component_path['OPENSSL'], ++ 'x509', ++ '-inform', ++ 'PEM', ++ '-outform', ++ 'DER', ++ '-in', ++ signer_cert_pem, ++ '-out', ++ signer_cert_der, ++ ], ++ softhsm_conf=softhsm_conf, ++ ) + + logging.debug("Importing certificate into token") + +- run_cmd([component_path['PKCS11_TOOL'], +- '--module', component_path['P11_MODULE'], +- '-l', +- '--slot-index', '0', +- '--id', 'a1b2', +- '--label', 'test', +- '-y', 'cert', +- '-w', signer_cert_der, +- '--pin', 'secret1'], softhsm_conf=softhsm_conf) ++ run_cmd( ++ [ ++ component_path['PKCS11_TOOL'], ++ '--module', ++ component_path['P11_MODULE'], ++ '-l', ++ '--slot-index', ++ '0', ++ '--id', ++ 'a1b2', ++ '--label', ++ 'test', ++ '-y', ++ 'cert', ++ '-w', ++ signer_cert_der, ++ '--pin', ++ 'secret1', ++ ], ++ softhsm_conf=softhsm_conf, ++ ) + + # TODO: Should be teardowned in teardown: + os.environ['SOFTHSM_CONF'] = softhsm_conf diff --git a/user/py3-xmlsec/APKBUILD b/user/py3-xmlsec/APKBUILD new file mode 100644 index 0000000..bc23db8 --- /dev/null +++ b/user/py3-xmlsec/APKBUILD @@ -0,0 +1,39 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +_pyname=xmlsec +pkgname="py3-$_pyname" +pkgver=1.3.13 +pkgrel=3 +# does not support libxml2 1.3.0 +arch="all" +pkgdesc="Python bindings for the XML Security Library" +url="https://pypi.python.org/project/$_pyname" +license="MIT" +depends="py3-lxml xmlsec<1.3" +makedepends="py3-setuptools libxml2-dev xmlsec-dev<1.3 py3-wheel py3-pip python3-dev" +checkdepends="py3-pytest" +source=" + $pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz + 253_pkcs11-support.patch + " +builddir="$srcdir"/$_pyname-$pkgver + +build() { + python3 setup.py build +} + +check() { + pyver=$(python3 -c "import sys; print('{}.{}'.format(*sys.version_info[:2]))") + python3 setup.py install --prefix=/usr --root="$srcdir"/tmp_install --optimize=1 + PYTHONPATH="$srcdir"/tmp_install/usr/lib/python$pyver/site-packages pytest || true +} + +package() { + python3 setup.py install --prefix=/usr --root="$pkgdir" --optimize=1 + install -Dm644 LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname/ +} +sha512sums=" +2aa080fbc918d5d360dcb086a8c529545514dd429649d99833425f92fa06a3a094cf3139f8ed00827fed358f0fa463b74c267e593ac14e5aadc299d64206ac8e py3-xmlsec-1.3.13.tar.gz +9155a2435d832b4dcd0260616f52eec148dca1dade76a89c23e10f017e4140024ef042b6b10c5b9435fcbf52e7dc4f7e5764dc7f5bdd7595c27b3106fab942cf 253_pkcs11-support.patch +" diff --git a/user/rm-extractor/APKBUILD b/user/rm-extractor/APKBUILD new file mode 100644 index 0000000..ef74060 --- /dev/null +++ b/user/rm-extractor/APKBUILD @@ -0,0 +1,27 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=rm-extractor +_gittag=9d37e9437affea379dadb59e646a819b3b9147dd +pkgver=0.0.1 +pkgrel=2 +pkgdesc="Image extractor for reMarkable firmware files" +arch="noarch" +url="https://github.com/ddvk/remarkable-update" +license="MIT" +depends="py3-six py3-protobuf" +options="!check" # No testsuite +builddir="$srcdir/remarkable-update-$_gittag" +source="$pkgname-$pkgver.tar.gz::https://github.com/ddvk/remarkable-update/archive/$_gittag.tar.gz" + +package() { + install -vDm755 "$builddir"/extractor/extractor.py "$pkgdir"/usr/lib/rm-extractor/extractor.py + install -vDm644 "$builddir"/extractor/update_metadata.proto "$pkgdir"/usr/lib/rm-extractor/update_metadata.proto + install -vDm755 "$builddir"/extractor/update_metadata_pb2.py "$pkgdir"/usr/lib/rm-extractor/update_metadata_pb2.py + install -vdm755 "$pkgdir"/usr/bin + ln -s /usr/lib/rm-extractor/extractor.py "$pkgdir"/usr/bin/rm-extractor +} + +sha512sums=" +866c483950ee2cf7085e7d43d8752458d9aeb58b4361c05f50ac3118e87b295ff62b3d4288ad846eda5f93a4afe38891f6a9166f839c66f5ff0ab07afab6ae16 rm-extractor-0.0.1.tar.gz +" diff --git a/user/rm-utils/APKBUILD b/user/rm-utils/APKBUILD new file mode 100644 index 0000000..c3135a6 --- /dev/null +++ b/user/rm-utils/APKBUILD @@ -0,0 +1,38 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=rm-utils +pkgver=0.0.1 +pkgrel=3 +pkgdesc="Utility files for reMarkable tablet" +arch="armv7" +url="http://www.davisr.me/projects/parabola-rm/" +license="GPL-3.0-only" +makedepends="musl-dev linux-rm-headers" +options="!check" # No testsuite +builddir="$srcdir" +source=" + battery-monitor.sh + epdc-init-auto.c + epdc-show-bitmap.c + xorg.conf +" + +build() { + $CC $CFLAGS epdc-init-auto.c -o epdc-init-auto + $CC $CFLAGS epdc-show-bitmap.c -o epdc-show-bitmap +} + +package() { + install -vDm755 battery-monitor.sh "$pkgdir"/usr/bin/battery-monitor + install -vDm755 epdc-show-bitmap -t "$pkgdir"/usr/bin/ + install -vDm755 epdc-init-auto -t "$pkgdir"/usr/bin/ + install -vDm644 xorg.conf -t "$pkgdir"/etc/defaults/ +} + +sha512sums=" +7f0e6cb276357983b76c37c81a91c0d278dbec16d8982a97618f2217ef5e4d706211d921af6c79db3aad912d50aaed8cf5ce67f52a1081f61585eb97322c8deb battery-monitor.sh +f145d6af541828e69217a73f7b848f7fe57cce37426e15469a1d6a5540604f4078d4cd1f67e69e77b961b608a7b8e2930e1e82b13fe9dd181361e361895a66be epdc-init-auto.c +409744c4bbcac462c38add2b19d3b433e44cb326905fe3af240931e27bb2b71b14696229c46187bf7c060f83d77920376b5c6161f62949a2fa2c0a5464753cc0 epdc-show-bitmap.c +e14a61751e4c830652e7a849b9d596c6bc213fed87ba3f9f7c3df0d5fe35ddf28bde7de2fa977c0321639503ceff5abffd0d856380eacce24389fd50eaf3372a xorg.conf +" diff --git a/user/rm-utils/battery-monitor.sh b/user/rm-utils/battery-monitor.sh new file mode 100644 index 0000000..fb5dbc7 --- /dev/null +++ b/user/rm-utils/battery-monitor.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# +# battery-monitor.sh +# Prints the state of charge of the tablet's battery +# +# Parabola-rM is a free operating system for the reMarakble tablet. +# Copyright (C) 2020 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. + +# Path for Linux 4.9 +battpath="/sys/class/power_supply/bq27441-0" + +chargenow="$(cat $battpath/charge_now)" +chargefull="$(cat $battpath/charge_full)" +status="$(cat $battpath/status)" + +chargepct="$(echo $chargenow $chargefull \ + | awk '{printf "%f", $1 / $2 * 100}' \ + | cut -d'.' -f1)" +symbol="" +if [[ "Charging" == "$status" ]]; then + symbol=$'\u26a1' # Lightning symbol +fi + +echo "${symbol}${chargepct}%" diff --git a/user/rm-utils/epdc-init-auto.c b/user/rm-utils/epdc-init-auto.c new file mode 100644 index 0000000..069ea9f --- /dev/null +++ b/user/rm-utils/epdc-init-auto.c @@ -0,0 +1,126 @@ +/* + epdc-init-auto.c + Initializes the EPDC framebuffer into a deferred-IO automatic-update + mode + + Parabola-rM is a free operating system for the reMarakble tablet. + Copyright (C) 2020 Davis Remmel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + int ret; + int fb = open("/dev/fb0", O_RDWR); + struct fb_var_screeninfo vinfo; + ret = ioctl(fb, FBIOGET_VSCREENINFO, &vinfo); + if (0 != ret) { + fprintf(stderr, "FBIOGET_VSCREENINFO failed with error " + "%d, aborting\n", ret); + return 1; + } + + vinfo.xres = 1872; + vinfo.yres = 1404; + vinfo.pixclock = 160000000; + vinfo.left_margin = 32; + vinfo.right_margin = 326; + vinfo.upper_margin = 4; + vinfo.lower_margin = 12; + vinfo.hsync_len = 44; + vinfo.vsync_len = 1; + vinfo.sync = 0; + vinfo.vmode = FB_VMODE_NONINTERLACED; + vinfo.accel_flags = 0; + vinfo.activate = FB_ACTIVATE_FORCE; + + // Put screen info. Sometimes this fails when trying to set the + // pixclock. This may be a bug in the driver's arithmetic. + ret = ioctl(fb, FBIOPUT_VSCREENINFO, &vinfo); + if (0 != ret) { + fprintf(stderr, "FBIOPUT_VSCREENINFO failed with error " + "%d, attempting to reset pixclock\n", ret); + vinfo.pixclock = 6250; + ioctl(fb, FBIOPUT_VSCREENINFO, &vinfo); + vinfo.pixclock = 160000000; + ret = ioctl(fb, FBIOPUT_VSCREENINFO, &vinfo); + if (0 != ret) { + fprintf(stderr, "FBIOPUT_VSCREENINFO failed " + "with error %d, aborting\n", ret); + return 1; + } + } + + // Pull the screeninfo agian + ret = ioctl(fb, FBIOGET_VSCREENINFO, &vinfo); + if (0 != ret) { + fprintf(stderr, "FBIOGET_VSCREENINFO failed with error " + "%d, aborting\n", ret); + return 1; + } + + printf("x:%d y:%d activate:%d bpp:%d rotate:%d hsync_len:%d" + "vsync_len: %d sync:%d\n", + vinfo.xres, vinfo.yres, vinfo.activate, + vinfo.bits_per_pixel, vinfo.rotate, vinfo.hsync_len, + vinfo.vsync_len, vinfo.sync); + + struct fb_fix_screeninfo finfo; + ret = ioctl(fb, FBIOGET_FSCREENINFO, &finfo); + if (0 != ret) { + fprintf(stderr, "FBIOGET_FSCREENINFO failed with error " + "%d, aborting\n", ret); + return 1; + } + + // In case the EPDC wasn't accessible + ret = ioctl(fb, MXCFB_ENABLE_EPDC_ACCESS); + if (0 != ret) { + fprintf(stderr, "MXCFB_ENABLE_EPDC_ACCESS failed with " + "error %d, aborting\n", ret); + return 1; + } + + // Set auto update mode + __u32 aumode = AUTO_UPDATE_MODE_AUTOMATIC_MODE; + ret = ioctl(fb, MXCFB_SET_AUTO_UPDATE_MODE, &aumode); + if (0 != ret) { + fprintf(stderr, "MXCFB_SET_AUTO_UPDATE_MODE failed " + "with error %d, aborting\n", ret); + return 1; + } + + // Queue-and-merge is best-performing + __u32 uscheme = UPDATE_SCHEME_QUEUE_AND_MERGE; + ret = ioctl(fb, MXCFB_SET_UPDATE_SCHEME, &uscheme); + if (0 != ret) { + fprintf(stderr, "MXCFB_SET_UPDATE_SCHEME failed with " + "error %d, aborting\n", ret); + return 1; + } + + close(fb); + return 0; +} + diff --git a/user/rm-utils/epdc-show-bitmap.c b/user/rm-utils/epdc-show-bitmap.c new file mode 100644 index 0000000..c42bf30 --- /dev/null +++ b/user/rm-utils/epdc-show-bitmap.c @@ -0,0 +1,184 @@ +/* +epdc-show-bitmap.c +Displays a raw image to the EPDC framebuffer + +Parabola-rM is a free operating system for the reMarakble tablet. +Copyright (C) 2020 Davis Remmel + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + if (argc < 2) { + printf("Must pass an image as an argument.\n"); + return 1; + } + + int ret; + int fb = open("/dev/fb0", O_RDWR); + struct fb_var_screeninfo vinfo; + ret = ioctl(fb, FBIOGET_VSCREENINFO, &vinfo); + if (0 != ret) { + printf("FBIOGET_VSCREENINFO failed with error %d" + ", aborting\n", ret); + return 1; + } + + vinfo.xres = 1872; + vinfo.yres = 1404; + vinfo.pixclock = 160000000; + vinfo.left_margin = 32; + vinfo.right_margin = 326; + vinfo.upper_margin = 4; + vinfo.lower_margin = 12; + vinfo.hsync_len = 44; + vinfo.vsync_len = 1; + vinfo.sync = 0; + vinfo.vmode = FB_VMODE_NONINTERLACED; + vinfo.accel_flags = 0; + vinfo.activate = FB_ACTIVATE_FORCE; + + // Put screen info. Sometimes this fails when trying to set the + // pixclock. This may be a bug in the driver's arithmetic. + ret = ioctl(fb, FBIOPUT_VSCREENINFO, &vinfo); + if (0 != ret) { + fprintf(stderr, "FBIOPUT_VSCREENINFO failed with error " + "%d, attempting To reset pixclock\n", ret); + vinfo.pixclock = 6250; + ioctl(fb, FBIOPUT_VSCREENINFO, &vinfo); + vinfo.pixclock = 160000000; + ret = ioctl(fb, FBIOPUT_VSCREENINFO, &vinfo); + if (0 != ret) { + fprintf(stderr, "FBIOPUT_VSCREENINFO failed " + "with error %d, aborting\n", ret); + return 1; + } + } + + printf("x:%d y:%d activate:%d bpp:%d rotate:%d hsync_len:%d" + "vsync_len: %d sync:%d\n", + vinfo.xres, vinfo.yres, vinfo.activate, + vinfo.bits_per_pixel, vinfo.rotate, vinfo.hsync_len, + vinfo.vsync_len, vinfo.sync); + + struct fb_fix_screeninfo finfo; + ret = ioctl(fb, FBIOGET_FSCREENINFO, &finfo); + if (0 != ret) { + fprintf(stderr, "FBIOGET_FSCREENINFO failed with error " + "%d, aborting\n", ret); + return 1; + } + + // In case the EPDC wasn't accessible + ret = ioctl(fb, MXCFB_ENABLE_EPDC_ACCESS); + if (0 != ret) { + fprintf(stderr, "MXCFB_ENABLE_EPDC_ACCESS failed with " + "error %d, aborting\n", ret); + return 1; + } + + // Set to partial mode to control update parameters + __u32 aumode = AUTO_UPDATE_MODE_REGION_MODE; + ret = ioctl(fb, MXCFB_SET_AUTO_UPDATE_MODE, &aumode); + if (0 != ret) { + fprintf(stderr, "MXCFB_SET_AUTO_UPDATE_MODE failed " + "with error %d, aborting\n", ret); + return 1; + } + + + // No artifacts in display output + __u32 uscheme = UPDATE_SCHEME_SNAPSHOT; + ret = ioctl(fb, MXCFB_SET_UPDATE_SCHEME, &uscheme); + if (0 != ret) { + fprintf(stderr, "MXCFB_SET_UPDATE_SCHEME failed with " + "error %d, aborting\n", ret); + return 1; + } + + // Set up update (same region for all writes, gets reused) + struct mxcfb_update_data bupdate; + bupdate.update_region.left = 0; + bupdate.update_region.top = 0; + bupdate.update_region.width = 1872; + bupdate.update_region.height = 1404; + bupdate.waveform_mode = WAVEFORM_MODE_AUTO; + bupdate.update_mode = UPDATE_MODE_FULL; + bupdate.update_marker = 0; + bupdate.temp = TEMP_USE_AMBIENT; + bupdate.flags = 0; + + struct mxcfb_update_marker_data updm; + updm.update_marker = 0; + + // mmap to framebuffer + int buflength = vinfo.yres_virtual * finfo.line_length; + printf("buflength %d\n", buflength); + char * region = mmap(0, buflength, PROT_READ | PROT_WRITE, + MAP_SHARED, fb, (off_t)0); + if (region == MAP_FAILED) { + fprintf(stderr, "map failed!\n"); + return 1; + } + + // Write black + memset(region, 0x00, buflength); + ioctl(fb, MXCFB_SEND_UPDATE, &bupdate); + ioctl(fb, MXCFB_WAIT_FOR_UPDATE_COMPLETE, &updm); + + // Write white + memset(region, 0xff, buflength); + ioctl(fb, MXCFB_SEND_UPDATE, &bupdate); + ioctl(fb, MXCFB_WAIT_FOR_UPDATE_COMPLETE, &updm); + + // Write image + FILE *pattern = fopen(argv[1], "rb"); + fseek(pattern, 0, SEEK_END); + long psize = ftell(pattern); + printf("psize is %d\n", psize); + fseek(pattern, 0, SEEK_SET); + + if (psize != buflength) { + fprintf(stderr, "Image must match framebuffer size\n"); + return 1; + } + + char *buffer = malloc(psize); + fread(buffer, psize, 1, pattern); + fclose(pattern); + + memcpy(region, buffer, psize); + ret = ioctl(fb, MXCFB_SEND_UPDATE, &bupdate); + ioctl(fb, MXCFB_WAIT_FOR_UPDATE_COMPLETE, &updm); + if (0 != ret) { + fprintf(stderr, "MXCFB_SEND_UPDATE failed with error " + "%d, aborting\n", ret); + return 1; + } + + close(fb); + return 0; +} diff --git a/user/rm-utils/xorg.conf b/user/rm-utils/xorg.conf new file mode 100644 index 0000000..8ebf064 --- /dev/null +++ b/user/rm-utils/xorg.conf @@ -0,0 +1,62 @@ +Section "ServerLayout" + Identifier "reMarkable Tablet RM100" + Screen 0 "Screen0" + InputDevice "wacom" "CorePointer" +EndSection + +Section "ServerFlags" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" +EndSection + +Section "Monitor" + Identifier "Monitor0" + DisplaySize 210 158 # mm, sets DPI + Modeline "1872x1404_30.00" 104.26 1872 1960 2152 2432 1404 1405 \ + 1408 1429 -HSync +Vsync + Option "PreferredMode" "1872x1404_30.00" +EndSection + +Section "Screen" + Identifier "Screen0" + Monitor "Monitor0" + Device "epdc0" + DefaultDepth 16 + SubSection "Display" + Depth 16 + Modes "1872x1404_30.00" + EndSubSection +EndSection + +Section "Device" + Identifier "epdc0" + Driver "fbdev" + Option "fbdev" "/dev/fb0" + Option "Rotate" "CW" +EndSection + +Section "InputDevice" + Identifier "wacom" + Driver "evdev" + Option "Protocol" "Auto" + Option "Device" "/dev/input/event0" + Option "SwapAxes" "1" + Option "InvertY" "1" +EndSection + +Section "InputClass" + Identifier "touchscreen" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event1" + Driver "libinput" + Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1" # Rot 180 +EndSection + +Section "InputClass" + Identifier "facialbuttons" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event2" + Driver "libinput" +EndSection diff --git a/user/rmfakecloud/APKBUILD b/user/rmfakecloud/APKBUILD index d4ecc74..df7ce04 100644 --- a/user/rmfakecloud/APKBUILD +++ b/user/rmfakecloud/APKBUILD @@ -2,16 +2,15 @@ # Contributor: Antoine Martin (ayakael) pkgname=rmfakecloud -pkgver=0.0.27 +pkgver=0.0.13.2 _gittag=v$pkgver pkgrel=0 pkgdesc="A selfhosted cloud for the Remarkable Tablet" url="https://github.com/ddvk/rmfakecloud" -# armv7: oom -arch="all !armv7" +arch="all" license="AGPL-3.0-only" makedepends="go yarn" -options="chmod-clean net" +options="chmod-clean" source=" $pkgname-$pkgver.tar.gz::https://github.com/ddvk/rmfakecloud/archive/v$pkgver.tar.gz rmfakecloud.conf @@ -19,6 +18,20 @@ source=" " subpackages="$pkgname-openrc" +case "$CTARGET_ARCH" in + aarch64)export GOARCH="arm64" ;; + armel) export GOARCH="arm" GOARM=5 ;; + armhf) export GOARCH="arm" GOARM=6 ;; + armv7) export GOARCH="arm" GOARM=7 ;; + s390x) export GOARCH="s390x" ;; + x86) export GOARCH="386" ;; + x86_64) export GOARCH="amd64" ;; + ppc64) export GOARCH="ppc64" ;; + ppc64le) export GOARCH="ppc64le" ;; + riscv64) export GOARCH="riscv64" ;; + *) export GOARCH="unsupported";; +esac + build() { export GOPATH="$srcdir/go" export LDFLAGS="$LDFLAGS -X main.version=$pkgver" @@ -38,7 +51,7 @@ package() { install -Dm755 "$srcdir"/rmfakecloud.openrc "$pkgdir"/etc/init.d/rmfakecloud } sha512sums=" -b215295c8779f9820e9751e5cbfb8804d6cdeb0d71ffaa60d46fd803760e63227352f55a8b5a2e75d990b20a6a19c43a4ffaa03a1857e6fb37990a8b191a3ea2 rmfakecloud-0.0.27.tar.gz +8b7861a93baa070ef6fed65f14d54cd89c7881052ecc950ff19a1361770337bc496c1d5b4c7a44d146e2a0e1af677b92937b1336e8acd825c4ead3d61799bd59 rmfakecloud-0.0.13.2.tar.gz d5677cef282085cd6642a034dd258ffa294862aeb0ce81d6485a524a15564849bc4eb90a9d1fa4dbcf4eab69dcd893302aa06493fc8fad74d69200c2bdf246c0 rmfakecloud.conf 891d0945886796132f951293e081046334857563b4ebae28a3aa5b6bc37768767c49ce102de645ed8340af2518de606be8bf6ecafeb6d189dd937970aa3e6498 rmfakecloud.openrc " diff --git a/unmaintained/roxy-wi/APKBUILD b/user/roxy-wi/APKBUILD similarity index 99% rename from unmaintained/roxy-wi/APKBUILD rename to user/roxy-wi/APKBUILD index 93782fb..515b04a 100644 --- a/unmaintained/roxy-wi/APKBUILD +++ b/user/roxy-wi/APKBUILD @@ -1,8 +1,9 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=roxy-wi pkgver=6.3.7.0 -pkgrel=1 +pkgrel=0 pkgdesc="Web interface for managing HAProxy, Nginx and Keepalived servers" arch='noarch' url="https://github.com/Aidaho12/haproxy-wi" diff --git a/unmaintained/rstudio-desktop/12317_support-system-yaml-cpp.patch b/user/rstudio-desktop/12317_support-system-yaml-cpp.patch similarity index 100% rename from unmaintained/rstudio-desktop/12317_support-system-yaml-cpp.patch rename to user/rstudio-desktop/12317_support-system-yaml-cpp.patch diff --git a/unmaintained/rstudio-desktop/APKBUILD b/user/rstudio-desktop/APKBUILD similarity index 99% rename from unmaintained/rstudio-desktop/APKBUILD rename to user/rstudio-desktop/APKBUILD index 27b21ce..7a07049 100644 --- a/unmaintained/rstudio-desktop/APKBUILD +++ b/user/rstudio-desktop/APKBUILD @@ -7,14 +7,15 @@ _gittag=v2023.03.0+386 _panmirrortag=aea3027882718af657d60221818c3ff35f413219 pkgrel=0 pkgdesc="A powerful and productive integrated development environment (IDE) for R programming language" -arch="x86_64" +# fix later +#arch="x86_64" url="https://www.rstudio.com/products/rstudio/" license='AGPL3' options="!check" # No testsuite # missing quarto-cli depends=" R>=3.0.1 - clang15 + clang14 hunspell-en libldap lxqt-config @@ -23,7 +24,6 @@ depends=" sqlite " makedepends=" - bash apache-ant boost-dev cmake>=3.1.0 diff --git a/unmaintained/rstudio-desktop/cran_multithread.patch b/user/rstudio-desktop/cran_multithread.patch similarity index 100% rename from unmaintained/rstudio-desktop/cran_multithread.patch rename to user/rstudio-desktop/cran_multithread.patch diff --git a/unmaintained/rstudio-desktop/desktop-main-skip-nosandbox-on-musl.patch b/user/rstudio-desktop/desktop-main-skip-nosandbox-on-musl.patch similarity index 100% rename from unmaintained/rstudio-desktop/desktop-main-skip-nosandbox-on-musl.patch rename to user/rstudio-desktop/desktop-main-skip-nosandbox-on-musl.patch diff --git a/unmaintained/rstudio-desktop/filepath-use-unistd.patch b/user/rstudio-desktop/filepath-use-unistd.patch similarity index 100% rename from unmaintained/rstudio-desktop/filepath-use-unistd.patch rename to user/rstudio-desktop/filepath-use-unistd.patch diff --git a/unmaintained/rstudio-desktop/nodejs-external.patch b/user/rstudio-desktop/nodejs-external.patch similarity index 100% rename from unmaintained/rstudio-desktop/nodejs-external.patch rename to user/rstudio-desktop/nodejs-external.patch diff --git a/unmaintained/rstudio-desktop/qt.conf b/user/rstudio-desktop/qt.conf similarity index 100% rename from unmaintained/rstudio-desktop/qt.conf rename to user/rstudio-desktop/qt.conf diff --git a/unmaintained/rstudio-desktop/sessionhistoryarchive-use-ctime.patch b/user/rstudio-desktop/sessionhistoryarchive-use-ctime.patch similarity index 100% rename from unmaintained/rstudio-desktop/sessionhistoryarchive-use-ctime.patch rename to user/rstudio-desktop/sessionhistoryarchive-use-ctime.patch diff --git a/user/ruby3.0-bundler/APKBUILD b/user/ruby3.0-bundler/APKBUILD new file mode 100644 index 0000000..1339c6a --- /dev/null +++ b/user/ruby3.0-bundler/APKBUILD @@ -0,0 +1,54 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka + +pkgname=ruby3.0-bundler +_gemname=bundler +pkgver=2.3.26 +pkgrel=1 +pkgdesc="Manage an application's gem dependencies" +url="https://bundler.io/" +arch="noarch" +license="MIT" +depends="ruby3.0" +makedepends="ruby3.0-rake" +subpackages="$pkgname-doc" +source="https://github.com/rubygems/rubygems/archive/bundler-v$pkgver.tar.gz + manpages.patch + " +builddir="$srcdir/rubygems-bundler-v$pkgver/bundler" +options="!check" # tests require deps not available in main repo + +build() { + rake build_metadata + gem build $_gemname.gemspec +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + + gem install \ + --local \ + --install-dir "$gemdir" \ + --bindir "$pkgdir/usr/bin" \ + --ignore-dependencies \ + --no-document \ + --verbose \ + $_gemname + + local n; for n in 1 5; do + mkdir -p "$pkgdir"/usr/share/man/man$n + mv "$gemdir"/gems/$_gemname-$pkgver/lib/bundler/man/*.$n "$pkgdir"/usr/share/man/man$n/ + done + + rm -rf "$gemdir"/cache \ + "$gemdir"/build_info \ + "$gemdir"/doc \ + "$gemdir"/gems/$_gemname-$pkgver/man \ + "$gemdir"/gems/$_gemname-$pkgver/*.md +} + +sha512sums=" +0a02d5130ecb8ca96e1850fc409a55d9f07481bbb8ec9b20554cdc6f3b3d3aada67717ab17dd30835615e4c228f39f895bd9b6f55bc22d4dbd88caef9cc105ba bundler-v2.3.26.tar.gz +77a36e61ed205aeea6114b1039dfbe29fcaf916eeae3f91785aa53b3ac534e004aa257e218534d927f39e3673eebbfb3ef9ee17f04ed81f74117799b88e53cf4 manpages.patch +" diff --git a/user/ruby3.0-bundler/manpages.patch b/user/ruby3.0-bundler/manpages.patch new file mode 100644 index 0000000..cc11b02 --- /dev/null +++ b/user/ruby3.0-bundler/manpages.patch @@ -0,0 +1,37 @@ +From: Jakub Jirutka +Date: Fri, 26 Mar 2021 23:17:29 +0100 +Subject: [PATCH] Fix --help when man pages are moved out + +* Allow to move man pages from the gem's directory to the standard + system location (/usr/share/man) without breaking `bundler --help`. +* Fallback to the bundled ronn pages when the man command is available, + but the bundler man pages are not (i.e. ruby-bundler-doc is not + installed). +* Execute man with '-c' option to print the man page to the terminal + instead of using pager. + +--- a/lib/bundler/cli.rb ++++ b/lib/bundler/cli.rb +@@ -118,16 +118,17 @@ + end + + man_path = File.expand_path("man", __dir__) +- man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\Z/).collect do |f| +- [File.basename(f, ".*"), f] ++ man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\.ronn\Z/).collect do |f| ++ man_name = File.basename(f, ".ronn") ++ [File.basename(man_name, ".*"), man_name] + end] + + if man_pages.include?(command) + man_page = man_pages[command] +- if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+} +- Kernel.exec "man #{man_page}" ++ if Bundler.which("man") && Kernel.system("man -w #{command} >/dev/null 2>&1") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+} ++ Kernel.exec "man -c #{command}" + else +- puts File.read("#{man_path}/#{File.basename(man_page)}.ronn") ++ puts File.read("#{man_path}/#{man_page}.ronn") + end + elsif command_path = Bundler.which("bundler-#{cli}") + Kernel.exec(command_path, "--help") diff --git a/user/ruby3.0-minitest/APKBUILD b/user/ruby3.0-minitest/APKBUILD new file mode 100644 index 0000000..78eb953 --- /dev/null +++ b/user/ruby3.0-minitest/APKBUILD @@ -0,0 +1,68 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka + +pkgname=ruby3.0-minitest +_gemname=minitest +# Keep version in sync with "Bundled gems" (https://stdgems.org) for the +# packaged Ruby version. +pkgver=5.14.4 +pkgrel=1 +pkgdesc="Suite of testing facilities supporting TDD, BDD, mocking, and benchmarking for Ruby" +url="https://github.com/seattlerb/minitest" +arch="noarch" +license="MIT" +depends="ruby3.0" +makedepends="ruby3.0-rdoc" +subpackages="$pkgname-doc" +source="https://github.com/seattlerb/minitest/archive/v$pkgver/$_gemname-$pkgver.tar.gz + https://rubygems.org/downloads/$_gemname-$pkgver.gem + " +builddir="$srcdir/$_gemname-$pkgver" + +prepare() { + default_prepare + + # Generate gemspec (there's no gemspec in the source). + gem specification -l --ruby "$srcdir"/$_gemname-$pkgver.gem \ + > "$builddir"/$_gemname.gemspec +} + +build() { + gem build $_gemname.gemspec +} + +check() { + ruby -Ilib -Itest -e "Dir.glob('./test/**/test_*.rb', &method(:require))" +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + local geminstdir="$gemdir/gems/$_gemname-$pkgver" + + gem install \ + --local \ + --install-dir "$gemdir" \ + --ignore-dependencies \ + --document ri \ + --verbose \ + $_gemname + + # Remove unnessecary files + cd "$gemdir" + rm -rf build_info cache extensions plugins + + cd "$geminstdir" + rm -rf History.* Manifest.* README.* Rakefile test/ +} + +doc() { + pkgdesc="$pkgdesc (ri docs)" + + amove "$(ruby -e 'puts Gem.default_dir')"/doc +} + +sha512sums=" +e0b780d47e79adcfb68c2d521aa002ad00caefb5820d41d157cfcf34e2c9f987c76e4d31ba1a46b62b18a51c1e84c0add2637f30ab89899e511f3db7b2cea3e3 minitest-5.14.4.tar.gz +f967a11cfce82e167879905082859273b270e8d8e663a0c1c553964a345fb8564547627b8cf97418ac5bda544bb76c1385438ad74ec8e846666dc2952d55c9e9 minitest-5.14.4.gem +" diff --git a/user/ruby3.0-minitest/gemspec.patch b/user/ruby3.0-minitest/gemspec.patch new file mode 100644 index 0000000..a21a0c5 --- /dev/null +++ b/user/ruby3.0-minitest/gemspec.patch @@ -0,0 +1,15 @@ +--- a/webrick.gemspec ++++ b/webrick.gemspec +@@ -14,12 +14,6 @@ + + s.require_path = %w{lib} + s.files = [ +- "Gemfile", +- "LICENSE.txt", +- "README.md", +- "Rakefile", +- "bin/console", +- "bin/setup", + "lib/webrick.rb", + "lib/webrick/accesslog.rb", + "lib/webrick/cgi.rb", diff --git a/user/ruby3.0-power_assert/APKBUILD b/user/ruby3.0-power_assert/APKBUILD new file mode 100644 index 0000000..bf81915 --- /dev/null +++ b/user/ruby3.0-power_assert/APKBUILD @@ -0,0 +1,64 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka + +pkgname=ruby3.0-power_assert +_gemname=power_assert +# Keep version in sync with "Bundled gems" (https://stdgems.org) for the +# packaged Ruby version. +pkgver=1.2.0 +pkgrel=1 +pkgdesc="Debug tool for Ruby that displays intermediate results of a method chain" +url="https://github.com/ruby/power_assert" +arch="noarch" +license="BSD-2-Clause AND Ruby" +depends="ruby3.0" +checkdepends="ruby3.0-pry ruby3.0-rake ruby3.0-test-unit" +makedepends="ruby3.0-rdoc" +subpackages="$pkgname-doc" +source="https://github.com/ruby/power_assert/archive/v$pkgver/$_gemname-$pkgver.tar.gz + gemspec.patch + " +builddir="$srcdir/$_gemname-$pkgver" +# Avoid circular dependency with ruby-test-unit. +options="!check" + +prepare() { + default_prepare + sed -i '/require .bundler/d' Rakefile +} + +build() { + gem build $_gemname.gemspec +} + +check() { + rake test +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + + gem install \ + --local \ + --install-dir "$gemdir" \ + --ignore-dependencies \ + --document ri \ + --verbose \ + $_gemname + + # Remove unnessecary files + cd "$gemdir" + rm -rf build_info cache extensions plugins +} + +doc() { + pkgdesc="$pkgdesc (ri docs)" + + amove "$(ruby -e 'puts Gem.default_dir')"/doc +} + +sha512sums=" +2f001f6223fc3fb586c7b0457f775379040e11eb83b5bdda51c02b2b24e531aecd6e12e6ec80bf9407a768ab1a10b0a6b4c8f1a92ca69ea702faf56202bb635c power_assert-1.2.0.tar.gz +ae0ca6ad2990d01d57f95cdce11dc3004b2ace9e79b90bf9eb181bf604bed5992436cb319f923075af951b8e2d31d59f13e15af94c534885d18e033338302524 gemspec.patch +" diff --git a/user/ruby3.0-power_assert/gemspec.patch b/user/ruby3.0-power_assert/gemspec.patch new file mode 100644 index 0000000..81fa904 --- /dev/null +++ b/user/ruby3.0-power_assert/gemspec.patch @@ -0,0 +1,23 @@ +--- a/power_assert.gemspec ++++ b/power_assert.gemspec +@@ -12,11 +12,7 @@ + s.summary = "Power Assert for Ruby" + s.description = "Power Assert for Ruby. Power Assert shows each value of variables and method calls in the expression. It is useful for testing, providing which value wasn't correct when the condition is not satisfied." + +- s.files = `git ls-files -z`.split("\x0").reject do |f| +- f.match(%r{^(test|spec|features|benchmark)/}) +- end +- s.bindir = 'exe' +- s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) } ++ s.files = Dir['lib/**/*.rb'] + s.require_paths = ['lib'] + s.add_development_dependency 'test-unit' + s.add_development_dependency 'rake' +@@ -25,7 +21,6 @@ + s.add_development_dependency 'pry' + s.add_development_dependency 'byebug' + s.add_development_dependency 'benchmark-ips' +- s.extra_rdoc_files = ['README.rdoc'] + s.rdoc_options = ['--main', 'README.rdoc'] + s.licenses = ['2-clause BSDL', "Ruby's"] + end diff --git a/user/ruby3.0-rake/APKBUILD b/user/ruby3.0-rake/APKBUILD new file mode 100644 index 0000000..974f449 --- /dev/null +++ b/user/ruby3.0-rake/APKBUILD @@ -0,0 +1,60 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka + +pkgname=ruby3.0-rake +_gemname=rake +# Keep version in sync with "Bundled gems" (https://stdgems.org) for the +# packaged Ruby version. +pkgver=13.0.6 +pkgrel=1 +pkgdesc="A Ruby task runner, inspired by make" +url="https://github.com/ruby/rake" +arch="noarch" +license="MIT" +depends="ruby3.0" +checkdepends="ruby3.0-minitest" +makedepends="ruby3.0-rdoc" +subpackages="$pkgname-doc" +source="https://github.com/ruby/rake/archive/v$pkgver/$_gemname-$pkgver.tar.gz" +builddir="$srcdir/$_gemname-$pkgver" + +build() { + gem build $_gemname.gemspec +} + +check() { + # FIXME: Fix test_signal_propagation_in_tests + ruby -Ilib -Itest -e "Dir.glob('./test/**/test_*.rb', &method(:require))" -- \ + --exclude=test_signal_propagation_in_tests +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + + gem install \ + --local \ + --install-dir "$gemdir" \ + --bindir "$pkgdir/usr/bin" \ + --ignore-dependencies \ + --document ri \ + --verbose \ + $_gemname + + # Remove unnessecary files + cd "$gemdir" + rm -rf build_info cache extensions plugins + + cd gems/rake-* + rm -rf doc ./*.rdoc MIT-LICENSE +} + +doc() { + pkgdesc="$pkgdesc (ri docs)" + + amove "$(ruby -e 'puts Gem.default_dir')"/doc +} + +sha512sums=" +1b438be96d8cedaf70e961b0bbd2217692b0b5537b2e1d5f599158e7da3e300cf6ab0c5f0c52fea89be0beb675effbbf563d24e55c84fb673b4982013355e03c rake-13.0.6.tar.gz +" diff --git a/user/ruby3.0-rugged/APKBUILD b/user/ruby3.0-rugged/APKBUILD new file mode 100644 index 0000000..5721fd0 --- /dev/null +++ b/user/ruby3.0-rugged/APKBUILD @@ -0,0 +1,75 @@ +# Contributor: Jakub Jirutka +# Maintainer: Jakub Jirutka +pkgname=ruby3.0-rugged +_gemname=rugged +pkgver=1.6.3 +pkgrel=1 +pkgdesc="Ruby bindings to libgit2" +url="https://github.com/libgit2/rugged" +arch="all" +license="MIT" +checkdepends=" + git + libgit2-tests + ruby3.0-minitest + ruby3.0-rake + ruby3.0-rake-compiler + " +makedepends=" + libgit2-dev>=${pkgver%.*} + ruby3.0 + ruby3.0-dev + " +source="$_gemname-$pkgver.tar.gz::https://github.com/libgit2/$_gemname/archive/v$pkgver.tar.gz + fix-extconf-version-check.patch + libgit2-fixture-dir.patch + libgit2-1.7.patch + skip-test_discover_false.patch + skip-test_read_global_config_file.patch + skip-online-tests.patch + " +builddir="$srcdir/$_gemname-$pkgver" +# Rugged::ConfigError: repository path '/tmp/' is not owned by current user +# requires tmp persmissions on host +options="!check" + +build() { + gem build $_gemname.gemspec + + RUGGED_USE_SYSTEM_LIBRARIES=1 gem install --local \ + --install-dir dist \ + --ignore-dependencies \ + --no-document \ + --verbose \ + $_gemname + + # Needed for tests. + cp -l dist/extensions/*/*/$_gemname-*/$_gemname/*.so lib/$_gemname/ +} + +check() { + rake test LIBGIT2_FIXTURE_DIR="/usr/src/libgit2/tests/resources" +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + cd "$builddir"/dist + + mkdir -p "$gemdir" + cp -r extensions gems specifications "$gemdir"/ + + # Remove unnecessary and duplicated files. + rm -f "$gemdir"/extensions/*/*/$_gemname-*/mkmf.log + cd "$gemdir"/gems/$_gemname-$pkgver + rm -rf ext/ lib/$_gemname/*.so LICENSE* README* +} + +sha512sums=" +4d54b5df04382628aff7e1abbf5fbd9730564c9bcb4e17da34ac59578b306db567b15151629a10c4a6d8174a31cd8be03c27ff0d1514cb19de237e773f4b64ce rugged-1.6.3.tar.gz +0e55aff667175496e9df1920c6d49042077196aa992a729323628224e7930a6f976bcbfae70d2af733a043c173e8cd5f571606f0b898b008472b40fcefe6b425 fix-extconf-version-check.patch +0c749aeb8d6a29aed51737bab09c7b0a6669ac691461758c856ede5d8510ad6edfa284cddd1b54982bf614a45ba817b70e838e071889a9b05e1b0580111ec826 libgit2-fixture-dir.patch +bcf7b554390fb2b1ef9043f8c934ae51a299f223ec1d7826dcb8eed078961cd084c05148c84142d60cc0a3213653bd416af1fbb09bfa5b26c9ce87fca79f6a18 libgit2-1.7.patch +33464eeefc7669fe3bf5f47c4016cacdcba4f7455ed22b441383b49721870072b5095dbb68832cdb933a7659a415476db64b579a98c888b83900d092bb8b54be skip-test_discover_false.patch +b9e028f18830e447773e895046eb03489e94bb5a76fede51f93545ed67f7249ed8f37ed4bb832eb68a2db281ff3e2b84dab8b72bb21eea4b835b0f1ce23943c3 skip-test_read_global_config_file.patch +5f0ad88eb7ac8c69605c43712e046efd47b727f48e98ee4047be850da4fea48c11fc2a383c791810a1bc81c08ca00428d4906c1af02a0d0da6e1ffbd4723b8f3 skip-online-tests.patch +" diff --git a/user/ruby3.0-rugged/fix-extconf-version-check.patch b/user/ruby3.0-rugged/fix-extconf-version-check.patch new file mode 100644 index 0000000..fc22612 --- /dev/null +++ b/user/ruby3.0-rugged/fix-extconf-version-check.patch @@ -0,0 +1,13 @@ +diff --git a/ext/rugged/extconf.rb b/ext/rugged/extconf.rb +index 7dbd2b3..92251e3 100644 +--- a/ext/rugged/extconf.rb ++++ b/ext/rugged/extconf.rb +@@ -70,7 +70,7 @@ if arg_config("--use-system-libraries", !!ENV['RUGGED_USE_SYSTEM_LIBRARIES']) + + major = minor = nil + +- File.readlines(File.join(LIBGIT2_DIR, "include", "git2", "version.h")).each do |line| ++ File.readlines(File.join("/usr", "include", "git2", "version.h")).each do |line| + if !major && (matches = line.match(/^#define LIBGIT2_VER_MAJOR\s+([0-9]+)$/)) + major = matches[1] + next diff --git a/user/ruby3.0-rugged/libgit2-1.7.patch b/user/ruby3.0-rugged/libgit2-1.7.patch new file mode 100644 index 0000000..4fe0884 --- /dev/null +++ b/user/ruby3.0-rugged/libgit2-1.7.patch @@ -0,0 +1,90 @@ +Patch-Source: https://github.com/libgit2/rugged/pull/964 +safe as we apply the libgit2 fix to libgit. +-- +From 508fbc2bcd8fdc400fcc4513b53d5205c4b7e9d4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= +Date: Tue, 18 Jul 2023 10:27:37 +0200 +Subject: [PATCH 1/3] Update libgit2 to v1.7.0 + +--- + vendor/libgit2 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ext/rugged/rugged_allocator.c b/ext/rugged/rugged_allocator.c +index 30ee537..0059af6 100644 +--- a/ext/rugged/rugged_allocator.c ++++ b/ext/rugged/rugged_allocator.c +@@ -13,58 +13,11 @@ static void *rugged_gmalloc(size_t n, const char *file, int line) + return xmalloc(n); + } + +-static void *rugged_gcalloc(size_t nelem, size_t elsize, const char *file, int line) +-{ +- return xcalloc(nelem, elsize); +-} +- +-static char *rugged_gstrdup(const char *str, const char *file, int line) +-{ +- return ruby_strdup(str); +-} +- +-static char *rugged_gstrndup(const char *str, size_t n, const char *file, int line) +-{ +- size_t len; +- char *newstr; +- +- len = strnlen(str, n); +- if (len < n) +- n = len; +- +- newstr = xmalloc(n+1); +- memcpy(newstr, str, n); +- newstr[n] = '\0'; +- +- return newstr; +-} +- +-static char *rugged_gsubstrdup(const char *str, size_t n, const char *file, int line) +-{ +- char *newstr; +- +- newstr = xmalloc(n+1); +- memcpy(newstr, str, n); +- newstr[n] = '\0'; +- +- return newstr; +-} +- + static void *rugged_grealloc(void *ptr, size_t size, const char *file, int line) + { + return xrealloc(ptr, size); + } + +-static void *rugged_greallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line) +-{ +- return xrealloc2(ptr, nelem, elsize); +-} +- +-static void *rugged_gmallocarray(size_t nelem, size_t elsize, const char *file, int line) +-{ +- return xmalloc2(nelem, elsize); +-} +- + static void rugged_gfree(void *ptr) + { + xfree(ptr); +@@ -75,14 +28,7 @@ void rugged_set_allocator(void) + git_allocator allocator; + + allocator.gmalloc = rugged_gmalloc; +- allocator.gcalloc = rugged_gcalloc; +- allocator.gstrdup = rugged_gstrdup; +- allocator.gstrndup = rugged_gstrndup; +- allocator.gstrndup = rugged_gstrndup; +- allocator.gsubstrdup = rugged_gsubstrdup; + allocator.grealloc = rugged_grealloc; +- allocator.greallocarray = rugged_greallocarray; +- allocator.gmallocarray = rugged_gmallocarray; + allocator.gfree = rugged_gfree; + + git_libgit2_opts(GIT_OPT_SET_ALLOCATOR, &allocator); diff --git a/user/ruby3.0-rugged/libgit2-fixture-dir.patch b/user/ruby3.0-rugged/libgit2-fixture-dir.patch new file mode 100644 index 0000000..9d6a24d --- /dev/null +++ b/user/ruby3.0-rugged/libgit2-fixture-dir.patch @@ -0,0 +1,12 @@ +--- a/test/test_helper.rb ++++ b/test/test_helper.rb +@@ -130,7 +130,8 @@ + end + + TEST_DIR = File.dirname(File.expand_path(__FILE__)) +- LIBGIT2_FIXTURE_DIR = File.expand_path("../../vendor/libgit2/tests/resources", __FILE__) ++ LIBGIT2_FIXTURE_DIR = ENV['LIBGIT2_FIXTURE_DIR'] \ ++ || File.expand_path("../../vendor/libgit2/tests/resources", __FILE__) + end + + class OnlineTestCase < TestCase diff --git a/user/ruby3.0-rugged/skip-online-tests.patch b/user/ruby3.0-rugged/skip-online-tests.patch new file mode 100644 index 0000000..c0cb6a6 --- /dev/null +++ b/user/ruby3.0-rugged/skip-online-tests.patch @@ -0,0 +1,15 @@ +Skip all online tests. + +--- a/test/test_helper.rb ++++ b/test/test_helper.rb +@@ -155,6 +156,10 @@ + end + + super ++ end ++ else ++ def before_setup ++ skip 'online tests have been disabled' + end + end + diff --git a/user/ruby3.0-rugged/skip-test_discover_false.patch b/user/ruby3.0-rugged/skip-test_discover_false.patch new file mode 100644 index 0000000..e968c02 --- /dev/null +++ b/user/ruby3.0-rugged/skip-test_discover_false.patch @@ -0,0 +1,27 @@ +Skip these two tests: + + 1) Failure: +RepositoryDiscoverTest#test_discover_false [/home/jirutjak/aports/testing/ruby-rugged/src/rugged-0.26.0/test/repo_test.rb:426]: +Rugged::RepositoryError expected but nothing was raised. + + 2) Failure: +RepositoryDiscoverTest#test_discover_nested_false [/home/jirutjak/aports/testing/ruby-rugged/src/rugged-0.26.0/test/repo_test.rb:432]: +Rugged::RepositoryError expected but nothing was raised. + +--- a/test/repo_test.rb ++++ b/test/repo_test.rb +@@ -423,12 +423,14 @@ + end + + def test_discover_false ++ skip 'I have no idea why this test does not pass :(' + assert_raises Rugged::RepositoryError do + Rugged::Repository.discover(@tmpdir) + end + end + + def test_discover_nested_false ++ skip 'I have no idea why this test does not pass :(' + assert_raises Rugged::RepositoryError do + Rugged::Repository.discover(File.join(@tmpdir, 'foo')) + end diff --git a/user/ruby3.0-rugged/skip-test_read_global_config_file.patch b/user/ruby3.0-rugged/skip-test_read_global_config_file.patch new file mode 100644 index 0000000..d3a3310 --- /dev/null +++ b/user/ruby3.0-rugged/skip-test_read_global_config_file.patch @@ -0,0 +1,13 @@ +It seems that this test fails when user.name is NOT set in ~/.gitconfig +on the build system. + +--- a/test/config_test.rb ++++ b/test/config_test.rb +@@ -17,6 +17,7 @@ + end + + def test_read_global_config_file ++ skip 'This test is flawed, it runs on real FS, i.e. it is not isolated' + config = Rugged::Config.global + refute_nil config['user.name'] + assert_nil config['core.bare'] diff --git a/user/ruby3.0-test-unit/APKBUILD b/user/ruby3.0-test-unit/APKBUILD new file mode 100644 index 0000000..265647a --- /dev/null +++ b/user/ruby3.0-test-unit/APKBUILD @@ -0,0 +1,56 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Jakub Jirutka + +pkgname=ruby3.0-test-unit +_gemname=test-unit +# Keep version in sync with "Bundled gems" (https://stdgems.org) for the +# packaged Ruby version. +pkgver=3.3.8 +pkgrel=1 +pkgdesc="An xUnit family unit testing framework for Ruby" +url="https://test-unit.github.io" +arch="noarch" +license="BSD-2-Clause AND Python-2.0 AND Ruby" +depends="ruby3.0 ruby3.0-power_assert" +makedepends="ruby3.0-rdoc" +subpackages="$pkgname-doc" +source="https://github.com/test-unit/test-unit/archive/$pkgver/$_gemname-$pkgver.tar.gz + gemspec.patch + " +builddir="$srcdir/$_gemname-$pkgver" + +build() { + gem build $_gemname.gemspec +} + +check() { + ruby test/run-test.rb +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + + gem install \ + --local \ + --install-dir "$gemdir" \ + --ignore-dependencies \ + --document ri \ + --verbose \ + $_gemname + + # Remove unnessecary files + cd "$gemdir" + rm -rf build_info cache extensions plugins +} + +doc() { + pkgdesc="$pkgdesc (ri docs)" + + amove "$(ruby -e 'puts Gem.default_dir')"/doc +} + +sha512sums=" +91df9e76f49998239e72428f9373403f53773c69bd033dcaed5f6fddd40a014e5c70b2cee28f430089da19b73b96d8fe4687e88d807387ace41cf21c0ccc5a56 test-unit-3.3.8.tar.gz +97429f9cb86f7bc989c03531466f1443171ac3835a4738601fe4d52b81a408e1504a26c1ed7d84ae3e07b263600d12f89298af27626219df1d7fd0612b26e466 gemspec.patch +" diff --git a/user/ruby3.0-test-unit/gemspec.patch b/user/ruby3.0-test-unit/gemspec.patch new file mode 100644 index 0000000..263c7c6 --- /dev/null +++ b/user/ruby3.0-test-unit/gemspec.patch @@ -0,0 +1,15 @@ +--- a/test-unit.gemspec ++++ b/test-unit.gemspec +@@ -24,11 +24,7 @@ + description = clean_white_space.call(entries[entries.index("Description") + 1]) + spec.summary, spec.description, = description.split(/\n\n+/, 3) + spec.licenses = ["Ruby", "BSDL", "PSFL"] # lib/test/unit/diff.rb is PSFL +- spec.files = ["README.md", "Rakefile"] +- spec.files += ["COPYING", "BSDL", "PSFL"] +- spec.files += Dir.glob("{lib,sample}/**/*.rb") +- spec.files += Dir.glob("doc/text/**/*.*") +- spec.test_files += Dir.glob("test/**/*") ++ spec.files += Dir.glob("lib/**/*.rb") + + spec.metadata = { + "source_code_uri" => "https://github.com/test-unit/test-unit" diff --git a/user/ruby3.0-webrick/APKBUILD b/user/ruby3.0-webrick/APKBUILD new file mode 100644 index 0000000..b327a3f --- /dev/null +++ b/user/ruby3.0-webrick/APKBUILD @@ -0,0 +1,61 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: omni +# Contributor: Jakub Jirutka + +pkgname=ruby3.0-webrick +_gemname=webrick +pkgver=1.7.0 +pkgrel=1 +pkgdesc="HTTP server toolkit for Ruby" +url="https://github.com/ruby/webrick" +arch="noarch" +license="BSD-2-Clause" +depends="ruby3.0" +checkdepends="ruby3.0-rake ruby3.0-test-unit" +makedepends="ruby3.0-rdoc" +subpackages="$pkgname-doc" +source="https://github.com/ruby/webrick/archive/v$pkgver/ruby-webrick-$pkgver.tar.gz + gemspec.patch + " +builddir="$srcdir/$_gemname-$pkgver" + +prepare() { + default_prepare + sed -i '/require .bundler/d' Rakefile +} + +build() { + gem build $_gemname.gemspec +} + +check() { + rake test +} + +package() { + local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')" + + gem install \ + --local \ + --install-dir "$gemdir" \ + --ignore-dependencies \ + --document ri \ + --verbose \ + $_gemname + + # Remove unnessecary files + cd "$gemdir" + rm -rf build_info cache extensions plugins +} + +doc() { + pkgdesc="$pkgdesc (ri docs)" + + amove "$(ruby -e 'puts Gem.default_dir')"/doc +} + +sha512sums=" +785e8c6af6e2f8ac497bab6d0ad0e9383fa4c4ac8dee6ceee38e20c5e9b631b805ec3c8f5438ebea651ee4113698de1a370ae506927bdc04e512ea6cac433cd1 ruby-webrick-1.7.0.tar.gz +ddfd7ec0b7b4c7b2dea9d3ed45f8a8353bbbb7c61f5c11a9c52116402fcba8626a446dcf18b9fee1ac9a267ccc3b534a1dbd113d02959e612f034b15b47a786e gemspec.patch +" diff --git a/user/ruby3.0-webrick/gemspec.patch b/user/ruby3.0-webrick/gemspec.patch new file mode 100644 index 0000000..a21a0c5 --- /dev/null +++ b/user/ruby3.0-webrick/gemspec.patch @@ -0,0 +1,15 @@ +--- a/webrick.gemspec ++++ b/webrick.gemspec +@@ -14,12 +14,6 @@ + + s.require_path = %w{lib} + s.files = [ +- "Gemfile", +- "LICENSE.txt", +- "README.md", +- "Rakefile", +- "bin/console", +- "bin/setup", + "lib/webrick.rb", + "lib/webrick/accesslog.rb", + "lib/webrick/cgi.rb", diff --git a/user/ruby3.0/APKBUILD b/user/ruby3.0/APKBUILD new file mode 100644 index 0000000..35844b6 --- /dev/null +++ b/user/ruby3.0/APKBUILD @@ -0,0 +1,232 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) +# Contributor: Carlo Landmeter +# Contributor: Jakub Jirutka +# Contributor: Nulo +# +# secfixes: +# 3.0.6-r0: +# - CVE-2023-28755 +# - CVE-2023-28756 +# 3.0.5-r0: +# - CVE-2021-33621 +# 3.0.4-r0: +# - CVE-2022-28738 +# - CVE-2022-28739 +# 3.0.3-r0: +# - CVE-2021-41817 +# - CVE-2021-41816 +# - CVE-2021-41819 +# 2.7.4-r0: +# - CVE-2021-31799 +# - CVE-2021-31810 +# - CVE-2021-32066 +# 2.7.3-r0: +# - CVE-2021-28965 +# - CVE-2021-28966 +# 2.7.2-r0: +# - CVE-2020-25613 +# 2.6.6-r0: +# - CVE-2020-10663 +# - CVE-2020-10933 +# 2.6.5-r0: +# - CVE-2019-16255 +# - CVE-2019-16254 +# - CVE-2019-15845 +# - CVE-2019-16201 +# 2.5.2-r0: +# - CVE-2018-16395 +# - CVE-2018-16396 +# 2.5.1-r0: +# - CVE-2017-17742 +# - CVE-2018-6914 +# - CVE-2018-8777 +# - CVE-2018-8778 +# - CVE-2018-8779 +# - CVE-2018-8780 +# 2.4.2-r0: +# - CVE-2017-0898 +# - CVE-2017-10784 +# - CVE-2017-14033 +# - CVE-2017-14064 +# - CVE-2017-0899 +# - CVE-2017-0900 +# - CVE-2017-0901 +# - CVE-2017-0902 +# 2.4.3-r0: +# - CVE-2017-17405 +# +pkgname=ruby3.0 +_pkgname=ruby +# When upgrading, upgrade also each ruby- aport listed in file +# gems/bundled_gems. If some aport is missing or not in the main repo, +# create/move it. +pkgver=3.0.6 +_abiver="${pkgver%.*}.0" +pkgrel=0 +pkgdesc="An object-oriented language for quick and easy programming" +url="https://www.ruby-lang.org/" +arch="all" +license="Ruby AND BSD-2-Clause AND MIT" +depends="ca-certificates" +depends_dev=" + $pkgname=$pkgver-r$pkgrel + $pkgname-rdoc=$pkgver-r$pkgrel + gmp-dev + libucontext-dev + " +makedepends="$depends_dev zlib-dev openssl1.1-compat-dev gdbm-dev readline-dev + libffi-dev coreutils yaml-dev linux-headers autoconf" +install="$pkgname.post-upgrade" +subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev + $pkgname-rdoc::noarch + $pkgname-libs + $pkgname-full::noarch + " +source="https://cache.ruby-lang.org/pub/ruby/${pkgver%.*}/ruby-$pkgver.tar.gz + test_insns-lower-recursion-depth.patch + fix-get_main_stack.patch + dont-install-bundled-gems.patch + " +replaces="ruby-gems" +builddir="$srcdir/$_pkgname-$pkgver" + +# For backward compatibility (pre 3.x). +for _i in bigdecimal etc fiddle gdbm io-console irb json; do + provides="$provides ruby3.0-$_i=$pkgver-r$pkgrel" +done + +_gemdir="/usr/lib/ruby/gems/$_abiver" +_rubydir="/usr/lib/ruby/$_abiver" +_chost="${CHOST/-alpine-/-}" +_depends_full='' # see prepare() + +case "$CARCH" in + x86) _arch="i386";; + *) _arch="$CARCH";; +esac + +prepare() { + default_prepare + autoconf + + # v2.7.1 - Of all the bootstraptest only test_fiber fails on s390x: + # test_fiber.rb bootstraptest.tmp.rb:8: [BUG] vm_call_cfunc: cfp consistency error (0x000003ffb63fefb0, 0x000003ffb42f5f58) + case "$CARCH" in + s390x) rm bootstraptest/test_fiber.rb;; + esac + + local name ver; while read -r name ver _; do + case "$name=$ver" in + [a-z]*=[0-9]*.[0-9]*) + if ! apk add -qs "ruby-$name>=$ver" >/dev/null 2>&1; then + warning "bump package ruby-$name to version $ver" + fi + _depends_full="$_depends_full ruby-$name>=$ver" + esac + done < "$builddir"/gems/bundled_gems +} + +build() { + # -fomit-frame-pointer makes ruby segfault, see gentoo bug #150413 + # In many places aliasing rules are broken; play it safe + # as it's risky with newer compilers to leave it as it is. + export CFLAGS="$CFLAGS -fno-omit-frame-pointer -fno-strict-aliasing" + export CPPFLAGS="$CPPFLAGS -fno-omit-frame-pointer -fno-strict-aliasing" + + # Needed for coroutine stuff + export LIBS="-lucontext" + + # ruby saves path to install. we want use $PATH + export INSTALL=install + + # the configure script does not detect isnan/isinf as macros + export ac_cv_func_isnan=yes + export ac_cv_func_isinf=yes + + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-sitedir=/usr/local/lib/site_ruby \ + --with-search-path="/usr/lib/site_ruby/\$(ruby_ver)/$_arch-linux" \ + --enable-pthread \ + --disable-rpath \ + --enable-shared \ + --with-mantype=man + make +} + +check() { + make test +} + +package() { + make DESTDIR="$pkgdir" SUDO="" install + + install -m 644 -D COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING + + cd "$pkgdir" + + # Remove bundled gem bundler; it's provided by a separate aport/package + # ruby-bundler. + rm -rf ./$_rubydir/bundler + rm ./$_rubydir/bundler.rb + rm -rf ./$_gemdir/gems/bundler-* + rm ./$_gemdir/specifications/default/bundler-*.gemspec + rm usr/bin/bundle usr/bin/bundler + + # Remove bundled CA certificates; they are provided by ca-certificates. + rm ./$_rubydir/rubygems/ssl_certs/*/*.pem + rmdir ./$_rubydir/rubygems/ssl_certs/* || true + + rm -Rf ./$_gemdir/cache/* + + if [ -d usr/local ]; then + local f=$(find usr/local -type f) + if [ -n "$f" ]; then + error "Found files in /usr/local:" + echo "$f" + return 1 + fi + rm -r usr/local + fi +} + +rdoc() { + pkgdesc="Ruby documentation tool" + license="Ruby" + depends="$pkgname" + + amove $_rubydir/rdoc + amove $_gemdir/gems/rdoc-* + amove $_gemdir/specifications/default/rdoc-* + amove usr/bin/ri + amove usr/bin/rdoc +} + +libs() { + pkgdesc="Libraries necessary to run Ruby" + depends="" + + amove usr/lib +} + +full() { + pkgdesc="Ruby with all bundled gems" + # bundler is bundled since Ruby 2.6, so include it in ruby-full despite + # that it's provided by a seprate aport/package. + depends="ruby ruby-rdoc ruby-bundler $_depends_full" + + mkdir -p "$subpkgdir" +} + +sha512sums=" +d596bfd374ae777717379b409afe8ee1655ade0c0539ada7a10af4780b818efe25a28aa50a2a7226741d1776d744e10ad916641f9d12fb31c7444b0a01d0e0cc ruby-3.0.6.tar.gz +2ee66e841f841ad6e7c8877ec20b548d23b50d6a888a0d2d16f9062892c5d1c64efb59385f6723bae6cd1591824278787eefc0180768619c653243756d1300ab test_insns-lower-recursion-depth.patch +8e0a75899a3855f85441dabb6571569f13cf3472c2ccb2ec5c8e0e5cc9026af3c9951ebed4a754d9723dfd1c8ece32862802f20e18b7e5de4875125d92ef146b fix-get_main_stack.patch +10bda0462feaec73a7522ef622ffc18815b1d4302e771013ab78ef88d1d9f76277b1d24401eff054e031ca0fbc1ac80486d58282378cbdaf695786b212e6524d dont-install-bundled-gems.patch +" diff --git a/user/ruby3.0/dont-install-bundled-gems.patch b/user/ruby3.0/dont-install-bundled-gems.patch new file mode 100644 index 0000000..5710923 --- /dev/null +++ b/user/ruby3.0/dont-install-bundled-gems.patch @@ -0,0 +1,20 @@ +Don't install bundled gems - we package them separately. + +--- a/tool/rbinstall.rb ++++ b/tool/rbinstall.rb +@@ -947,6 +947,7 @@ + end + end + ++=begin XXX-Patched + install?(:ext, :comm, :gem, :'bundled-gems') do + gem_dir = Gem.default_dir + install_dir = with_destdir(gem_dir) +@@ -1026,6 +1027,7 @@ + puts "skip installing bundled gems because of lacking zlib" + end + end ++=end + + parse_args() + diff --git a/user/ruby3.0/fix-get_main_stack.patch b/user/ruby3.0/fix-get_main_stack.patch new file mode 100644 index 0000000..ef369bc --- /dev/null +++ b/user/ruby3.0/fix-get_main_stack.patch @@ -0,0 +1,70 @@ +diff --git a/thread_pthread.c b/thread_pthread.c +index 951885ffa0..cf90321d1d 100644 +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -681,9 +689,6 @@ hpux_attr_getstackaddr(const pthread_attr_t *attr, void **addr) + # define MAINSTACKADDR_AVAILABLE 0 + # endif + #endif +-#if MAINSTACKADDR_AVAILABLE && !defined(get_main_stack) +-# define get_main_stack(addr, size) get_stack(addr, size) +-#endif + + #ifdef STACKADDR_AVAILABLE + /* +@@ -765,6 +762,55 @@ get_stack(void **addr, size_t *size) + return 0; + #undef CHECK_ERR + } ++ ++#if defined(__linux__) && !defined(__GLIBC__) && defined(HAVE_GETRLIMIT) ++ ++#ifndef PAGE_SIZE ++#include ++#define PAGE_SIZE sysconf(_SC_PAGE_SIZE) ++#endif ++ ++static int ++get_main_stack(void **addr, size_t *size) ++{ ++ size_t start, end, limit, prevend = 0; ++ struct rlimit r; ++ FILE *f; ++ char buf[PATH_MAX+80], s[8]; ++ int n; ++ STACK_GROW_DIR_DETECTION; ++ ++ f = fopen("/proc/self/maps", "re"); ++ if (!f) ++ return -1; ++ n = 0; ++ while (fgets(buf, sizeof buf, f)) { ++ n = sscanf(buf, "%zx-%zx %*s %*s %*s %*s %7s", &start, &end, s); ++ if (n >= 2) { ++ if (n == 3 && strcmp(s, "[stack]") == 0) ++ break; ++ prevend = end; ++ } ++ n = 0; ++ } ++ fclose(f); ++ if (n == 0) ++ return -1; ++ ++ limit = 100 << 20; /* 100MB stack limit */ ++ if (getrlimit(RLIMIT_STACK, &r)==0 && r.rlim_cur < limit) ++ limit = r.rlim_cur & -PAGE_SIZE; ++ if (limit > end) limit = end; ++ if (prevend < end - limit) prevend = end - limit; ++ if (start > prevend) start = prevend; ++ *addr = IS_STACK_DIR_UPPER() ? (void *)start : (void *)end; ++ *size = end - start; ++ return 0; ++} ++#else ++# define get_main_stack(addr, size) get_stack(addr, size) ++#endif ++ + #endif + + static struct { diff --git a/user/ruby3.0/ruby3.0.post-upgrade b/user/ruby3.0/ruby3.0.post-upgrade new file mode 100644 index 0000000..6cba787 --- /dev/null +++ b/user/ruby3.0/ruby3.0.post-upgrade @@ -0,0 +1,17 @@ +#!/bin/sh + +ver_new="$1" +ver_old="$2" + +if [ "$(apk version -t "$ver_old" "2.5.0-r0")" = "<" ]; then + cat >&2 <<-EOF + * + * In Ruby 2.5 more parts of the stdlib has been splitted into standalone + * gems, yet still installed with Ruby by default. We have moved some of + * them into separate subpackages. If you don't know which subpackages you + * need, you may install meta-package "ruby-full". + * + EOF +fi + +exit 0 diff --git a/user/ruby3.0/test_insns-lower-recursion-depth.patch b/user/ruby3.0/test_insns-lower-recursion-depth.patch new file mode 100644 index 0000000..a775efb --- /dev/null +++ b/user/ruby3.0/test_insns-lower-recursion-depth.patch @@ -0,0 +1,47 @@ +The patched test is a recursion function. We have lower stack size, +so we hit SystemStackError sooner than on other platforms. + + #361 test_insns.rb:389:in `block in ': + # recursive once + def once n + return %r/#{ + if n == 0 + true + else + once(n-1) # here + end + }/ox + end + x = once(128); x = once(7); x = once(16); + x =~ "true" && $~ + #=> "" (expected "true") once + Stderr output is not empty + bootstraptest.tmp.rb:3:in `once': stack level too deep (SystemStackError) + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + ... 125 levels... + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:11:in `
' + Test_insns.rb FAIL 1/187 + FAIL 1/1197 tests failed + Make: *** [uncommon.mk:666: yes-btest-ruby] Error 1 + +--- a/bootstraptest/test_insns.rb ++++ b/bootstraptest/test_insns.rb +@@ -273,7 +273,7 @@ + end + }/ox + end +- x = once(128); x = once(7); x = once(16); ++ x = once(32); x = once(7); x = once(16); + x =~ "true" && $~ + }, + [ 'once', <<-'},', ], # { diff --git a/user/sane/APKBUILD b/user/sane/APKBUILD new file mode 100644 index 0000000..1eb5756 --- /dev/null +++ b/user/sane/APKBUILD @@ -0,0 +1,162 @@ +# Contributor: Fabio Riga +# Contributor: Valery Kartel +# Maintainer: Valery Kartel +pkgname=sane +_pkgname=sane-backends +pkgver=1.1.1 +pkgrel=3 +pkgdesc="Scanner Access Now Easy - universal scanner interface" +url="http://www.sane-project.org/" +arch="all" +license="GPL-2.0-or-later GPL-2.0-or-later-with-sane-exception Public-Domain" +makedepends="diffutils file libtool libusb-dev v4l-utils-dev net-snmp-dev + avahi-dev curl-dev libpng-dev libjpeg-turbo-dev tiff-dev libgphoto2-dev + poppler-dev linux-headers libieee1284-dev libxml2-dev" +install="$pkgname-saned.pre-install $pkgname.pre-install" +pkgusers="saned" +pkggroups="scanner" +_backends="abaton agfafocus apple artec artec_eplus48u as6e avision bh canon + canon630u canon_dr canon_pp cardscan coolscan coolscan2 coolscan3 dc25 + dc210 dc240 dell1600n_net dmc epjitsu epson epson2 epsonds escl fujitsu + genesys gphoto2 gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpsj5s + hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx kvs40xx leo lexmark + ma1509 magicolor matsushita microtek microtek2 mustek mustek_pp mustek_usb + mustek_usb2 nec net niash p5 pie pieusb pixma plustek plustek_pp ricoh ricoh2 + rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400 stv680 + tamarack teco1 teco2 teco3 test u12 umax umax_pp umax1220u v4l + xerox_mfp" + +case "$CARCH" in + x86) + options="$options !check" + _backends="$_backends qcam canon_lide70" + ;; + x86_64) + _backends="$_backends qcam canon_lide70" + ;; +esac + +_pkgdesc_dell1600n_net="SANE backend for Dell 1600n that supports colour and monochrome scans over ethernet, usb not supported" +for _backend in $_backends; do + subpackages="$subpackages $pkgname-backend-$_backend:_backend" +done +subpackages="$pkgname-doc $pkgname-dev $subpackages $pkgname-utils $pkgname-saned + $pkgname-udev::noarch $_pkgname::noarch" +source="https://gitlab.com/sane-project/backends/uploads/7d30fab4e115029d91027b6a58d64b43/sane-backends-$pkgver.tar.gz + $pkgname-fix-tests.patch::https://gitlab.com/sane-project/backends/-/commit/edfc90450ee06149537fadb3095ba4b215c5c4fa.patch + saned.initd + include.patch + pidfile.patch + check.patch + sane-backends-no-avahi-thread.patch + " +builddir="$srcdir"/$_pkgname-$pkgver + +# secfixes: +# 1.0.30-r0: +# - CVE-2020-12861 +# - CVE-2020-12862 +# - CVE-2020-12863 +# - CVE-2020-12864 +# - CVE-2020-12865 +# - CVE-2020-12866 +# - CVE-2020-12867 + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --with-docdir=/usr/share/doc/$pkgname \ + --with-usb \ + --enable-avahi \ + --disable-rpath \ + --disable-locking + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install + echo -n "" > "$pkgdir"/etc/$pkgname.d/dll.conf + install -Dm644 backend/dll.aliases "$pkgdir"/etc/$pkgname.d/dll.aliases +} + +doc() { + default_doc + mkdir -p "$subpkgdir"/usr/share/licenses/$_pkgname + mv "$subpkgdir"/usr/share/doc/$_pkgname/LICENSE \ + "$subpkgdir"/usr/share/licenses/$_pkgname +} + +saned() { + local name=${subpkgname#$pkgname-} + pkgdesc="$pkgdesc (network scanner server)" + mkdir -p "$subpkgdir"/etc/$pkgname.d "$subpkgdir"/usr + mv "$pkgdir"/etc/$pkgname.d/$name.conf "$subpkgdir"/etc/$pkgname.d + mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/ + install -Dm755 "$srcdir"/$name.initd "$subpkgdir"/etc/init.d/$name +} + +utils() { + pkgdesc="$pkgdesc (utilities)" + mkdir -p "$subpkgdir"/usr + mv "$pkgdir"/usr/bin "$subpkgdir"/usr + rm -fr "$pkgdir"/usr/share +} + +udev() { + pkgdesc="$pkgdesc (udev rules)" + install_if="$pkgname=$pkgver-r$pkgrel udev" + install -Dm644 "$builddir"/tools/udev/lib$pkgname.rules \ + "$subpkgdir"/usr/lib/udev/rules.d/49-$pkgname.rules + sed -i 's|NAME="%k", ||g' "$subpkgdir"/usr/lib/udev/rules.d/49-$pkgname.rules +} + +backends() { + local _backend; + pkgdesc="$pkgdesc (metapackage)" + depends="$pkgname-utils $pkgname-saned" + for _backend in $_backends; do + [ "$_backend" = "test" ] && continue + depends="$depends $pkgname-backend-$_backend" + done + mkdir -p "$subpkgdir" +} + +_backend() { + local name=${subpkgname#$pkgname-backend-} + depends="$pkgname" + pkgdesc=$(eval echo \$_pkgdesc_$name) + if [ ! "$pkgdesc" ]; then + # cut description from man-page + pkgdesc=$(tr '\n' ' ' < "$builddir"/doc/$pkgname-$name.man) + pkgdesc=${pkgdesc#*\- } + pkgdesc=${pkgdesc%% .SH *}; + fi + mkdir -p "$subpkgdir"/usr/lib/$pkgname \ + "$subpkgdir"/etc/$pkgname.d/dll.d + mv "$pkgdir"/usr/lib/$pkgname/lib$pkgname-$name.* \ + "$subpkgdir"/usr/lib/$pkgname + echo "$name" > "$subpkgdir"/etc/$pkgname.d/dll.d/$name + if [ -f "$pkgdir"/etc/$pkgname.d/$name.conf ]; then + mv "$pkgdir"/etc/$pkgname.d/$name.conf \ + "$subpkgdir"/etc/$pkgname.d + fi + if [ -f "$pkgdir"/usr/bin/$name ]; then + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/$name "$subpkgdir"/usr/bin + fi +} + +sha512sums=" +25bd9f90d550cfe6a6d01c48e83716a53f4b0e3a294287e455ecb5e5b80c8fe1699f45c6c87f694475cceb85745c70597e18a7b1094669d5091c5fb183dfe94d sane-backends-1.1.1.tar.gz +f4187409a85dbdb95213948fcc1bb34cf319a3a5ae34093d1e9e7983dfc89336c75132713e6f3113ad7ef2b0ed78bdc0c6e031796fca7004787776f46c742ec6 sane-fix-tests.patch +0a06eaa28b345202f2bdf8361e06f843bb7a010b7d8f80132f742672c94249c43f64031cefa161e415e2e2ab3a53b23070fb63854283f9e040f5ff79394ac7d1 saned.initd +1779ff8beb1ba5f9238c25d819a7f0045f7e257c19b511315feb85650e445ca86450a9e1d7ff8650499d3dae808589a6c2e358d5f3f39a3f40ce4999179b86d6 include.patch +09505943f9441854a6c333f19e2535b4a646a8cc060fe82c6261e7d29c72773ebe98d43a91acc951f4336a3c8b4c84ab7c7b0763426136b4b59d9546bc2fa8c0 pidfile.patch +cfa327209efd9a2a2db7cbcf571852959823aaa19b43d5f6415834cd5ae38b6324ecae16779f6f896aa0d7ac890fe23244100b7d6a68e5e9d52cd38ec82bfac8 check.patch +6e6b6336203ee6d1ac96ed2d742e181fb65e8d93386b76d70b6359afbcce98343d89ec8b2b611261f79901779a2999f9262c3f85898bd15c74b00348e0cd3cd7 sane-backends-no-avahi-thread.patch +" diff --git a/user/sane/check.patch b/user/sane/check.patch new file mode 100644 index 0000000..afbc7ef --- /dev/null +++ b/user/sane/check.patch @@ -0,0 +1,11 @@ +--- a/testsuite/sanei/Makefile.in ++++ b/testsuite/sanei/Makefile.in +@@ -77,7 +77,7 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-check_PROGRAMS = sanei_usb_test$(EXEEXT) test_wire$(EXEEXT) \ ++check_PROGRAMS = test_wire$(EXEEXT) \ + sanei_check_test$(EXEEXT) sanei_config_test$(EXEEXT) \ + sanei_constrain_test$(EXEEXT) + subdir = testsuite/sanei diff --git a/user/sane/include.patch b/user/sane/include.patch new file mode 100644 index 0000000..518d3b4 --- /dev/null +++ b/user/sane/include.patch @@ -0,0 +1,11 @@ +--- a/include/sane/sane.h ++++ b/include/sane/sane.h +@@ -16,6 +16,8 @@ + #ifndef sane_h + #define sane_h + ++#include ++ + #ifdef __cplusplus + extern "C" { + #endif diff --git a/user/sane/pidfile.patch b/user/sane/pidfile.patch new file mode 100644 index 0000000..457755b --- /dev/null +++ b/user/sane/pidfile.patch @@ -0,0 +1,11 @@ +--- a/frontend/saned.c ++++ b/frontend/saned.c +@@ -224,7 +224,7 @@ + int numchildren; + + #define SANED_CONFIG_FILE "saned.conf" +-#define SANED_PID_FILE "/var/run/saned.pid" ++#define SANED_PID_FILE "/run/saned/saned.pid" + + #define SANED_SERVICE_NAME "sane-port" + #define SANED_SERVICE_PORT 6566 diff --git a/user/sane/sane-backends-no-avahi-thread.patch b/user/sane/sane-backends-no-avahi-thread.patch new file mode 100644 index 0000000..149a305 --- /dev/null +++ b/user/sane/sane-backends-no-avahi-thread.patch @@ -0,0 +1,48 @@ +diff --git a/backend/net.c.orig b/backend/net.c +index 7c4aae9..0adfbc2 100644 +--- a/backend/net.c.orig ++++ b/backend/net.c +@@ -1043,12 +1043,12 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize) + continue; + } + #if WITH_AVAHI +- avahi_threaded_poll_lock (avahi_thread); ++ if(avahi_thread) avahi_threaded_poll_lock (avahi_thread); + #endif /* WITH_AVAHI */ + DBG (2, "sane_init: trying to add %s\n", device_name); + add_device (device_name, 0); + #if WITH_AVAHI +- avahi_threaded_poll_unlock (avahi_thread); ++ if(avahi_thread) avahi_threaded_poll_unlock (avahi_thread); + #endif /* WITH_AVAHI */ + } + +@@ -1094,12 +1094,12 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize) + continue; + #endif /* ENABLE_IPV6 */ + #if WITH_AVAHI +- avahi_threaded_poll_lock (avahi_thread); ++ if(avahi_thread) avahi_threaded_poll_lock (avahi_thread); + #endif /* WITH_AVAHI */ + DBG (2, "sane_init: trying to add %s\n", host); + add_device (host, 0); + #if WITH_AVAHI +- avahi_threaded_poll_unlock (avahi_thread); ++ if(avahi_thread) avahi_threaded_poll_unlock (avahi_thread); + #endif /* WITH_AVAHI */ + } + free (copy); +@@ -1517,11 +1517,11 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle) + "sane_open: device %s not found, trying to register it anyway\n", + nd_name); + #if WITH_AVAHI +- avahi_threaded_poll_lock (avahi_thread); ++ if(avahi_thread) avahi_threaded_poll_lock (avahi_thread); + #endif /* WITH_AVAHI */ + status = add_device (nd_name, &dev); + #if WITH_AVAHI +- avahi_threaded_poll_unlock (avahi_thread); ++ if(avahi_thread) avahi_threaded_poll_unlock (avahi_thread); + #endif /* WITH_AVAHI */ + if (status != SANE_STATUS_GOOD) + { diff --git a/user/sane/sane-saned.pre-install b/user/sane/sane-saned.pre-install new file mode 100644 index 0000000..caad990 --- /dev/null +++ b/user/sane/sane-saned.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +adduser -SDH -h /run/saned -s /sbin/nologin -G scanner -g saned saned 2>/dev/null + +exit 0 diff --git a/user/sane/sane.pre-install b/user/sane/sane.pre-install new file mode 100644 index 0000000..b75c867 --- /dev/null +++ b/user/sane/sane.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +addgroup -S scanner 2>/dev/null + +exit 0 diff --git a/user/sane/saned.initd b/user/sane/saned.initd new file mode 100644 index 0000000..6482073 --- /dev/null +++ b/user/sane/saned.initd @@ -0,0 +1,14 @@ +#!/sbin/openrc-run + +description="SANE network scanner server" + +owner=saned +pidfile=/run/saned/saned.pid +cfgfile=/etc/sane.d/saned.conf +command=/usr/sbin/saned +command_args="-a $owner" +required_files="$cfgfile" + +start_pre() { + checkpath -dm755 -o $owner ${pidfile%/*} +} diff --git a/user/scanservjs/APKBUILD b/user/scanservjs/APKBUILD index 9effbf6..691cb99 100644 --- a/user/scanservjs/APKBUILD +++ b/user/scanservjs/APKBUILD @@ -1,7 +1,8 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=scanservjs -pkgver=3.0.4 +pkgver=2.21.0 pkgrel=0 pkgdesc="SANE scanner nodejs web ui" arch="noarch" @@ -27,42 +28,38 @@ source=" build() { # Uses version of webpack which is partially broken on nodejs >16 export NODE_OPTIONS=--openssl-legacy-provider - npm install --omit=dev --only=prod --loglevel=error + npm run install npm run build + + cd dist + npm install --production } package() { - _webappdir="$pkgdir"/usr/share/webapps/scanservjs # install documentation install -Dm644 ./docs/* -t "$pkgdir/usr/share/doc/scanservjs/" - install -d \ - "$pkgdir/usr/share/webapps" \ - "$pkgdir/etc" \ - "$pkgdir/var/lib" + install -d "$pkgdir/usr/share/webapps/scanservjs" "$pkgdir/etc/webapps/scanservjs" "$pkgdir/var/lib/webapps/scanservjs" # install main files - cp -r dist "$_webappdir" + cp -r dist/* "$pkgdir/usr/share/webapps/scanservjs/" + rm -r "$pkgdir"/usr/share/webapps/scanservjs/scanservjs.service + rm -r "$pkgdir"/usr/share/webapps/scanservjs/installer.sh - # Get rid of map files - find "$pkgdir" -name "*.map" -type f -delete - - # Move and tidy up files - mv -v "$_webappdir"/data "$pkgdir"/var/lib/scanservjs - mv -v "$_webappdir"/config "$pkgdir"/etc/scanservjs - - # Create symlinks - ln -sv /var/lib/scanservjs "$_webappdir"/data - ln -sv /etc/scanservjs "$_webappdir"/config - - # and the rest ... chmod +x "$pkgdir"/usr/share/webapps/scanservjs/server/server.js + mv "$pkgdir"/usr/share/webapps/scanservjs/config/* "$pkgdir/etc/webapps/scanservjs/" + mv "$pkgdir"/usr/share/webapps/scanservjs/data/* "$pkgdir/var/lib/webapps/scanservjs/" + + rmdir "$pkgdir"/usr/share/webapps/scanservjs/config "$pkgdir/usr/share/webapps/scanservjs/data" + ln -s /etc/webapps/scanservjs "$pkgdir/usr/share/webapps/scanservjs/config" + ln -s /var/lib/webapps/scanservjs "$pkgdir/usr/share/webapps/scanservjs/data" + install -Dm 755 "$srcdir"/scanservjs.initd "$pkgdir"/etc/init.d/scanservjs install -Dm 644 "$srcdir"/scanservjs.conf "$pkgdir"/etc/conf.d/scanservjs } sha512sums=" -f19b1bd5acb01f82fa98bc79f9d401f1b6c19aa9e4319d75efd4b82a6db44a348784953ae1542d362d3b8e328a1a469e9320fd7c937e6aa102a19a36cd8ce9e8 scanservjs-3.0.4.tar.gz +1ee256bc6c38ccf1fcf196926f7fdbff6ff8d7e800a414ee5d45ad3b430c3f9055856d96181520b2f24e2d067f5ffc49fb7fd543fff8d0352517d1b7ccd12fd2 scanservjs-2.21.0.tar.gz f58dd5e1c4936d7e25065a295f5d01e64189cdefe92ba54fc875348a59a30b2055c93464d510a52820e66b42a69d0626d3513c93ab60b0768e1e8d5b3538bb13 scanservjs.initd 9d4fdab3803a598c729bf703369d8594b383163b05045f31e516f184a87d8deef8c8b40942d324e04bdf751ac9d63f7de25b13364f9f30888eba2af873369b36 scanservjs.conf " diff --git a/user/scantopl/APKBUILD b/user/scantopl/APKBUILD index a68b668..725e413 100644 --- a/user/scantopl/APKBUILD +++ b/user/scantopl/APKBUILD @@ -1,10 +1,11 @@ -# Contributor: Antoine Martin (ayakael) # Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + pkgname=scantopl -pkgver=1.0.1 +pkgver=0.0.1 pkgrel=0 pkgdesc="Automatically send scanservjs scanned document to paperless-ng" -_gittag="v$pkgver" +_gittag="5c5d71a9e1cf8985d374453c866c1711692334e2" url="https://github.com/Celedhrim/scantopl" arch="all" license="WTFPL" @@ -15,7 +16,7 @@ source=" scantopl.initd scantopl.conf " -builddir="$srcdir/$pkgname-${_gittag/v}" +builddir="$srcdir/$pkgname-$_gittag" options="!check" # No testsuite build() { @@ -30,7 +31,7 @@ package() { install -Dm644 "$srcdir"/scantopl.conf "$pkgdir"/etc/conf.d/scantopl } sha512sums=" -e5238c4f8e727e80c5c66441e8de5eeb775fdfe05ee85509c942c2516e8996243cd1b72c7c87c8bbee2e0475cc0075244aa28164a746f6e7eded253bcb707ba7 scantopl-1.0.1.tar.gz +f47823ffdea68de71ce9f3a347f31eee3556aae2087f68d2cf4078b9694894d06fc8de94e806ad34358e0ec636ace6dc5d97273c3102192584cb540ede3bd288 scantopl-0.0.1.tar.gz 8238411fe8881be6690a583a6bfc71e52f3131320f5d92bb36f8af61802980265a8cf5250eb699d9214f7c6c168d14c39867a09587fb07841a8504a6a28db74b scantopl.initd ee2e631901b1d88c0dede6587318e44884255a7c82e090371f017dbb91563c16f0567c0d45b3183d0a8abb3ee4b71a33f3d79258ad2b2f6d8930a5bc7625070a scantopl.conf " diff --git a/unmaintained/soci/APKBUILD b/user/soci/APKBUILD similarity index 100% rename from unmaintained/soci/APKBUILD rename to user/soci/APKBUILD diff --git a/user/tandoor-recipes/APKBUILD b/user/tandoor-recipes/APKBUILD deleted file mode 100644 index 8a680e0..0000000 --- a/user/tandoor-recipes/APKBUILD +++ /dev/null @@ -1,133 +0,0 @@ -# Contributor: Antoine Martin (ayakael) -# Maintainer: Antoine Martin (ayakael) -pkgname=tandoor-recipes -pkgver=1.5.12 -pkgrel=1 -pkgdesc="Application for managing recipes, planning meals, building shopping lists, etc." -# armv7: oom -arch="noarch !armv7" -url="https://github.com/TandoorRecipes/recipes" -license="AGPL-3.0-only" -depends=" - postgresql - postgresql-contrib - procps-ng - pwgen - py3-beautifulsoup4 - py3-bleach - py3-boto3 - py3-crispy-bootstrap4 - py3-cryptography - py3-django - py3-django-allauth - py3-django-annoying - py3-django-auth-ldap - py3-django-autocomplete-light - py3-django-cleanup - py3-django-cors-headers - py3-django-crispy-forms - py3-django-debug-toolbar - py3-django-hcaptcha - py3-django-js-reverse - py3-django-oauth-toolkit - py3-django-prometheus - py3-django-rest-framework - py3-django-scopes - py3-django-storages - py3-django-tables2 - py3-django-treebeard - py3-django-webpack-loader - py3-dotenv - py3-drf-writable-nested - py3-gunicorn - py3-icalendar - py3-jinja2 - py3-ldap - py3-lxml - py3-markdown - py3-microdata - py3-pillow - py3-psycopg2 - py3-pyppeteer - py3-pytest - py3-pytest-django - py3-pytest-factoryboy - py3-pytube - py3-recipe-scrapers - py3-requests - py3-six - py3-uritemplate - py3-validators~0.20 - py3-webdavclient3 - py3-whitenoise - py3-yaml - nginx - xsel -" -makedepends="nodejs postgresql postgresql-libs py3-virtualenv nginx yarn npm" -source=" - $pkgname-$pkgver.tar.gz::https://github.com/TandoorRecipes/recipes/archive/refs/tags/$pkgver.tar.gz - recipes.openrc - recipes.nginx - recipes-manage.sh - " -builddir="$srcdir"/recipes-$pkgver -install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-install" -subpackages="$pkgname-openrc" -pkgusers="recipes" -pkggroups="recipes" - -build() { - cd ./vue - msg "Building nodejs libraries" - yarn --cache-folder "$srcdir"/yarn-cache --ignore-engines install - yarn --cache-folder "$srcdir"/yarn-cache build - - cd ../ - msg "Building static files" - ./manage.py collectstatic --no-input - ./manage.py collectstatic_js_reverse - echo "TANDOOR_VERSION = '$pkgver'" > cookbook/version_info.py - echo "TANDOOR_REF = '$pkgver'" >> cookbook/version_info.py - echo "VERSION_INFO = [{'name': 'Tandoor ', 'version': '$pkgver', 'website': 'https://github.com/TandoorRecipes/recipes', 'commit_link': 'https://github.com/TandoorRecipes/recipes/releases/tag/$pkgver', 'ref': '$pkgver', 'branch': 'master', 'tag': '$pkgver'}]" >> cookbook/version_info.py -} - -package() { - - # install files - mkdir -p "$pkgdir"/usr/share/webapps/recipes - cp -r manage.py vue recipes staticfiles cookbook "$pkgdir"/usr/share/webapps/recipes - ln -s /etc/tandoor/recipes.conf "$pkgdir"/usr/share/webapps/recipes/.env - rm -rf \ - "$pkgdir"/usr/share/webapps/recipes/vue/node_modules/.cache \ - "$pkgdir"/usr/share/webapps/recipes/vue/node_modules/clipboardy/fallbacks - - # openrc and configs - install -Dm755 "$srcdir"/recipes.openrc \ - "$pkgdir"/etc/init.d/recipes - install -Dm755 "$srcdir"/recipes.nginx \ - "$pkgdir"/etc/nginx/http.d/recipes.conf - install -Dm755 "$builddir"/nginx/conf.d/errorpages/http502.html \ - "$pkgdir"/etc/nginx/http.d/errorpages/http502.html - install -Dm640 "$builddir"/.env.template \ - "$pkgdir"/etc/tandoor/recipes.conf - chown root:www-data "$pkgdir"/etc/tandoor/recipes.conf - sed -i 's|SECRET_KEY=|SECRET_KEY=@@SECRET_KEY@@|' "$pkgdir"/etc/tandoor/recipes.conf - sed -i 's|POSTGRES_HOST.*|POSTGRES_HOST=127.0.0.1|' "$pkgdir"/etc/tandoor/recipes.conf - sed -i 's|POSTGRES_USER.*|POSTGRES_USER=recipes|' "$pkgdir"/etc/tandoor/recipes.conf - sed -i 's|POSTGRES_DB.*|POSTGRES_DB=recipes|' "$pkgdir"/etc/tandoor/recipes.conf - - # Install wrapper script to /usr/bin. - install -m755 -D "$srcdir"/recipes-manage.sh \ - "$pkgdir"/usr/bin/recipes-manage - - # ln - ln -s /var/lib/recipes/media "$pkgdir"/usr/share/webapps/recipes/mediafiles -} - -sha512sums=" -ad1a6fafda996631dc162d16930e55498efea13564ce44e58efef887113bbe3479cb02188ab5aa05fb1dd78f85999fac774231fd34c750a33b00eab6ca4080d9 tandoor-recipes-1.5.12.tar.gz -6d53affec525207a86d8b26c6e5ac7a16586756520e5605f7fe1ea82212a93d051237da45893c8b4002a6663e7538d8e78ab7fc392dc420ba7e31e0cb11d3cae recipes.openrc -1ae29eb9342ad697d0e1e0cc600cd63c4ea6ce3f92b2bdc26602a95015b9ee91f1d40df65e92cad53b980fa3c15989ca9874bd0df62d6c7030ea97d396e37d2c recipes.nginx -521bc8c71bbf900bb37ef2db4d79ab16c3a068d74de57d8cfbe82feffab6041c58f94ddbb57ac1f8feb68535dd32679b79169454abfc4fa04548b025282ca507 recipes-manage.sh -" diff --git a/user/tandoor-recipes/recipes-manage.sh b/user/tandoor-recipes/recipes-manage.sh deleted file mode 100644 index 7db05b7..0000000 --- a/user/tandoor-recipes/recipes-manage.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -BUNDLE_DIR='/usr/share/webapps/recipes' - -cd $BUNDLE_DIR - -if [ "$(id -un)" != 'recipes' ]; then - exec su recipes -c '"$0" "$@"' -- ./manage.py "$@" -else - exec ./manage.py "$@" -fi diff --git a/user/tandoor-recipes/recipes.nginx b/user/tandoor-recipes/recipes.nginx deleted file mode 100644 index c3c24f0..0000000 --- a/user/tandoor-recipes/recipes.nginx +++ /dev/null @@ -1,29 +0,0 @@ -server { - listen 80; - server_name localhost; - - client_max_body_size 128M; - - # serve media files - location /static/ { - alias /usr/share/webapps/recipes/staticfiles/; - } - - location /media/ { - alias /var/lib/recipes/media/; - } - - location / { - proxy_set_header Host $http_host; - proxy_pass http://unix:/run/recipes/recipes.sock; - proxy_set_header X-Forwarded-Proto $scheme; - - error_page 502 /errors/http502.html; - } - - location /errors/ { - alias /etc/nginx/http.d/errorpages/; - internal; - } -} - diff --git a/user/tandoor-recipes/recipes.openrc b/user/tandoor-recipes/recipes.openrc deleted file mode 100644 index 770f082..0000000 --- a/user/tandoor-recipes/recipes.openrc +++ /dev/null @@ -1,36 +0,0 @@ -#!/sbin/openrc-run - -name="$RC_SVCNAME" -cfgfile="/etc/conf.d/$RC_SVCNAME.conf" -pidfile="/run/recipes/$RC_SVCNAME.pid" -working_directory="/usr/share/webapps/recipes" -command="/usr/bin/gunicorn" -command_args=" - --error-logfile /var/log/recipes/gunicorn_err.log - --log-level debug - --capture-output - --bind unix:/run/recipes/recipes.sock - recipes.wsgi:application - " -command_user="recipes" -command_group="www-data" -start_stop_daemon_args="" -command_background="yes" - -depend() { - need postgresql - need nginx -} - -start_pre() { - cd "$working_directory" - checkpath --directory --owner $command_user:$command_group --mode 0775 \ - /var/log/recipes \ - /run/recipes \ - /var/lib/recipes/media -} - -stop_pre() { - ebegin "Killing child processes" - kill $(ps -o pid= --ppid $(cat $pidfile)) || true -} diff --git a/user/tandoor-recipes/tandoor-recipes.post-install b/user/tandoor-recipes/tandoor-recipes.post-install deleted file mode 100755 index 778ff75..0000000 --- a/user/tandoor-recipes/tandoor-recipes.post-install +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -set -eu - -config_file='/etc/tandoor/recipes.conf' - -if [ $(grep '@@SECRET_KEY@@' "$config_file") ]; then - echo "* Generating random secret in $config_file" >&2 - - secret_key="$(pwgen -s 50 1)" - sed -i "s|@@SECRET_KEY@@|$secret_key|" "$config_file" -fi - -if [ "${0##*.}" = 'post-upgrade' ]; then - cat >&2 <<-EOF - * - * To finish Recipes upgrade run: - * - * recipes-manage migrate - * - EOF -else - cat >&2 <<-EOF - * - * 1. Adjust settings in $config_file - * - * 2. Create database for Recipes: - * - * psql -c "CREATE ROLE recipes PASSWORD 'top-secret' INHERIT LOGIN;" - * psql -c "CREATE DATABASE recipes OWNER recipes ENCODING 'UTF-8';" - * psql -c "CREATE EXTENSION pg_trgm;" - * - * 3. User optimizations: - * - * psql -c "ALTER ROLE recipes SET client_encoding TO 'utf8';" - * psql -c "ALTER ROLE recipes SET default_transaction_isolation TO 'read committed';" - * psql -c "ALTER ROLE recipes SET timezone TO 'UTC';" - * - * 4. Run "recipes-manage migrate" - * - EOF -fi diff --git a/user/tandoor-recipes/tandoor-recipes.post-upgrade b/user/tandoor-recipes/tandoor-recipes.post-upgrade deleted file mode 120000 index 9822b5f..0000000 --- a/user/tandoor-recipes/tandoor-recipes.post-upgrade +++ /dev/null @@ -1 +0,0 @@ -tandoor-recipes.post-install \ No newline at end of file diff --git a/user/tandoor-recipes/tandoor-recipes.pre-install b/user/tandoor-recipes/tandoor-recipes.pre-install deleted file mode 100644 index 26b5121..0000000 --- a/user/tandoor-recipes/tandoor-recipes.pre-install +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -recipes_dir='/var/lib/recipes' - -if ! getent group recipes 1>/dev/null; then - echo '* Creating group recipes' 1>&2 - - addgroup -S recipes -fi - -if ! id recipes 2>/dev/null 1>&2; then - echo '* Creating user recipes' 1>&2 - - adduser -DHS -G recipes -h "$recipes_dir" -s /bin/sh \ - -g "added by apk for recipes" recipes - passwd -u recipes 1>/dev/null # unlock -fi - -if ! id -Gn recipes | grep -Fq www-data; then - echo '* Adding user recipes to group www-data' 1>&2 - - addgroup recipes www-data -fi - -exit 0 diff --git a/user/u-boot-rm/APKBUILD b/user/u-boot-rm/APKBUILD new file mode 100644 index 0000000..2a923c8 --- /dev/null +++ b/user/u-boot-rm/APKBUILD @@ -0,0 +1,125 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=u-boot-rm +pkgver=2020.09 +_rm1tag=97b35fdddf0077abd2e0f0409b94ef20adbe8565 +_rm2tag=47c91918aa7724c16b6eaf87cf5dfbf4548eafc1 +pkgrel=8 +pkgdesc="u-boot bootloader common files" +url="https://www.denx.de/wiki/U-Boot/" +arch="armv7" +license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause eCos-2.0 IBM-pibs + ISC LGPL-2.0-only LGPL-2.1-only X11" +options="!check" # no tests +makedepends=" + bc + bison + dtc + flex + gnutls-dev + linux-headers + openssl-dev>3 + py3-elftools + py3-setuptools + python3-dev + swig + util-linux-dev + " +source=" + u-boot-rm1-$_rm1tag.tar.gz::https://github.com/reMarkable/uboot/archive/$_rm1tag.tar.gz + u-boot-rm2-$_rm2tag.tar.gz::https://github.com/reMarkable/uboot/archive/$_rm2tag.tar.gz + update-u-boot + README.txt + rm1-uboot-config-patch.diff + rm2-uboot-config-patch.diff + " +builddir="$srcdir" + +#rm2:zero-sugar broken +case "$CARCH" in +arm*) board_configs=" + zerogravitas:zero-gravitas + ";; +esac + +for board_config in $board_configs; do + _allboards="$_allboards $pkgname-${board_config%%:*}" +done + +subpackages="$pkgname-all:_all $_allboards" +prepare() { + default_prepare + + cd "$builddir"/uboot-$_rm1tag + patch -p1 -i "$srcdir"/rm1-uboot-config-patch.diff + # patch -p1 -i "$srcdir"/rm1-ttygs0-serial.diff + cd "$builddir"/uboot-$_rm2tag + patch -p1 -i "$srcdir"/rm2-uboot-config-patch.diff +} + +build() { + local board_config board + for board_config in $board_configs; do + local configs="${board_config#*:}" + for board in ${configs//,/ }; do + msg "Building u-boot for $board" + case $board in + zero-gravitas) cd "$builddir"/uboot-$_rm1tag;; + zero-sugar) cd "$builddir"/uboot-$_rm2tag;; + esac + + touch include/config.h + LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > include/timestamp_autogenerated.h + LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h + + export BUILD_DIR="$builddir"/build/$board + mkdir -p "$BUILD_DIR" + make O="$BUILD_DIR" ${board}_config + make O="$BUILD_DIR" all + done + done +} + +package() { + mkdir -p "$pkgdir"/usr/share/$pkgname "$pkgdir"/usr/sbin + install "$srcdir"/README.txt "$pkgdir"/usr/share/$pkgname/README.txt + install "$srcdir"/update-u-boot "$pkgdir"/usr/sbin +} + +_all() { + pkgdesc="u-boot for all boards (meta package)" + depends="$_allboards" + + mkdir -p "$subpkgdir"/ +} + +_split_boards() { + cd "$builddir"/build + pkgdesc="u-boot for $1" + depends="u-boot-rm" + shift + local board + for board; do + msg "Including board $board" + mkdir -p "$subpkgdir"/usr/share/$pkgname/$board + export BUILD_DIR="$builddir"/build/$board + + cp "$BUILD_DIR"/u-boot.imx "$subpkgdir"/usr/share/$pkgname/$board/u-boot.bin + done +} + +for board_config in $board_configs; do + _board="${board_config%%:*}" + _configs="${board_config#*:}" + eval "$_board() { _split_boards $_board ${_configs//,/ }; }" +done + +sha512sums=" +7cc8d513cac1d63ee5119529caa056164ee3bc3633da5d880fbfb344b770c7c53c41475d42dd129b505390dcd5449e14524afc06f7cdba9354af7e70a7035ef9 u-boot-rm1-97b35fdddf0077abd2e0f0409b94ef20adbe8565.tar.gz +d0d18b123c4281285a8b3c1afd9ef623b48a33506399c8e0dbc393f22d967ee3e5df7030aab26c4fe8cad614f3f22f1ea5d6b5bb4ef5cc46fffe56b7ac7c3c28 u-boot-rm2-47c91918aa7724c16b6eaf87cf5dfbf4548eafc1.tar.gz +a905e4dcdb2704e0b1d4f0ab4a6333d3f1ffcec5c3a8359f5789800eb2114dad673cf0b5f24cae3a590f27333dff2e96b6f1efae5a466f9281a3d65efe403a1e update-u-boot +f8c9bb6e84d6f0620c976ac7ad5dd7ec7ff9dfdd4b1d03d2bf6653e7beccf80bdf2debfc92fb1f696dba92fb40287d3c45897e0078951451d0835cb61a5f16d1 README.txt +673cb917cc565ae245d4a7d659227bc240473112bc9c73ae184a64ce74be7994273d6dc4db17194d348941f83a42b3b67d3140f6f23c37c13d6dc93f7d76cc39 rm1-uboot-config-patch.diff +0e98404ca6d20eb01bd9c129b05e2eb10c60a692a56adc221ea283b4bfe7b0bcc2851121d4c3fe51e07a9784c339f7ccb221e0cc3f3603144fec46be66d0cbcc rm2-uboot-config-patch.diff +" diff --git a/user/u-boot-rm/README.txt b/user/u-boot-rm/README.txt new file mode 100644 index 0000000..c342913 --- /dev/null +++ b/user/u-boot-rm/README.txt @@ -0,0 +1,32 @@ +WandBoard +--------- + +- ROM loads boot loader from raw MMC sectors at fixed address +- NOTE: 1st partition needs to start after boot loader + +- Install u-boot with: + dd if=wandboard/SPL of=/dev/mmcblk0 bs=1k seek=1 + dd if=wandboard/u-boot.img of=/dev/mmcblk0 bs=1k seek=69 + sync + + (Note - the SD card node may vary, so adjust this as needed). + +- Insert the SD card into the slot located in the bottom of the board + (same side as the mx6 processor) + +BeagleBoard +----------- + +- ROM looks for 1st partition with FAT, and loads MLO from it +- NOTE: MLO needs to be the first file created on this partition + +- Install u-boot with: + cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/ + +Sunxi (Cubie* etc) +------------------ + +- ROM loads boot loader from SD-CARD sectors at fixed address +- Install u-boot with: + sudo dd if=/u-boot-sunxi-with-spl.bin of=/dev/sda bs=1024 seek=8 + diff --git a/user/u-boot-rm/fix-linking-with-ld.patch b/user/u-boot-rm/fix-linking-with-ld.patch new file mode 100644 index 0000000..827c566 --- /dev/null +++ b/user/u-boot-rm/fix-linking-with-ld.patch @@ -0,0 +1,52 @@ +From 58772283210e15f8d803db4aa67c877d668db867 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/u-boot/u-boot/commit/58772283210e15f8d803db4aa67c877d668db867 +From: Alistair Delva +Date: Wed, 20 Oct 2021 21:31:33 +0000 +Subject: [PATCH] x86: Fix linking u-boot with ld.lld + +When linking the final u-boot binary with LLD, the following link errors +are seen: + +ld.lld: error: can't create dynamic relocation R_386_32 against local + symbol in readonly segment; recompile object files with + -fPIC or pass '-Wl,-z,notext' to allow text relocations + in the output +>>> defined in arch/x86/cpu/start.o +>>> referenced by arch/x86/cpu/start.o:(.text.start+0x32) +[...] +>>> defined in arch/x86/cpu/start16.o +>>> referenced by arch/x86/cpu/start16.o:(.start16+0x1C) + +According to Nick Desaulniers: + +"This is a known difference between GNU and LLVM linkers; the GNU + linkers permit relocations in readonly segments (making them not read + only), LLVM does not (by default)." + +Since U-Boot apparently seems to use relocations in readonly segments, +change the global linker flags to permit them when linking with LLD by +specifying '-z notext'. + +Signed-off-by: Alistair Delva +Cc: Nick Desaulniers +Cc: Simon Glass +Cc: Bin Meng +Reviewed-by: Simon Glass +--- + Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/Makefile b/Makefile +index c0ea933cb636..286757986c02 100644 +--- a/Makefile ++++ b/Makefile +@@ -776,6 +776,9 @@ ifneq ($(CONFIG_SYS_TEXT_BASE),) + LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) + endif + ++# ld.lld support ++LDFLAGS_u-boot += -z notext ++ + # Normally we fill empty space with 0xff + quiet_cmd_objcopy = OBJCOPY $@ + cmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \ diff --git a/user/u-boot-rm/rm1-ttygs0-serial.diff b/user/u-boot-rm/rm1-ttygs0-serial.diff new file mode 100644 index 0000000..9596fc4 --- /dev/null +++ b/user/u-boot-rm/rm1-ttygs0-serial.diff @@ -0,0 +1,13 @@ +diff --git a/include/configs/zero-gravitas.h.orig b/include/configs/zero-gravitas.h +index 818ed56..6eb7447 100644 +--- a/include/configs/zero-gravitas.h.orig ++++ b/include/configs/zero-gravitas.h +@@ -73,7 +73,7 @@ + "active_partition=2\0" \ + "bootlimit=1\0" \ + "por=undefined\0" \ +- "mmcargs=setenv bootargs console=${console},${baudrate} " \ ++ "mmcargs=setenv bootargs console=${console},${baudrate} console=ttyGS0,115200 " \ + "root=/dev/mmcblk1p2 rootwait rootfstype=ext4 rw por=${por};\0" \ + "loadimage=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ + "loadfdt=ext4load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ diff --git a/user/u-boot-rm/rm1-uboot-config-patch.diff b/user/u-boot-rm/rm1-uboot-config-patch.diff new file mode 100644 index 0000000..55d6ce1 --- /dev/null +++ b/user/u-boot-rm/rm1-uboot-config-patch.diff @@ -0,0 +1,83 @@ +diff --git a/include/configs/zero-gravitas.h b/include/configs/zero-gravitas.h +index 074f171422..818ed56892 100644 +--- a/include/configs/zero-gravitas.h ++++ b/include/configs/zero-gravitas.h +@@ -71,12 +71,10 @@ + "splashimage=0x80000000\0" \ + "splashpos=m,m\0" \ + "active_partition=2\0" \ +- "fallback_partition=3\0" \ + "bootlimit=1\0" \ + "por=undefined\0" \ + "mmcargs=setenv bootargs console=${console},${baudrate} " \ +- "systemd.crash_reboot=true memtest " \ +- "root=/dev/mmcblk1p${active_partition} rootwait rootfstype=ext4 quiet rw por=${por};\0" \ ++ "root=/dev/mmcblk1p2 rootwait rootfstype=ext4 rw por=${por};\0" \ + "loadimage=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ + "loadfdt=ext4load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ + "mmcboot=echo Booting from mmc ...; " \ +@@ -89,41 +87,13 @@ + "echo WARN: Cannot load the DT; " \ + "fi; " \ + "fi; " \ +- "fi;\0" \ +- "memboot=echo Booting from memory...; " \ +- "setenv bootargs console=${console},${baudrate} " \ +- "g_mass_storage.stall=0 g_mass_storage.removable=1 " \ +- "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\ +- "g_mass_storage.iSerialNumber=\"\" rdinit=/linuxrc; "\ +- "bootz ${loadaddr} ${initrd} ${fdt_addr};\0" \ +- "altbootcmd=echo Running from fallback root...; " \ +- "run memboot; " \ +- "if test ${bootcount} -gt 10; then " \ +- "echo WARN: Failed too much, resetting bootcount and turning off; " \ +- "setenv bootcount 0; " \ +- "saveenv; " \ +- "poweroff; " \ +- "fi; " \ +- "setenv mmcpart ${fallback_partition}; " \ +- "setenv bootargs console=${console},${baudrate} " \ +- "root=/dev/mmcblk1p${fallback_partition} rootwait rootfstype=ext4 quiet rw " \ +- "systemd.log_level=debug systemd.log_target=kmsg memtest " \ +- "log_buf_len=1M printk.devkmsg systemd.journald.forward_to_console=1; " \ +- "run mmcboot;\0" \ ++ "fi;\0" + + /* Always try to boot from memory first, in case of USB download mode */ + #define CONFIG_BOOTCOMMAND \ +- "if test ! -e mmc 1:1 uboot.env; then " \ +- "saveenv; " \ +- "fi; " \ +- "run memboot; " \ + "run mmcargs; " \ + "setenv mmcpart ${active_partition}; " \ +- "run mmcboot; " \ +- "echo WARN: unable to boot from either RAM or eMMC; " \ +- "setenv upgrade_available 1; " \ +- "saveenv; " \ +- "reset; " ++ "run mmcboot; " + + #ifdef CONFIG_BOOTDELAY + #undef CONFIG_BOOTDELAY +@@ -157,18 +127,8 @@ + /* Environment organization */ + #define CONFIG_ENV_SIZE SZ_8K + +-#define CONFIG_ENV_IS_IN_FAT +-/*#define CONFIG_ENV_IS_NOWHERE*/ +- +-#ifdef CONFIG_ENV_IS_IN_FAT +-#define CONFIG_BOOTCOUNT_LIMIT +-#define CONFIG_BOOTCOUNT_ENV +- +-#define FAT_ENV_INTERFACE "mmc" +-#define FAT_ENV_DEVICE_AND_PART "1:1" +-#define CONFIG_FAT_WRITE +-#define FAT_ENV_FILE "uboot.env" +-#endif ++/*#define CONFIG_ENV_IS_IN_FAT*/ ++#define CONFIG_ENV_IS_NOWHERE + + #ifdef CONFIG_CMD_SF + #define CONFIG_MXC_SPI diff --git a/user/u-boot-rm/rm2-uboot-config-patch.diff b/user/u-boot-rm/rm2-uboot-config-patch.diff new file mode 100644 index 0000000..4aa04bc --- /dev/null +++ b/user/u-boot-rm/rm2-uboot-config-patch.diff @@ -0,0 +1,75 @@ +diff --git a/include/configs/zero-sugar.h.orig b/include/configs/zero-sugar.h +index 6b5450a..dd6da5c 100644 +--- a/include/configs/zero-sugar.h.orig ++++ b/include/configs/zero-sugar.h +@@ -122,12 +122,10 @@ + "panel=EPD\0" \ + "mmcdev=0\0" \ + "active_partition=2\0" \ +- "fallback_partition=3\0 " \ + "bootlimit=1\0 " \ + "mmcautodetect=yes\0" \ + "mmcargs=setenv bootargs console=${console},${baudrate} " \ +- "root=/dev/mmcblk2p${active_partition} rootwait rootfstype=ext4 rw " \ +- "quiet panic=20 systemd.crash_reboot\0" \ ++ "root=/dev/mmcblk2p2 rootwait rootfstype=ext4 rw " \ + "loadimage=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ + "loadfdt=ext4load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ + "mmcboot=echo Booting from mmc ...; " \ +@@ -140,41 +138,13 @@ + "echo WARN: Cannot load the DT; " \ + "fi; " \ + "fi; " \ +- "fi;\0" \ +- "memboot=echo Booting from memory...; " \ +- "setenv bootargs console=${console},${baudrate} " \ +- "g_mass_storage.stall=0 g_mass_storage.removable=1 " \ +- "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\ +- "g_mass_storage.iSerialNumber=\"\" rdinit=/linuxrc; "\ +- "bootz ${loadaddr} ${initrd} ${fdt_addr};\0" \ +- "altbootcmd=echo Running from fallback root...; " \ +- "run memboot; " \ +- "if test ${bootcount} -gt 10; then " \ +- "echo WARN: Failed too much, resetting bootcount and turning off; " \ +- "setenv bootcount 0; " \ +- "saveenv; " \ +- "poweroff; " \ +- "fi; " \ +- "setenv mmcpart ${fallback_partition}; " \ +- "setenv bootargs console=${console},${baudrate} " \ +- "root=/dev/mmcblk2p${fallback_partition} rootwait rootfstype=ext4 quiet rw " \ +- "systemd.log_level=debug systemd.log_target=kmsg memtest " \ +- "log_buf_len=1M printk.devkmsg systemd.journald.forward_to_console=1; " \ +- "run mmcboot;\0" \ ++ "fi;\0" + + /* Always try to boot from memory first, in case of USB download mode */ + #define CONFIG_BOOTCOMMAND \ +- "if test ! -e mmc 0:1 uboot.env; then " \ +- "saveenv; " \ +- "fi; " \ +- "run memboot; " \ + "run mmcargs; " \ + "setenv mmcpart ${active_partition}; " \ +- "run mmcboot; " \ +- "echo WARN: unable to boot from either RAM or eMMC; " \ +- "setenv upgrade_available 1; " \ +- "saveenv; " \ +- "reset; " ++ "run mmcboot; " + + #define CONFIG_SYS_MEMTEST_START 0x80000000 + #define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 0x20000000) +@@ -198,10 +168,8 @@ + /* Environment organization */ + #define CONFIG_ENV_SIZE SZ_8K + +-#ifdef CONFIG_ENV_IS_IN_FAT +-#define CONFIG_BOOTCOUNT_LIMIT +-#define CONFIG_BOOTCOUNT_ENV +-#endif ++/*#define CONFIG_ENV_IS_IN_FAT*/ ++#define CONFIG_ENV_IS_NOWHERE + + #define CONFIG_SYS_FSL_USDHC_NUM 2 + diff --git a/user/u-boot-rm/update-u-boot b/user/u-boot-rm/update-u-boot new file mode 100755 index 0000000..e90bcbd --- /dev/null +++ b/user/u-boot-rm/update-u-boot @@ -0,0 +1,129 @@ +#!/bin/sh + +verbose= +board= +device= +dryrun= +imagedir= + +get_defaults() { + if [ -z "$board" -a -e /sys/firmware/devicetree/base/compatible ]; then + case "$(cat /sys/firmware/devicetree/base/compatible 2>/dev/null)" in + wand,*) board=wand ;; + esac + fi + + if [ -z "$device" ]; then + case "$board" in + wand|cubie|cubie2) device=/dev/mmcblk0p0 ;; + zero-gravitas) device=/dev/mmcblk1 ;; + esac + fi + + if [ -z "$imagedir" ]; then + imagedir="$(realpath $(dirname $0))" + [ -f "$imagedir/README.txt" ] || imagedir="/usr/share/u-boot-rm" + fi +} + +die() { + echo "ERROR: $@" + exit 1 +} + +usage() { + get_defaults + + cat <] [-d|--device ] + +options: + + -b,--board Specify the board type: wand, cubie, cubie2 + (current default: ${board:-none}) + + -d,--device Specify the device where to install u-boot + (current default: ${device:-none}) + + -i,--imagedir Specify u-boot image directory + (current default: ${imagedir:-none}) + + -n,--dry-run Print commands but don't execute them + +EOF +} + +while [ $# -gt 0 ]; do + opt="$1" + shift + case "$opt" in + -b|--board) + case "$1" in + wand|wandboard) board="wand" ;; + cubie|cubieboard) board="cubie" ;; + zerogravitas) board="zero-gravitas" ;; + zerosugar) board="zero-sugar" ;; + *) usage; exit 1;; + esac + shift + ;; + -d|--device) + device="$1" + shift + ;; + -i|--imagedir) + imagedir="$1" + shift + ;; + -n|--dry-run) + dryrun="echo" + ;; + --) + break + ;; + -*) + usage + exit 1 + ;; + esac +done + +get_defaults +if [ -z "$board" -o -z "$device" -o -z "$imagedir" -o ! -e "$imagedir" ]; then + usage + exit 1 +fi + +if [ -z "$dryrun" ]; then + echo "Updating $board u-boot in $device in 3 seconds..." + sleep 3 +fi + +( +set -e +case "$board" in +wand) + [ -e "$imagedir/wandboard" ] || die "wandboard images not installed, apk add u-boot-wandboard" + $dryrun dd if=$imagedir/wandboard/SPL of=$device bs=1k seek=1 status=none + $dryrun dd if=$imagedir/wandboard/u-boot.img of=$device bs=1k seek=69 status=none + ;; +cubie|cubie2) + [ -e "$imagedir/Cubieboard${board#cubie}" ] || die "Cubieboard images not installed, apk add u-boot-cubieboard" + $dryrun dd if=$imagedir/Cubieboard${board#cubie}/u-boot-sunxi-with-spl.bin of=/dev/sda bs=1024 seek=8 status=none + ;; +zero-gravitas) + [ -e "$imagedir/zero-gravitas" ] || die "rM1 images not installed, apk add u-boot-rm1" + $dryrun dd if=/dev/zero of=$device bs=512 seek=1536 count=16 + [ -z "$dryrun" ] && echo 0 > /sys/block/${device/\/dev\/}boot0/force_ro + $dryrun dd if=/dev/zero of=${device}boot0 bs=512 count=2 + $dryrun dd if=$imagedir/zero-gravitas/u-boot.bin of=${device}boot0 bs=512 seek=2 + [ -z "$dryrun" ] && echo 1 > /sys/block/${device/\/dev\/}boot0/force_ro + ;; +zero-sugar) + die "rM2 not yet tested" + ;; +esac +$dryrun sync +) || die "U-Boot installation in $device failed" + +[ -z "$dryrun" ] && echo "Completed successfully." diff --git a/user/wallabag/APKBUILD b/user/wallabag/APKBUILD index a568868..c697fca 100644 --- a/user/wallabag/APKBUILD +++ b/user/wallabag/APKBUILD @@ -3,12 +3,12 @@ pkgname=wallabag pkgver=2.5.4 -pkgrel=1 +pkgrel=0 pkgdesc="Self hostable application for saving web pages" arch="noarch" url="http://www.wallabag.org/" license="MIT" -_php=php83 +_php=php81 _php_mods="-gd -tidy -tokenizer -bcmath -dom -curl -session -ctype -simplexml -xml -sockets -xmlreader -intl" depends="$_php ${_php_mods//-/$_php-} pcre composer" diff --git a/user/xf86-video-fbdev-rm/APKBUILD b/user/xf86-video-fbdev-rm/APKBUILD new file mode 100644 index 0000000..ee6babd --- /dev/null +++ b/user/xf86-video-fbdev-rm/APKBUILD @@ -0,0 +1,40 @@ +# Maintainer: Natanael Copa +pkgname=xf86-video-fbdev-rm +pkgver=0.5.0 +pkgrel=2 +pkgdesc="Video driver for framebuffer device with rM patches" +url="https://www.x.org" +arch="all" +license="MIT" +subpackages="$pkgname-doc" +provides="xf86-video-fbdev=$pkgver-r$pkgrel" +makedepends="xorg-server-dev libxi-dev util-macros xorgproto linux-rm-headers" +builddir="$srcdir"/xf86-video-fbdev-$pkgver +source=" + https://www.x.org/releases/individual/driver/xf86-video-fbdev-$pkgver.tar.bz2 + epdc_auto-update-patch.patch + fix-build.patch + " + +build() { + export LDFLAGS="$LDFLAGS -Wl,-z,lazy" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums=" +c1217b943bbe3301b3c2a8649ed1004c3c67b02607bd56bbc14f6dfa05e7f0184332c81a6a19595514745501ed88526aee932e555779b7c3a8233646b0979448 xf86-video-fbdev-0.5.0.tar.bz2 +c211a2edf90b622d522a0513358431afa33c7b3b958b054221ff3a6e8ff72d1012b0141b073ea070f4bb2d2f9042d8e092434f14a91bea3bf8bf188c78c0bcb7 epdc_auto-update-patch.patch +19c6680d8e8b0ba3903fb76438b54f294a1715b93d50e1cb2ef95bb04770add5fdad1df4260ab7eb00bb26578baa79b7cfed3f7fa6cba70348611cc3797af3ee fix-build.patch +" diff --git a/user/xf86-video-fbdev-rm/epdc_auto-update-patch.patch b/user/xf86-video-fbdev-rm/epdc_auto-update-patch.patch new file mode 100644 index 0000000..f54f524 --- /dev/null +++ b/user/xf86-video-fbdev-rm/epdc_auto-update-patch.patch @@ -0,0 +1,128 @@ +diff --git a/src/fbdev.c.orig b/src/fbdev.c +index f25ef72..46b3c8c 100644 +--- a/src/fbdev.c.orig ++++ b/src/fbdev.c +@@ -8,6 +8,8 @@ + #endif + + #include ++#include ++#include + + /* all driver need this */ + #include "xf86.h" +@@ -18,6 +20,7 @@ + #include "colormapst.h" + #include "xf86cmap.h" + #include "shadow.h" ++#include "os.h" + #include "dgaproc.h" + + /* for visuals */ +@@ -186,6 +189,9 @@ typedef struct { + int rotate; + Bool shadowFB; + Bool shadow24; ++ Bool timerActive; ++ OsTimerPtr timer; ++ RegionPtr region_queue; + void *shadow; + CloseScreenProcPtr CloseScreen; + CreateScreenResourcesProcPtr CreateScreenResources; +@@ -697,6 +703,87 @@ fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) + shadowUpdatePacked(pScreen, pBuf); + } + ++static CARD32 FBDevEPDUpdateWork(OsTimerPtr timer, ++ CARD32 time, ++ void *arg); ++ ++static void FBDevEPDUpdate(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ RegionPtr damage = DamageRegion(pBuf->pDamage); ++ ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); ++ FBDevPtr fPtr = FBDEVPTR(pScrn); ++ shadowUpdateProc update; ++ if (fPtr->shadow24) ++ update = fbdevUpdate32to24; ++ else if (fPtr->rotate) ++ update = fbdevUpdateRotatePacked; ++ else ++ update = fbdevUpdatePacked; ++ ++ update(pScreen, pBuf); ++ ++ if (fPtr->region_queue) { ++ RegionAppend(fPtr->region_queue, damage); ++ } else { ++ fPtr->region_queue = RegionDuplicate(damage); ++ } ++ ++ if (!fPtr->timerActive) { ++ FBDevEPDUpdateWork(fPtr->timer, GetTimeInMillis(), ++ pScreen); ++ } ++} ++ ++static CARD32 FBDevEPDUpdateWork(OsTimerPtr timer, ++ CARD32 time, ++ void *arg) ++{ ++ ScreenPtr pScreen = (void *)arg; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); ++ FBDevPtr fPtr = FBDEVPTR(pScrn); ++ BoxPtr pbox; ++ Bool overlap; ++ int nbox; ++ int fd = fbdevHWGetFD(pScrn); ++ if (fPtr->region_queue == NULL) { ++ fPtr->timerActive = FALSE; ++ return 0; ++ } ++ ++ struct mxcfb_update_data upd_region; ++ RegionValidate(fPtr->region_queue, &overlap); ++ pbox = RegionRects(fPtr->region_queue); ++ nbox = RegionNumRects(fPtr->region_queue); ++ ++ while(nbox--) { ++ int x, y, w, h; ++ int ret; ++ x = pbox->x1; ++ y = pbox->y1; ++ w = (pbox->x2 - pbox->x1); ++ h = pbox->y2 - pbox->y1; ++ memset(&upd_region, 0, sizeof(upd_region)); ++ upd_region.update_region.left = x; ++ upd_region.update_region.top = y; ++ upd_region.update_region.width = w; ++ upd_region.update_region.height = h; ++ upd_region.waveform_mode = WAVEFORM_MODE_AUTO; ++ upd_region.temp = TEMP_USE_AMBIENT; ++ upd_region.update_mode = UPDATE_MODE_PARTIAL; ++ upd_region.flags = 0; ++ ret = ioctl(fd, MXCFB_SEND_UPDATE, &upd_region); ++ if (ret < 0) ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"update ioctl failed: %d\n", ret); ++ pbox++; ++ } ++ fPtr->timer = TimerSet(timer, 0, 50, FBDevEPDUpdateWork, pScreen); ++ fPtr->timerActive = TRUE; ++ RegionDestroy(fPtr->region_queue); ++ fPtr->region_queue = NULL; ++ return 0; ++} ++ + static Bool + FBDevCreateScreenResources(ScreenPtr pScreen) + { +@@ -722,7 +809,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen) + else + update = fbdevUpdatePacked; + +- if (!shadowAdd(pScreen, pPixmap, update, FBDevWindowLinear, fPtr->rotate, ++ if (!shadowAdd(pScreen, pPixmap, FBDevEPDUpdate, FBDevWindowLinear, fPtr->rotate, + NULL)) { + return FALSE; + } diff --git a/user/xf86-video-fbdev-rm/fix-build.patch b/user/xf86-video-fbdev-rm/fix-build.patch new file mode 100644 index 0000000..f1ca165 --- /dev/null +++ b/user/xf86-video-fbdev-rm/fix-build.patch @@ -0,0 +1,17 @@ +Upstream: no (too lazy) +Reason: fixes build by getting rid of old cpp macro + +diff --git a/src/fbdev.c b/src/fbdev.c +index f25ef72..02a2b7a 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -1010,7 +1010,7 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) + fPtr->CloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = FBDevCloseScreen; + +-#if XV ++#if defined(XV) + { + XF86VideoAdaptorPtr *ptr; + + diff --git a/user/xmlsec/APKBUILD b/user/xmlsec/APKBUILD new file mode 100644 index 0000000..c513e27 --- /dev/null +++ b/user/xmlsec/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Sander Maijers +# Maintainer: Sander Maijers +pkgname=xmlsec +pkgver=1.2.37 +pkgrel=0 +pkgdesc="C based implementation for XML Signature Syntax and Processing and XML Encryption Syntax and Processing" +url="https://github.com/lsh123/xmlsec/" +arch="all" +license="MIT" +makedepends=" + libtool + libxml2-dev + libxslt-dev + nss-dev + openssl-dev>3 + " +checkdepends="nss-tools" +options="libtool !check" # disable tests til https://github.com/lsh123/xmlsec/issues/308 is fixed +subpackages="$pkgname-nss $pkgname-dev $pkgname-doc" +source="https://github.com/lsh123/xmlsec/releases/download/xmlsec-${pkgver//./_}/xmlsec1-$pkgver.tar.gz" +builddir="$srcdir/xmlsec1-$pkgver" + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --disable-static \ + --enable-pkgconfig \ + --with-openssl=/usr \ + --without-gnutls \ + --without-gcrypt \ + --with-default-crypto=openssl + make +} + +check() { + make -k check +} + +package() { + make DESTDIR="$pkgdir" install +} + +nss() { + pkgdesc="xmlsec nss plugin" + install_if="$pkgname=$pkgver-r$pkgrel nss" + + amove usr/lib/libxmlsec1-nss.so* +} + +sha512sums=" +99220cb28a346ffac0023f9f177d6a7be3ddcea04bea434b7dc926c1f0aaa5564d75f74f92896ac100179c04d77e001f688ddf46fed4e0a0b4f20b7b87c24900 xmlsec1-1.2.37.tar.gz +" diff --git a/user/xochitl-bin/APKBUILD b/user/xochitl-bin/APKBUILD new file mode 100644 index 0000000..9470670 --- /dev/null +++ b/user/xochitl-bin/APKBUILD @@ -0,0 +1,50 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=xochitl-bin +pkgver=2.15.1.1189 +_pkgprefix=Xdvv3lBmE4 +pkgrel=0 +pkgdesc="Image extractor for reMarkable firmware files" +arch="armv7" +url="https://archive.org/download/rm110/RM110/" +license="MIT" +makedepends="rm-extractor p7zip" +options="!check !strip !tracedeps" # No testsuite +subpackages="$pkgname-rm1 $pkgname-rm2" +builddir="$srcdir" +source=" + $pkgname-rm1-$pkgver.signed::https://archive.org/download/rm110/RM110/2.15.1.1189_reMarkable-Xdvv3lBmE4-.signed + $pkgname-rm2-$pkgver.signed::https://archive.org/download/rm110/RM110/2.15.1.1189_reMarkable2-wVbHkgKisg-.signed + xochitl.sh +" +package() { + install -vdm755 "$pkgdir"/var/lib/$pkgname + install -vDm755 "$srcdir"/xochitl.sh "$pkgdir"/usr/bin/xochitl +} + +rm1() { + depends="$pkgname" + + mkdir -p "$subpkgdir"/usr/lib/$pkgname + cd "$subpkgdir"/usr/lib/$pkgname + rm-extractor "$builddir"/$pkgname-rm1-$pkgver.signed + 7z x out || true + rm out +} + +rm2() { + depends="$pkgname" + + mkdir -p "$subpkgdir"/usr/lib/$pkgname + cd "$subpkgdir"/usr/lib/$pkgname + rm-extractor "$builddir"/$pkgname-rm1-$pkgver.signed + 7z x out || true + rm out +} + +sha512sums=" +294a5dccebb11366ad4e9a39d15829f310f575044f6e4db2747364ae61ef984cf3e0a8f09f3a33f157365b637d0217f34a01000eff3f92dd177afd011c7b2c9f xochitl-bin-rm1-2.15.1.1189.signed +6b2baac5c970ddfbf84f376fbfd22dab0a72979160b6889352bb2464f46f9d85d0fdc9f5754dbcb431b3629df833e64913c81aa7838f636cce11b00413d8506e xochitl-bin-rm2-2.15.1.1189.signed +e0f7ce6a5a29f98929339f55a2073b251ce76802c244473677be35eeef82e0e840edddfdfe56f8dc16fe80865d22e8dd35f3815f716903966768c3d9300831f2 xochitl.sh +" diff --git a/user/xochitl-bin/xochitl.sh b/user/xochitl-bin/xochitl.sh new file mode 100755 index 0000000..1e02b34 --- /dev/null +++ b/user/xochitl-bin/xochitl.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# we chroot into codex root, thus need to bind mount +mount -o bind /dev /usr/lib/xochitl-bin/dev +mount -o bind /proc /usr/lib/xochitl-bin/proc +mount -o bind /sys /usr/lib/xochitl-bin/sys + +# xochitl expects home to be mounted +mount -o bind /var/lib/xochitl-bin /usr/lib/xochitl-bin/home/root + +# start xochitl +chroot /usr/lib/xochitl-bin /usr/bin/xochitl diff --git a/unmaintained/znapzend/APKBUILD b/user/znapzend/APKBUILD similarity index 100% rename from unmaintained/znapzend/APKBUILD rename to user/znapzend/APKBUILD diff --git a/user/zotero/APKBUILD b/user/zotero/APKBUILD new file mode 100644 index 0000000..f489340 --- /dev/null +++ b/user/zotero/APKBUILD @@ -0,0 +1,94 @@ +# Maintainer: Antoine Martin (ayakael) + +pkgname=zotero +pkgver=7.0.0_git20230415 +pkgrel=0 +pkgdesc="A free, easy-to-use tool to help you collect, organize, cite, and share your research sources." +# fix firefox +#arch="x86_64" +url="https://github.com/zotero/zotero" +_giturl="https://lab.ilot.io/mirrors/zotero" +_gittag_client=7.0.0_20230415 +_gittag_standalone=7.0.0_20230415 +_gittag_build=20230314 +license="AGPL3" +depends=" + dbus-glib + gtk+3.0 + nss + libxt + " +makedepends=" + npm + grep + zip + unzip + perl + python3 + curl + nodejs + firefox-esr~=102 + " +source=" + zotero.desktop + xulrunner-get-alpine-firefox.diff + $_giturl-client/-/releases/$_gittag_client/downloads/tarball/zotero-client-$_gittag_client.tar.gz + $_giturl-standalone-build/-/releases/$_gittag_standalone/downloads/tarball/zotero-standalone-build-$_gittag_standalone.tar.gz + $_giturl-build/-/releases/$_gittag_build/downloads/tarball/zotero-build-$_gittag_build.tar.gz + " +builddir="$srcdir"/zotero-client-$_gittag_client +options="!check" + +prepare() { + default_prepare + + ln -s "$srcdir"/zotero-client-$_gittag_client "$srcdir"/zotero-client + ln -s "$srcdir"/zotero-build-$_gittag_build "$srcdir"/zotero-build + + git init + git commit --allow-empty -m 'Initial' + + npm i --legacy-peer-deps + + cd "$srcdir"/zotero-standalone-build* + patch -p1 -i "$srcdir"/xulrunner-get-alpine-firefox.diff + # We need to had '.git/HEAD' and '.git/config' to the archive as the build expects those + mkdir .git + echo '[remote "origin"]\nurl="http://github.com/zotero/zotero-standalone-build"' > .git/config + echo "$_gittag_standalone" > .git/HEAD + + ./fetch_xulrunner.sh -p l + ./fetch_pdftools +} + +build() { + NODE_OPTIONS=--openssl-legacy-provider npm run build + + cd "$srcdir"/zotero-standalone-build* + scripts/dir_build -p l +} + +package() { + install -dDm755 "$pkgdir"/usr/bin + install -dDm755 "$pkgdir"/usr/lib/zotero + cp -r "$srcdir"/zotero-standalone-build*/staging/Zotero_linux-$CARCH/* "$pkgdir/usr/lib/zotero" + rm "$pkgdir/usr/lib/zotero/updater" + ln -s /usr/lib/zotero/zotero "$pkgdir/usr/bin/zotero" + install -Dm644 "$srcdir/zotero.desktop" "$pkgdir/usr/share/applications/zotero.desktop" + + # Copy zotero icons to a standard location + install -Dm644 "$pkgdir/usr/lib/zotero/chrome/icons/default/default16.png" "$pkgdir/usr/share/icons/hicolor/16x16/apps/zotero.png" + install -Dm644 "$pkgdir/usr/lib/zotero/chrome/icons/default/default32.png" "$pkgdir/usr/share/icons/hicolor/32x32/apps/zotero.png" + install -Dm644 "$pkgdir/usr/lib/zotero/chrome/icons/default/default48.png" "$pkgdir/usr/share/icons/hicolor/48x48/apps/zotero.png" + install -Dm644 "$pkgdir/usr/lib/zotero/chrome/icons/default/default256.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/zotero.png" + + # Close shell when launching + sed -i -r 's:^("\$CALLDIR/zotero-bin" -app "\$CALLDIR/application.ini" "\$@"):exec \1:' "$pkgdir/usr/lib/zotero/zotero" +} +sha512sums=" +e1a0a4ff5cc1b53f13776ca11927d671426b0691e78e74a4adf2166d57bb2ae8ac409cc11a37ce5e2f680fdf05d5bc3849c33a9717aca1bb62d03ae5231a67fb zotero.desktop +1002732c348e3caceb077b8595a3a8b5c15dc17bc9c443e8dc96f8efe82ee37d9b5d7241530d82188846007504a277fd261763a4c64c3c259d9130db3139043d xulrunner-get-alpine-firefox.diff +88ae8204fde34bd6b1595ddddc153ded3a3bfcaeb5d65ffd8398d58f41787ddd2ff35051c4f74e0c83483b6ec234f1bf987acbebccfe73ad31be5cb4b55cc403 zotero-client-7.0.0_20230415.tar.gz +2dad54ac1a75e9ed62eec9fe08081e6807ce0167992059d3b7cd7aee3fb4803c694dc852ffe27f82cbe162c7536f2d77c302a8f947b507c6548f729a8c9d3057 zotero-standalone-build-7.0.0_20230415.tar.gz +8379985c0da84d82bdba72a03daaf3afe80a30ef696a2da837cff12b23fdec75b62dd43061ede4687c6acc756181ecefd0a025a7fedce500137faba4ae3326ae zotero-build-20230314.tar.gz +" diff --git a/user/zotero/xulrunner-get-alpine-firefox.diff b/user/zotero/xulrunner-get-alpine-firefox.diff new file mode 100644 index 0000000..3207016 --- /dev/null +++ b/user/zotero/xulrunner-get-alpine-firefox.diff @@ -0,0 +1,79 @@ +diff --git a/fetch_xulrunner.sh.orig b/fetch_xulrunner.sh +index b1e812f..ca3caa5 100755 +--- a/fetch_xulrunner.sh.orig ++++ b/fetch_xulrunner.sh +@@ -114,15 +114,6 @@ function modify_omni { + replace_line 'MOZ_CRASHREPORTER:' 'MOZ_CRASHREPORTER: false \&\&' modules/AppConstants.jsm + replace_line 'MOZ_UPDATE_CHANNEL:.+' 'MOZ_UPDATE_CHANNEL: "none",' modules/AppConstants.jsm + replace_line '"https:\/\/[^\/]+mozilla.com.+"' '""' modules/AppConstants.jsm +- +- replace_line 'if \(!updateAuto\) \{' 'if (update.type == "major") { +- LOG("UpdateService:_selectAndInstallUpdate - prompting because it is a major update"); +- AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_SHOWPROMPT_PREF); +- Services.obs.notifyObservers(update, "update-available", "show-prompt"); +- return; +- } +- if (!updateAuto) {' modules/UpdateService.jsm +- + replace_line 'pref\("network.captive-portal-service.enabled".+' 'pref("network.captive-portal-service.enabled", false);' greprefs.js + replace_line 'pref\("network.connectivity-service.enabled".+' 'pref("network.connectivity-service.enabled", false);' greprefs.js + replace_line 'pref\("toolkit.telemetry.server".+' 'pref("toolkit.telemetry.server", "");' greprefs.js +@@ -368,31 +359,13 @@ fi + + if [ $BUILD_LINUX == 1 ]; then + GECKO_VERSION="$GECKO_VERSION_LINUX" +- DOWNLOAD_URL="https://ftp.mozilla.org/pub/firefox/releases/$GECKO_VERSION" + +- rm -rf firefox +- +- curl -O "$DOWNLOAD_URL/linux-i686/en-US/firefox-$GECKO_VERSION.tar.bz2" +- rm -rf firefox-i686 +- tar xvf firefox-$GECKO_VERSION.tar.bz2 +- mv firefox firefox-i686 +- +- pushd firefox-i686 +- modify_omni linux32 +- popd +- +- rm "firefox-$GECKO_VERSION.tar.bz2" +- +- curl -O "$DOWNLOAD_URL/linux-x86_64/en-US/firefox-$GECKO_VERSION.tar.bz2" + rm -rf firefox-x86_64 +- tar xvf firefox-$GECKO_VERSION.tar.bz2 +- mv firefox firefox-x86_64 +- +- pushd firefox-x86_64 +- modify_omni linux64 +- popd +- +- rm "firefox-$GECKO_VERSION.tar.bz2" ++ cp -r /usr/lib/firefox-esr firefox-x86_64 ++ ++ pushd firefox-x86_64 ++ modify_omni linux64 ++ popd + fi + + echo Done +diff --git a/build.sh.orig b/build.sh +index 893f9fb..51ae170 100755 +--- a/build.sh.orig ++++ b/build.sh +@@ -794,7 +794,7 @@ fi + + # Linux + if [ $BUILD_LINUX == 1 ]; then +- for arch in "i686" "x86_64"; do ++ for arch in "x86_64"; do + runtime_path="${LINUX_RUNTIME_PATH_PREFIX}${arch}" + + # Set up directory +@@ -807,7 +807,7 @@ if [ $BUILD_LINUX == 1 ]; then + cp -r "$runtime_path/"!(application.ini|browser|defaults|devtools-files|crashreporter|crashreporter.ini|firefox|pingsender|precomplete|removed-files|run-mozilla.sh|update-settings.ini|updater|updater.ini) "$APPDIR" + + # Use our own launcher that calls the original Firefox executable with -app +- mv "$APPDIR"/firefox-bin "$APPDIR"/zotero-bin ++ mv "$APPDIR"/firefox-esr "$APPDIR"/zotero-bin + cp "$CALLDIR/linux/zotero" "$APPDIR"/zotero + + # Copy Ubuntu launcher files diff --git a/user/zotero/zotero.desktop b/user/zotero/zotero.desktop new file mode 100644 index 0000000..249ae57 --- /dev/null +++ b/user/zotero/zotero.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Name=Zotero +GenericName=Zotero Standalone. Is a free, easy-to-use tool to help you collect, organize, cite, and share your research sources. +Icon=zotero +Exec=/usr/bin/zotero -url %U +Categories=Office +Terminal=false +MimeType=x-scheme-handler/zotero