Skip to content

Revert: proxy settings #80

Revert: proxy settings

Revert: proxy settings #80

Workflow file for this run

name: CI Passing
on:
push:
tags:
- v*
env:
CARGO_TERM_COLOR: always
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
RUST_BACKTRACE: full
jobs:
build:
strategy:
matrix:
include:
# x86_64-linux
- arch: x86_64-linux
os: ubuntu-latest
target: amd64
# aarch64-linux
- arch: aarch64-linux
os: ubuntu-latest
target: arm64
# x86_64-windows-gnu
- arch: x86_64-windows-gnu
os: windows-latest
target: amd64
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup msys2
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
uses: msys2/setup-msys2@v2
with:
update: true
release: false
msystem: UCRT64
install: >-
mingw-w64-ucrt-x86_64-pkgconf
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-libadwaita
mingw-w64-ucrt-x86_64-gstreamer
mingw-w64-ucrt-x86_64-glib2
mingw-w64-ucrt-x86_64-gst-plugins-base
mingw-w64-ucrt-x86_64-gst-plugins-good
mingw-w64-ucrt-x86_64-gst-plugins-bad
mingw-w64-ucrt-x86_64-gst-plugins-ugly
mingw-w64-ucrt-x86_64-gst-libav
curl
- name: Install latest libmpv
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
shell: pwsh
run: |
$json = curl -s "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest" | ConvertFrom-Json
$asset = $json.assets | Where-Object { $_.name -match "mpv-dev-x86_64-\d{8}-git" } | Select-Object -First 1
curl -L -o $asset.name $asset.browser_download_url
7z x -y $asset.name -olibmpv
cp -force libmpv/libmpv.dll.a c:/msys64/ucrt64/lib/
cp -force libmpv/libmpv-2.dll c:/msys64/ucrt64/bin/
cp -force -recurse libmpv/include/mpv c:/msys64/ucrt64/include/
- name: Build tsukimi-${{ matrix.arch }}
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
shell: msys2 {0}
run: |
export PATH="/c/Users/runneradmin/.cargo/bin:$PATH"
rustup default stable-gnu
cargo build --release --locked
- name: Prepare Package
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
shell: msys2 {0}
run: |
mkdir artifact && cd artifact
mkdir tsukimi-x86_64-windows-gnu/ && cd tsukimi-x86_64-windows-gnu/ && mkdir bin/ && mkdir share/ && mkdir lib/
cp $GITHUB_WORKSPACE/target/release/tsukimi.exe bin/
cp /ucrt64/bin/gdbus.exe bin/
cp -r /ucrt64/lib/gdk-pixbuf-2.0 lib/
find lib/gdk-pixbuf-2.0/2.10.0/loaders -type f ! -name "*.dll" -exec rm -f "{}" \;
cp -r /ucrt64/lib/gio lib/
cp -r /ucrt64/lib/gstreamer-1.0 lib/ && find lib/gstreamer-1.0 -type f ! -name "*.dll" -exec rm -f "{}" \;
cp -r $GITHUB_WORKSPACE/i18n/locale share/
cp -r /ucrt64/share/glib-2.0 share/
find share/glib-2.0/* -maxdepth 0 -type d ! -name "*schemas*" -exec rm -rf "{}" \;
mv $GITHUB_WORKSPACE/resources/moe.tsuna.tsukimi.gschema.xml share/glib-2.0/schemas/
glib-compile-schemas.exe share/glib-2.0/schemas/
find share/glib-2.0/ -type f ! -name "*.compiled" -exec rm -f "{}" \;
cp -r /ucrt64/share/icons share/
cp $GITHUB_WORKSPACE/resources/icons/tsukimi.png share/icons/
rm -rf share/icons/hicolor && rm -rf share/icons/AdwaitaLegacy && rm -rf share/icons/Adwaita/scalable && rm -rf share/icons/Adwaita/cursors
rm -rf share/icons/Adwaita/16x16 && rm -rf share/icons/Adwaita/symbolic-up-to-32
find . -type d -empty -delete
cd lib/gstreamer-1.0
rm -f \
libgstadpcmenc.dll libgstamfcodec.dll libgstdvbsubenc.dll libgstencoding.dll \
libgstfrei0r.dll libgstinter.dll libgstlame.dll libgstldac.dll libgstmpeg2enc.dll \
libgstmpegpsmux.dll libgstmpegtsmux.dll libgstmplex.dll libgstrealmedia.dll \
libgstsubenc.dll libgstsvtav1.dll libgstsvthevcenc.dll libgsttwolame.dll \
libgstvoamrwbenc.dll libgstwavenc.dll libgstx264.dll libgstx265.dll \
libgstxingmux.dll libgsty4menc.dll libgstzbar.dll
cd $GITHUB_WORKSPACE/artifact/tsukimi-x86_64-windows-gnu
ldd bin/tsukimi.exe | grep '\/ucrt64.*\.dll' -o | xargs -I{} cp -n "{}" bin/
find lib/ -type f -name "*.dll" -exec ldd "{}" \; | grep '\/ucrt64.*\.dll' -o | xargs -I{} cp -n "{}" bin/
- name: Create NSIS installer
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
shell: powershell
run: |
cp ./installer/* artifact
makensis /V4 artifact/tsukimi_installer.nsi
rm artifact/tsukimi_installer.nsi
- name: Build Package
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
shell: powershell
run: |
cd artifact/tsukimi-x86_64-windows-gnu
7z.exe a ../tsukimi-x86_64-windows-gnu.7z ./*
- name: Upload artifact
if: ${{ matrix.arch == 'x86_64-windows-gnu' }}
uses: actions/upload-artifact@v4
with:
name: tsukimi-${{ matrix.arch }}
path: |
artifact/*.exe
artifact/*.7z
compression-level: 0
retention-days: 3
if-no-files-found: error
- name: Set up QEMU
if: ${{ matrix.arch == 'x86_64-linux' || matrix.arch == 'aarch64-linux' }}
uses: docker/setup-qemu-action@v3
- name: Build ${{ matrix.arch }}
if: ${{ matrix.arch == 'x86_64-linux' || matrix.arch == 'aarch64-linux' }}
run: |
mkdir artifact
docker run --rm --platform linux/${{ matrix.target }} -v ${{github.workspace}}:/app -v ./docker/entrypoint.sh:/entrypoint.sh ghcr.io/kosette/ubuntu-rust-gtk4:latest
sudo cp target/release/tsukimi artifact
sudo cp target/debian/*.deb artifact
sudo cp -r i18n artifact
sudo cp resources/moe*.xml artifact
cd artifact
tar -czf tsukimi-${{matrix.arch}}.tar.gz tsukimi moe.tsuna.tsukimi.gschema.xml i18n
- name: Upload artifact
if: ${{ matrix.arch == 'x86_64-linux' || matrix.arch == 'aarch64-linux' }}
uses: actions/upload-artifact@v4
with:
name: tsukimi-${{ matrix.arch }}
path: |
artifact/*.tar.gz
artifact/*.deb
compression-level: 0
overwrite: true
retention-days: 3
if-no-files-found: error
publish:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Calculate hash
run: |
mv tsukimi-x86_64-linux/* .
mv tsukimi-aarch64-linux/* .
mv tsukimi-x86_64-windows-gnu/* .
sha512sum *.7z > tsukimi.sha512sum
sha512sum *.exe >> tsukimi.sha512sum
sha512sum *.tar.gz >> tsukimi.sha512sum
sha512sum *.deb >> tsukimi.sha512sum
- name: Get latest tag name
id: tag
run: echo "TAG_NAME=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
- name: Set prerelease variable
if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-alpha')
run: echo "PRERELEASE=true" >> $GITHUB_ENV
- name: Upload Github Assets
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
*.tar.gz
*.deb
*.7z
*.exe
tsukimi.sha512sum
tag_name: ${{ steps.tag.outputs.TAG_NAME }}
prerelease: ${{ env.PRERELEASE || false }}