Compare commits

..

20 Commits

Author SHA1 Message Date
madomado e926c6dd41 Update obs-studio.spec
Signed-off-by: madomado <wboy111@outlook.com>
2023-07-08 22:57:24 +08:00
madomado c8091f850a Update obs-studio.spec
Signed-off-by: madomado <wboy111@outlook.com>
2023-07-08 22:30:42 +08:00
madomado 192497390c Update obs-studio.spec
Signed-off-by: madomado <wboy111@outlook.com>
2023-07-08 22:06:54 +08:00
madomado 8fcb83275c add deps for websocket plug
Signed-off-by: madomado <wboy111@outlook.com>
2023-06-30 15:09:29 +08:00
madomado 8971a68ee9 Merge branch 'f38' into w/obs-studio-freeworld 2023-06-25 09:49:50 +08:00
madomado c76938e62d Update obs-studio.spec 2023-06-24 13:46:45 +08:00
madomado 61bfdcbf06 rm patches
Signed-off-by: madomado <wboy111@outlook.com>
2023-06-24 13:11:22 +08:00
madomado 5b33aa3bca ffmpeg-free? 2023-06-24 12:37:57 +08:00
windowsboy111 c1040c660a Merge branch 'f38' into w/obs-studio-freeworld 2023-06-22 18:54:10 +08:00
windowsboy111 ab0db08561 feat: rm kmod-v4l2loopback 2023-06-22 18:53:56 +08:00
madomado 5964ab9bdf Update obs-studio.spec
Signed-off-by: madomado <wboy111@outlook.com>
2023-06-11 22:48:56 +08:00
windowsboy111 83abd7038a fix: kmod~ 2023-05-23 20:58:24 +08:00
windowsboy111 2cfe9082a4 fix: kmod-~~
forgot name fix
2023-05-23 20:49:36 +08:00
windowsboy111 f99b4b57d4 fix: kmod~~ 2023-05-23 20:41:02 +08:00
windowsboy111 70ef28b702 fix: ~ 2023-05-23 20:24:01 +08:00
windowsboy111 126235dc70 Revert "fix: ~"
This reverts commit c699fad604.
2023-05-23 20:23:27 +08:00
windowsboy111 c699fad604 fix: ~ 2023-05-23 20:17:55 +08:00
windowsboy111 4ccf14150e fix: ~ 2023-05-23 19:45:46 +08:00
windowsboy111 2859fb526e add: obs-studio kmod-v4l2loopback 2023-05-23 19:03:56 +08:00
madomado 35c0d89a6c wip add obs-studio 2023-05-23 12:39:42 +08:00
882 changed files with 5171 additions and 19520 deletions
-9
View File
@@ -1,9 +0,0 @@
{
"repoOwner": "terrapkg",
"repoName": "packages",
"resetAuthor": true,
"targetBranchChoices": ["f39", "f40", "frawhide"],
"branchLabelMapping": {
"^sync-(.+)$": "$1"
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
ARG VARIANT="rawhide"
ARG VARIANT="38"
FROM fedora:${VARIANT}
RUN useradd -m vscode
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "Fedora",
"build": {
"dockerfile": "Dockerfile",
"args": { "VARIANT": "rawhide" }
"args": { "VARIANT": "38" }
},
"remoteUser": "vscode",
"runArgs": [
+82 -38
View File
@@ -6,13 +6,13 @@ on:
paths:
- anda/**
branches:
- frawhide
- f38
pull_request:
branches:
- frawhide
- f38
merge_group:
branches:
- frawhide
- f38
workflow_dispatch:
workflow_call:
@@ -23,13 +23,13 @@ jobs:
outputs:
build_matrix: ${{ steps.generate_build_matrix.outputs.build_matrix }}
container:
image: ghcr.io/terrapkg/builder:frawhide
image: ghcr.io/terrapkg/builder:f38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Set workspace as safe
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Generate build matrix
@@ -40,38 +40,33 @@ jobs:
strategy:
matrix:
pkg: ${{ fromJson(needs.manifest.outputs.build_matrix) }}
version: ["rawhide"]
version: ["38"]
fail-fast: false
runs-on: ${{ matrix.pkg.arch == 'aarch64' && 'ARM64' || matrix.pkg.labels['large'] && 'x86-64-lg' || 'ubuntu-latest' }}
runs-on: ${{ matrix.pkg.arch == 'aarch64' && 'ARM64' || 'ubuntu-latest' }}
container:
image: ghcr.io/terrapkg/builder:f${{ matrix.version}}
image: ghcr.io/terrapkg/builder:f38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout latest Mock configs
uses: actions/checkout@v4
with:
repository: terrapkg/mock-configs
path: mock-configs
- name: Set up git repository
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Cache buildroot
id: br-cache
uses: actions/cache@v3
with:
path: /var/cache
key: ${{ runner.os }}-br-${{ matrix.version }}-${{ matrix.pkg.arch }}-${{ matrix.pkg.pkg }}
- name: Include custom build template instead of package default
run: |
cp -v mock-configs/terra.tpl /etc/mock/templates/terra.tpl
cp -v anda/mock-configs/terra.tpl /etc/mock/templates/terra.tpl
- name: Build with Andaman
run: anda build ${{ matrix.pkg.pkg }} --package rpm -c mock-configs/terra-${{ matrix.version }}-${{ matrix.pkg.arch }}.cfg
- name: Build with Andaman (alternate arch)
if: |
matrix.pkg.arch == 'x86_64' && matrix.pkg.labels['multilib']
run: anda build ${{ matrix.pkg.pkg }} --package rpm -c mock-configs/terra-${{ matrix.version }}-i386.cfg
run: anda build ${{ matrix.pkg.pkg }} --package rpm -c anda/mock-configs/terra-${{ matrix.version }}-${{ matrix.pkg.arch }}.cfg
- name: Generating artifact name
id: art
@@ -80,13 +75,10 @@ jobs:
x=${NAME//\//@}
echo "name=$x" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v3
with:
name: ${{ steps.art.outputs.name }}
compression-level: 0 # The RPMs are already compressed :p
path: |
anda-build/rpm/rpms/*
anda-build/rpm/srpm/*
path: anda-build/rpm/rpms/*
- name: Upload packages to subatomic
if: github.event_name == 'push'
@@ -96,17 +88,69 @@ jobs:
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }} anda-build/rpm/rpms/*
- name: Upload source packages to subatomic
if: github.event_name == 'push'
run: |
subatomic-cli upload --prune \
--server https://subatomic.fyralabs.com \
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }}-source anda-build/rpm/srpm/*
- name: Notify Madoguchi (Success)
if: success() && github.event_name == 'push'
run: ./.github/workflows/mg.sh true ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}} $GITHUB_SHA
run: ./.github/workflows/mg.sh true ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}}
- name: Notify Madoguchi (Failure)
if: ( cancelled() || failure() ) && github.event_name == 'push'
run: ./.github/workflows/mg.sh false ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}} $GITHUB_SHA
run: ./.github/workflows/mg.sh false ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}}
- name: Lint RPMs and SRPMs
id: lint
if: success()
run: |
echo 'LINT_ERR=false' >> $GITHUB_ENV
rpmlint anda-build/ > rpmlint.txt || f=1
if [[ $f -eq 1 ]]; then
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "ESC_LINT_OUT<<$EOF" >> $GITHUB_ENV
cat rpmlint.txt | sed 's/`/\\`/g' >> $GITHUB_ENV
echo $EOF >> $GITHUB_ENV
echo "lint_out<<$EOF" >> $GITHUB_ENV
echo '```' >> $GITHUB_ENV
cat rpmlint.txt >> $GITHUB_ENV
echo '```' >> $GITHUB_ENV
echo $EOF >> $GITHUB_ENV
echo 'LINT_ERR=true' >> $GITHUB_ENV
fi
- name: Try to install package
id: dnf
if: success()
run: |
echo 'INSTALL_ERR=false' >> $GITHUB_ENV
touch out
for f in anda-build/rpm/rpms/*.rpm; do
dnf in --downloadonly -y $f > $f.dnfout.txt 2>&1 || fail=1
if [[ $fail -eq 1 ]]; then
echo "### $f" >> out
echo '```' >> out
cat $f.dnfout.txt >> out
echo '```' >> out
echo >> out
echo 'INSTALL_ERR=true' >> $GITHUB_ENV
fi
done
cat out
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "ESC_DNF_OUT<<$EOF" >> $GITHUB_ENV
cat out | sed 's/`/\\`/g' >> $GITHUB_ENV
echo $EOF >> $GITHUB_ENV
echo "dnf_out<<$EOF" >> $GITHUB_ENV
cat out >> $GITHUB_ENV
echo $EOF >> $GITHUB_ENV
- name: Generate RPMLint/DNF summary
if: success()
run: |
# Remind me to make all of this not weird later ~ lleyton
if [[ $LINT_ERR == "true" ]]; then
echo -e "## ❌ Lint: [${{matrix.pkg.pkg}} (${{matrix.pkg.arch}})](https://github.com/terrapkg/packages/actions/runs/${{github.run_id}})\n" >> $GITHUB_STEP_SUMMARY
echo -e "```\n${{ env.ESC_LINT_OUT }}\n```\n" >> $GITHUB_STEP_SUMMARY
fi
if [[ $INSTALL_ERR == "true" ]]; then
echo -e "## ❌ DNF: [${{matrix.pkg.pkg}} (${{matrix.pkg.arch}})](https://github.com/terrapkg/packages/actions/runs/${{github.run_id}})\n" >> $GITHUB_STEP_SUMMARY
echo "${{ env.ESC_DNF_OUT }}" >> $GITHUB_STEP_SUMMARY
fi
+34 -33
View File
@@ -7,55 +7,56 @@ jobs:
bootstrap:
strategy:
matrix:
version: ["rawhide"]
version: ["38"]
arch: ["x86_64", "aarch64"]
fail-fast: true
runs-on: ${{ matrix.arch == 'aarch64' && 'ARM64' || 'ubuntu-latest' }}
container:
image: registry.fedoraproject.org/fedora-minimal:${{ matrix.version }}
image: fedora:38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Install repositories
run: dnf5 install -y --setopt=install_weak_deps=False mock curl wget git-core openssl-devel cargo podman fuse-overlayfs
- name: Install Anda
run: cargo install anda
- uses: actions/checkout@v4
- uses: actions/setup-go@v3
with:
ref: f${{ matrix.version }}
fetch-depth: 1
- name: Build terra-mock-configs
run: |
echo "PATH=$PATH:/github/home/.cargo/bin" >> $GITHUB_ENV
export PATH=$PATH:/github/home/.cargo/bin
git config --global --add safe.directory "$GITHUB_WORKSPACE"
anda build -c fedora-${{ matrix.version }}-${{ matrix.arch }} anda/terra/mock-configs/pkg -p rpm
- name: Install terra-mock-configs
run: dnf5 install -y anda-build/rpm/rpms/terra-mock-configs*.rpm
go-version: "^1.19"
- name: Build anda-srpm-macros
run: anda build -c terra-${{ matrix.version }}-${{ matrix.arch }} anda/terra/srpm-macros/pkg
- name: Install repositories
run: |
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://github.com/terrapkg/subatomic-repos/raw/main/terra${{ matrix.version }}.repo
sudo dnf install -y mock createrepo_c rpm-build terra-mock-configs gcc curl wget git-core openssl-devel
- uses: actions/checkout@v3
with:
repository: FyraLabs/subatomic
set-safe-directory: true
fetch-depth: 1
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Install Anda
uses: actions-rs/cargo@v1
with:
command: install
args: anda
- name: Build Subatomic
run: anda build -c terra-${{ matrix.version }}-${{ matrix.arch }} anda/tools/buildsys/subatomic/pkg
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
anda build -c terra-${{ matrix.version }}-${{ matrix.arch }} subatomic -p rpm -D "autogitcommit $(git log -1 --format='%H')"
- name: Install Subatomic
run: dnf5 install -y ./anda-build/rpm/rpms/subatomic-*.rpm
run: sudo dnf install -y ./anda-build/rpm/rpms/subatomic-*.rpm
- uses: actions/checkout@v3
with:
repository: FyraLabs/anda
- name: Build Andaman
run: anda build -c terra-${{ matrix.version }}-${{ matrix.arch }} anda/tools/buildsys/anda/pkg
run: anda build -c terra-${{ matrix.version }}-${{ matrix.arch }} anda -p rpm
- name: Upload packages to subatomic
- name: Upload to Subatomic
run: |
subatomic-cli upload --prune \
--server https://subatomic.fyralabs.com \
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }} anda-build/rpm/rpms/*
- name: Upload source packages to subatomic
if: github.event_name == 'push'
run: |
subatomic-cli upload --prune \
--server https://subatomic.fyralabs.com \
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }}-source anda-build/rpm/srpm/*
+19 -56
View File
@@ -5,73 +5,46 @@ on:
packages:
description: "Packages to Build"
required: true
custom_builder:
description: "Custom Builder"
required: false
default: ""
architecture:
description: "Architecture"
required: false
default: all
type: string
jobs:
parse:
outputs:
pkgs: ${{ steps.parsing.outputs.pkgs }}
builder: ${{ inputs.custom_builder }}
arch: ${{ steps.parsing.outputs.arch }}
runs-on: "ubuntu-latest"
steps:
- name: Parse Input
id: parsing
run: |
echo "${{ inputs.packages }}" | sed 's/ /\n/g' | sed 's/$/\//g' | jq -R . | jq -s . | jq -c . | sed 's/^/pkgs=/' >> $GITHUB_OUTPUT
echo "builder=${{ inputs.custom_builder }}" >> $GITHUB_OUTPUT
arch="${{ inputs.architecture }}"
# Convert to json array using jq
# if arch is not all, convert to array
if [ "$arch" != "all" ]; then
# jq, array with single element as string
arch=$(echo $arch | sed 's/,/\n/g')
echo "arch=$(echo $arch | jq -Rs 'split("\n")' | jq 'map(select(length > 0))' | jq -c .)" >> $GITHUB_OUTPUT
else
echo "arch=$(echo '["aarch64", "x86_64"]' | jq -c .)" >> $GITHUB_OUTPUT
fi
run: echo "${{ inputs.packages }}" | sed 's/ /\n/g' | sed 's/$/\//g' | jq -R . | jq -s . | jq -c . | sed 's/^/pkgs=/' >> $GITHUB_OUTPUT
build:
needs: parse
strategy:
matrix:
pkg: ${{ fromJson(needs.parse.outputs.pkgs) }}
version: ["rawhide"]
arch: ${{ fromJson(needs.parse.outputs.arch) }}
version: ["38"]
arch: ["x86_64", "aarch64"]
fail-fast: false
runs-on: ${{ matrix.arch == 'aarch64' && 'ARM64' || needs.parse.outputs.builder && needs.parse.outputs.builder || 'ubuntu-latest' }}
runs-on: ${{ matrix.arch == 'aarch64' && 'ARM64' || 'ubuntu-latest' }}
container:
image: ghcr.io/terrapkg/builder:f${{ matrix.version }}
image: ghcr.io/terrapkg/builder:f38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout latest Mock configs
uses: actions/checkout@v4
with:
repository: terrapkg/mock-configs
path: mock-configs
- name: Set up git repository
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Include custom build template instead of package default
run: |
cp -v mock-configs/terra.tpl /etc/mock/templates/terra.tpl
- name: Cache buildroot
id: br-cache
uses: actions/cache@v3
with:
path: /var/cache
key: ${{ runner.os }}-br-${{ matrix.version }}-${{ matrix.pkg.arch }}-${{ matrix.pkg.pkg }}
- name: Build with Andaman
run: anda build anda/${{ matrix.pkg }}pkg --package rpm -c mock-configs/terra-${{ matrix.version }}-${{ matrix.arch }}.cfg
run: anda build ${{ matrix.pkg.pkg }} --package rpm -c anda/mock-configs/terra-${{ matrix.version }}-${{ matrix.pkg.arch }}.cfg
- name: Generating artifact name
id: art
@@ -80,13 +53,10 @@ jobs:
x=${NAME//\//@}
echo "name=$x" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v3
with:
name: ${{ steps.art.outputs.name }}
compression-level: 0 # The RPMs are already compressed :p
path: |
anda-build/rpm/rpms/*
anda-build/rpm/srpm/*
path: anda-build/rpm/rpms/*
- name: Upload packages to subatomic
run: |
@@ -95,16 +65,9 @@ jobs:
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }} anda-build/rpm/rpms/*
- name: Upload source packages to subatomic
run: |
subatomic-cli upload --prune \
--server https://subatomic.fyralabs.com \
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }}-source anda-build/rpm/srpm/*
- name: Notify Madoguchi (Success)
if: success()
run: ./.github/workflows/mg.sh true ${{matrix.pkg}} ${{matrix.version}} ${{matrix.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}} $GITHUB_SHA
if: success() && github.event_name == 'push'
run: ./.github/workflows/mg.sh true ${{matrix.pkg}} ${{matrix.version}} ${{matrix.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}}
- name: Notify Madoguchi (Failure)
if: cancelled() || failure()
run: ./.github/workflows/mg.sh false ${{matrix.pkg}} ${{matrix.version}} ${{matrix.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}} $GITHUB_SHA
if: ( cancelled() || failure() ) && github.event_name == 'push'
run: ./.github/workflows/mg.sh false ${{matrix.pkg}} ${{matrix.version}} ${{matrix.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}}
+16 -31
View File
@@ -11,33 +11,29 @@ jobs:
strategy:
matrix:
pkg: ${{ fromJson(inputs.packages) }}
version: ["rawhide"]
version: ["38"]
fail-fast: false
runs-on: ${{ matrix.pkg.arch == 'aarch64' && 'ARM64' || 'ubuntu-latest' }}
container:
image: ghcr.io/terrapkg/builder:f${{ matrix.version }}
image: ghcr.io/terrapkg/builder:f38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout latest Mock configs
uses: actions/checkout@v4
with:
repository: terrapkg/mock-configs
path: mock-configs
- name: Set up git repository
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Include custom build template instead of package default
run: |
cp -v mock-configs/terra.tpl /etc/mock/templates/terra.tpl
- name: Cache buildroot
id: br-cache
uses: actions/cache@v3
with:
path: /var/cache
key: ${{ runner.os }}-br-${{ matrix.version }}-${{ matrix.pkg.arch }}-${{ matrix.pkg.pkg }}
- name: Build with Andaman
run: anda build ${{ matrix.pkg.pkg }} --package rpm -c mock-configs/terra-${{ matrix.version }}-${{ matrix.pkg.arch }}.cfg
run: anda build ${{ matrix.pkg.pkg }} --package rpm -c anda/mock-configs/terra-${{ matrix.version }}-${{ matrix.pkg.arch }}.cfg
- name: Generating artifact name
id: art
@@ -46,13 +42,10 @@ jobs:
x=${NAME//\//@}
echo "name=$x" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v3
with:
name: ${{ steps.art.outputs.name }}
compression-level: 0 # The RPMs are already compressed :p
path: |
anda-build/rpm/rpms/*
anda-build/rpm/srpm/*
path: anda-build/rpm/rpms/*
- name: Upload packages to subatomic
run: |
@@ -61,17 +54,9 @@ jobs:
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }} anda-build/rpm/rpms/*
- name: Upload source packages to subatomic
if: github.event_name == 'push'
run: |
subatomic-cli upload --prune \
--server https://subatomic.fyralabs.com \
--token ${{ secrets.SUBATOMIC_TOKEN }} \
terra${{ matrix.version }}-source anda-build/rpm/srpm/*
- name: Notify Madoguchi (Success)
if: success()
run: ./.github/workflows/mg.sh true ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}} $GITHUB_SHA
if: success() && github.event_name == 'push'
run: ./.github/workflows/mg.sh true ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}}
- name: Notify Madoguchi (Failure)
if: cancelled() || failure()
run: ./.github/workflows/mg.sh false ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}} $GITHUB_SHA
if: ( cancelled() || failure() ) && github.event_name == 'push'
run: ./.github/workflows/mg.sh false ${{matrix.pkg.pkg}} ${{matrix.version}} ${{matrix.pkg.arch}} ${{github.run_id}} ${{secrets.MADOGUCHI_JWT}}
+5 -5
View File
@@ -3,20 +3,20 @@ name: Lint
on:
push:
branches:
- frawhide
- f38
pull_request:
branches:
- frawhide
- f38
merge_group:
branches:
- frawhide
- f38
jobs:
lint:
runs-on: ubuntu-latest
container:
image: ghcr.io/terrapkg/builder:frawhide
image: ghcr.io/terrapkg/builder:f38
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Lint spec files
run: rpmlint $(find anda -type f -name "*.spec" -type f)
+2 -2
View File
@@ -2,7 +2,7 @@ set -x
dirs=$2
dirs=${dirs/\/pkg/}
export p="{\"id\":\"$5\",\"ver\":\"%v\",\"rel\":\"%r\",\"arch\":\"$4\",\"dirs\":\"$dirs\",\"succ\":$1,\"commit\":\"$7\"}"
export p="{\"id\":\"$5\",\"ver\":\"%v\",\"rel\":\"%r\",\"arch\":\"$4\",\"dirs\":\"$dirs\",\"succ\":$1}"
if [[ $1 == false ]]; then
d=${p/\%v/?}
@@ -17,5 +17,5 @@ for f in anda-build/rpm/rpms/*; do
r=$(lesspipe.sh $f | grep -E "Release\s*: " | sed "s@Release\s*: @@")
d=${p/\%v/$v}
d=${d/\%r/$r}
curl -H "Authorization: Bearer $6" https://madoguchi.fyralabs.com/ci5/terra$3/builds/$n -X PUT -H "Content-Type: application/json" -d $d --fail-with-body
curl -H "Authorization: Bearer $6" https://madoguchi.fyralabs.com/ci/terra$3/builds/$n -X PUT -H "Content-Type: application/json" -d $d --fail-with-body
done
-37
View File
@@ -1,37 +0,0 @@
name: Automatic backport/sync action
on:
pull_request_target:
types: ["labeled", "closed"]
jobs:
backport:
name: Backport/sync PR
runs-on: ubuntu-latest
if: github.event.pull_request.merged
steps:
- name: Install SSH signing key
run: |
mkdir -p ${{ runner.temp }}
echo "${{ secrets.SSH_SIGNING_KEY }}" > ${{ runner.temp }}/signing_key
chmod 0700 ${{ runner.temp }}/signing_key
- name: Setup Raboneko Signing
run: |
git config --global gpg.format "ssh"
git config --global user.signingkey "${{ runner.temp }}/signing_key"
git config --global commit.gpgsign true
- name: Backport Action
uses: sorenlouv/backport-github-action@v9.3.0
with:
github_token: ${{ secrets.RABONEKO_BACKPORT_GITHUB_TOKEN }}
auto_backport_label_prefix: sync-
- name: Info log
if: ${{ success() }}
run: cat ~/.backport/backport.info.log
- name: Debug log
if: ${{ failure() }}
run: cat ~/.backport/backport.debug.log
+38
View File
@@ -0,0 +1,38 @@
name: Sync PR to other branches
on:
pull_request:
types:
- closed
branches:
- f38
jobs:
sync:
strategy:
matrix:
branch: ["f37"]
fail-fast: false
if: github.event.pull_request.merged == true && !contains(github.event.pull_request.labels.*.name, 'nosync')
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ssh-key: ${{ secrets.SSH_AUTHENTICATION_KEY }}
ref: ${{ matrix.branch }}
- name: Install SSH key and Setup Git
run: |
mkdir -p ${{ runner.temp }}
echo "${{ secrets.SSH_SIGNING_KEY }}" > ${{ runner.temp }}/signing_key
chmod 0700 ${{ runner.temp }}/signing_key
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git config user.name "Raboneko"
git config user.email "raboneko@fyralabs.com"
git config gpg.format "ssh"
git config user.signingkey "${{ runner.temp }}/signing_key"
- name: Apply patches and Push
run: |
curl https://github.com/terrapkg/packages/pull/${{ github.event.pull_request.number }}.patch > pr.patch
git am -S --keep-cr --signoff < pr.patch
git push -u origin --all
-52
View File
@@ -1,52 +0,0 @@
name: Update per branch
on:
schedule:
- cron: "*/30 * * * *"
workflow_dispatch:
jobs:
autoupdate:
runs-on: ubuntu-latest
strategy:
matrix:
branch:
- frawhide
- f39
- f40
- f41
- el9
container:
image: ghcr.io/terrapkg/builder:frawhide
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ matrix.branch }}
fetch-depth: 0
ssh-key: ${{ secrets.SSH_AUTHENTICATION_KEY }}
- name: Install SSH signing key & Set up git repository
run: |
mkdir -p ${{ runner.temp }}
echo "${{ secrets.SSH_SIGNING_KEY }}" > ${{ runner.temp }}/signing_key
chmod 0700 ${{ runner.temp }}/signing_key
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run Update
run: anda update -vv --filters updbranch=1 --labels branch=${{ matrix.branch }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RUST_BACKTRACE: full
- name: Save
run: |
if [[ `git status --porcelain` ]]; then
git config user.name "Raboneko"
git config user.email "raboneko@fyralabs.com"
git config gpg.format "ssh"
git config user.signingkey "${{ runner.temp }}/signing_key"
msg="bump(branch): $(git status | grep modified | sed -r 's@.+/([^/]+)/[^/]+\n?@\1 @g' | tr -d '\n')"
git commit -S -a -m "$msg"
git push -u origin --all
fi
+7 -6
View File
@@ -3,9 +3,8 @@ name: Push comps updates
on:
push:
branches:
- frawhide
- f40
- f39
- f38
- f37
paths:
- comps.xml
workflow_dispatch:
@@ -14,12 +13,14 @@ jobs:
update-comps:
runs-on: ubuntu-latest
container:
image: ghcr.io/terrapkg/builder:frawhide
image: ghcr.io/terrapkg/builder:38
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v3
- id: get-branch
uses: grandmasterdev/github-action-get-branch@latest
- name: Push to subatomic
run: |
branch=${{ github.ref_name }}
branch=${{steps.get-branch.outputs.branch-name}}
ver=${branch/f/}
subatomic-cli upload-comps \
--server https://subatomic.fyralabs.com \
+7 -10
View File
@@ -8,21 +8,20 @@ jobs:
autoupdate:
runs-on: ubuntu-latest
container:
image: ghcr.io/terrapkg/builder:frawhide
image: ghcr.io/terrapkg/builder:f38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
ssh-key: ${{ secrets.SSH_AUTHENTICATION_KEY }}
- name: Install SSH signing key & Set up git repository
- name: Install SSH signing key
run: |
mkdir -p ${{ runner.temp }}
echo "${{ secrets.SSH_SIGNING_KEY }}" > ${{ runner.temp }}/signing_key
chmod 0700 ${{ runner.temp }}/signing_key
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run Nightly Update
run: anda update -vv --filters nightly=1
@@ -31,6 +30,7 @@ jobs:
- name: Save
run: |
git config --global --add safe.directory "*"
if [[ `git status --porcelain` ]]; then
git config user.name "Raboneko"
git config user.email "raboneko@fyralabs.com"
@@ -38,16 +38,13 @@ jobs:
git config user.signingkey "${{ runner.temp }}/signing_key"
msg="bump(nightly): $(git status | grep modified | sed -r 's@.+/([^/]+)/[^/]+\n?@\1 @g' | tr -d '\n')"
git commit -S -a -m "$msg"
copy_over () {
f37 () {
git format-patch HEAD^
git checkout $1
git checkout f37
git apply *.patch || true
rm *.patch
git add *
git commit -S -a -m "$msg"
}
copy_over f39 || true
copy_over f40 || true
copy_over f41 || true
f37 || true
git push -u origin --all
fi
+10 -13
View File
@@ -1,37 +1,37 @@
name: Update
on:
schedule:
- cron: "*/10 * * * *"
- cron: "*/30 * * * *"
workflow_dispatch:
jobs:
autoupdate:
runs-on: ubuntu-latest
container:
image: ghcr.io/terrapkg/builder:frawhide
image: ghcr.io/terrapkg/builder:f38
options: --cap-add=SYS_ADMIN --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
ssh-key: ${{ secrets.SSH_AUTHENTICATION_KEY }}
- name: Install SSH signing key & Set up git repository
- name: Install SSH signing key
run: |
mkdir -p ${{ runner.temp }}
echo "${{ secrets.SSH_SIGNING_KEY }}" > ${{ runner.temp }}/signing_key
chmod 0700 ${{ runner.temp }}/signing_key
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run Update
run: anda update -vv --excludes nightly=1 --excludes updbranch=1
run: anda update -vv
env:
GITHUB_TOKEN: ${{ secrets.AUTOUPDATE_GH_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RUST_BACKTRACE: full
- name: Save
run: |
git config --global --add safe.directory "*"
if [[ `git status --porcelain` ]]; then
git config user.name "Raboneko"
git config user.email "raboneko@fyralabs.com"
@@ -39,16 +39,13 @@ jobs:
git config user.signingkey "${{ runner.temp }}/signing_key"
msg="bump: $(git status | grep modified | sed -r 's@.+/([^/]+)/[^/]+\n?@\1 @g' | tr -d '\n')"
git commit -S -a -m "$msg"
copy_over () {
f37 () {
git format-patch HEAD^
git checkout $1
git checkout f37
git apply *.patch || true
rm *.patch
git add *
git commit -S -a -m "$msg"
}
copy_over f39 || true
copy_over f40 || true
copy_over f41 || true
f37 || true
git push -u origin --all
fi
-1
View File
@@ -1,2 +1 @@
anda-build/
**/*.tar*
+30
View File
@@ -0,0 +1,30 @@
# Repository
/.github @lleyton
/.devcontainer @lleyton
/.gitignore @windowsboy111
/CODE_OF_CONDUCT.md @lleyton
/CONTRIBUTING.md @lleyton
/LICENSE @lleyton
/README.md @windowsboy111
/SECURITY.md @lleyton
/anda.hcl @lleyton
/comps.xml @lleyton
# Package maintainers
/anda/lib/libbismuth @lainsce
/anda/lib/libhelium @lainsce
/anda/others/tau-helium @lainsce
/anda/others/tau-hydrogen @lainsce
/anda/tools/melody @lleyton
/anda/go/curlie @lleyton
/anda/games/prismlauncher @getchoo
/anda/games/prismlauncher-nightly @getchoo
/anda/games/prismlauncher-qt5-nightly @getchoo
/anda/games/prismlauncher-qt5 @getchoo
/anda/srpm-macros @korewaChino
/anda/rust/starship @korewaChino
/anda/rust/zellij @korewaChino
/anda/audio/distrho @korewaChino
+4 -4
View File
@@ -1,7 +1,7 @@
# Contributing
First of all, thanks for being interested in contributing to Terra! If you have any questions about contributing, please [join our chats](https://wiki.ultramarine-linux.org/en/community/community/).
First of all, thanks for being interested in contributing to Terra! If you have any questions about contributing, please contact us on [Discord](https://discord.gg/5fdPuxTg5Q). Since we use a GitHub Wiki for [documention](https://github.com/terrapkg/packages/wiki), our guidelines may be found there. See the links below:
- [Contribution Guide](https://developer.fyralabs.com/terra/contributing)
- [FAQ](https://developer.fyralabs.com/terra/faq)
- [Policy](https://developer.fyralabs.com/terra/policy)
* [Contribution Guide](https://github.com/terrapkg/packages/wiki/Contribute)
* [FAQ](https://github.com/terrapkg/packages/wiki/FAQ)
* [Policy](https://github.com/terrapkg/packages/wiki/Policy)
+5 -22
View File
@@ -1,37 +1,20 @@
# Terra Sources
[![Repository status](https://repology.org/badge/repository-big/terra_39.svg?header=Terra+39)](https://repology.org/repository/terra_39)
[![Repository status](https://repology.org/badge/repository-big/terra_40.svg?header=Terra+40)](https://repology.org/repository/terra_40)
[![Repository status](https://repology.org/badge/repository-big/terra_rawhide.svg?header=Terra+Rawhide)](https://repology.org/repository/terra_rawhide)
[![Repository status](https://repology.org/badge/repository-big/terra_37.svg?header=Terra+37)](https://repology.org/repository/terra_37)
[![Repository status](https://repology.org/badge/repository-big/terra_38.svg?header=Terra+38)](https://repology.org/repository/terra_38)
Terra is a rolling-release Fedora repository for all the software you need.
With Terra, you can install the latest packages knowing that quality and security are assured.
See the introduction at [our website](https://terra.fyralabs.com).
This monorepo contains the package manifests for all packages in Terra.
## Installation
```bash
sudo dnf install --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' --setopt='terra.gpgkey=https://repos.fyralabs.com/terra$releasever/key.asc' terra-release
```
If you are using immutable/atomic editions of Fedora, run the following commands instead:
```bash
curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo
sudo rpm-ostree install terra-release
sudo dnf config-manager --add-repo https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo
```
## Documentation
Our documentation can be found on our [Devdocs](https://developer.fyralabs.com/terra/).
Our documentation can be found on our [Devdocs](https://developer.fyralabs.com/terra/). Alternatively, the GitHub Wiki contains older versions of the documentations.
## Questions?
Feel free to reach out by [joining our community](https://wiki.ultramarine-linux.org/en/community/community/). We're always happy to help!
- [Contribution Guide](https://developer.fyralabs.com/terra/contributing)
- [FAQ](https://developer.fyralabs.com/terra/faq)
- [Policy](https://developer.fyralabs.com/terra/policy)
Feel free to reach out on [Discord](https://discord.gg/5fdPuxTg5Q). We're always happy to help!
+2 -2
View File
@@ -3,7 +3,7 @@
## Our Process
Fyra Labs is committed to ensuring user security and privacy.
As such, we constantly try our best to ensure that our infrastructure and process are secure, which you may read about in our [FAQ](https://developer.fyralabs.com/terra/faq#technical-details).
As such, we constantly try our best to ensure that our infrastructure and process are secure, which you may read about in our [FAQ](https://github.com/terrapkg/packages/wiki/FAQ#technical-details).
As a part of Fyra Labs's transparency measures, we will publicize details of any known breaches. This information will include, but will not be limited to:
* Affected users, infrastructure, and data.
@@ -11,7 +11,7 @@ As a part of Fyra Labs's transparency measures, we will publicize details of any
* An in-depth explanation of how the breach occurred, including relevant security vulnerabilities.
* How Fyra Labs will better protect user data in the future, ensuring our commitment to security and privacy.
We will publish these updates on our [Twitter](https://twitter.com/TeamFyraLabs), [Fedi](https://fedi.fyralabs.com/@hq), and [Discord](https://discord.gg/5fdPuxTg5Q).
We will publish these updates on our [Twitter](https://twitter.com/TeamFyraLabs) and [Discord](https://discord.gg/5fdPuxTg5Q).
## Reporting a Vulnerability
+19 -36
View File
@@ -1,26 +1,17 @@
%global xurl https://files.pythonhosted.org/packages/51/5f/6f52b958fe38a36a0799c01fbd56a742ebdfcf41f89438dbee998b8ce692/anki-24.06.3-cp39-abi3-manylinux_2_28_x86_64.whl
%global aurl https://files.pythonhosted.org/packages/df/bb/b0bfbc6a06a598b0b614d18dd8c4f40827828649f9742f1f44a4e44d6a2c/anki-24.06.3-cp39-abi3-manylinux_2_31_aarch64.whl
%global qurl https://files.pythonhosted.org/packages/21/2a/d8e22a9521be04ef29a30d21a2c3008783ab03b6f07cc14696a040f747a4/aqt-24.06.3-py3-none-any.whl
Name: anki-bin
Version: 24.06.3
Release: 1%?dist
Version: 2.1.65
Release: 1%{?dist}
Summary: Flashcard program for using space repetition learning (Installed with wheel)
License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5
URL: https://apps.ankiweb.net/
BuildRequires: python3-pip rpm_macro(fdupes) cargo
Requires: python3-sqlalchemy python3-simplejson python3-matplotlib python3-decorator python3-markdown python3-orjson
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema
Requires: python3-flask-cors python3-protobuf python3-requests python3-waitress python3-pyqt6-webengine python3-send2trash
Requires: libxcrypt-compat hicolor-icon-theme sox mpv
BuildRequires: python3-installer python3.11 rpm_macro(fdupes)
Requires: hicolor-icon-theme python3-sqlalchemy python3-simplejson python3-matplotlib python3-decorator python3-markdown python3-send2trash
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema sox libxcrypt-compat
Requires: python3-flask-cors python3-protobuf python3-requests python3-waitress
ExclusiveArch: x86_64
Conflicts: anki
%ifarch x86_64
Source0: %xurl
%elifarch aarch64
Source0: %aurl
%endif
Source1: %qurl
Source0: https://files.pythonhosted.org/packages/cp39/a/anki/anki-%{version}-cp39-abi3-manylinux_2_28_%{_arch}.whl
Source1: https://files.pythonhosted.org/packages/py3/a/aqt/aqt-%{version}-py3-none-any.whl
Source2: https://raw.githubusercontent.com/ankitects/anki/%{version}/qt/runanki.py
Source3: https://raw.githubusercontent.com/ankitects/anki/%{version}/qt/bundle/lin/anki.desktop
Source4: https://raw.githubusercontent.com/ankitects/anki/%{version}/qt/bundle/lin/anki.png
@@ -37,37 +28,29 @@ Anki is based on a theory called spaced repetition.
%build
%install
pip3 install --root=%{buildroot} %SOURCE0 %SOURCE1
python3.11 -m installer --destdir="%{buildroot}" %{SOURCE0}
python3.11 -m installer --destdir="%{buildroot}" %{SOURCE1}
install -Dm755 %{SOURCE2} "%{buildroot}/usr/bin/anki"
install -Dm644 %{SOURCE3} "%{buildroot}/usr/share/applications/anki.desktop"
install -Dm644 %{SOURCE4} "%{buildroot}/usr/share/pixmaps/anki.png"
install -Dm644 %{SOURCE5} "%{buildroot}/%{_datadir}/licenses/%{name}/LICENSE"
install -Dm644 %{SOURCE6} "%{buildroot}/%{_datadir}/doc/%{name}/README.md"
cp -r %buildroot%_libdir/python3*/site-packages/{_aqt,anki*,aqt*} .
rm -rf %buildroot{%_libdir,/usr/lib}/python3*/site-packages/*
cp -r ./{_aqt,anki*,aqt*} %buildroot/usr/lib/python3*/site-packages/
rm -rf %buildroot%_bindir/{distro,flask,jsonschema,markdown_py,normalizer,send2trash,waitress-serve}
%fdupes %buildroot%_libdir/python*/site-packages/_aqt/data/
%fdupes %_libdir/python*/site-packages/_aqt/data/
%files
%license LICENSE
%doc README.md
%_bindir/anki
/usr/lib/python*/site-packages/_aqt/
/usr/lib/python*/site-packages/anki-%{version}.dist-info/
/usr/lib/python*/site-packages/anki/
/usr/lib/python*/site-packages/aqt-%{version}.dist-info/
/usr/lib/python*/site-packages/aqt/
%_datadir/applications/anki.desktop
%_datadir/pixmaps/anki.png
/usr/bin/anki
/usr/lib64/python*/site-packages/_aqt/
/usr/lib64/python*/site-packages/anki-%{version}.dist-info/
/usr/lib64/python*/site-packages/anki/
/usr/lib64/python*/site-packages/aqt-%{version}.dist-info/
/usr/lib64/python*/site-packages/aqt/
/usr/share/applications/anki.desktop
/usr/share/pixmaps/anki.png
%changelog
* Fri Nov 10 2023 hazel-bunny <dabiswas112@gmail.com> - 23.10-2
- Add python3-orjson and mpv as dependencies
* Wed Jan 11 2023 windowsboy111 <windowsboy111@fyralabs.com> - 2.1.60
- Initial package
+1 -15
View File
@@ -1,15 +1 @@
let aarch64_regex = `<a href="https://files\.pythonhosted\.org/packages/(..)/(..)/(.{60})/anki-([\d.]+)-cp(\d+)-abi3-manylinux_.+?_aarch64.whl">`;
let html = get("https://pypi.org/project/anki/");
let relevant = find(aarch64_regex, html, 0);
let ver = find(aarch64_regex, relevant, 4);
rpm.version(ver);
if rpm.changed() {
rpm.release();
rpm.global("aurl", find(`"(.+)"`, relevant, 1));
let cp = find(aarch64_regex, relevant, 5);
let x86_64_regex = `<a href="https://files\.pythonhosted\.org/packages/(..)/(..)/(.{60})/anki-${ver}-cp${cp}-abi3-manylinux_.+?_x86_64.whl">`;
let relevant1 = find(x86_64_regex, html, 0);
rpm.global("xurl", find(`"(.+)"`, relevant1, 1));
let qhtml = get("https://pypi.org/project/aqt/");
rpm.global("qurl", find(`<a href="(https://files\.pythonhosted\.org/packages/../../.{60}/aqt-${ver}-py3-none.any.whl)">`, qhtml, 1));
}
rpm.version(gh("ankitects/anki"));
+8 -8
View File
@@ -1,20 +1,20 @@
--- a/qt/aqt/qt/__init__.py
+++ b/qt/aqt/qt/__init__.py
@@ -9,16 +9,7 @@ import sys
diff -uNr anki-2.1.55.old/qt/aqt/qt/__init__.py anki-2.1.55/qt/aqt/qt/__init__.py
--- anki-2.1.55.old/qt/aqt/qt/__init__.py 2023-01-02 18:34:13.716216913 +0800
+++ anki-2.1.55/qt/aqt/qt/__init__.py 2023-01-02 18:34:00.410033708 +0800
@@ -9,16 +9,7 @@
import traceback
from typing import Callable, TypeVar, Union
-try:
- import PyQt6
-except:
- from .qt5 import * # type: ignore
-else:
- if os.getenv("ENABLE_QT5_COMPAT"):
- if not os.getenv("DISABLE_QT5_COMPAT"):
- print("Running with temporary Qt5 compatibility shims.")
- print("Run with DISABLE_QT5_COMPAT=1 to confirm compatibility with Qt6.")
- from . import qt5_compat # needs to be imported first
- from .qt6 import *
-
+from .qt5 import * # type: ignore
from anki.utils import is_mac, is_win
# fix buggy ubuntu12.04 display of language selector
+16 -12
View File
@@ -1,13 +1,17 @@
diff --git a/qt/aqt/update.py b/qt/aqt/update.py
index 212ddf93d..6f716cc04 100644
--- a/qt/aqt/update.py
+++ b/qt/aqt/update.py
@@ -11,6 +11,8 @@ from aqt.utils import openLink, show_warning, showText, tr
diff -uNr anki-2.1.55.old/qt/aqt/profiles.py anki-2.1.55/qt/aqt/profiles.py
--- anki-2.1.55.old/qt/aqt/profiles.py 2023-01-02 18:35:44.574467892 +0800
+++ anki-2.1.55/qt/aqt/profiles.py 2023-01-02 18:34:00.412033736 +0800
@@ -77,11 +77,11 @@
def check_for_update() -> None:
+ return
+
from aqt import mw
def do_check(_col: Collection) -> CheckForUpdateResponse:
metaConf = dict(
ver=0,
- updates=True,
+ updates=False,
created=int_time(),
id=random.randrange(0, 2**63),
lastMsg=-1,
- suppressUpdate=False,
+ suppressUpdate=True,
firstRun=True,
defaultLang=None,
)
+6 -6
View File
@@ -1,14 +1,14 @@
Name: anki-qt5
Version: 24.06.3
Release: 1%?dist
Version: 2.1.65
Release: 1%{?dist}
Summary: Flashcard program for using space repetition learning
License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5
URL: https://apps.ankiweb.net/
BuildRequires: python3-devel python3-setuptools python3-waitress python3-protobuf python3-pysocks rpm_macro(fdupes)
BuildRequires: python3-distro python3-flask-cors python3-jsonschema python3-send2trash python3-certifi python3-simplejson python3-pyqt5-sip
BuildRequires: python3-installer make mold cargo git rsync ninja-build libxcrypt-compat nodejs python3.9 python-unversioned-command gcc
Requires: hicolor-icon-theme python3-sqlalchemy python3-simplejson python3-matplotlib python3-decorator python3-markdown python3-send2trash python3-orjson mpv python3-qt5-webengine
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema sox libxcrypt-compat python3-pyqt5-sip
Requires: hicolor-icon-theme python3-sqlalchemy python3-simplejson python3-matplotlib python3-decorator python3-markdown python3-send2trash
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema sox libxcrypt-compat
ExclusiveArch: x86_64
Conflicts: anki
Patch0: 0001-No-update.patch
@@ -20,10 +20,10 @@ phrases in a foreign language) as easily, quickly and efficiently as possible.
Anki is based on a theory called spaced repetition.
%prep
rm -rf ./*
git clone https://github.com/ankitects/anki .
git checkout %version
%patch 1 -p1
%patch0 -p1
%patch1 -p1
# See https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=anki-qt5
+16 -12
View File
@@ -1,13 +1,17 @@
diff --git a/qt/aqt/update.py b/qt/aqt/update.py
index 212ddf93d..6f716cc04 100644
--- a/qt/aqt/update.py
+++ b/qt/aqt/update.py
@@ -11,6 +11,8 @@ from aqt.utils import openLink, show_warning, showText, tr
diff -uNr anki-2.1.55.old/qt/aqt/profiles.py anki-2.1.55/qt/aqt/profiles.py
--- anki-2.1.55.old/qt/aqt/profiles.py 2023-01-02 18:35:44.574467892 +0800
+++ anki-2.1.55/qt/aqt/profiles.py 2023-01-02 18:34:00.412033736 +0800
@@ -77,11 +77,11 @@
def check_for_update() -> None:
+ return
+
from aqt import mw
def do_check(_col: Collection) -> CheckForUpdateResponse:
metaConf = dict(
ver=0,
- updates=True,
+ updates=False,
created=int_time(),
id=random.randrange(0, 2**63),
lastMsg=-1,
- suppressUpdate=False,
+ suppressUpdate=True,
firstRun=True,
defaultLang=None,
)
-1
View File
@@ -1,5 +1,4 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "anki.spec"
}
+4 -5
View File
@@ -1,14 +1,14 @@
Name: anki
Version: 24.06.3
Release: 1%?dist
Version: 2.1.65
Release: 1%{?dist}
Summary: Flashcard program for using space repetition learning
License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5
URL: https://apps.ankiweb.net/
BuildRequires: python3-devel python3-setuptools python3-waitress python3-protobuf python3-pysocks rpm_macro(fdupes)
BuildRequires: python3-distro python3-flask-cors python3-jsonschema python3-send2trash python3-certifi python3-simplejson
BuildRequires: python3-installer make mold cargo git rsync ninja-build libxcrypt-compat nodejs python3.9 python-unversioned-command gcc python3-pyqt6-webengine
BuildRequires: python3-installer make mold cargo git rsync ninja-build libxcrypt-compat nodejs python3.9 python-unversioned-command gcc python3-pyqt6-devel python3-pyqt6
Requires: hicolor-icon-theme python3-sqlalchemy python3-simplejson python3-matplotlib python3-decorator python3-markdown python3-send2trash
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema sox libxcrypt-compat python3-pyqt6-webengine
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema sox libxcrypt-compat python3-qt5-webengine python3-pyqt6
Recommends: mpv
Obsoletes: anki <= 2.1.15
Conflicts: anki-qt5
@@ -20,7 +20,6 @@ phrases in a foreign language) as easily, quickly and efficiently as possible.
Anki is based on a theory called spaced repetition.
%prep
rm -rf *
git clone https://github.com/ankitects/anki .
git checkout %{version}
%patch 0 -p1
+5 -11
View File
@@ -1,21 +1,16 @@
%define debug_package %nil
%global _build_id_links none
%ifarch x86_64
%global src ArmCord-%version-linux-x64
%global src ArmCord-%version
%elifarch aarch64
%global src ArmCord-%version-linux-arm64
%global src ArmCord-%version-arm64
%elifarch armv7l
%global src ArmCord-%version-linux-armv7l
%global src ArmCord-%version-armv7l
%endif
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/armcord/.*\\.so
Name: armcord-bin
Version: 3.3.0
Release: 1%?dist
Version: 3.2.0
Release: 2%{?dist}
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/ArmCord/ArmCord
@@ -26,7 +21,6 @@ Source2: https://raw.githubusercontent.com/ArmCord/ArmCord/v%version/README.md
Requires: electron xdg-utils
ExclusiveArch: x86_64 aarch64 armv7l
Conflicts: armcord
BuildRequires: add-determinism
%description
ArmCord is a custom client designed to enhance your Discord experience
+18 -22
View File
@@ -1,27 +1,25 @@
%define debug_package %nil
Name: armcord
Version: 3.3.0
Release: 1%?dist
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/ArmCord/ArmCord
Group: Applications/Internet
Source1: launch.sh
Packager: madonuko <mado@fyralabs.com>
Requires: electron xdg-utils
BuildRequires: git-core add-determinism pnpm
Conflicts: armcord-bin
BuildArch: noarch
Name: armcord
Version: 3.2.0
Release: 2%{?dist}
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/ArmCord/ArmCord
Group: Applications/Internet
Source0: %url/archive/refs/tags/v%version.tar.gz
Source1: launch.sh
Requires: electron xdg-utils
BuildRequires: nodejs-npm
Conflicts: armcord-bin
BuildArch: noarch
%description
ArmCord is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
rm -rf *
git clone %url .
git checkout v%version
%autosetup -n ArmCord-%version
cat <<EOF > armcord.desktop
[Desktop Entry]
@@ -38,8 +36,8 @@ EOF
%build
pnpm install --no-frozen-lockfile
pnpm run packageQuick
npx pnpm@7 install --frozen-lockfile --ignore-scripts
npm run packageQuick
%install
@@ -51,16 +49,13 @@ install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/armcord.png
%files
%doc README.md
%license license.txt
%license LICENSE
/usr/bin/armcord
/usr/share/applications/ArmCord.desktop
/usr/share/pixmaps/armcord.png
/usr/share/armcord/app.asar
%changelog
* Mon Aug 26 2024 madonuko <mado@fyralabs.com> - 3.3.0-1
- Update to license.txt
* Sat Jun 17 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.2.0-2
- Remove libnotify dependency.
- Fix desktop entry.
@@ -68,3 +63,4 @@ install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/armcord.png
* Sat May 6 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.1.7-1
- Initial package
+3 -10
View File
@@ -1,17 +1,10 @@
%define debug_package %nil
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: authy
Version: 2.5.0
Release: 1%{?dist}
Version: 2.3.0
Release: 2%{?dist}
Summary: Two factor authentication desktop application
License: Unlicense
URL: https://authy.com/
Source0: https://api.snapcraft.io/api/v1/snaps/download/H8ZpNgIoPyvmkgxOWw5MSzsXK1wRZiHn_23.snap
Source0: https://api.snapcraft.io/api/v1/snaps/download/H8ZpNgIoPyvmkgxOWw5MSzsXK1wRZiHn_19.snap
Requires: gtk3
Requires: nss
BuildRequires: squashfs-tools desktop-file-utils
@@ -1,58 +0,0 @@
Name: blackbox-terminal
Version: 0.14.0
Release: 1%{?dist}
Summary: A beautiful GTK 4 terminal
License: GPL-3.0
URL: https://gitlab.gnome.org/raggesilver/blackbox
BuildRequires: vala meson gettext
BuildRequires: pkgconfig(gtk4) >= 4.6.2
BuildRequires: pkgconfig(gio-2.0) >= 2.50
BuildRequires: libadwaita-devel >= 1.1
BuildRequires: pkgconfig(pqmarble) >= 2
BuildRequires: pkgconfig(vte-2.91-gtk4) >= 0.69.0
BuildRequires: pkgconfig(json-glib-1.0) >= 1.4.4
BuildRequires: pkgconfig(libxml-2.0) >= 2.9.12
BuildRequires: pkgconfig(librsvg-2.0) >= 2.54.0
BuildRequires: pkgconfig(libpcre2-8)
BuildRequires: pkgconfig(graphene-gobject-1.0)
BuildRequires: pkgconfig(gee-0.8)
BuildRequires: desktop-file-utils libappstream-glib cmake
Source0: %url/-/archive/v%version/blackbox-v%version.tar.gz
%description
%{summary}.
%prep
%autosetup -p1 -n blackbox-v%version
%build
%meson
%meson_build
%install
%meson_install
%check
appstream-util validate-relax --nonet %buildroot/%_datadir/metainfo/com.raggesilver.BlackBox.metainfo.xml
%files
%doc README.md
%license COPYING
%_bindir/blackbox
%_bindir/terminal-toolbox
%_datadir/applications/com.raggesilver.BlackBox.desktop
%_datadir/metainfo/com.raggesilver.BlackBox.metainfo.xml
%_datadir/blackbox/
%_datadir/glib-2.0/schemas/com.raggesilver.BlackBox.gschema.xml
%_datadir/icons/hicolor/scalable/actions/com.raggesilver.BlackBox-fullscreen-symbolic.svg
%_datadir/icons/hicolor/scalable/actions/com.raggesilver.BlackBox-show-headerbar-symbolic.svg
%_datadir/icons/hicolor/scalable/actions/external-link-symbolic.svg
%_datadir/icons/hicolor/scalable/actions/settings-symbolic.svg
%_datadir/icons/hicolor/scalable/apps/com.raggesilver.BlackBox.svg
%_datadir/locale/*/LC_MESSAGES/blackbox.mo
%changelog
* Sun Oct 23 2022 windowsboy111 <windowsboy111@fyralabs.com>
- Initial package
@@ -1,13 +1,8 @@
%define debug_package %{nil}
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-canary-openasar
Version: 0.0.479
Release: 1%?dist
Version: 0.0.161
Release: 1%{?dist}
Summary: A snappier Discord rewrite with features like further customization and theming
License: MIT AND https://discord.com/terms
URL: https://github.com/GooseMod/OpenAsar
@@ -34,7 +29,6 @@ sed "s@Discord Canary@Discord Canary OpenAsar@g" a > discord-canary.desktop
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/discord-canary-openasar
cp -rv * %{buildroot}%{_datadir}/discord-canary-openasar
mkdir -p %{buildroot}%{_datadir}/applications/
@@ -43,11 +37,9 @@ ln -s %_datadir/discord-canary-openasar/discord-canary.desktop %{buildroot}%{_da
ln -s %_datadir/discord-canary-openasar/discord.png %{buildroot}%{_datadir}/pixmaps/discord-canary-openasar.png
cp -v %{SOURCE1} %{buildroot}%{_datadir}/discord-canary-openasar/resources/app.asar
chmod o+w %{buildroot}%{_datadir}/discord-canary-openasar/resources -R
ln -s %_datadir/discord-canary-openasar/DiscordCanary %buildroot%_bindir/discord-canary-openasar
%files
%_bindir/discord-canary-openasar
%{_datadir}/discord-canary-openasar/
%{_datadir}/applications/discord-canary-openasar.desktop
%{_datadir}/pixmaps/discord-canary-openasar.png
@@ -60,4 +52,4 @@ ln -s %_datadir/discord-canary-openasar/DiscordCanary %buildroot%_bindir/discord
- Bundle discord-canary
* Thu Oct 20 2022 Cappy Ishihara <cappy@cappuchino.xyz>
-
-
+5 -12
View File
@@ -1,13 +1,8 @@
%define debug_package %{nil}
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-canary
Version: 0.0.479
Release: 1%?dist
Version: 0.0.161
Release: 1%{?dist}
Summary: Free Voice and Text Chat for Gamers
URL: discord.com
Source0: https://dl-canary.discordapp.net/apps/linux/%{version}/discord-canary-%{version}.tar.gz
@@ -16,8 +11,9 @@ Requires: glibc GConf2 nspr >= 4.13 nss >= 3.27 libX11 >= 1.6 libXtst >= 1
Group: Applications/Internet
ExclusiveArch: x86_64
%description
All-in-one voice and text chat for gamers that's free, secure, and works on
both your desktop and phone.
Imagine a place where you can belong to a school club, a gaming group, or a
worldwide art community. Where just you and a handful of friends can spend time
together. A place that makes it easy to talk every day and hang out more often.
%prep
%autosetup -n DiscordCanary
@@ -26,17 +22,14 @@ both your desktop and phone.
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/discord-canary
cp -rv * %{buildroot}%{_datadir}/discord-canary
mkdir -p %{buildroot}%{_datadir}/applications/
mkdir -p %{buildroot}%{_datadir}/pixmaps
ln -s %_datadir/discord-canary/discord-canary.desktop %{buildroot}%{_datadir}/applications/
ln -s %_datadir/discord-canary/discord.png %{buildroot}%{_datadir}/pixmaps/discord-canary.png
ln -s %_datadir/discord/DiscordCanary %buildroot%_bindir/discord-canary
%files
%_bindir/discord-canary
%{_datadir}/discord-canary/
%{_datadir}/applications/discord-canary.desktop
%{_datadir}/pixmaps/discord-canary.png
@@ -1,13 +1,8 @@
%define debug_package %{nil}
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-openasar
Version: 0.0.66
Release: 1%?dist
Version: 0.0.27
Release: 2%{?dist}
Summary: A snappier Discord rewrite with features like further customization and theming
License: MIT AND https://discord.com/terms
URL: https://github.com/GooseMod/OpenAsar
@@ -34,7 +29,6 @@ sed "s@Discord@Discord OpenAsar@g" a > discord.desktop
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/discord-openasar
cp -rv * %{buildroot}%{_datadir}/discord-openasar
mkdir -p %{buildroot}%{_datadir}/applications/
@@ -43,11 +37,9 @@ ln -s %_datadir/discord-openasar/discord.desktop %{buildroot}%{_datadir}/applica
ln -s %_datadir/discord-openasar/discord.png %{buildroot}%{_datadir}/pixmaps/discord-openasar.png
cp -v %{SOURCE1} %{buildroot}%{_datadir}/discord-openasar/resources/app.asar
chmod o+w %{buildroot}%{_datadir}/discord-openasar/resources -R
ln -s %_datadir/discord-openasar/Discord %buildroot%_bindir/discord-openasar
%files
%_bindir/discord-openasar
%{_datadir}/discord-openasar/
%{_datadir}/applications/discord-openasar.desktop
%{_datadir}/pixmaps/discord-openasar.png
@@ -1,13 +1,8 @@
%define debug_package %{nil}
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-ptb-openasar
Version: 0.0.101
Release: 1%?dist
Version: 0.0.43
Release: 1%{?dist}
Summary: A snappier Discord rewrite with features like further customization and theming
License: MIT AND https://discord.com/terms
URL: https://github.com/GooseMod/OpenAsar
@@ -34,7 +29,6 @@ sed "s@Discord Ptb@Discord Ptb OpenAsar@g" a > discord-ptb.desktop
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/discord-ptb-openasar
cp -rv * %{buildroot}%{_datadir}/discord-ptb-openasar
mkdir -p %{buildroot}%{_datadir}/applications/
@@ -45,11 +39,9 @@ install discord-ptb.desktop %{buildroot}%{_datadir}/applications/discord-ptb-ope
install discord.png %{buildroot}%{_datadir}/pixmaps/discord-ptb-openasar.png
cp -v %{SOURCE1} %{buildroot}%{_datadir}/discord-ptb-openasar/resources/app.asar
chmod o+w %{buildroot}%{_datadir}/discord-ptb-openasar/resources -R
ln -s %_datadir/discord-ptb-openasar/Discord %buildroot%_bindir/discord-ptb-openasar
%files
%_bindir/discord-ptb-openasar
%{_datadir}/discord-ptb-openasar/
%{_datadir}/applications/discord-ptb-openasar.desktop
%{_datadir}/pixmaps/discord-ptb-openasar.png
+5 -12
View File
@@ -1,13 +1,8 @@
%define debug_package %{nil}
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-ptb
Version: 0.0.101
Release: 1%?dist
Version: 0.0.43
Release: 1%{?dist}
Summary: Free Voice and Text Chat for Gamers.
URL: https://discord.com
Source0: https://dl-ptb.discordapp.net/apps/linux/%{version}/discord-ptb-%{version}.tar.gz
@@ -20,8 +15,9 @@ Requires: libXtst >= 1.2
Group: Applications/Internet
ExclusiveArch: x86_64
%description
All-in-one voice and text chat for gamers that's free, secure, and works on
both your desktop and phone.
Imagine a place where you can belong to a school club, a gaming group, or a
worldwide art community. Where just you and a handful of friends can spend time
together. A place that makes it easy to talk every day and hang out more often.
%prep
%autosetup -n DiscordPTB
@@ -30,17 +26,14 @@ both your desktop and phone.
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/discord-ptb
cp -rv * %{buildroot}%{_datadir}/discord-ptb
mkdir -p %{buildroot}%{_datadir}/applications/
mkdir -p %{buildroot}%{_datadir}/pixmaps
ln -s %_datadir/discord-ptb/discord-ptb.desktop %{buildroot}%{_datadir}/applications/
ln -s %_datadir/discord-ptb/discord.png %{buildroot}%{_datadir}/pixmaps/discord-ptb.png
ln -s %_datadir/discord-ptb/Discord %buildroot%_bindir/discord-ptb
%files
%_bindir/discord-ptb
%{_datadir}/discord-ptb/
%{_datadir}/applications/discord-ptb.desktop
%{_datadir}/pixmaps/discord-ptb.png
+5 -12
View File
@@ -1,13 +1,8 @@
%define debug_package %{nil}
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord
Version: 0.0.66
Release: 1%?dist
Version: 0.0.27
Release: 2%{?dist}
Summary: Free Voice and Text Chat for Gamers
URL: https://discord.com
Source0: https://dl.discordapp.net/apps/linux/%{version}/discord-%{version}.tar.gz
@@ -20,8 +15,9 @@ Requires: libXtst >= 1.2
Group: Applications/Internet
ExclusiveArch: x86_64
%description
All-in-one voice and text chat for gamers that's free, secure, and works on
both your desktop and phone.
Imagine a place where you can belong to a school club, a gaming group, or a
worldwide art community. Where just you and a handful of friends can spend time
together. A place that makes it easy to talk every day and hang out more often.
%prep
%autosetup -n Discord
@@ -30,17 +26,14 @@ both your desktop and phone.
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/discord
cp -rv * %{buildroot}%{_datadir}/discord
mkdir -p %{buildroot}%{_datadir}/applications/
mkdir -p %{buildroot}%{_datadir}/pixmaps
ln -s %_datadir/discord/discord.desktop %{buildroot}%{_datadir}/applications/discord.desktop
ln -s %_datadir/discord/discord.png %{buildroot}%{_datadir}/pixmaps/discord.png
ln -s %_datadir/discord/Discord %buildroot%_bindir/discord
%files
%_bindir/discord
%{_datadir}/discord/
%{_datadir}/applications/discord.desktop
%{_datadir}/pixmaps/discord.png
-8
View File
@@ -1,8 +0,0 @@
project pkg {
rpm {
spec = "envision.spec"
}
labels {
nightly = 1
}
}
-47
View File
@@ -1,47 +0,0 @@
%global commit 943fc151f7c1927cb450456de9bb838311d9cc24
%global commit_date 20240831
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Name: envision
Version: %commit_date.%shortcommit
Release: 1%?dist
Summary: UI for building, configuring and running Monado, the open source OpenXR runtime
License: AGPL-3.0-or-later
URL: https://gitlab.com/gabmus/envision/
Source0: %url/-/archive/%commit/envision-%commit.tar.gz
BuildRequires: meson ninja-build cargo
BuildRequires: pkgconfig(glib-2.0) >= 2.66
BuildRequires: pkgconfig(gio-2.0) >= 2.66
BuildRequires: pkgconfig(gtk4) >= 4.10.0
BuildRequires: pkgconfig(vte-2.91-gtk4) >= 0.72.0
BuildRequires: pkgconfig(libadwaita-1)
BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: openssl-devel-engine
BuildRequires: openxr-devel
BuildRequires: libappstream-glib
BuildRequires: desktop-file-utils
BuildRequires: glib2-devel
Recommends: android-tools
%description
%summary.
%prep
%autosetup -n envision-%commit
%build
%meson
%meson_build
%install
%meson_install
%files
%doc README.md
%license LICENSE
%_bindir/envision
%_datadir/applications/org.gabmus.envision.desktop
%_datadir/envision/
%_iconsdir/hicolor/scalable/apps/org.gabmus.envision.svg
%_iconsdir/hicolor/symbolic/apps/org.gabmus.envision-symbolic.svg
%_metainfodir/org.gabmus.envision.appdata.xml
-5
View File
@@ -1,5 +0,0 @@
rpm.global("commit", gitlab_commit("gitlab.com", "46446166", "main"));
if rpm.changed() {
rpm.global("commit_date", date());
rpm.release();
}
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "feishin.spec"
}
}
-69
View File
@@ -1,69 +0,0 @@
%define debug_package %nil
%global _build_id_links none
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: feishin
Version: 0.7.3
Release: 1%?dist
Summary: A modern self-hosted music player
License: GPL-3.0
URL: https://github.com/jeffvli/feishin
Source0: %url/archive/refs/tags/v%version.tar.gz
Requires: fuse mpv
BuildRequires: nodejs-npm jq libxcrypt-compat
%description
%summary.
%prep
%autosetup
cat package.json | jq '.author += { "email": "jeffvictorli@gmail.com" }' | jq '.build.linux += { "maintainer": "mado@fyralabs.com", "vendor": "Fyra Labs Terra" }' > a
mv a package.json
cat package.json
cat<<EOF > feishin.desktop
[Desktop Entry]
Type=Application
Name=Feishin
Comment=Rewrite of Sonixd
Exec=/usr/bin/feishin
Icon=feishin
Terminal=false
Categories=Network;Audio;Music
Keywords=Music;Jellyfin;Audio;Stream;Sonixd
EOF
%build
npm install --legacy-peer-deps
npm run postinstall
npm run build
%ifarch x86_64
%define a linux
%elifarch aarch64
%define a arm64
%endif
npx electron-builder --linux dir --%a
%install
mkdir -p %buildroot%_datadir/{pixmaps,applications} %buildroot%_bindir
mv release/build/*-unpacked %buildroot%_datadir/feishin
install -Dm644 assets/icons/icon.png %buildroot%_datadir/pixmaps/feishin.png
ln -s %_datadir/feishin/feishin %buildroot%_bindir/feishin
install -Dm644 feishin.desktop %buildroot%_datadir/applications/
%files
%doc README.md CHANGELOG.md
%license LICENSE
%_bindir/feishin
%_datadir/feishin/
%_datadir/applications/feishin.desktop
%_datadir/pixmaps/feishin.png
%changelog
%autochangelog
-1
View File
@@ -1 +0,0 @@
rpm.version(gh("jeffvli/feishin"));
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "komikku.spec"
}
}
-109
View File
@@ -1,109 +0,0 @@
%global appname Komikku
%global uuid info.febvre.%{appname}
%global gtk4_version 4.14.4
%global libadwaita_version 1.5.1
%global pure_protobuf_version 2.0.0
Name: komikku
Version: 1.56.0
%forgemeta
Release: 1%?dist
Summary: A manga reader for GNOME
BuildArch: noarch
License: GPL-3.0-or-later
URL: https://valos.gitlab.io/Komikku
Source0: https://codeberg.org/valos/%{appname}/archive/v%{version}.tar.gz#/%{name}-v%{version}.tar.gz
BuildRequires: desktop-file-utils
BuildRequires: intltool
BuildRequires: libappstream-glib
BuildRequires: meson >= 0.59.0
BuildRequires: python3-devel >= 3.8
BuildRequires: blueprint-compiler
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.35.9
BuildRequires: pkgconfig(gtk4) >= %{gtk4_version}
BuildRequires: pkgconfig(libadwaita-1) >= %{libadwaita_version}
Requires: hicolor-icon-theme
Requires: gtk4 >= %{gtk4_version}
Requires: libadwaita >= %{libadwaita_version}
Requires: libnotify
Requires: webkitgtk6.0
Requires: python3-beautifulsoup4
Requires: python3-brotli
Requires: python3-colorthief
Requires: python3-dateparser %dnl >= 1.1.4 | https://bugzilla.redhat.com/show_bug.cgi?id=2115204
Requires: python3-emoji
Requires: python3-gobject
Requires: python3-keyring >= 21.6.0
Requires: python3-lxml
Requires: python3-natsort
Requires: python3-file-magic
Requires: python3-piexif
Requires: python3-pillow
Requires: python3-pillow-heif
Requires: python3-pure-protobuf >= %{pure_protobuf_version}
Requires: python3-rarfile
Requires: python3-requests
Requires: python3-unidecode
%description
Komikku is a manga reader for GNOME. It focuses on providing a clean, intuitive
and adaptive interface.
Keys features
* Online reading from dozens of servers
* Offline reading of downloaded comics
* Categories to organize your library
* RTL, LTR, Vertical and Webtoon reading modes
* Several types of navigation:
* Keyboard arrow keys
* Right and left navigation layout via mouse click or tapping
(touchpad/touch screen)
* Mouse wheel
* 2-fingers swipe gesture (touchpad)
* Swipe gesture (touch screen)
* Automatic update of comics
* Automatic download of new chapters
* Reading history
* Light and dark themes
%prep
%autosetup -n %{name} -p1
%build
%meson
%meson_build
%install
%meson_install
%find_lang %{name}
%check
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.xml
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%files -f %{name}.lang
%license LICENSE
%doc README.md
%{_bindir}/%{name}
%{_datadir}/%{name}/
%{_datadir}/applications/*.desktop
%{_datadir}/glib-2.0/schemas/*.gschema.xml
%{_datadir}/icons/hicolor/scalable/*/*.svg
%{_datadir}/icons/hicolor/symbolic/*/*.svg
%{_metainfodir}/*.xml
%{python3_sitelib}/%{name}/
%changelog
* Thu Jul 11 2024 Trung Lê <8@tle.id.au> - 1.51.1-0
- Initial RPM package
-3
View File
@@ -1,3 +0,0 @@
let latest_tag = get("https://codeberg.org/api/v1/repos/valos/Komikku/tags").json_arr()[0].name;
let new_version = find("([\\.\\d]+)", latest_tag, 1);
rpm.version(new_version);
@@ -1,10 +1,10 @@
%global forgeurl https://gitlab.com/ubports/development/core/lomiri-system-settings
%global commit 849214f4bb1a40fae692e18fed5d599e0d8c7af1
%global commit 890b72e8689a90289522f374534b06f85cde9ddb
%forgemeta
Name: lomiri-system-settings
Version: 1.2.0
Release: 1%?dist
Version: 1.0.1
Release: %autorelease
Summary: The system settings application for Lomiri
License: GPLv3
URL: https://gitlab.com/ubports/development/core/lomiri-system-settings
@@ -20,7 +20,6 @@ BuildRequires: pkgconfig(geonames)
BuildRequires: pkgconfig(icu-i18n)
#BuildRequires: pkgconfig(libandroid-properties)
BuildRequires: pkgconfig(click-0.4)
BuildRequires: pkgconfig(deviceinfo)
BuildRequires: pkgconfig(gsettings-qt)
BuildRequires: pkgconfig(QtGui)
BuildRequires: pkgconfig(gnome-desktop-3.0)
-8
View File
@@ -1,8 +0,0 @@
project pkg {
rpm {
spec = "mpv-nightly.spec"
}
labels {
nightly = "1"
}
}
-230
View File
@@ -1,230 +0,0 @@
%global commit 7c672e33a5eab0564383127c8837b1034a84357b
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date 20240831
%global ver 0.38.0
Name: mpv-nightly
Version: %ver^%commit_date.%shortcommit
Release: 1%?dist
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Summary: Movie player playing most video formats and DVDs
URL: https://mpv.io/
Source0: https://github.com/mpv-player/mpv/archive/%commit/mpv-%commit.tar.gz
Conflicts: mpv
BuildRequires: desktop-file-utils
BuildRequires: gcc
BuildRequires: libappstream-glib
BuildRequires: libatomic
BuildRequires: meson
BuildRequires: python3-docutils
BuildRequires: perl(Encode)
BuildRequires: perl(Math::BigInt)
BuildRequires: perl(Math::BigRat)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(caca)
BuildRequires: pkgconfig(dvdnav)
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(ffnvcodec)
BuildRequires: pkgconfig(gbm)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(lcms2)
BuildRequires: pkgconfig(libarchive) >= 3.4.0
BuildRequires: pkgconfig(libass)
BuildRequires: pkgconfig(libavcodec) >= 59.27.100
BuildRequires: pkgconfig(libavdevice) >= 58.13.100
BuildRequires: pkgconfig(libavfilter) >= 7.110.100
BuildRequires: pkgconfig(libavformat) >= 59.24.100
BuildRequires: pkgconfig(libavutil) >= 57.24.100
BuildRequires: pkgconfig(libbluray)
BuildRequires: pkgconfig(libcdio)
BuildRequires: pkgconfig(libcdio_paranoia)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.19
BuildRequires: pkgconfig(libplacebo) >= 6.338.0
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libswresample) >= 3.9.100
BuildRequires: pkgconfig(libswscale) >= 5.9.100
BuildRequires: pkgconfig(libva)
BuildRequires: pkgconfig(lua-5.1)
BuildRequires: pkgconfig(mujs)
BuildRequires: pkgconfig(openal)
BuildRequires: pkgconfig(rubberband)
BuildRequires: pkgconfig(sdl2)
BuildRequires: pkgconfig(shaderc)
BuildRequires: pkgconfig(uchardet) >= 0.0.5
BuildRequires: pkgconfig(vapoursynth)
BuildRequires: pkgconfig(vdpau)
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-cursor)
BuildRequires: pkgconfig(wayland-egl)
BuildRequires: pkgconfig(wayland-protocols)
BuildRequires: pkgconfig(wayland-scanner)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xdamage)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(xpresent)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xscrnsaver)
BuildRequires: pkgconfig(xv)
BuildRequires: pkgconfig(zimg) >= 2.9
BuildRequires: pkgconfig(zlib)
Requires: hicolor-icon-theme
Provides: mplayer-backend
Recommends: (yt-dlp or youtube-dl)
Suggests: yt-dlp
%description
Mpv is a movie player based on MPlayer and mplayer2. It supports a wide variety
of video file formats, audio and video codecs, and subtitle types. Special
input URL types are available to read input from a variety of sources other
than disk files. Depending on platform, a variety of different video and audio
output methods are supported.
Mpv has an OpenGL, Vulkan, and D3D11 based video output that is capable of many
features loved by videophiles, such as video scaling with popular high quality
algorithms, color management, frame timing, interpolation, HDR, and more.
While mpv strives for minimalism and provides no real GUI, it has a small
controller on top of the video for basic control.
Mpv can leverage most hardware decoding APIs on all platforms. Hardware
decoding can be enabled at runtime on demand.
Powerful scripting capabilities can make the player do almost anything. There
is a large selection of user scripts on the wiki.
A straightforward C API was designed from the ground up to make mpv usable as
a library and facilitate easy integration into other applications.
%package libs
Summary: Dynamic library for Mpv frontends
%description libs
This package contains the dynamic library libmpv, which provides access to Mpv.
%package devel
Summary: Development package for libmpv
Provides: mpv-libs-devel = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: mpv-nightly-libs-devel = %{?epoch:%{epoch}:}%{version}-%{release}
Obsoletes: mpv-libs-devel < %{?epoch:%{epoch}:}%{version}-%{release}
Obsoletes: mpv-nightly-libs-devel < %{?epoch:%{epoch}:}%{version}-%{release}
Requires: mpv-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: mpv-nightly-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
%description devel
This package contains development header files and libraries for Mpv.
%prep
%autosetup -p1 -n mpv-%commit
sed -e "s|/usr/local/etc|%{_sysconfdir}/mpv|" -i etc/mpv.conf
%build
%meson --auto-features=auto \
-Dalsa=enabled \
-Dbuild-date=false \
-Dcaca=enabled \
-Dcdda=enabled \
-Dcplayer=true \
-Dcplugins=enabled \
-Dcuda-hwaccel=enabled \
-Dcuda-interop=enabled \
-Ddmabuf-wayland=enabled \
-Ddrm=enabled \
-Ddvbin=enabled \
-Ddvdnav=enabled \
-Degl-drm=enabled \
-Degl-wayland=enabled \
-Degl-x11=enabled \
-Degl=enabled \
-Dgbm=enabled \
-Dgl-x11=enabled \
-Dgl=enabled \
-Dhtml-build=enabled \
-Diconv=enabled \
-Djack=enabled \
-Djavascript=enabled \
-Djpeg=enabled \
-Dlcms2=enabled \
-Dlibarchive=enabled \
-Dlibavdevice=enabled \
-Dlibbluray=enabled \
-Dlibmpv=true \
-Dlua=enabled \
-Dmanpage-build=enabled \
-Dopenal=enabled \
-Dopensles=disabled \
-Doss-audio=disabled \
-Dpipewire=enabled \
-Dplain-gl=enabled \
-Dpulse=enabled \
-Drubberband=enabled \
-Dsdl2-audio=enabled \
-Dsdl2-gamepad=enabled \
-Dsdl2-video=enabled \
-Dsdl2=enabled \
-Dsndio=disabled \
-Dspirv-cross=disabled \
-Duchardet=enabled \
-Dvaapi-drm=enabled \
-Dvaapi-wayland=enabled \
-Dvaapi-x11=enabled \
-Dvaapi=enabled \
-Dvapoursynth=enabled \
-Dvdpau-gl-x11=enabled \
-Dvdpau=enabled \
-Dvector=enabled \
-Dvulkan-interop=disabled \
-Dvulkan=enabled \
-Dwayland=enabled \
-Dwerror=false \
-Dx11=enabled \
-Dxv=enabled \
-Dzimg=enabled \
-Dzlib=enabled
%meson_build
%install
%meson_install
%check
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/mpv.metainfo.xml
desktop-file-validate %{buildroot}%{_datadir}/applications/mpv.desktop
%files
%docdir %{_docdir}/mpv/
%license LICENSE.GPL LICENSE.LGPL Copyright
%{_docdir}/mpv/
%{_bindir}/mpv
%{_datadir}/applications/mpv.desktop
%dir %{_datadir}/bash-completion/
%dir %{_datadir}/bash-completion/completions/
%{_datadir}/bash-completion/completions/mpv
%{_datadir}/icons/hicolor/*/apps/mpv*.*
%dir %{_datadir}/zsh/
%dir %{_datadir}/zsh/site-functions/
%{_datadir}/zsh/site-functions/_mpv
%{_mandir}/man1/mpv.*
%{_metainfodir}/mpv.metainfo.xml
%dir %{_sysconfdir}/mpv/
%config(noreplace) %{_sysconfdir}/mpv/encoding-profiles.conf
%files libs
%license LICENSE.GPL LICENSE.LGPL Copyright
%{_libdir}/libmpv.so.2{,.*}
%files devel
%{_includedir}/mpv/
%{_libdir}/libmpv.so
%{_libdir}/pkgconfig/mpv.pc
%changelog
%autochangelog
-12
View File
@@ -1,12 +0,0 @@
if filters.contains("nightly") {
rpm.global("commit", gh_commit("mpv-player/mpv"));
if rpm.changed() {
let v = gh("mpv-player/mpv");
if v.starts_with("v") {
v.crop(1);
}
rpm.global("ver", v);
rpm.global("commit_date", date());
rpm.release();
}
}
-6
View File
@@ -1,6 +0,0 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "mugshot.spec"
}
}
-62
View File
@@ -1,62 +0,0 @@
%global app org.bluesabre.Mugshot
%global _description %{expand:
Mugshot is a lightweight user configuration utility for Linux designed for simplicity and ease of
use. Quickly update your personal profile and sync your updates across applications.}
Name: python-mugshot
Version: 0.4.3
Release: 1%?dist
Summary: User Management Utility for Linux
License: GPL-3.0
URL: https://github.com/bluesabre/mugshot
Source0: %url/archive/refs/tags/mugshot-%version.tar.gz
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: python3-pip
BuildRequires: python3-distutils-extra
BuildRequires: python3-wheel
BuildRequires: python3-setuptools
BuildRequires: glib2
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
%description %_description
%package -n mugshot
Requires: util-linux-user
Requires: python3-cairo
Requires: python3-pexpect
Requires: python3-gobject
Summary: User Management Utility for Linux
%description -n mugshot %_description
%prep
%autosetup -n mugshot-mugshot-%version
%build
%pyproject_wheel
%install
%pyproject_install
%pyproject_save_files -L 'mugshot*'
install -Dm644 data/glib-2.0/schemas/%{lower:%app}.gschema.xml %buildroot%_datadir/glib-2.0/schemas/
%find_lang mugshot
%check
#pyproject_check_import
desktop-file-validate %buildroot%_datadir/applications/%app.desktop
appstream-util validate-relax --nonet %buildroot%_metainfodir/mugshot.appdata.xml
%files -n mugshot -f %{pyproject_files} -f mugshot.lang
%doc README.md NEWS
%license COPYING
%_bindir/mugshot
%_datadir/glib-2.0/schemas/%{lower:%app}.gschema.xml
%_datadir/applications/%app.desktop
%_datadir/mugshot/
%_metainfodir/mugshot.appdata.xml
%_mandir/man1/mugshot.1.gz
%_iconsdir/hicolor/*/apps/mugshot.svg
-3
View File
@@ -1,3 +0,0 @@
let v = gh("bluesabre/mugshot");
v.crop(8);
rpm.version(v);
@@ -0,0 +1,103 @@
From 04d3a21c6e72cd5574f7333adf548012d912c1ee Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Sat, 7 Jan 2023 23:15:13 -0500
Subject: [PATCH 1/3] UI: Consistently reference the software H264 encoder
properly
The code here assumes that the only software encoder is the x264-based
H.264 encoder. That may not always remain true. This change adjusts
the encoder string to indicate that it's an H.264 encoder from x264.
---
UI/data/locale/en-US.ini | 4 ++--
UI/window-basic-auto-config-test.cpp | 6 +++---
UI/window-basic-settings-stream.cpp | 2 +-
UI/window-basic-settings.cpp | 7 ++++---
4 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 4c03aa7db..e44d99660 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -980,7 +980,7 @@ Basic.Settings.Output.Simple.Warn.Encoder="Warning: Recording with a software en
Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes! Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates. Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use lossless quality?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
-Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
+Basic.Settings.Output.Simple.Encoder.Software.X264.H264="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.H264="Hardware (QSV, H.264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.AV1="Hardware (QSV, AV1)"
Basic.Settings.Output.Simple.Encoder.Hardware.AMD.H264="Hardware (AMD, H.264)"
@@ -991,7 +991,7 @@ Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.AV1="Hardware (NVENC, AV1)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.HEVC="Hardware (NVENC, HEVC)"
Basic.Settings.Output.Simple.Encoder.Hardware.Apple.H264="Hardware (Apple, H.264)"
Basic.Settings.Output.Simple.Encoder.Hardware.Apple.HEVC="Hardware (Apple, HEVC)"
-Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 low CPU usage preset, increases file size)"
+Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU.X264.H264="Software (x264 low CPU usage preset, increases file size)"
Basic.Settings.Output.Simple.Codec.AAC="AAC"
Basic.Settings.Output.Simple.Codec.AAC.Default="AAC (Default)"
Basic.Settings.Output.Simple.Codec.Opus="Opus"
diff --git a/UI/window-basic-auto-config-test.cpp b/UI/window-basic-auto-config-test.cpp
index 2d89d7347..09979c031 100644
--- a/UI/window-basic-auto-config-test.cpp
+++ b/UI/window-basic-auto-config-test.cpp
@@ -993,7 +993,7 @@ void AutoConfigTestPage::TestRecordingEncoderThread()
}
#define ENCODER_TEXT(x) "Basic.Settings.Output.Simple.Encoder." x
-#define ENCODER_SOFTWARE ENCODER_TEXT("Software")
+#define ENCODER_X264 ENCODER_TEXT("Software.X264.H264")
#define ENCODER_NVENC ENCODER_TEXT("Hardware.NVENC.H264")
#define ENCODER_QSV ENCODER_TEXT("Hardware.QSV.H264")
#define ENCODER_AMD ENCODER_TEXT("Hardware.AMD.H264")
@@ -1033,7 +1033,7 @@ void AutoConfigTestPage::FinalizeResults()
auto encName = [](AutoConfig::Encoder enc) -> QString {
switch (enc) {
case AutoConfig::Encoder::x264:
- return QTStr(ENCODER_SOFTWARE);
+ return QTStr(ENCODER_X264);
case AutoConfig::Encoder::NVENC:
return QTStr(ENCODER_NVENC);
case AutoConfig::Encoder::QSV:
@@ -1046,7 +1046,7 @@ void AutoConfigTestPage::FinalizeResults()
return QTStr(QUALITY_SAME);
}
- return QTStr(ENCODER_SOFTWARE);
+ return QTStr(ENCODER_X264);
};
auto newLabel = [this](const char *str) -> QLabel * {
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index f6e0817a0..b056938e7 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -1585,7 +1585,7 @@ void OBSBasicSettings::ResetEncoders(bool streamOnly)
#define ENCODER_STR(str) QTStr("Basic.Settings.Output.Simple.Encoder." str)
- ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software"),
+ ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software.X264.H264"),
QString(SIMPLE_ENCODER_X264));
if (service_supports_encoder(vcodecs, "obs_qsv11"))
ui->simpleOutStrEncoder->addItem(
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index fb170bfc1..48bb4bac6 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -5286,10 +5286,11 @@ void OBSBasicSettings::FillSimpleRecordingValues()
ADD_QUALITY("HQ");
ADD_QUALITY("Lossless");
- ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software"),
+ ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software.X264.H264"),
QString(SIMPLE_ENCODER_X264));
- ui->simpleOutRecEncoder->addItem(ENCODER_STR("SoftwareLowCPU"),
- QString(SIMPLE_ENCODER_X264_LOWCPU));
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("SoftwareLowCPU.X264.H264"),
+ QString(SIMPLE_ENCODER_X264_LOWCPU));
if (EncoderAvailable("obs_qsv11"))
ui->simpleOutRecEncoder->addItem(
ENCODER_STR("Hardware.QSV.H264"),
--
2.39.2
@@ -0,0 +1,345 @@
From 4517d8d8bb4c43af1f5b757773a5f9550bd23d37 Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Sun, 26 Mar 2023 06:06:31 -0400
Subject: [PATCH 2/3] obs-ffmpeg: Add initial support for the OpenH264 H.264
software codec
This allows users to leverage the OpenH264 codec from Cisco to encode
H.264 video content. It is significantly reduced in capability from
alternatives, but it does the job.
This also provides a framework for adding support for other H.264
software codecs provided through FFmpeg.
---
plugins/obs-ffmpeg/CMakeLists.txt | 1 +
plugins/obs-ffmpeg/cmake/legacy.cmake | 1 +
plugins/obs-ffmpeg/data/locale/en-US.ini | 3 +
plugins/obs-ffmpeg/obs-ffmpeg-h264.c | 260 +++++++++++++++++++++++
plugins/obs-ffmpeg/obs-ffmpeg.c | 2 +
5 files changed, 267 insertions(+)
create mode 100644 plugins/obs-ffmpeg/obs-ffmpeg-h264.c
diff --git a/plugins/obs-ffmpeg/CMakeLists.txt b/plugins/obs-ffmpeg/CMakeLists.txt
index 3eba00932..f97622c22 100644
--- a/plugins/obs-ffmpeg/CMakeLists.txt
+++ b/plugins/obs-ffmpeg/CMakeLists.txt
@@ -34,6 +34,7 @@ target_sources(
obs-ffmpeg-video-encoders.c
obs-ffmpeg-audio-encoders.c
obs-ffmpeg-av1.c
+ obs-ffmpeg-h264.c
obs-ffmpeg-nvenc.c
obs-ffmpeg-output.c
obs-ffmpeg-mux.c
diff --git a/plugins/obs-ffmpeg/cmake/legacy.cmake b/plugins/obs-ffmpeg/cmake/legacy.cmake
index 5540676ea..62f2cc7a1 100644
--- a/plugins/obs-ffmpeg/cmake/legacy.cmake
+++ b/plugins/obs-ffmpeg/cmake/legacy.cmake
@@ -40,6 +40,7 @@ target_sources(
obs-ffmpeg-video-encoders.c
obs-ffmpeg-audio-encoders.c
obs-ffmpeg-av1.c
+ obs-ffmpeg-h264.c
obs-ffmpeg-nvenc.c
obs-ffmpeg-output.c
obs-ffmpeg-mux.c
diff --git a/plugins/obs-ffmpeg/data/locale/en-US.ini b/plugins/obs-ffmpeg/data/locale/en-US.ini
index 55bbe919d..0363ed82b 100644
--- a/plugins/obs-ffmpeg/data/locale/en-US.ini
+++ b/plugins/obs-ffmpeg/data/locale/en-US.ini
@@ -109,4 +109,7 @@ NVENC.CheckDrivers="Try installing the latest <a href=\"https://obsproject.com/g
AV1.8bitUnsupportedHdr="OBS does not support 8-bit output of Rec. 2100."
+H264.UnsupportedVideoFormat="Only video formats using 8-bit color are supported."
+H264.UnsupportedColorSpace="Only the Rec. 709 color space is supported."
+
ReconnectDelayTime="Reconnect Delay"
diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-h264.c b/plugins/obs-ffmpeg/obs-ffmpeg-h264.c
new file mode 100644
index 000000000..179a61ccf
--- /dev/null
+++ b/plugins/obs-ffmpeg/obs-ffmpeg-h264.c
@@ -0,0 +1,260 @@
+/******************************************************************************
+ Copyright (C) 2023 by Neal Gompa <neal@gompa.dev>
+ Partly derived from obs-ffmpeg-av1.c by Hugh Bailey <obs.jim@gmail.com>
+
+ 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 2 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 <http://www.gnu.org/licenses/>.
+******************************************************************************/
+
+#include "obs-ffmpeg-video-encoders.h"
+
+#define do_log(level, format, ...) \
+ blog(level, "[H.264 encoder: '%s'] " format, \
+ obs_encoder_get_name(enc->ffve.encoder), ##__VA_ARGS__)
+
+#define error(format, ...) do_log(LOG_ERROR, format, ##__VA_ARGS__)
+#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__)
+#define info(format, ...) do_log(LOG_INFO, format, ##__VA_ARGS__)
+#define debug(format, ...) do_log(LOG_DEBUG, format, ##__VA_ARGS__)
+
+enum h264_encoder_type {
+ H264_ENCODER_TYPE_OH264,
+};
+
+struct h264_encoder {
+ struct ffmpeg_video_encoder ffve;
+ enum h264_encoder_type type;
+
+ DARRAY(uint8_t) header;
+};
+
+static const char *oh264_getname(void *unused)
+{
+ UNUSED_PARAMETER(unused);
+ return "OpenH264";
+}
+
+static void h264_video_info(void *data, struct video_scale_info *info)
+{
+ UNUSED_PARAMETER(data);
+
+ // OpenH264 only supports I420
+ info->format = VIDEO_FORMAT_I420;
+}
+
+static bool h264_update(struct h264_encoder *enc, obs_data_t *settings)
+{
+ const char *profile = obs_data_get_string(settings, "profile");
+ int bitrate = (int)obs_data_get_int(settings, "bitrate");
+ int keyint_sec = 0; // This is not supported by OpenH264
+ const char *rc_mode = "quality"; // We only want to use quality mode
+ int allow_skip_frames = 1; // This is required for quality mode
+
+ video_t *video = obs_encoder_video(enc->ffve.encoder);
+ const struct video_output_info *voi = video_output_get_info(video);
+ struct video_scale_info info;
+
+ info.format = voi->format;
+ info.colorspace = voi->colorspace;
+ info.range = voi->range;
+
+ enc->ffve.context->thread_count = 0;
+
+ h264_video_info(enc, &info);
+
+ av_opt_set(enc->ffve.context->priv_data, "rc_mode", rc_mode, 0);
+ av_opt_set(enc->ffve.context->priv_data, "profile", profile, 0);
+ av_opt_set_int(enc->ffve.context->priv_data, "allow_skip_frames",
+ allow_skip_frames, 0);
+
+ const char *ffmpeg_opts = obs_data_get_string(settings, "ffmpeg_opts");
+ ffmpeg_video_encoder_update(&enc->ffve, bitrate, keyint_sec, voi, &info,
+ ffmpeg_opts);
+ info("settings:\n"
+ "\tencoder: %s\n"
+ "\trc_mode: %s\n"
+ "\tbitrate: %d\n"
+ "\tprofile: %s\n"
+ "\twidth: %d\n"
+ "\theight: %d\n"
+ "\tffmpeg opts: %s\n",
+ enc->ffve.enc_name, rc_mode, bitrate, profile,
+ enc->ffve.context->width, enc->ffve.height, ffmpeg_opts);
+
+ enc->ffve.context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+ return ffmpeg_video_encoder_init_codec(&enc->ffve);
+}
+
+static void h264_destroy(void *data)
+{
+ struct h264_encoder *enc = data;
+
+ ffmpeg_video_encoder_free(&enc->ffve);
+ da_free(enc->header);
+ bfree(enc);
+}
+
+static void on_first_packet(void *data, AVPacket *pkt, struct darray *da)
+{
+ struct h264_encoder *enc = data;
+
+ da_copy_array(enc->header, enc->ffve.context->extradata,
+ enc->ffve.context->extradata_size);
+
+ darray_copy_array(1, da, pkt->data, pkt->size);
+}
+
+static void *h264_create_internal(obs_data_t *settings, obs_encoder_t *encoder,
+ const char *enc_lib, const char *enc_name)
+{
+ video_t *video = obs_encoder_video(encoder);
+ const struct video_output_info *voi = video_output_get_info(video);
+
+ switch (voi->format) {
+ // planar 4:2:0 formats
+ case VIDEO_FORMAT_I420: // three-plane
+ case VIDEO_FORMAT_NV12: // two-plane, luma and packed chroma
+ // packed 4:2:2 formats
+ case VIDEO_FORMAT_YVYU:
+ case VIDEO_FORMAT_YUY2: // YUYV
+ case VIDEO_FORMAT_UYVY:
+ // packed uncompressed formats
+ case VIDEO_FORMAT_RGBA:
+ case VIDEO_FORMAT_BGRA:
+ case VIDEO_FORMAT_BGRX:
+ case VIDEO_FORMAT_BGR3:
+ case VIDEO_FORMAT_Y800: // grayscale
+ // planar 4:4:4
+ case VIDEO_FORMAT_I444:
+ // planar 4:2:2
+ case VIDEO_FORMAT_I422:
+ // planar 4:2:0 with alpha
+ case VIDEO_FORMAT_I40A:
+ // planar 4:2:2 with alpha
+ case VIDEO_FORMAT_I42A:
+ // planar 4:4:4 with alpha
+ case VIDEO_FORMAT_YUVA:
+ // packed 4:4:4 with alpha
+ case VIDEO_FORMAT_AYUV:
+ break;
+ default:; // Make the compiler do the right thing
+ const char *const text =
+ obs_module_text("H264.UnsupportedVideoFormat");
+ obs_encoder_set_last_error(encoder, text);
+ blog(LOG_ERROR, "[H.264 encoder] %s", text);
+ return NULL;
+ }
+
+ switch (voi->colorspace) {
+ case VIDEO_CS_DEFAULT:
+ case VIDEO_CS_709:
+ break;
+ default:; // Make the compiler do the right thing
+ const char *const text =
+ obs_module_text("H264.UnsupportedColorSpace");
+ obs_encoder_set_last_error(encoder, text);
+ blog(LOG_ERROR, "[H.264 encoder] %s", text);
+ return NULL;
+ }
+
+ struct h264_encoder *enc = bzalloc(sizeof(*enc));
+
+ if (strcmp(enc_lib, "libopenh264") == 0)
+ enc->type = H264_ENCODER_TYPE_OH264;
+
+ if (!ffmpeg_video_encoder_init(&enc->ffve, enc, encoder, enc_lib, NULL,
+ enc_name, NULL, on_first_packet))
+ goto fail;
+ if (!h264_update(enc, settings))
+ goto fail;
+
+ return enc;
+
+fail:
+ h264_destroy(enc);
+ return NULL;
+}
+
+static void *oh264_create(obs_data_t *settings, obs_encoder_t *encoder)
+{
+ return h264_create_internal(settings, encoder, "libopenh264",
+ "OpenH264");
+}
+
+static bool h264_encode(void *data, struct encoder_frame *frame,
+ struct encoder_packet *packet, bool *received_packet)
+{
+ struct h264_encoder *enc = data;
+ return ffmpeg_video_encode(&enc->ffve, frame, packet, received_packet);
+}
+
+void h264_defaults(obs_data_t *settings)
+{
+ obs_data_set_default_int(settings, "bitrate", 2500);
+ obs_data_set_default_string(settings, "profile", "main");
+}
+
+obs_properties_t *h264_properties(enum h264_encoder_type type)
+{
+ UNUSED_PARAMETER(type); // Only one encoder right now...
+ obs_properties_t *props = obs_properties_create();
+ obs_property_t *p;
+
+ p = obs_properties_add_list(props, "profile",
+ obs_module_text("Profile"),
+ OBS_COMBO_TYPE_LIST,
+ OBS_COMBO_FORMAT_STRING);
+ obs_property_list_add_string(p, "constrained_baseline",
+ "constrained_baseline");
+ obs_property_list_add_string(p, "main", "main");
+ obs_property_list_add_string(p, "high", "high");
+
+ p = obs_properties_add_int(props, "bitrate", obs_module_text("Bitrate"),
+ 50, 300000, 50);
+ obs_property_int_set_suffix(p, " Kbps");
+
+ obs_properties_add_text(props, "ffmpeg_opts",
+ obs_module_text("FFmpegOpts"),
+ OBS_TEXT_DEFAULT);
+
+ return props;
+}
+
+obs_properties_t *oh264_properties(void *unused)
+{
+ UNUSED_PARAMETER(unused);
+ return h264_properties(H264_ENCODER_TYPE_OH264);
+}
+
+static bool h264_extra_data(void *data, uint8_t **extra_data, size_t *size)
+{
+ struct h264_encoder *enc = data;
+
+ *extra_data = enc->header.array;
+ *size = enc->header.num;
+ return true;
+}
+
+struct obs_encoder_info oh264_encoder_info = {
+ .id = "ffmpeg_openh264",
+ .type = OBS_ENCODER_VIDEO,
+ .codec = "h264",
+ .get_name = oh264_getname,
+ .create = oh264_create,
+ .destroy = h264_destroy,
+ .encode = h264_encode,
+ .get_defaults = h264_defaults,
+ .get_properties = oh264_properties,
+ .get_extra_data = h264_extra_data,
+ .get_video_info = h264_video_info,
+};
diff --git a/plugins/obs-ffmpeg/obs-ffmpeg.c b/plugins/obs-ffmpeg/obs-ffmpeg.c
index da0b2c2b4..a01a729c8 100644
--- a/plugins/obs-ffmpeg/obs-ffmpeg.c
+++ b/plugins/obs-ffmpeg/obs-ffmpeg.c
@@ -39,6 +39,7 @@ extern struct obs_encoder_info pcm24_encoder_info;
extern struct obs_encoder_info pcm32_encoder_info;
extern struct obs_encoder_info alac_encoder_info;
extern struct obs_encoder_info flac_encoder_info;
+extern struct obs_encoder_info oh264_encoder_info;
extern struct obs_encoder_info h264_nvenc_encoder_info;
#ifdef ENABLE_HEVC
extern struct obs_encoder_info hevc_nvenc_encoder_info;
@@ -387,6 +388,7 @@ bool obs_module_load(void)
obs_register_output(&ffmpeg_hls_muxer);
obs_register_output(&replay_buffer);
obs_register_encoder(&aac_encoder_info);
+ register_encoder_if_available(&oh264_encoder_info, "libopenh264");
register_encoder_if_available(&svt_av1_encoder_info, "libsvtav1");
register_encoder_if_available(&aom_av1_encoder_info, "libaom-av1");
obs_register_encoder(&opus_encoder_info);
--
2.39.2
@@ -0,0 +1,544 @@
From 30f84455969071ff9aa826a44438a0402dd15123 Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Tue, 28 Mar 2023 05:08:49 -0400
Subject: [PATCH 3/3] UI: Add support for OpenH264 as the worst-case fallback
OpenH264 exists as the codec of last resort, so it is implemented
such that it is only used as the software codec if x264 is not
available.
---
UI/data/locale/en-US.ini | 1 +
UI/window-basic-auto-config-test.cpp | 50 +++++++++++++++++++---------
UI/window-basic-auto-config.cpp | 15 ++++++++-
UI/window-basic-auto-config.hpp | 3 ++
UI/window-basic-main-outputs.cpp | 6 ++--
UI/window-basic-main-profiles.cpp | 34 +++++++++++--------
UI/window-basic-main.cpp | 20 +++++++----
UI/window-basic-main.hpp | 3 +-
UI/window-basic-settings-stream.cpp | 16 ++++++---
UI/window-basic-settings.cpp | 23 ++++++++++---
10 files changed, 123 insertions(+), 48 deletions(-)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index e44d99660..a5ba5d661 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -980,6 +980,7 @@ Basic.Settings.Output.Simple.Warn.Encoder="Warning: Recording with a software en
Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes! Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates. Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use lossless quality?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
+Basic.Settings.Output.Simple.Encoder.Software.OpenH264.H264="Software (OpenH264)"
Basic.Settings.Output.Simple.Encoder.Software.X264.H264="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.H264="Hardware (QSV, H.264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.AV1="Hardware (QSV, AV1)"
diff --git a/UI/window-basic-auto-config-test.cpp b/UI/window-basic-auto-config-test.cpp
index 09979c031..c791c8b8b 100644
--- a/UI/window-basic-auto-config-test.cpp
+++ b/UI/window-basic-auto-config-test.cpp
@@ -199,7 +199,8 @@ void AutoConfigTestPage::TestBandwidthThread()
: "rtmp_common";
OBSEncoderAutoRelease vencoder = obs_video_encoder_create(
- "obs_x264", "test_x264", nullptr, nullptr);
+ (wiz->x264Available ? "obs_x264" : "ffmpeg_openh264"),
+ "test_h264", nullptr, nullptr);
OBSEncoderAutoRelease aencoder = obs_audio_encoder_create(
"ffmpeg_aac", "test_aac", nullptr, 0, nullptr);
OBSServiceAutoRelease service = obs_service_create(
@@ -238,10 +239,11 @@ void AutoConfigTestPage::TestBandwidthThread()
obs_data_set_string(service_settings, "key", key.c_str());
obs_data_set_int(vencoder_settings, "bitrate", wiz->startingBitrate);
- obs_data_set_string(vencoder_settings, "rate_control", "CBR");
- obs_data_set_string(vencoder_settings, "preset", "veryfast");
- obs_data_set_int(vencoder_settings, "keyint_sec", 2);
-
+ if (wiz->x264Available) {
+ obs_data_set_string(vencoder_settings, "rate_control", "CBR");
+ obs_data_set_string(vencoder_settings, "preset", "veryfast");
+ obs_data_set_int(vencoder_settings, "keyint_sec", 2);
+ }
obs_data_set_int(aencoder_settings, "bitrate", 32);
OBSBasic *main = reinterpret_cast<OBSBasic *>(App()->GetMainWindow());
@@ -567,7 +569,8 @@ bool AutoConfigTestPage::TestSoftwareEncoding()
/* create obs objects */
OBSEncoderAutoRelease vencoder = obs_video_encoder_create(
- "obs_x264", "test_x264", nullptr, nullptr);
+ (wiz->x264Available ? "obs_x264" : "ffmpeg_openh264"),
+ "test_h264", nullptr, nullptr);
OBSEncoderAutoRelease aencoder = obs_audio_encoder_create(
"ffmpeg_aac", "test_aac", nullptr, 0, nullptr);
OBSOutputAutoRelease output =
@@ -581,17 +584,25 @@ bool AutoConfigTestPage::TestSoftwareEncoding()
obs_data_set_int(aencoder_settings, "bitrate", 32);
if (wiz->type != AutoConfig::Type::Recording) {
- obs_data_set_int(vencoder_settings, "keyint_sec", 2);
+ if (wiz->x264Available) {
+ obs_data_set_int(vencoder_settings, "keyint_sec", 2);
+ obs_data_set_string(vencoder_settings, "rate_control",
+ "CBR");
+ obs_data_set_string(vencoder_settings, "preset",
+ "veryfast");
+ }
obs_data_set_int(vencoder_settings, "bitrate",
wiz->idealBitrate);
- obs_data_set_string(vencoder_settings, "rate_control", "CBR");
obs_data_set_string(vencoder_settings, "profile", "main");
- obs_data_set_string(vencoder_settings, "preset", "veryfast");
} else {
- obs_data_set_int(vencoder_settings, "crf", 20);
- obs_data_set_string(vencoder_settings, "rate_control", "CRF");
+ if (wiz->x264Available) {
+ obs_data_set_int(vencoder_settings, "crf", 20);
+ obs_data_set_string(vencoder_settings, "rate_control",
+ "CRF");
+ obs_data_set_string(vencoder_settings, "preset",
+ "veryfast");
+ }
obs_data_set_string(vencoder_settings, "profile", "high");
- obs_data_set_string(vencoder_settings, "preset", "veryfast");
}
/* -----------------------------------*/
@@ -944,7 +955,10 @@ void AutoConfigTestPage::TestStreamEncoderThread()
else
wiz->streamingEncoder = AutoConfig::Encoder::AMD;
} else {
- wiz->streamingEncoder = AutoConfig::Encoder::x264;
+ if (wiz->x264Available)
+ wiz->streamingEncoder = AutoConfig::Encoder::x264;
+ else
+ wiz->streamingEncoder = AutoConfig::Encoder::OpenH264;
}
if (preferHardware && !softwareTested && wiz->hardwareEncodingAvailable)
@@ -979,7 +993,10 @@ void AutoConfigTestPage::TestRecordingEncoderThread()
else
wiz->recordingEncoder = AutoConfig::Encoder::AMD;
} else {
- wiz->recordingEncoder = AutoConfig::Encoder::x264;
+ if (wiz->x264Available)
+ wiz->streamingEncoder = AutoConfig::Encoder::x264;
+ else
+ wiz->streamingEncoder = AutoConfig::Encoder::OpenH264;
}
if (wiz->recordingEncoder != AutoConfig::Encoder::NVENC) {
@@ -993,6 +1010,7 @@ void AutoConfigTestPage::TestRecordingEncoderThread()
}
#define ENCODER_TEXT(x) "Basic.Settings.Output.Simple.Encoder." x
+#define ENCODER_OPENH264 ENCODER_TEXT("Software.OpenH264.H264")
#define ENCODER_X264 ENCODER_TEXT("Software.X264.H264")
#define ENCODER_NVENC ENCODER_TEXT("Hardware.NVENC.H264")
#define ENCODER_QSV ENCODER_TEXT("Hardware.QSV.H264")
@@ -1032,6 +1050,8 @@ void AutoConfigTestPage::FinalizeResults()
auto encName = [](AutoConfig::Encoder enc) -> QString {
switch (enc) {
+ case AutoConfig::Encoder::OpenH264:
+ return QTStr(ENCODER_OPENH264);
case AutoConfig::Encoder::x264:
return QTStr(ENCODER_X264);
case AutoConfig::Encoder::NVENC:
@@ -1046,7 +1066,7 @@ void AutoConfigTestPage::FinalizeResults()
return QTStr(QUALITY_SAME);
}
- return QTStr(ENCODER_X264);
+ return QTStr(ENCODER_OPENH264);
};
auto newLabel = [this](const char *str) -> QLabel * {
diff --git a/UI/window-basic-auto-config.cpp b/UI/window-basic-auto-config.cpp
index 3e9c36685..eace18067 100644
--- a/UI/window-basic-auto-config.cpp
+++ b/UI/window-basic-auto-config.cpp
@@ -961,6 +961,7 @@ AutoConfig::AutoConfig(QWidget *parent) : QWizard(parent)
streamPage->ui->bitrate->setValue(bitrate);
streamPage->ServiceChanged();
+ TestSoftwareEncoding();
TestHardwareEncoding();
if (!hardwareEncodingAvailable) {
delete streamPage->ui->preferHardware;
@@ -989,6 +990,16 @@ AutoConfig::~AutoConfig()
EnableThreadedMessageBoxes(false);
}
+void AutoConfig::TestSoftwareEncoding()
+{
+ size_t idx = 0;
+ const char *id;
+ while (obs_enum_encoder_types(idx++, &id)) {
+ if (strcmp(id, "obs_x264") == 0)
+ x264Available = true;
+ }
+}
+
void AutoConfig::TestHardwareEncoding()
{
size_t idx = 0;
@@ -1061,8 +1072,10 @@ inline const char *AutoConfig::GetEncoderId(Encoder enc)
return SIMPLE_ENCODER_AMD;
case Encoder::Apple:
return SIMPLE_ENCODER_APPLE_H264;
- default:
+ case Encoder::x264:
return SIMPLE_ENCODER_X264;
+ default:
+ return SIMPLE_ENCODER_OPENH264;
}
};
diff --git a/UI/window-basic-auto-config.hpp b/UI/window-basic-auto-config.hpp
index eb50701ff..e581791dd 100644
--- a/UI/window-basic-auto-config.hpp
+++ b/UI/window-basic-auto-config.hpp
@@ -43,6 +43,7 @@ class AutoConfig : public QWizard {
};
enum class Encoder {
+ OpenH264,
x264,
NVENC,
QSV,
@@ -91,6 +92,7 @@ class AutoConfig : public QWizard {
bool qsvAvailable = false;
bool vceAvailable = false;
bool appleAvailable = false;
+ bool x264Available = false;
int startingBitrate = 2500;
bool customServer = false;
@@ -106,6 +108,7 @@ class AutoConfig : public QWizard {
int specificFPSNum = 0;
int specificFPSDen = 0;
+ void TestSoftwareEncoding();
void TestHardwareEncoding();
bool CanTestServer(const char *server);
diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp
index 737ab966d..a4df630c4 100644
--- a/UI/window-basic-main-outputs.cpp
+++ b/UI/window-basic-main-outputs.cpp
@@ -515,7 +515,9 @@ void SimpleOutput::LoadStreamingPreset_Lossy(const char *encoderId)
/* mistakes have been made to lead us to this. */
const char *get_simple_output_encoder(const char *encoder)
{
- if (strcmp(encoder, SIMPLE_ENCODER_X264) == 0) {
+ if (strcmp(encoder, SIMPLE_ENCODER_OPENH264) == 0) {
+ return "ffmpeg_openh264";
+ } else if (strcmp(encoder, SIMPLE_ENCODER_X264) == 0) {
return "obs_x264";
} else if (strcmp(encoder, SIMPLE_ENCODER_X264_LOWCPU) == 0) {
return "obs_x264";
@@ -549,7 +551,7 @@ const char *get_simple_output_encoder(const char *encoder)
#endif
}
- return "obs_x264";
+ return "ffmpeg_openh264";
}
void SimpleOutput::LoadRecordingPreset()
diff --git a/UI/window-basic-main-profiles.cpp b/UI/window-basic-main-profiles.cpp
index 4941359ea..1f3ffdc1d 100644
--- a/UI/window-basic-main-profiles.cpp
+++ b/UI/window-basic-main-profiles.cpp
@@ -794,7 +794,7 @@ void OBSBasic::ChangeProfile()
Auth::Load();
- CheckForSimpleModeX264Fallback();
+ CheckForSimpleModeH264Fallback();
blog(LOG_INFO, "Switched to profile '%s' (%s)", newName, newDir);
blog(LOG_INFO, "------------------------------------------------");
@@ -815,12 +815,13 @@ void OBSBasic::ChangeProfile()
}
}
-void OBSBasic::CheckForSimpleModeX264Fallback()
+void OBSBasic::CheckForSimpleModeH264Fallback()
{
const char *curStreamEncoder =
config_get_string(basicConfig, "SimpleOutput", "StreamEncoder");
const char *curRecEncoder =
config_get_string(basicConfig, "SimpleOutput", "RecEncoder");
+ bool x264_supported = false;
bool qsv_supported = false;
bool qsv_av1_supported = false;
bool amd_supported = false;
@@ -837,7 +838,9 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
const char *id;
while (obs_enum_encoder_types(idx++, &id)) {
- if (strcmp(id, "amd_amf_h264") == 0)
+ if (strcmp(id, "obs_x264") == 0)
+ x264_supported = true;
+ else if (strcmp(id, "amd_amf_h264") == 0)
amd_supported = true;
else if (strcmp(id, "obs_qsv11") == 0)
qsv_supported = true;
@@ -865,68 +868,73 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
#endif
}
+ // Check to see whether x264 is available
+ const char *fallback_encoder_name = (x264_supported
+ ? SIMPLE_ENCODER_X264
+ : SIMPLE_ENCODER_OPENH264);
+
auto CheckEncoder = [&](const char *&name) {
if (strcmp(name, SIMPLE_ENCODER_QSV) == 0) {
if (!qsv_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_QSV_AV1) == 0) {
if (!qsv_av1_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_NVENC) == 0) {
if (!nve_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_NVENC_AV1) == 0) {
if (!nve_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#ifdef ENABLE_HEVC
} else if (strcmp(name, SIMPLE_ENCODER_AMD_HEVC) == 0) {
if (!amd_hevc_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_NVENC_HEVC) == 0) {
if (!nve_hevc_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#endif
} else if (strcmp(name, SIMPLE_ENCODER_AMD) == 0) {
if (!amd_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_AMD_AV1) == 0) {
if (!amd_av1_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_APPLE_H264) == 0) {
if (!apple_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#ifdef ENABLE_HEVC
} else if (strcmp(name, SIMPLE_ENCODER_APPLE_HEVC) == 0) {
if (!apple_hevc_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#endif
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index 6d9375eb4..c6aae8c7b 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -1379,6 +1379,8 @@ extern void CheckExistingCookieId();
#define DEFAULT_CONTAINER "fragmented_mp4"
#endif
+extern bool EncoderAvailable(const char *encoder);
+
bool OBSBasic::InitBasicConfigDefaults()
{
QList<QScreen *> screens = QGuiApplication::screens();
@@ -1549,7 +1551,10 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_bool(basicConfig, "AdvOut", "UseRescale", false);
config_set_default_uint(basicConfig, "AdvOut", "TrackIndex", 1);
config_set_default_uint(basicConfig, "AdvOut", "VodTrackIndex", 2);
- config_set_default_string(basicConfig, "AdvOut", "Encoder", "obs_x264");
+
+ bool useX264 = EncoderAvailable("obs_x264");
+ config_set_default_string(basicConfig, "AdvOut", "Encoder",
+ (useX264 ? "obs_x264" : "ffmpeg_openh264"));
config_set_default_string(basicConfig, "AdvOut", "RecType", "Standard");
@@ -1672,7 +1677,6 @@ bool OBSBasic::InitBasicConfigDefaults()
return true;
}
-extern bool EncoderAvailable(const char *encoder);
extern bool update_nvenc_presets(ConfigFile &config);
void OBSBasic::InitBasicConfigDefaults2()
@@ -1681,12 +1685,14 @@ void OBSBasic::InitBasicConfigDefaults2()
"Pre23Defaults");
bool useNV = EncoderAvailable("ffmpeg_nvenc") && !oldEncDefaults;
+ bool useX264 = EncoderAvailable("obs_x264");
+ const char *h264_fallback =
+ (useX264 ? SIMPLE_ENCODER_X264 : SIMPLE_ENCODER_OPENH264);
+
config_set_default_string(basicConfig, "SimpleOutput", "StreamEncoder",
- useNV ? SIMPLE_ENCODER_NVENC
- : SIMPLE_ENCODER_X264);
+ useNV ? SIMPLE_ENCODER_NVENC : h264_fallback);
config_set_default_string(basicConfig, "SimpleOutput", "RecEncoder",
- useNV ? SIMPLE_ENCODER_NVENC
- : SIMPLE_ENCODER_X264);
+ useNV ? SIMPLE_ENCODER_NVENC : h264_fallback);
const char *aac_default = "ffmpeg_aac";
if (EncoderAvailable("CoreAudio_AAC"))
@@ -1967,7 +1973,7 @@ void OBSBasic::OBSInit()
InitBasicConfigDefaults2();
- CheckForSimpleModeX264Fallback();
+ CheckForSimpleModeH264Fallback();
blog(LOG_INFO, STARTUP_SEPARATOR);
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index cbce69832..74c6eb144 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -66,6 +66,7 @@ class OBSBasicVCamConfig;
#define SIMPLE_ENCODER_X264 "x264"
#define SIMPLE_ENCODER_X264_LOWCPU "x264_lowcpu"
+#define SIMPLE_ENCODER_OPENH264 "ffmpeg_openh264"
#define SIMPLE_ENCODER_QSV "qsv"
#define SIMPLE_ENCODER_QSV_AV1 "qsv_av1"
#define SIMPLE_ENCODER_NVENC "nvenc"
@@ -434,7 +435,7 @@ private:
void DeleteProfile(const char *profile_name, const char *profile_dir);
void RefreshProfiles();
void ChangeProfile();
- void CheckForSimpleModeX264Fallback();
+ void CheckForSimpleModeH264Fallback();
void SaveProjectNow();
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index b056938e7..548e5f45f 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -1362,7 +1362,9 @@ static QString get_adv_fallback(const QString &enc)
return "com.apple.videotoolbox.videoencoder.ave.avc";
if (enc == "obs_qsv11_av1")
return "obs_qsv11";
- return "obs_x264";
+ if (EncoderAvailable("obs_x264"))
+ return "obs_x264";
+ return "ffmpeg_openh264";
}
static QString get_adv_audio_fallback(const QString &enc)
@@ -1391,7 +1393,9 @@ static QString get_simple_fallback(const QString &enc)
return SIMPLE_ENCODER_APPLE_H264;
if (enc == SIMPLE_ENCODER_QSV_AV1)
return SIMPLE_ENCODER_QSV;
- return SIMPLE_ENCODER_X264;
+ if (EncoderAvailable("obs_x264"))
+ return SIMPLE_ENCODER_X264;
+ return SIMPLE_ENCODER_OPENH264;
}
bool OBSBasicSettings::ServiceSupportsCodecCheck()
@@ -1585,8 +1589,12 @@ void OBSBasicSettings::ResetEncoders(bool streamOnly)
#define ENCODER_STR(str) QTStr("Basic.Settings.Output.Simple.Encoder." str)
- ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software.X264.H264"),
- QString(SIMPLE_ENCODER_X264));
+ ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software.OpenH264.H264"),
+ QString(SIMPLE_ENCODER_OPENH264));
+ if (service_supports_encoder(vcodecs, "obs_x264"))
+ ui->simpleOutStrEncoder->addItem(
+ ENCODER_STR("Software.X264.H264"),
+ QString(SIMPLE_ENCODER_X264));
if (service_supports_encoder(vcodecs, "obs_qsv11"))
ui->simpleOutStrEncoder->addItem(
ENCODER_STR("Hardware.QSV.H264"),
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index 48bb4bac6..51fe280db 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -3831,6 +3831,11 @@ void OBSBasicSettings::SaveOutputSettings()
do. This only exists to make sure that the x264 preset doesn't
get overwritten with empty data. */
presetType = "ApplePreset";
+ else if (encoder == SIMPLE_ENCODER_OPENH264)
+ /* The OpenH264 encoder does not have presets like the other encoders
+ do. This only exists to make sure that the x264 preset doesn't
+ get overwritten with empty data. */
+ presetType = "OpenH264Preset";
else
presetType = "Preset";
@@ -5286,11 +5291,16 @@ void OBSBasicSettings::FillSimpleRecordingValues()
ADD_QUALITY("HQ");
ADD_QUALITY("Lossless");
- ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software.X264.H264"),
- QString(SIMPLE_ENCODER_X264));
- ui->simpleOutRecEncoder->addItem(
- ENCODER_STR("SoftwareLowCPU.X264.H264"),
- QString(SIMPLE_ENCODER_X264_LOWCPU));
+ ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software.OpenH264.H264"),
+ QString(SIMPLE_ENCODER_OPENH264));
+ if (EncoderAvailable("obs_x264")) {
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("Software.X264.H264"),
+ QString(SIMPLE_ENCODER_X264));
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("SoftwareLowCPU.X264.H264"),
+ QString(SIMPLE_ENCODER_X264_LOWCPU));
+ }
if (EncoderAvailable("obs_qsv11"))
ui->simpleOutRecEncoder->addItem(
ENCODER_STR("Hardware.QSV.H264"),
@@ -5463,6 +5473,9 @@ void OBSBasicSettings::SimpleStreamingEncoderChanged()
defaultPreset = "balanced";
preset = curAMDAV1Preset;
+ } else if (encoder == SIMPLE_ENCODER_OPENH264) {
+ ui->simpleOutPreset->setVisible(false);
+ ui->simpleOutPresetLabel->setVisible(false);
} else {
#define PRESET_STR(val) \
--
2.39.2
+5
View File
@@ -0,0 +1,5 @@
project pkg {
rpm {
spec = "obs-studio.spec"
}
}
@@ -0,0 +1,106 @@
From 1e2fc3ade587a7a7c24e4238996ca382c4c0f719 Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa@fedoraproject.org>
Date: Tue, 27 Dec 2022 09:15:08 -0500
Subject: [PATCH] CMake: Use the system version of QRCodeGenCPP dependency
---
CMakeLists.txt | 9 +++++++--
cmake/legacy.cmake | 12 ++++++++----
src/forms/ConnectInfo.cpp | 2 +-
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/plugins/obs-websocket/CMakeLists.txt b/plugins/obs-websocket/CMakeLists.txt
index 871f92b..288cc87 100644
--- a/plugins/obs-websocket/CMakeLists.txt
+++ b/plugins/obs-websocket/CMakeLists.txt
@@ -13,7 +13,7 @@ endif()
# Submodule deps check
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/deps/qr/cpp/QrCode.hpp")
- message(FATAL_ERROR "obs-websocket submodule deps not available.")
+ message(INFO "obs-websocket submodule deps not available.")
endif()
# Find Qt
@@ -22,6 +22,9 @@ find_qt(COMPONENTS Core Widgets Svg Network)
# Find nlohmann JSON
find_package(nlohmann_json 3 REQUIRED)
+# Find qrcodegencpp
+find_package(qrcodegencpp REQUIRED)
+
# Find WebSocket++
find_package(Websocketpp 0.8 REQUIRED)
@@ -157,7 +160,9 @@ target_link_libraries(
Qt::Network
nlohmann_json::nlohmann_json
Websocketpp::Websocketpp
- Asio::Asio)
+ Asio::Asio
+ qrcodegencpp
+ )
set_target_properties_obs(
obs-websocket
diff --git a/plugins/obs-websocket/cmake/legacy.cmake b/plugins/obs-websocket/cmake/legacy.cmake
index ab25ec7..98ca704 100644
--- a/plugins/obs-websocket/cmake/legacy.cmake
+++ b/plugins/obs-websocket/cmake/legacy.cmake
@@ -10,7 +10,7 @@ endif()
# Submodule deps check
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/qr/cpp/QrCode.hpp)
- obs_status(FATAL_ERROR "obs-websocket submodule deps not available.")
+ obs_status(INFO "obs-websocket submodule deps not available.")
endif()
# Plugin tests flag
@@ -22,6 +22,9 @@ find_qt(COMPONENTS Core Widgets Svg Network)
# Find nlohmann JSON
find_package(nlohmann_json 3 REQUIRED)
+# Find qrcodegencpp
+find_package(qrcodegencpp REQUIRED)
+
# Find WebSocket++
find_package(Websocketpp 0.8 REQUIRED)
@@ -129,8 +132,7 @@ target_sources(
src/utils/Compat.cpp
src/utils/Compat.h
src/utils/Utils.h
- deps/qr/cpp/QrCode.cpp
- deps/qr/cpp/QrCode.hpp)
+ )
target_link_libraries(
obs-websocket
@@ -142,7 +144,9 @@ target_link_libraries(
Qt::Network
nlohmann_json::nlohmann_json
Websocketpp::Websocketpp
- Asio::Asio)
+ Asio::Asio
+ qrcodegencpp
+ )
target_compile_features(obs-websocket PRIVATE cxx_std_17)
diff --git a/plugins/obs-websocket/src/forms/ConnectInfo.cpp b/plugins/obs-websocket/src/forms/ConnectInfo.cpp
index ddb979d..89a04c4 100644
--- a/plugins/obs-websocket/src/forms/ConnectInfo.cpp
+++ b/plugins/obs-websocket/src/forms/ConnectInfo.cpp
@@ -21,9 +21,9 @@ with this program. If not, see <https://www.gnu.org/licenses/>
#include <QPainter>
#include <QUrl>
#include <obs-module.h>
+#include <qrcodegencpp/QrCode.hpp>
#include "ConnectInfo.h"
-#include "../../deps/qr/cpp/QrCode.hpp"
#include "../obs-websocket.h"
#include "../Config.h"
#include "../utils/Platform.h"
--
2.39.2
+151
View File
@@ -0,0 +1,151 @@
%global obswebsocketver 5.2.2
Name: obs-studio
Version: 29.1.1
Release: 1%?dist
Summary: Open Broadcaster Software Studio
License: GPL-2.0-or-later and ISC and MIT and BSD-1-Clause and BSD-2-Clause and BSD-3-Clause and BSL-1.0 and LGPL-2.1-or-later and CC0-1.0 and (CC0-1.0 or OpenSSL or Apache-2.0) and LicenseRef-Fedora-Public-Domain and (BSD-3-Clause or GPL-2.0-only)
URL: https://obsproject.com/
Source0: https://github.com/obsproject/obs-studio/archive/refs/tags/%version.tar.gz
Source1: https://github.com/obsproject/obs-websocket/archive/%obswebsocketver/obs-websocket-%obswebsocketver.tar.gz
BuildRequires: gcc
BuildRequires: cmake >= 3.16
BuildRequires: ninja-build
BuildRequires: libappstream-glib
BuildRequires: desktop-file-utils
BuildRequires: alsa-lib-devel
BuildRequires: asio-devel
BuildRequires: fdk-aac-free-devel
BuildRequires: fontconfig-devel
BuildRequires: freetype-devel
BuildRequires: jansson-devel >= 2.5
BuildRequires: json-devel
BuildRequires: libcurl-devel
BuildRequires: libdrm-devel
BuildRequires: libGL-devel
BuildRequires: libglvnd-devel
BuildRequires: librist-devel
BuildRequires: srt-devel
BuildRequires: libuuid-devel
BuildRequires: libv4l-devel
BuildRequires: libva-devel
BuildRequires: libX11-devel
BuildRequires: libxcb-devel
BuildRequires: libXcomposite-devel
BuildRequires: libXinerama-devel
BuildRequires: libxkbcommon-devel
BuildRequires: luajit-devel
BuildRequires: mbedtls-devel
BuildRequires: pciutils-devel
BuildRequires: pipewire-devel
BuildRequires: pipewire-jack-audio-connection-kit-devel
BuildRequires: pulseaudio-libs-devel
BuildRequires: python3-devel
BuildRequires: libqrcodegencpp-devel
BuildRequires: qt6-qtbase-devel
BuildRequires: qt6-qtbase-private-devel
BuildRequires: qt6-qtsvg-devel
BuildRequires: qt6-qtwayland-devel
BuildRequires: speexdsp-devel
BuildRequires: swig
BuildRequires: systemd-devel
BuildRequires: wayland-devel
BuildRequires: websocketpp-devel
BuildRequires: ffmpeg-free-devel
BuildRequires: x264-devel
BuildRequires: vlc-devel
# websocket deps
BuildRequires: nlohmann-json-devel websocketpp-devel asio-devel
# Ensure QtWayland is installed when libwayland-client is installed
Requires: (qt6-qtwayland%{?_isa} if libwayland-client%{?_isa})
# For icon folder heirarchy
Requires: hicolor-icon-theme
# Virtual camera support
Recommends: kmod-v4l2loopback
# NVIDIA Hardware accelerated encoding: CUDA
Suggests: xorg-x11-drv-nvidia-cuda
# obs-studio-plugin-vlc-video
# We dlopen() libvlc
Requires: libvlc.so.%{libvlc_soversion}%{?lib64_suffix}
# These are modified sources that can't be easily unbundled
## License: MIT and CC0-1.0
## Newer version in Fedora with the same licensing
## Request filed upstream for fixing it: https://github.com/simd-everywhere/simde/issues/999
Provides: bundled(simde) = 0.7.1
## License: BSL-1.0
Provides: bundled(decklink-sdk)
## License: CC0-1.0 or OpenSSL or Apache-2.0
Provides: bundled(blake2)
## License: MIT
Provides: bundled(json11)
## License: MIT
Provides: bundled(libcaption)
## License: ISC
Provides: bundled(libff)
## License: BSD-1-Clause
Provides: bundled(uthash)
## License: BSD-3-Clause
Provides: bundled(rnnoise)
## License: LGPL-2.1-or-later and LicenseRef-Fedora-Public-Domain
Provides: bundled(librtmp)
## License: MIT
Provides: bundled(libnsgif)
## License: MIT
## Windows only dependency
## Support for Linux will also unbundle it
## Cf. https://github.com/obsproject/obs-studio/pull/8327
Provides: bundled(intel-mediasdk)
%description
Open Broadcaster Software is free and open source
software for video recording and live streaming.
%prep
%autosetup -p1 -n obs-studio-%{?snapdate:%{commit}}%{!?snapdate:%{version_no_tilde}}
# Prepare plugins/obs-websocket
tar -xf %SOURCE1 --strip-components=1 -C plugins/obs-websocket/
ls plugins/obs-websocket/
sed -e 's|OBS_MULTIARCH_SUFFIX|LIB_SUFFIX|g' -i cmake/Modules/ObsHelpers.cmake
# Kill rpath settings
sed -e '\|set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OBS_LIBRARY_DESTINATION}")|d' -i cmake/Modules/ObsHelpers_Linux.cmake
# touch the missing submodules
touch plugins/obs-browser/CMakeLists.txt
# remove -Werror flag to mitigate FTBFS with ffmpeg 5.1
sed -e 's|-Werror-implicit-function-declaration||g' -i cmake/Modules/CompilerConfig.cmake
sed -e '/-Werror/d' -i cmake/Modules/CompilerConfig.cmake
%build
%cmake -B build -S . \
-DUNIX_STRUCTURE=1 -GNinja \
-DCMAKE_SKIP_RPATH=1 \
-DBUILD_BROWSER=OFF \
-DENABLE_JACK=ON \
-DENABLE_LIBFDK=ON \
-DENABLE_AJA=OFF \
-DOBS_VERSION_OVERRIDE="%version-%release" \
-Wno-dev \
-DOpenGL_GL_PREFERENCE=GLVND
%cmake_build
%install
%cmake_install
%files
%doc README.rst
%license COPYING plugins/{{enc-amf,obs-websocket}/LICENSE,obs-{browser,filters,outputs}/COPYING}
%changelog
* Tue May 23 2023 windowsboy111 <windowsboy111@fyralabs.com> - 29.1.1-1
- Initial package
- Ref: https://pkgs.rpmfusion.org/cgit/free/obs-studio-freeworld.git/tree/obs-studio-freeworld.spec
- Ref: https://gitlab.archlinux.org/archlinux/packaging/packages/obs-studio/-/blob/main/PKGBUILD
+2
View File
@@ -0,0 +1,2 @@
rpm.version(gh("obsproject/obs-studio"));
rpm.global("obswebsocketver", gh("obsproject/obs-websocket"));
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "ruffle-nightly.spec"
}
}
-67
View File
@@ -1,67 +0,0 @@
%global ver 2024-08-31
%global goodver %(echo %ver | sed 's/-//g')
%global __brp_mangle_shebangs %{nil}
%bcond_without mold
%global _description %{expand:
Ruffle is an Adobe Flash Player emulator written in the Rust programming
language. Ruffle targets both the desktop and the web using WebAssembly.}
Name: ruffle-nightly
Version: %goodver
Release: 1%?dist
Summary: A Flash Player emulator written in Rust
License: Apache-2.0 OR MIT
URL: https://ruffle.rs/
Source0: https://github.com/ruffle-rs/ruffle/archive/refs/tags/nightly-%ver.tar.gz
Provides: ruffle
BuildRequires: cargo-rpm-macros >= 24
BuildRequires: anda-srpm-macros
BuildRequires: gcc-c++ cmake java
BuildRequires: java-latest-openjdk-headless
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(xcb-cursor)
Packager: madonuko <mado@fyralabs.com>
%description %_description
%files
%doc README.md
%license LICENSE.md
%license LICENSE.dependencies
%_bindir/ruffle_desktop
%_datadir/applications/ruffle_desktop.desktop
%_iconsdir/hicolor/scalable/apps/ruffle_desktop.svg
%prep
%autosetup -n ruffle-nightly-%ver
%cargo_prep_online
cat<<EOF > ruffle_desktop.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Ruffle Desktop
Comment=%summary
Exec=%_bindir/ruffle_desktop
Icon=ruffle_desktop
Terminal=false
StartupNotify=false
Categories=Application;
MimeType=application/x-shockwave-flash;
EOF
%build
%{cargo_license_online} > LICENSE.dependencies
%install
cd desktop
%cargo_install
install -Dm644 assets/icon.svg %buildroot%_iconsdir/hicolor/scalable/apps/ruffle_desktop.svg
install -Dm644 ../ruffle_desktop.desktop %buildroot%_datadir/applications/ruffle_desktop.desktop
%changelog
* Mon Jul 29 2024 madonuko <mado@fyralabs.com>
- Initial package
-13
View File
@@ -1,13 +0,0 @@
let releases = "https://api.github.com/repos/ruffle-rs/ruffle/releases".get().json_arr();
for release in releases {
let tag = release.tag_name;
if !tag.starts_with("nightly-") {
continue;
}
tag.crop(8); // remove "nightly-"
rpm.global("ver", tag);
break;
}
if rpm.changed() {
rpm.release();
}
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "rust-sccache.spec"
}
}
-492
View File
@@ -1,492 +0,0 @@
# Generated by rust2rpm 26
%bcond_with check
# aarch64 dist is not available
%ifarch aarch64
%bcond_with dist_server
%else
%bcond_without dist_server
%endif
# Don't mangle shebangs
%global __brp_mangle_shebangs %{nil}
%global crate sccache
Name: rust-sccache
Version: 0.8.1
Release: %autorelease
Summary: Ccache-like tool
License: Apache-2.0
URL: https://crates.io/crates/sccache
Source: %{crates_source}
# Automatically generated patch to strip dependencies and normalize metadata
Patch: sccache-fix-metadata-auto.diff
ExclusiveArch: %{rust_arches}
BuildRequires: cargo-rpm-macros >= 24
BuildRequires: anda-srpm-macros
BuildRequires: openssl-devel
BuildRequires: gcc
BuildRequires: perl
BuildRequires: rust-packaging
%global _description %{expand:
Sccache is a ccache-like tool. It is used as a compiler wrapper and
avoids compilation when possible. Sccache has the capability to utilize
caching in remote storage environments, including various cloud storage
options, or alternatively, in local storage.}
%description %{_description}
%package -n %{crate}
Summary: %{summary}
License: MIT
%description -n %{crate} %{_description}
%files -n %{crate}
%license LICENSE
%doc CODE_OF_CONDUCT.md
%doc README.md
%{_bindir}/sccache
%if %{with dist_server}
%{_bindir}/sccache-dist
%endif
%package devel
Summary: %{summary}
BuildArch: noarch
Provides: crate(sccache) = 0.7.4
Requires: cargo
Requires: rust >= 1.67.1
%description devel %{_description}
This package contains library source intended for building other packages which
use the "%{crate}" crate.
%files devel
%{crate_instdir}/
%package -n %{name}+default-devel
Summary: %{summary}
BuildArch: noarch
Provides: crate(sccache/default) = 0.7.4
Requires: cargo
Requires: crate(sccache) = 0.7.4
Requires: crate(sccache/all) = 0.7.4
%description -n %{name}+default-devel %{_description}
This package contains library source intended for building other packages which
use the "default" feature of the "%{crate}" crate.
%files -n %{name}+default-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+all-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+all-devel %{_description}
This package contains library source intended for building other packages which
use the "all" feature of the "%{crate}" crate.
%files -n %{name}+all-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+azure-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+azure-devel %{_description}
This package contains library source intended for building other packages which
use the "azure" feature of the "%{crate}" crate.
%files -n %{name}+azure-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+dist-client-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+dist-client-devel %{_description}
This package contains library source intended for building other packages which
use the "dist-client" feature of the "%{crate}" crate.
%files -n %{name}+dist-client-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+dist-server-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+dist-server-devel %{_description}
This package contains library source intended for building other packages which
use the "dist-server" feature of the "%{crate}" crate.
%files -n %{name}+dist-server-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+dist-tests-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+dist-tests-devel %{_description}
This package contains library source intended for building other packages which
use the "dist-tests" feature of the "%{crate}" crate.
%files -n %{name}+dist-tests-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+flate2-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+flate2-devel %{_description}
This package contains library source intended for building other packages which
use the "flate2" feature of the "%{crate}" crate.
%files -n %{name}+flate2-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+gcs-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+gcs-devel %{_description}
This package contains library source intended for building other packages which
use the "gcs" feature of the "%{crate}" crate.
%files -n %{name}+gcs-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+gha-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+gha-devel %{_description}
This package contains library source intended for building other packages which
use the "gha" feature of the "%{crate}" crate.
%files -n %{name}+gha-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+http-body-util-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+http-body-util-devel %{_description}
This package contains library source intended for building other packages which
use the "http-body-util" feature of the "%{crate}" crate.
%files -n %{name}+http-body-util-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+hyper-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+hyper-devel %{_description}
This package contains library source intended for building other packages which
use the "hyper" feature of the "%{crate}" crate.
%files -n %{name}+hyper-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+hyper-util-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+hyper-util-devel %{_description}
This package contains library source intended for building other packages which
use the "hyper-util" feature of the "%{crate}" crate.
%files -n %{name}+hyper-util-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+jwt-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+jwt-devel %{_description}
This package contains library source intended for building other packages which
use the "jwt" feature of the "%{crate}" crate.
%files -n %{name}+jwt-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+libmount-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+libmount-devel %{_description}
This package contains library source intended for building other packages which
use the "libmount" feature of the "%{crate}" crate.
%files -n %{name}+libmount-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+memcached-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+memcached-devel %{_description}
This package contains library source intended for building other packages which
use the "memcached" feature of the "%{crate}" crate.
%files -n %{name}+memcached-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+native-zlib-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+native-zlib-devel %{_description}
This package contains library source intended for building other packages which
use the "native-zlib" feature of the "%{crate}" crate.
%files -n %{name}+native-zlib-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+nix-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+nix-devel %{_description}
This package contains library source intended for building other packages which
use the "nix" feature of the "%{crate}" crate.
%files -n %{name}+nix-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+opendal-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+opendal-devel %{_description}
This package contains library source intended for building other packages which
use the "opendal" feature of the "%{crate}" crate.
%files -n %{name}+opendal-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+openssl-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+openssl-devel %{_description}
This package contains library source intended for building other packages which
use the "openssl" feature of the "%{crate}" crate.
%files -n %{name}+openssl-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+oss-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+oss-devel %{_description}
This package contains library source intended for building other packages which
use the "oss" feature of the "%{crate}" crate.
%files -n %{name}+oss-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+redis-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+redis-devel %{_description}
This package contains library source intended for building other packages which
use the "redis" feature of the "%{crate}" crate.
%files -n %{name}+redis-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+reqsign-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+reqsign-devel %{_description}
This package contains library source intended for building other packages which
use the "reqsign" feature of the "%{crate}" crate.
%files -n %{name}+reqsign-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+reqwest-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+reqwest-devel %{_description}
This package contains library source intended for building other packages which
use the "reqwest" feature of the "%{crate}" crate.
%files -n %{name}+reqwest-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+rouille-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+rouille-devel %{_description}
This package contains library source intended for building other packages which
use the "rouille" feature of the "%{crate}" crate.
%files -n %{name}+rouille-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+s3-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+s3-devel %{_description}
This package contains library source intended for building other packages which
use the "s3" feature of the "%{crate}" crate.
%files -n %{name}+s3-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+sha2-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+sha2-devel %{_description}
This package contains library source intended for building other packages which
use the "sha2" feature of the "%{crate}" crate.
%files -n %{name}+sha2-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+syslog-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+syslog-devel %{_description}
This package contains library source intended for building other packages which
use the "syslog" feature of the "%{crate}" crate.
%files -n %{name}+syslog-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+unstable-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+unstable-devel %{_description}
This package contains library source intended for building other packages which
use the "unstable" feature of the "%{crate}" crate.
%files -n %{name}+unstable-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+url-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+url-devel %{_description}
This package contains library source intended for building other packages which
use the "url" feature of the "%{crate}" crate.
%files -n %{name}+url-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+vendored-openssl-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+vendored-openssl-devel %{_description}
This package contains library source intended for building other packages which
use the "vendored-openssl" feature of the "%{crate}" crate.
%files -n %{name}+vendored-openssl-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+version-compare-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+version-compare-devel %{_description}
This package contains library source intended for building other packages which
use the "version-compare" feature of the "%{crate}" crate.
%files -n %{name}+version-compare-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+webdav-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+webdav-devel %{_description}
This package contains library source intended for building other packages which
use the "webdav" feature of the "%{crate}" crate.
%files -n %{name}+webdav-devel
%ghost %{crate_instdir}/Cargo.toml
%prep
%autosetup -n %{crate}-%{version} -p1
%cargo_prep_online
%build
%if %{with dist_server}
%cargo_build -f dist-server
%else
%cargo_build
%endif
%install
%if %{with dist_server}
%cargo_install -f dist-server
%else
%cargo_install
%endif
%if %{with check}
%check
%if %{with dist_server}
%cargo_test -f dist-server
%else
%cargo_test
%endif
%endif
%changelog
* Mon Dec 18 2023 Cappy Ishihara <cappy@cappuchino.xyz> - 0.7.4-1
- Initial package
@@ -1,16 +0,0 @@
--- sccache-0.8.1/Cargo.toml 1970-01-01T00:00:01+00:00
+++ sccache-0.8.1/Cargo.toml 2024-07-10T16:31:31.705674+00:00
@@ -403,13 +403,3 @@
[target."cfg(unix)".dependencies.daemonize]
version = "0.5"
-[target."cfg(windows)".dependencies.winapi]
-version = "0.3"
-features = [
- "fileapi",
- "handleapi",
- "stringapiset",
- "winnls",
- "processenv",
- "std",
-]
-1
View File
@@ -1 +0,0 @@
rpm.version(crates("sccache"));
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "tuxclocker.spec"
}
}
-42
View File
@@ -1,42 +0,0 @@
Name: tuxclocker
Version: 1.5.1
Release: 1%?dist
Summary: Qt overclocking tool for GNU/Linux
License: GPL-3.0
URL: https://github.com/Lurkki14/tuxclocker
# boost qt5-qtbase qt5-qtcharts
Requires: hicolor-icon-theme
BuildRequires: git-core meson hwdata qt5-qttools gettext anda-srpm-macros
BuildRequires: boost-devel qt5-qtbase-devel qt5-qtcharts-devel libdrm-devel libXNVCtrl-devel openssl-devel
Recommends: xorg-x11-drv-nvidia libdrm libXNVCtrl hwdata
%description
TuxClocker is a hardware controlling and monitoring program.
TuxClocker consists of a DBus daemon and a Qt GUI that uses the daemon.
%prep
git clone --recursive %url .
git checkout %version
%build
%meson
%meson_build
%install
%meson_install
%files
%doc README.md
%license LICENSE
%_bindir/tuxclocker-qt
%_bindir/tuxclockerd
%_libdir/libtuxclocker.so
%_libdir/tuxclocker/
%_datadir/applications/tuxclocker.desktop
%_datadir/dbus-1/system-services/org.tuxclocker.service
%_datadir/dbus-1/system.d/org.tuxclocker.conf
%_datadir/locale/*/LC_MESSAGES/tuxclocker.mo
%_iconsdir/hicolor/scalable/apps/tuxclocker-logo.svg
%changelog
%autochangelog
-1
View File
@@ -1 +0,0 @@
rpm.version(gh("Lurkki14/tuxclocker"));
@@ -1,13 +1,12 @@
%global forgeurl https://gitlab.com/vala-panel-project/vala-panel-appmenu
%global commit 89767e372a2fdc67b03c98f11e3c4161a2ef6bcc
%global commit 76442be6195385193cb5931d0004122310d40c95
%forgemeta
Name: vala-panel-appmenu
Version: 24.05
Release: 1%?dist
Version: 0.7.6
Release: 2%?dist
License: LGPL-3.0-or-later
Summary: Application Menu plugin for vala-panel
Group: System/GUI/Other
URL: %{forgeurl}
Source: %{forgesource}
@@ -21,7 +20,6 @@ BuildRequires: vala
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(libxfce4panel-2.0)
BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: java-devel
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libxfconf-0)
BuildRequires: pkgconfig(budgie-1.0)
@@ -83,13 +81,6 @@ Summary: Gtk3MenuShell D-Bus exporter
%description -n vala-panel-appmenu-gtk-module
GTK (2, 3) module that exports GtkMenuShells over D-Bus.
%package -n vala-panel-appmenu-jayatana-module
Summary: Vala appmenu support for Java Swing applications
%description -n vala-panel-appmenu-jayatana-module
Vala appmenu support for Java Swing applications.
%prep
%forgeautosetup
@@ -117,11 +108,6 @@ Vala appmenu support for Java Swing applications.
%{_datadir}/dbus-1/services/com.canonical.AppMenu.Registrar.service
%{_datadir}/glib-2.0/schemas/org.valapanel.appmenu.gschema.xml
%{_datadir}/vala-panel/applets/org.valapanel.appmenu.plugin
%{_datadir}/vala/vapi/appmenu-glib-translator.*
%{_datadir}/gir-1.0/AppmenuGLibTranslator-*.gir
%{_includedir}/appmenu-glib-translator/importer.h
%{_libdir}/girepository-1.0/AppmenuGLibTranslator-*.typelib
%{_libdir}/libappmenu-glib-translator.*
%files -n vala-panel-appmenu-gtk-module
%{_userunitdir}/appmenu-gtk-module.service
@@ -131,11 +117,6 @@ Vala appmenu support for Java Swing applications.
%{_libdir}/gtk-3.0/modules/libappmenu-gtk-module.so
%{_datadir}/glib-2.0/schemas/org.appmenu.gtk-module.gschema.xml
%files -n vala-panel-appmenu-jayatana-module
%{_datadir}/java/*.jar
%dir %{_libdir}/jayatana
%{_libdir}/jayatana/*.so
%files -n xfce4-vala-panel-appmenu-plugin
%{_libdir}/xfce4/panel/plugins/libappmenu-xfce.so
%{_datadir}/xfce4/panel/plugins/appmenu.desktop
@@ -1,12 +1,13 @@
Name: vala-panel
Version: 24.05
%global forgeurl https://gitlab.com/vala-panel-project/vala-panel
%global commit ead4e7a36b0e4b0a2ac43c5d9ca17eb753461afe
%forgemeta
Release: 1%?dist
Name: vala-panel
Version: 0.5.0
Release: 2%?dist
License: LGPL-3.0-or-later
Summary: This package provides Application Menu plugin for vala-panel
Group: System/GUI/Other
URL: %{forgeurl}
Source: %{forgesource}
@@ -37,7 +38,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
%forgeautosetup
%build
%meson -Dwnck=enabled -Dplatforms='wayland,x11'
%meson -Dwnck=enabled -Dplatforms='layer-shell,x11'
%meson_build
%install
@@ -72,7 +73,6 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.valapanel.applica
%{_datadir}/vala-panel/applets/*.plugin
%dir %{_datadir}/vala-panel/images
%{_datadir}/vala-panel/images/background.png
%{_libdir}/girepository-1.0/ValaPanel-*.typelib
%files devel
%doc README.md
@@ -82,7 +82,6 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.valapanel.applica
%{_libdir}/libvalapanel.so
%{_libdir}/pkgconfig/vala-panel.pc
%{_datadir}/vala/vapi/vala-panel.*
%{_datadir}/gir-1.0/ValaPanel-*.gir
%changelog
%autochangelog
-1
View File
@@ -1 +0,0 @@
*.tar.gz
-5
View File
@@ -1,5 +0,0 @@
project "pkg" {
rpm {
spec = "vencord-desktop.spec"
}
}
-1
View File
@@ -1 +0,0 @@
rpm.version(gh_tag("Vencord/Vesktop"));
@@ -1,74 +0,0 @@
%define debug_package %nil
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/vesktop/.*\\.so
Name: vencord-desktop
Provides: VencordDesktop = %{version}-%{release}
Version: 1.5.3
Release: 1%?dist
License: GPL-3.0
Summary: Vesktop is a cross platform desktop app aiming to give you a snappier Discord experience with Vencord pre-installed
URL: https://github.com/Vencord/Vesktop
Group: Applications/Internet
#Source1: launch.sh
Source0: https://github.com/Vencord/Vesktop/archive/refs/tags/v%{version}.tar.gz
Requires: xdg-utils
BuildRequires: nodejs-npm git
# Conflicts: vesktop-bin
%description
vesktop is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
git init
git remote add origin %url || :
git reset --hard
git fetch
git checkout v%version
cat <<EOF > vesktop.desktop
[Desktop Entry]
Name=Vesktop
Comment=%summary
GenericName=Internet Messenger
Type=Application
Exec=/usr/bin/vencorddesktop
Icon=vesktop
Categories=Network;InstantMessaging;
StartupWMClass=VencordDesktop
Keywords=discord;vesktop;vencord;shelter;armcord;electron;
EOF
%build
npx pnpm@8 install --no-frozen-lockfile
npx pnpm@8 package:dir
%install
mkdir -p %buildroot/usr/share/vesktop
cp -r dist/*-unpacked/. %buildroot/usr/share/vesktop/.
install -Dm755 dist/*-unpacked/vencorddesktop %buildroot/usr/bin/vencorddesktop
ln -sf /usr/share/vesktop/vencorddesktop %buildroot/usr/bin/vencorddesktop
install -Dm644 vesktop.desktop %buildroot/usr/share/applications/vesktop.desktop
install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/vesktop.png
%files
%doc README.md
%license LICENSE
/usr/bin/vencorddesktop
/usr/share/applications/vesktop.desktop
/usr/share/pixmaps/vesktop.png
/usr/share/vesktop/*
%changelog
* Tue Nov 07 2023 Cappy Ishihara <cappy@cappuchino.xyz> - 0.4.3-1
- Initial package
-1
View File
@@ -1 +0,0 @@
rpm.version(gh("VOICEVOX/voicevox"));
-62
View File
@@ -1,62 +0,0 @@
%define debug_package %nil
%global _build_id_links none
# do not strip binaries
%define __strip /bin/true
# do not perform compression in cpio
%define _source_payload w0.ufdio
%define _binary_payload w0.gzdio
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: voicevox
Version: 0.20.0
Release: 1%?dist
Summary: Free Japanese text-to-speech editor
License: LGPL-3.0
URL: https://voicevox.hiroshiba.jp
Source0: https://github.com/VOICEVOX/voicevox/releases/download/%version/VOICEVOX.AppImage.7z.001
Source1: https://github.com/VOICEVOX/voicevox/releases/download/%version/VOICEVOX.AppImage.7z.002
Source2: https://github.com/VOICEVOX/voicevox/releases/download/%version/VOICEVOX.AppImage.7z.003
Packager: madonuko <mado@fyralabs.com>
BuildRequires: p7zip-plugins
ExclusiveArch: x86_64
%description
VOICEVOX is a free Japanese text-to-speech software with medium output quality.
%package doc
Summary: Documentation files for voicevox (Japanese)
%description doc
%summary.
%prep
cat<<EOF > voicevox.sh
#!/usr/bin/sh
/usr/share/voicevox/VOICEVOX.AppImage
EOF
7z x %SOURCE0
chmod a+x VOICEVOX.AppImage
./VOICEVOX.AppImage --appimage-extract '*.desktop'
./VOICEVOX.AppImage --appimage-extract 'usr/share/icons/**'
sed -i "s|Exec=.*|Exec=/usr/share/voicevox/VOICEVOX.AppImage|" squashfs-root/voicevox.desktop
%build
%install
install -Dm755 VOICEVOX.AppImage %buildroot%_datadir/voicevox/VOICEVOX.AppImage
install -Dm755 voicevox.sh %buildroot%_bindir/voicevox
install -Dm644 squashfs-root%_iconsdir/hicolor/0x0/apps/voicevox.png %buildroot%_iconsdir/hicolor/256x256/apps/voicevox.png
install -Dm644 squashfs-root/voicevox.desktop %buildroot%_datadir/applications/voicevox.desktop
%files
%_bindir/voicevox
%_datadir/applications/voicevox.desktop
%_datadir/voicevox/VOICEVOX.AppImage
%_iconsdir/hicolor/256x256/apps/voicevox.png
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "youtube-music.spec"
}
}
-1
View File
@@ -1 +0,0 @@
rpm.version(gh("th-ch/youtube-music"));
@@ -1,10 +0,0 @@
[Desktop Entry]
Name=YouTube Music
Exec=/usr/bin/youtube-music --no-sandbox %U
TryExec=/usr/bin/youtube-music
Icon=youtube-music
Terminal=false
Type=Application
StartupWMClass=YouTube Music
Comment=YouTube Music Desktop App - including custom plugins
Categories=AudioVideo;
@@ -1,91 +0,0 @@
%define debug_package %nil
# macro shorthand for calling pnpm
%global pnpm npx pnpm@%{pnpm_version}
Name: youtube-music
Version: 3.5.1
Release: 1%{?dist}
Summary: YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)
Source1: youtube-music.desktop
License: MIT
URL: https://github.com/th-ch/youtube-music
Packager: Cappy Ishihara <cappy@fyralabs.com>
# For some unknown reason, PNPM is not working with Node.js 22 on Aarch64 devices.
# todo: investigate why
#ExclusiveArch: x86_64
BuildRequires: git-core gcc make
# Required for usocket native module built with node-gyp
BuildRequires: python3 gcc-c++
%description
YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)
%prep
rm -rf ./*
git clone --recursive %{url} .
git checkout v%{version}
%build
# Vendor PNPM directly instead of installing from packages, because we need to somehow force PNPM to use Node.js 20
# We are not using Fedora's PNPM because we need to use `pnpm env`, which PNPM does not support when not vendored directly from upstream
curl -fsSL https://get.pnpm.io/install.sh | sh -
source /builddir/.bashrc
pnpm env use --global 20
pnpm install
pnpm build
pnpm electron-builder --linux --dir
%install
# Install assets
install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps
install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
# Copy icon files
ls -laR pack
%ifarch aarch64
pushd pack/linux-arm64-unpacked/resources/app.asar.unpacked/assets
%else
pushd pack/linux-unpacked/resources/app.asar.unpacked/assets
%endif
install -m 0644 youtube-music.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/youtube-music.png
install -m 0644 youtube-music.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/youtube-music.svg
install -m 0644 youtube-music-tray-paused.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/youtube-music-tray-paused.png
install -m 0644 youtube-music-tray.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/youtube-music-tray.png
popd
# Actually install the app
install -d -m 0755 %{buildroot}%{_datadir}/youtube-music
# Delete unpacked asar files before copying
rm -rfv pack/linux*-unpacked/resources/app.asar.unpacked
cp -rv pack/linux*-unpacked/* %{buildroot}%{_datadir}/youtube-music
install -d -m 0755 %{buildroot}%{_bindir}
ln -svf %{_datadir}/youtube-music/youtube-music %{buildroot}%{_bindir}/youtube-music
# Install desktop file
install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/youtube-music.desktop
%files
%license license
%doc README.md
%doc docs
%{_bindir}/youtube-music
%{_datadir}/youtube-music
%{_datadir}/icons/hicolor/*/apps/youtube-music*
%{_datadir}/applications/youtube-music.desktop
%changelog
* Sat Aug 03 2024 Cappy Ishihara <cappy@cappuchino.xyz>
- Initial Release
@@ -0,0 +1,22 @@
From 6b8c81d1d4ac0ac562b69e7f8164c8a92dafe13a Mon Sep 17 00:00:00 2001
From: windowsboy111 <wboy111@outlook.com>
Date: Mon, 19 Jun 2023 10:33:20 +0800
Subject: [PATCH] feat: add repository entry in package.json
---
package.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/package.json b/package.json
index 622756a..b3d3dfa 100644
--- a/package.json
+++ b/package.json
@@ -1,4 +1,5 @@
{
+ "repository": "github:VOICEVOX/voicevox",
"name": "voicevox",
"version": "999.999.999",
"author": "Hiroshiba Kazuyuki",
--
2.40.1
@@ -1,5 +1,4 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "voicevox.spec"
}
+9
View File
@@ -0,0 +1,9 @@
// let v = gh("VOICEVOX/voicevox");
// rpm.version(v);
// let engines = get(`https://raw.githubusercontent.com/VOICEVOX/voicevox/${v}/package.json`).json().engines;
// rpm.define("nodev", find(">=([\\d.]+)", engines.node, 1));
// rpm.define("nodev", find(">=([\\d.]+)", engines.npm, 1));
let v = "0.14.7";
let engines = get(`https://raw.githubusercontent.com/VOICEVOX/voicevox/${v}/package.json`).json().engines;
print(find(">=([\\d.]+)", engines.node, 1));
print(find(">=([\\d.]+)", engines.npm, 1));
+60
View File
@@ -0,0 +1,60 @@
%global nodev 16.17.0
%global npmv 8.11.0
%define debug_package %nil
Name: voicevox
Version: 0.14.7
Release: 1%?dist
Summary: Free Japanese text-to-speech editor
License: LGPL-3.0
URL: https://voicevox.hiroshiba.jp
Source0: https://github.com/VOICEVOX/voicevox/archive/refs/tags/%version.tar.gz
# requires specific node and npm version
%ifarch x86_64
%global a x64
%elifarch aarch64
%global a arm64
%endif
Source1: https://nodejs.org/download/release/v%nodev/node-v%nodev-linux-%a.tar.xz
Patch0: 0001-feat-add-repository-entry-in-package.json.patch
%description
VOICEVOX is a free Japanese text-to-speech software with medium output quality.
%package doc
Summary: Documentation files for voicevox (Japanese)
%description doc
%summary.
%prep
%autosetup -p1
tar xf %SOURCE1
PATH="$PATH:$PWD/node-v%nodev-linux-%a/bin/"
npx npm@%npmv i
%build
PATH="$PATH:$PWD/node-v%nodev-linux-%a/bin/"
npx browserslist@latest --update-db
PATH="$PATH:$PWD/node-v%nodev-linux-%a/bin/"
npm run electron:build
%install
rm dist_electron/linux-unpacked/README.txt # dummy
mkdir -p %buildroot%_datadir/%name %buildroot%_bindir %buildroot%_docdir/%name/res
mv dist_electron/linux-unpacked/* %buildroot%_datadir/%name/
ln -s %_datadir/%name/%name %buildroot%_bindir/%name
install -Dm644 docs/*.md %buildroot%_docdir/%name/
install -Dm644 docs/res/* %buildroot%_docdir/%name/res/
%files
%doc README.md
%license LICENSE LGPL_LICENSE
%_bindir/%name
%_datadir/%name/
%files doc
%doc %_docdir/%name/
%changelog
%autochangelog
@@ -1,13 +1,13 @@
%define debug_package %nil
Name: blahaj
Version: 2.2.0
Version: 2.0.2
Release: 1%{?dist}
Summary: Gay sharks at your local terminal - lolcat-like CLI tool
License: BSD-2-Clause
URL: https://blahaj.queer.software
Source0: https://github.com/GeopJr/BLAHAJ/archive/refs/tags/v%version.tar.gz
BuildRequires: crystal gcc libyaml-devel pcre-devel libgc-devel libevent-devel
BuildRequires: crystal gcc libyaml-devel pcre-devel
ExclusiveArch: x86_64
%description
@@ -1,8 +1,8 @@
%define debug_package %nil
Name: crystal
Version: 1.13.2
Release: 1%?dist
Version: 1.8.2
Release: 2%{?dist}
Summary: The Crystal Programming Language
License: Apache-2.0
URL: https://crystal-lang.org/

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