Compare commits
10 Commits
07df2e90aa
...
214ee0619e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
214ee0619e | ||
|
|
cdb56db167 | ||
|
|
b80783c885 | ||
|
|
2ef5adf95a | ||
|
|
f4d724f776 | ||
|
|
9ebc15a29c | ||
|
|
4fcaa16d56 | ||
|
|
4605182ee5 | ||
|
|
5dd7eede2a | ||
|
|
3c1eed51ce |
98
.github/workflows/build-linux-unstable.yml
vendored
98
.github/workflows/build-linux-unstable.yml
vendored
@@ -1,98 +0,0 @@
|
||||
name: build-shotcut-linux-unstable
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 8 * * *'
|
||||
|
||||
env:
|
||||
IMAGE_NAME: mltframework/shotcut-build:qt6.8.3-ubuntu22.04
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: qt6
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
echo Preparing version
|
||||
echo $(date +"%y.%-m.%-d") > VERSION
|
||||
VERSION=$(cat VERSION)
|
||||
echo VERSION=$VERSION
|
||||
FILENAME_VERSION=UNSTABLE-$VERSION
|
||||
cd scripts
|
||||
echo Making build script config file
|
||||
echo CLEANUP=0 > build-shotcut.conf
|
||||
echo SHOTCUT_VERSION=\"$VERSION\" >> build-shotcut.conf
|
||||
echo SHOTCUT_HEAD=0 >> build-shotcut.conf
|
||||
echo SHOTCUT_REVISION=origin/qt6 >> build-shotcut.conf
|
||||
docker run -v $PWD:/root/shotcut $IMAGE_NAME
|
||||
echo Renaming build artifacts
|
||||
mv shotcut.txz shotcut-linux-x86_64-$FILENAME_VERSION.txz
|
||||
mv src.txz shotcut-src-$FILENAME_VERSION.txz
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux-portable
|
||||
path: |
|
||||
scripts/shotcut-linux-x86_64-*.txz
|
||||
|
||||
- name: Upload portable and source archives to S3
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: mltframework/s3cmd-action@v0
|
||||
with:
|
||||
args: >-
|
||||
--access_key=${{ secrets.AWS_ACCESS_KEY }}
|
||||
--secret_key=${{ secrets.AWS_SECRET_KEY }}
|
||||
--acl-public
|
||||
--stop-on-error
|
||||
put scripts/*.txz s3://builds.us.meltytech/shotcut/
|
||||
|
||||
- name: Package AppImage
|
||||
run: |
|
||||
sudo apt install desktop-file-utils
|
||||
mkdir packaging/linux/Shotcut
|
||||
cp VERSION packaging/linux/Shotcut/
|
||||
cd packaging/linux
|
||||
wget https://raw.githubusercontent.com/probonopd/AppImages/master/pkg2appimage
|
||||
bash -ex pkg2appimage appimage/appimage.yml
|
||||
FILENAME_VERSION=UNSTABLE-$(cat Shotcut/VERSION)
|
||||
mv out/*.AppImage out/shotcut-linux-x86_64-$FILENAME_VERSION.AppImage
|
||||
|
||||
- name: Upload AppImage to S3
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: mltframework/s3cmd-action@v0
|
||||
with:
|
||||
args: >-
|
||||
--access_key=${{ secrets.AWS_ACCESS_KEY }}
|
||||
--secret_key=${{ secrets.AWS_SECRET_KEY }}
|
||||
--acl-public
|
||||
--stop-on-error
|
||||
put packaging/linux/out/*.AppImage s3://builds.us.meltytech/shotcut/
|
||||
|
||||
- name: Install Snapcraft
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: samuelmeuli/action-snapcraft@v1.2.0
|
||||
with:
|
||||
use_lxd: true
|
||||
- name: Package snap
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }}
|
||||
run: |
|
||||
VERSION=$(cat VERSION)
|
||||
mv scripts/shotcut-linux-x86_64-*.txz packaging/linux
|
||||
cd packaging/linux
|
||||
mkdir -p snap/gui
|
||||
cp ../../icons/shotcut-logo-64.png snap/gui
|
||||
sed 's|Icon=.*|Icon=${SNAP}/meta/gui/shotcut-logo-64.png|' org.shotcut.Shotcut.desktop > snap/gui/shotcut.desktop
|
||||
FILENAME=$(ls *.txz)
|
||||
sed "s/\$VERSION/${VERSION}/ ; s/\$FILENAME/${FILENAME}/" snapcraft.yaml.in > snap/snapcraft.yaml
|
||||
sg lxd -c 'snapcraft --use-lxd'
|
||||
snapcraft upload --release=edge shotcut_*.snap
|
||||
151
.github/workflows/build-linux.yml
vendored
151
.github/workflows/build-linux.yml
vendored
@@ -2,99 +2,104 @@ name: build-mailadler-linux
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 8 * * *'
|
||||
push:
|
||||
branches: [main, master]
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- '.github/workflows/build-linux.yml'
|
||||
pull_request:
|
||||
branches: [main, master]
|
||||
|
||||
env:
|
||||
IMAGE_NAME: ubuntu:22.04 #mltframework/shotcut-build:qt6.8.3-ubuntu22.04
|
||||
QT_VERSION: 6.6.3
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ env.QT_VERSION }}
|
||||
modules: 'qtwebsockets'
|
||||
cache: true
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
libgl1-mesa-dev \
|
||||
libxkbcommon-dev \
|
||||
libxcb-xinerama0-dev \
|
||||
libxcb-cursor0 \
|
||||
libsqlite3-dev \
|
||||
libssl-dev \
|
||||
desktop-file-utils \
|
||||
libfuse2 \
|
||||
imagemagick
|
||||
|
||||
- name: Prepare version
|
||||
run: |
|
||||
VERSION=$(date +"%y.%-m.%-d-%H%M")
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
echo Preparing version
|
||||
echo $(date +"%y.%-m.%-d") > VERSION
|
||||
VERSION=$(cat VERSION)
|
||||
echo VERSION=$VERSION
|
||||
FILENAME_VERSION=$VERSION
|
||||
cd scripts
|
||||
echo Making build script config file
|
||||
echo CLEANUP=0 > build-mailadler.conf
|
||||
echo mailadler_VERSION=\"$VERSION\" >> build-mailadler.conf
|
||||
docker run -v $PWD:/root/mailadler $IMAGE_NAME
|
||||
echo Renaming build artifacts
|
||||
mv mailadler.txz mailadler-linux-x86_64-$FILENAME_VERSION.txz
|
||||
mv src.txz mailadler-src-$FILENAME_VERSION.txz
|
||||
run: cmake --build build --parallel
|
||||
|
||||
- name: Upload artifact
|
||||
- name: Package portable
|
||||
run: |
|
||||
cd build
|
||||
DESTDIR=../mailadler-portable cmake --install .
|
||||
cd ..
|
||||
tar -cJf mailadler-linux-x86_64-${{ env.VERSION }}.txz mailadler-portable
|
||||
|
||||
- name: Upload portable artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux-portable
|
||||
path: |
|
||||
scripts/mailadler-linux-x86_64-*.txz
|
||||
|
||||
- name: Upload portable and source archives to S3
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: mltframework/s3cmd-action@v0
|
||||
with:
|
||||
args: >-
|
||||
--access_key=${{ secrets.AWS_ACCESS_KEY }}
|
||||
--secret_key=${{ secrets.AWS_SECRET_KEY }}
|
||||
--acl-public
|
||||
--stop-on-error
|
||||
put scripts/*.txz s3://builds.us.meltytech/mailadler/
|
||||
path: mailadler-linux-x86_64-*.txz
|
||||
|
||||
- name: Package AppImage
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install desktop-file-utils libfuse2 imagemagick
|
||||
mkdir packaging/linux/mailadler
|
||||
cp VERSION packaging/linux/mailadler/
|
||||
mkdir -p packaging/linux/mailadler
|
||||
echo "${{ env.VERSION }}" > packaging/linux/mailadler/VERSION
|
||||
cd packaging/linux
|
||||
export PKG2AICOMMIT=1eceb306077e51b991e987690b364e11971b44b3
|
||||
wget https://raw.githubusercontent.com/probonopd/AppImages/${PKG2AICOMMIT}/pkg2appimage
|
||||
bash -ex pkg2appimage appimage/appimage.yml
|
||||
FILENAME_VERSION=$(cat mailadler/VERSION)
|
||||
mv out/*.AppImage out/mailadler-linux-x86_64-$FILENAME_VERSION.AppImage
|
||||
wget -q https://raw.githubusercontent.com/probonopd/AppImages/${PKG2AICOMMIT}/pkg2appimage || true
|
||||
if [ -f pkg2appimage ] && [ -f appimage/appimage.yml ]; then
|
||||
bash -ex pkg2appimage appimage/appimage.yml
|
||||
mv out/*.AppImage out/mailadler-linux-x86_64-${{ env.VERSION }}.AppImage 2>/dev/null || echo "AppImage packaging skipped"
|
||||
else
|
||||
echo "AppImage packaging not configured yet"
|
||||
fi
|
||||
|
||||
- name: Upload AppImage to S3
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: mltframework/s3cmd-action@v0
|
||||
- name: Upload AppImage artifact
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
args: >-
|
||||
--access_key=${{ secrets.AWS_ACCESS_KEY }}
|
||||
--secret_key=${{ secrets.AWS_SECRET_KEY }}
|
||||
--acl-public
|
||||
--stop-on-error
|
||||
put packaging/linux/out/*.AppImage s3://builds.us.meltytech/mailadler/
|
||||
name: linux-appimage
|
||||
path: packaging/linux/out/*.AppImage
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Prepare snap
|
||||
run: |
|
||||
VERSION=$(cat VERSION)
|
||||
mv scripts/mailadler-linux-x86_64-*.txz packaging/linux
|
||||
cd packaging/linux
|
||||
mkdir -p snap/gui
|
||||
cp ../../icons/mailadler-logo-64.png snap/gui
|
||||
sed 's|Icon=.*|Icon=${SNAP}/meta/gui/mailadler-logo-64.png|' org.mailadler.mailadler.desktop > snap/gui/mailadler.desktop
|
||||
FILENAME=$(ls *.txz)
|
||||
sed "s/\$VERSION/${VERSION}/ ; s/\$FILENAME/${FILENAME}/" snapcraft.yaml.in > snap/snapcraft.yaml
|
||||
- name: Package snap
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: snapcore/action-build@v1
|
||||
id: snap
|
||||
- name: Upload to release (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
path: packaging/linux
|
||||
- name: Publish snap
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
uses: snapcore/action-publish@v1
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }}
|
||||
with:
|
||||
snap: ${{ steps.snap.outputs.snap }}
|
||||
release: edge
|
||||
files: |
|
||||
mailadler-linux-x86_64-*.txz
|
||||
packaging/linux/out/*.AppImage
|
||||
|
||||
77
.github/workflows/build-linux_arm64.yml
vendored
Normal file
77
.github/workflows/build-linux_arm64.yml
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
name: build-mailadler-linux-arm64
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [main, master]
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- '.github/workflows/build-linux_arm64.yml'
|
||||
pull_request:
|
||||
branches: [main, master]
|
||||
|
||||
env:
|
||||
QT_VERSION: 6.6.3
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: [self-hosted, linux, ARM64]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies (first run only)
|
||||
run: |
|
||||
# Nur installieren wenn noch nicht vorhanden
|
||||
if ! command -v cmake &> /dev/null; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
qt6-base-dev \
|
||||
qt6-websockets-dev \
|
||||
libgl1-mesa-dev \
|
||||
libxkbcommon-dev \
|
||||
libxcb-xinerama0-dev \
|
||||
libxcb-cursor0 \
|
||||
libsqlite3-dev \
|
||||
libssl-dev
|
||||
fi
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DEXTERNAL_LAUNCHERS=OFF
|
||||
|
||||
- name: Build
|
||||
run: cmake --build build --parallel
|
||||
|
||||
- name: Prepare version
|
||||
run: |
|
||||
VERSION=$(date +"%y.%-m.%-d-%H%M")
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
cd build
|
||||
DESTDIR=../mailadler-arm64 cmake --install .
|
||||
cd ..
|
||||
tar -cJf mailadler-linux-arm64-${{ env.VERSION }}.txz mailadler-arm64
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mailadler-linux-arm64
|
||||
path: mailadler-linux-arm64-*.txz
|
||||
|
||||
- name: Upload to release (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: mailadler-linux-arm64-*.txz
|
||||
30
.github/workflows/build-macos-unstable.yml
vendored
30
.github/workflows/build-macos-unstable.yml
vendored
@@ -1,30 +0,0 @@
|
||||
name: build-shotcut-macos-unstable
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 12 * * *'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Download from S3
|
||||
run: |
|
||||
VERSION=$(date +"UNSTABLE-%y.%-m.%-d")
|
||||
echo VERSION=$VERSION
|
||||
sudo apt install -yqq s3cmd
|
||||
s3cmd --access_key=${{ secrets.AWS_ACCESS_KEY }} --secret_key=${{ secrets.AWS_SECRET_KEY }} --stop-on-error get s3://builds.us.meltytech/shotcut-build-macos-unstable.txt
|
||||
s3cmd --access_key=${{ secrets.AWS_ACCESS_KEY }} --secret_key=${{ secrets.AWS_SECRET_KEY }} --stop-on-error get s3://builds.us.meltytech/shotcut/shotcut-macos-unsigned-$VERSION.dmg
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: unsigned-dmg
|
||||
path: |
|
||||
*.dmg
|
||||
|
||||
- name: Dump log
|
||||
run: cat shotcut-build-macos-unstable.txt
|
||||
89
.github/workflows/build-macos.yml
vendored
89
.github/workflows/build-macos.yml
vendored
@@ -1,30 +1,79 @@
|
||||
name: build-shotcut-macos
|
||||
name: build-mailadler-macos
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 12 * * *'
|
||||
push:
|
||||
branches: [main, master]
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- '.github/workflows/build-macos.yml'
|
||||
pull_request:
|
||||
branches: [main, master]
|
||||
|
||||
env:
|
||||
QT_VERSION: 6.6.3
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
steps:
|
||||
- name: Download from S3
|
||||
run: |
|
||||
VERSION=$(date +"%y.%-m.%-d")
|
||||
echo VERSION=$VERSION
|
||||
sudo apt install -yqq s3cmd
|
||||
s3cmd --access_key=${{ secrets.AWS_ACCESS_KEY }} --secret_key=${{ secrets.AWS_SECRET_KEY }} --stop-on-error get s3://builds.us.meltytech/shotcut-build-macos.txt.xz
|
||||
s3cmd --access_key=${{ secrets.AWS_ACCESS_KEY }} --secret_key=${{ secrets.AWS_SECRET_KEY }} --stop-on-error get s3://builds.us.meltytech/shotcut/shotcut-macos-unsigned-$VERSION.dmg
|
||||
runs-on: macos-14 # Apple Silicon
|
||||
|
||||
- name: Upload artifacts
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ env.QT_VERSION }}
|
||||
modules: 'qtwebsockets'
|
||||
cache: true
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install ninja openssl@3
|
||||
|
||||
- name: Prepare version
|
||||
run: |
|
||||
VERSION=$(date +"%y.%-m.%-d-%H%M")
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH="$Qt6_DIR" \
|
||||
-DOPENSSL_ROOT_DIR="$(brew --prefix openssl@3)"
|
||||
|
||||
- name: Build
|
||||
run: cmake --build build --parallel
|
||||
|
||||
- name: Package DMG
|
||||
run: |
|
||||
cd build
|
||||
# Create app bundle structure
|
||||
mkdir -p mailadler.app/Contents/MacOS
|
||||
mkdir -p mailadler.app/Contents/Resources
|
||||
cp src/mailadler mailadler.app/Contents/MacOS/ 2>/dev/null || cp src/mailadler.app/Contents/MacOS/mailadler mailadler.app/Contents/MacOS/ 2>/dev/null || true
|
||||
|
||||
# Deploy Qt frameworks
|
||||
$Qt6_DIR/bin/macdeployqt mailadler.app -dmg 2>/dev/null || true
|
||||
|
||||
# Rename DMG
|
||||
mv mailadler.dmg ../mailadler-macos-${{ env.VERSION }}.dmg 2>/dev/null || \
|
||||
hdiutil create -volname "mailadler" -srcfolder mailadler.app -ov -format UDZO ../mailadler-macos-${{ env.VERSION }}.dmg 2>/dev/null || \
|
||||
echo "DMG creation skipped"
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: unsigned-dmg
|
||||
path: |
|
||||
*.dmg
|
||||
name: macos-dmg
|
||||
path: mailadler-macos-*.dmg
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Dump log
|
||||
run: xzcat shotcut-build-macos.txt.xz
|
||||
- name: Upload to release (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: mailadler-macos-*.dmg
|
||||
|
||||
111
.github/workflows/build-sdk-windows-unstable.yml
vendored
111
.github/workflows/build-sdk-windows-unstable.yml
vendored
@@ -1,111 +0,0 @@
|
||||
name: build-shotcut-sdk-windows-unstable
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Setup MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: MINGW64
|
||||
update: true
|
||||
install: >-
|
||||
autotools base-devel bzip2 coreutils git gzip tar xz zip
|
||||
perl-List-MoreUtils perl-XML-Parser
|
||||
mingw-w64-x86_64-toolchain
|
||||
mingw-w64-x86_64-cmake
|
||||
mingw-w64-x86_64-meson
|
||||
mingw-w64-x86_64-nasm
|
||||
mingw-w64-x86_64-ninja
|
||||
mingw-w64-x86_64-python-pip
|
||||
mingw-w64-x86_64-yasm
|
||||
mingw-w64-x86_64-cairo
|
||||
mingw-w64-x86_64-eigen3
|
||||
mingw-w64-x86_64-dlfcn
|
||||
mingw-w64-x86_64-fftw
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
mingw-w64-x86_64-lame
|
||||
mingw-w64-x86_64-libepoxy
|
||||
mingw-w64-x86_64-libexif
|
||||
mingw-w64-x86_64-libsamplerate
|
||||
mingw-w64-x86_64-libtheora
|
||||
mingw-w64-x86_64-libvorbis
|
||||
mingw-w64-x86_64-libvpx
|
||||
mingw-w64-x86_64-libwebp
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-openblas
|
||||
mingw-w64-x86_64-onevpl
|
||||
mingw-w64-x86_64-openssl
|
||||
mingw-w64-x86_64-opus
|
||||
mingw-w64-x86_64-rubberband
|
||||
mingw-w64-x86_64-sox
|
||||
mingw-w64-x86_64-vid.stab
|
||||
mingw-w64-x86_64-x264
|
||||
mingw-w64-x86_64-x265
|
||||
mingw-w64-x86_64-libarchive
|
||||
mingw-w64-x86_64-potrace
|
||||
mingw-w64-x86_64-libimagequant
|
||||
mingw-w64-x86_64-python3.11
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: qt6
|
||||
|
||||
- name: Build
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
pacman --noconfirm -Rdd mingw-w64-x86_64-aom
|
||||
echo Preparing version
|
||||
echo $(date +"%y.%-m.%-d") > VERSION
|
||||
VERSION=$(cat VERSION)
|
||||
echo VERSION=$VERSION
|
||||
FILENAME_VERSION=UNSTABLE-$VERSION
|
||||
pushd "$HOME"
|
||||
echo Downloading Qt
|
||||
mkdir Qt
|
||||
cd Qt
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/qt-6.4.2-x64-mingw810.txz
|
||||
echo Extracting Qt
|
||||
tar -xJf qt-6.4.2-x64-mingw810.txz
|
||||
cd ..
|
||||
echo Downloading a few prebuilt dependencies
|
||||
curl -LO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/mlt-prebuilt-mingw64-v4.txz
|
||||
echo Extracting prebuilt dependencies
|
||||
tar -xJf mlt-prebuilt-mingw64-v5.txz
|
||||
rm mlt-prebuilt-mingw64-v5.txz
|
||||
CHECKOUT_DIR=$(popd)
|
||||
popd
|
||||
echo Running the build script
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\"
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\" > build-shotcut.conf
|
||||
echo SHOTCUT_VERSION=\"$VERSION\" >> build-shotcut.conf
|
||||
echo SHOTCUT_HEAD=0 >> build-shotcut.conf
|
||||
echo SHOTCUT_REVISION=origin/qt6 >> build-shotcut.conf
|
||||
echo DEBUG_BUILD=1 >> build-shotcut.conf
|
||||
bash scripts/build-shotcut-msys2.sh -s
|
||||
mv build/shotcut-sdk.zip build/shotcut-win64-sdk-$FILENAME_VERSION.zip
|
||||
echo Done
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-sdk
|
||||
path: ./build/shotcut-win64-sdk-*.zip
|
||||
|
||||
- name: Upload packages to S3
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
echo Installing awscli
|
||||
pip install awscli
|
||||
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }}
|
||||
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
for file in build/*.zip; do
|
||||
echo Uploading "$file" to S3
|
||||
aws s3 cp --acl public-read "$file" s3://builds.us.meltytech/shotcut/ --no-progress
|
||||
done
|
||||
112
.github/workflows/build-sdk-windows.yml
vendored
112
.github/workflows/build-sdk-windows.yml
vendored
@@ -1,112 +0,0 @@
|
||||
name: build-shotcut-sdk-windows
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Setup MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: MINGW64
|
||||
update: true
|
||||
install: >-
|
||||
autotools base-devel bzip2 coreutils git gzip tar xz zip
|
||||
perl-List-MoreUtils perl-XML-Parser
|
||||
mingw-w64-x86_64-toolchain
|
||||
mingw-w64-x86_64-cmake
|
||||
mingw-w64-x86_64-meson
|
||||
mingw-w64-x86_64-nasm
|
||||
mingw-w64-x86_64-ninja
|
||||
mingw-w64-x86_64-yasm
|
||||
mingw-w64-x86_64-cairo
|
||||
mingw-w64-x86_64-eigen3
|
||||
mingw-w64-x86_64-dlfcn
|
||||
mingw-w64-x86_64-fftw
|
||||
mingw-w64-x86_64-gcc-fortran
|
||||
mingw-w64-x86_64-gettext-tools
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
mingw-w64-x86_64-lame
|
||||
mingw-w64-x86_64-libarchive
|
||||
mingw-w64-x86_64-libepoxy
|
||||
mingw-w64-x86_64-libexif
|
||||
mingw-w64-x86_64-libimagequant
|
||||
mingw-w64-x86_64-libsamplerate
|
||||
mingw-w64-x86_64-libtheora
|
||||
mingw-w64-x86_64-libvorbis
|
||||
mingw-w64-x86_64-libvpx
|
||||
mingw-w64-x86_64-libwebp
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-openblas
|
||||
mingw-w64-x86_64-onevpl
|
||||
mingw-w64-x86_64-openssl
|
||||
mingw-w64-x86_64-opus
|
||||
mingw-w64-x86_64-potrace
|
||||
mingw-w64-x86_64-python-pip
|
||||
mingw-w64-x86_64-rubberband
|
||||
mingw-w64-x86_64-sox
|
||||
mingw-w64-x86_64-svt-av1
|
||||
mingw-w64-x86_64-vid.stab
|
||||
mingw-w64-x86_64-x264
|
||||
mingw-w64-x86_64-x265
|
||||
mingw-w64-x86_64-zimg
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
pacman --noconfirm -Rdd mingw-w64-x86_64-aom
|
||||
echo Preparing version
|
||||
echo $(date +"%y.%-m.%-d") > VERSION
|
||||
VERSION=$(cat VERSION)
|
||||
echo VERSION=$VERSION
|
||||
FILENAME_VERSION=$VERSION
|
||||
pushd "$HOME"
|
||||
echo Downloading Qt
|
||||
mkdir Qt
|
||||
cd Qt
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/qt-6.10.1-x64-mingw.txz
|
||||
echo Extracting Qt
|
||||
tar -xJf qt-6.10.1-x64-mingw.txz
|
||||
rm qt-6.10.1-x64-mingw.txz
|
||||
cd ..
|
||||
echo Downloading a few prebuilt dependencies
|
||||
curl -LO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/mlt-prebuilt-mingw64-v6.txz
|
||||
echo Extracting prebuilt dependencies
|
||||
tar -xJf mlt-prebuilt-mingw64-v6.txz
|
||||
rm mlt-prebuilt-mingw64-v6.txz
|
||||
CHECKOUT_DIR=$(popd)
|
||||
popd
|
||||
echo Running the build script
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\"
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\" > build-shotcut.conf
|
||||
echo SHOTCUT_VERSION=\"$VERSION\" >> build-shotcut.conf
|
||||
echo ENABLE_GLAXNIMATE=0 >> build-shotcut.conf
|
||||
echo DEBUG_BUILD=1 >> build-shotcut.conf
|
||||
bash scripts/build-shotcut-msys2.sh -s
|
||||
mv build/shotcut-sdk.txz build/shotcut-win64-sdk-$FILENAME_VERSION.txz
|
||||
echo Done
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-sdk
|
||||
path: ./build/shotcut-win64-sdk-*.txz
|
||||
|
||||
- name: Upload packages to S3
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
echo Installing awscli
|
||||
pip install awscli
|
||||
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }}
|
||||
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
for file in build/*.txz; do
|
||||
echo Uploading "$file" to S3
|
||||
aws s3 cp --acl public-read "$file" s3://builds.us.meltytech/shotcut/ --no-progress
|
||||
done
|
||||
135
.github/workflows/build-windows-unstable.yml
vendored
135
.github/workflows/build-windows-unstable.yml
vendored
@@ -1,135 +0,0 @@
|
||||
name: build-shotcut-windows-unstable
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 8 * * *'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Setup MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: MINGW64
|
||||
update: true
|
||||
install: >-
|
||||
autotools base-devel bzip2 coreutils git gzip tar xz zip
|
||||
perl-List-MoreUtils perl-XML-Parser
|
||||
mingw-w64-x86_64-toolchain
|
||||
mingw-w64-x86_64-cmake
|
||||
mingw-w64-x86_64-meson
|
||||
mingw-w64-x86_64-nasm
|
||||
mingw-w64-x86_64-ninja
|
||||
mingw-w64-x86_64-nsis
|
||||
mingw-w64-x86_64-osslsigncode
|
||||
mingw-w64-x86_64-python-pip
|
||||
mingw-w64-x86_64-yasm
|
||||
mingw-w64-x86_64-cairo
|
||||
mingw-w64-x86_64-eigen3
|
||||
mingw-w64-x86_64-dlfcn
|
||||
mingw-w64-x86_64-fftw
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
mingw-w64-x86_64-lame
|
||||
mingw-w64-x86_64-libepoxy
|
||||
mingw-w64-x86_64-libexif
|
||||
mingw-w64-x86_64-libsamplerate
|
||||
mingw-w64-x86_64-libtheora
|
||||
mingw-w64-x86_64-libvorbis
|
||||
mingw-w64-x86_64-libvpx
|
||||
mingw-w64-x86_64-libwebp
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-openblas
|
||||
mingw-w64-x86_64-onevpl
|
||||
mingw-w64-x86_64-openssl
|
||||
mingw-w64-x86_64-opus
|
||||
mingw-w64-x86_64-rubberband
|
||||
mingw-w64-x86_64-sox
|
||||
mingw-w64-x86_64-vid.stab
|
||||
mingw-w64-x86_64-x264
|
||||
mingw-w64-x86_64-x265
|
||||
mingw-w64-x86_64-libarchive
|
||||
mingw-w64-x86_64-potrace
|
||||
mingw-w64-x86_64-libimagequant
|
||||
mingw-w64-x86_64-python3.11
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: qt6
|
||||
|
||||
- name: Build
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
pacman --noconfirm -Rdd mingw-w64-x86_64-aom
|
||||
echo Preparing version
|
||||
echo $(date +"%y.%-m.%-d") > VERSION
|
||||
VERSION=$(cat VERSION)
|
||||
echo VERSION=$VERSION
|
||||
FILENAME_VERSION=UNSTABLE-$VERSION
|
||||
pushd "$HOME"
|
||||
echo Downloading Qt
|
||||
mkdir Qt
|
||||
cd Qt
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/qt-6.4.2-x64-mingw810.txz
|
||||
echo Extracting Qt
|
||||
tar -xJf qt-6.4.2-x64-mingw810.txz
|
||||
cd ..
|
||||
echo Downloading a few prebuilt dependencies
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/mlt-prebuilt-mingw64-v5.txz
|
||||
echo Extracting prebuilt dependencies
|
||||
tar -xJf mlt-prebuilt-mingw64-v5.txz
|
||||
CHECKOUT_DIR=$(popd)
|
||||
popd
|
||||
echo Running the build script
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\"
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\" > build-shotcut.conf
|
||||
echo SHOTCUT_VERSION=\"$VERSION\" >> build-shotcut.conf
|
||||
echo SHOTCUT_HEAD=0 >> build-shotcut.conf
|
||||
echo SHOTCUT_REVISION=origin/qt6 >> build-shotcut.conf
|
||||
bash scripts/build-shotcut-msys2.sh
|
||||
pushd build
|
||||
echo Installing awscli
|
||||
pip install awscli
|
||||
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }}
|
||||
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
echo Downloading code-signing certificates
|
||||
aws s3 cp s3://misc.meltymedia/shotcut-build/CodeSignCertificates.p12.new ./ --no-progress
|
||||
aws s3 cp s3://misc.meltymedia/shotcut-build/CodeSignCertificates.pass ./ --no-progress
|
||||
echo Signing shotcut.exe
|
||||
osslsigncode sign -pkcs12 CodeSignCertificates.p12.new -readpass CodeSignCertificates.pass -n "Shotcut" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in Shotcut/shotcut.exe -out Shotcut/shotcut-signed.exe
|
||||
mv Shotcut/shotcut-signed.exe Shotcut/shotcut.exe
|
||||
echo Signing glaxnimate.exe
|
||||
osslsigncode sign -pkcs12 CodeSignCertificates.p12.new -readpass CodeSignCertificates.pass -n "Shotcut" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in Shotcut/glaxnimate.exe -out Shotcut/glaxnimate-signed.exe
|
||||
mv Shotcut/glaxnimate-signed.exe Shotcut/glaxnimate.exe
|
||||
echo Packaging the portable zip
|
||||
zip -gr shotcut-win64-$FILENAME_VERSION.zip Shotcut
|
||||
echo Packaging the installer
|
||||
makensis shotcut.nsi
|
||||
echo Signing the installer
|
||||
osslsigncode sign -pkcs12 CodeSignCertificates.p12.new -readpass CodeSignCertificates.pass -n "Shotcut Installer" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in shotcut-setup.exe -out shotcut-setup-signed.exe
|
||||
mv shotcut-setup-signed.exe shotcut-win64-$FILENAME_VERSION.exe
|
||||
rm shotcut-setup.exe
|
||||
popd
|
||||
echo Done
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-portable
|
||||
path: ./build/shotcut-win64-*.zip
|
||||
|
||||
- name: Upload packages to S3
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }}
|
||||
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
for file in build/*.{exe,zip}; do
|
||||
echo Uploading "$file" to S3
|
||||
aws s3 cp "$file" s3://builds.us.meltytech/shotcut/ --no-progress
|
||||
done
|
||||
172
.github/workflows/build-windows.yml
vendored
172
.github/workflows/build-windows.yml
vendored
@@ -2,143 +2,67 @@ name: build-mailadler-windows
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 8 * * *'
|
||||
push:
|
||||
branches: [main, master]
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- '.github/workflows/build-windows.yml'
|
||||
pull_request:
|
||||
branches: [main, master]
|
||||
|
||||
env:
|
||||
QT_VERSION: 6.6.3
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Setup MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: MINGW64
|
||||
update: true
|
||||
install: >-
|
||||
autotools base-devel bzip2 coreutils git gzip tar xz zip
|
||||
perl-List-MoreUtils perl-XML-Parser
|
||||
mingw-w64-x86_64-toolchain
|
||||
mingw-w64-x86_64-cmake
|
||||
mingw-w64-x86_64-meson
|
||||
mingw-w64-x86_64-nasm
|
||||
mingw-w64-x86_64-ninja
|
||||
mingw-w64-x86_64-osslsigncode
|
||||
mingw-w64-x86_64-yasm
|
||||
mingw-w64-x86_64-cairo
|
||||
mingw-w64-x86_64-eigen3
|
||||
mingw-w64-x86_64-dlfcn
|
||||
mingw-w64-x86_64-fftw
|
||||
mingw-w64-x86_64-gcc-fortran
|
||||
mingw-w64-x86_64-gettext-tools
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
mingw-w64-x86_64-lame
|
||||
mingw-w64-x86_64-libarchive
|
||||
mingw-w64-x86_64-libepoxy
|
||||
mingw-w64-x86_64-libexif
|
||||
mingw-w64-x86_64-libimagequant
|
||||
mingw-w64-x86_64-libsamplerate
|
||||
mingw-w64-x86_64-libtheora
|
||||
mingw-w64-x86_64-libvorbis
|
||||
mingw-w64-x86_64-libvpx
|
||||
mingw-w64-x86_64-libwebp
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-onevpl
|
||||
mingw-w64-x86_64-openblas
|
||||
mingw-w64-x86_64-openssl
|
||||
mingw-w64-x86_64-opus
|
||||
mingw-w64-x86_64-potrace
|
||||
mingw-w64-x86_64-python-pip
|
||||
mingw-w64-x86_64-rubberband
|
||||
mingw-w64-x86_64-sox
|
||||
mingw-w64-x86_64-svt-av1
|
||||
mingw-w64-x86_64-vid.stab
|
||||
mingw-w64-x86_64-x264
|
||||
mingw-w64-x86_64-x265
|
||||
mingw-w64-x86_64-zimg
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ env.QT_VERSION }}
|
||||
arch: win64_msvc2019_64
|
||||
modules: 'qtwebsockets'
|
||||
cache: true
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake -B build -G "Visual Studio 17 2022" -A x64 `
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
- name: Build
|
||||
shell: msys2 {0}
|
||||
run: cmake --build build --config Release --parallel
|
||||
|
||||
- name: Prepare version
|
||||
shell: bash
|
||||
run: |
|
||||
pacman --noconfirm -Rdd mingw-w64-x86_64-aom
|
||||
echo Preparing version
|
||||
echo $(date +"%y.%-m.%-d") > VERSION
|
||||
VERSION=$(cat VERSION)
|
||||
echo VERSION=$VERSION
|
||||
FILENAME_VERSION=$VERSION
|
||||
pushd "$HOME"
|
||||
mkdir Qt
|
||||
cd Qt
|
||||
echo Downloading Qt
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/qt-6.10.1-x64-mingw.txz
|
||||
echo Extracting Qt
|
||||
tar -xJf qt-6.10.1-x64-mingw.txz
|
||||
rm qt-6.10.1-x64-mingw.txz
|
||||
cd ..
|
||||
echo Downloading a few prebuilt dependencies
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/mlt-prebuilt-mingw64-v6.txz
|
||||
echo Extracting prebuilt dependencies
|
||||
tar -xJf mlt-prebuilt-mingw64-v6.txz
|
||||
rm mlt-prebuilt-mingw64-v6.txz
|
||||
CHECKOUT_DIR=$(popd)
|
||||
popd
|
||||
echo Running the build script
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\"
|
||||
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\" > build-mailadler.conf
|
||||
echo mailadler_VERSION=\"$VERSION\" >> build-mailadler.conf
|
||||
bash scripts/build-mailadler-msys2.sh
|
||||
pushd build
|
||||
echo Installing awscli
|
||||
pip install awscli
|
||||
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }}
|
||||
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
echo Downloading code-signing certificates
|
||||
aws s3 cp s3://misc.meltymedia/mailadler-build/CodeSignCertificates2023.p12 ./ --no-progress
|
||||
aws s3 cp s3://misc.meltymedia/mailadler-build/CodeSignCertificates.pass ./ --no-progress
|
||||
for EXE in mailadler/*.exe; do
|
||||
echo Signing ${EXE}
|
||||
osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "mailadler" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in ${EXE} -out ${EXE}-signed
|
||||
mv ${EXE}-signed ${EXE}
|
||||
done
|
||||
echo Packaging the portable zip
|
||||
zip -gr mailadler-win64-$FILENAME_VERSION.zip mailadler
|
||||
echo Packaging the installer
|
||||
PATH="$HOME/bin:$PATH"
|
||||
pushd $HOME/bin
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/iscc632.txz
|
||||
tar -xJf iscc632.txz
|
||||
popd
|
||||
echo Extracting installer dependencies
|
||||
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/innosetup-opera-1.txz
|
||||
tar -xJf innosetup-opera-1.txz
|
||||
rm innosetup-opera-1.txz
|
||||
echo Running Inno Setup Compiler
|
||||
ISCC -Q -O. mailadler.iss
|
||||
echo Signing the installer
|
||||
osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "mailadler Installer" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in mailadler-setup.exe -out mailadler-setup-signed.exe
|
||||
mv mailadler-setup-signed.exe mailadler-win64-$FILENAME_VERSION.exe
|
||||
rm mailadler-setup.exe
|
||||
popd
|
||||
echo Done
|
||||
VERSION=$(date +"%y.%-m.%-d-%H%M")
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Package
|
||||
shell: pwsh
|
||||
run: |
|
||||
$version = "${{ env.VERSION }}"
|
||||
New-Item -ItemType Directory -Force -Path "mailadler-win64"
|
||||
Copy-Item -Path "build\src\Release\mailadler.exe" -Destination "mailadler-win64\" -ErrorAction SilentlyContinue
|
||||
# Deploy Qt dependencies
|
||||
& "$env:Qt6_DIR\bin\windeployqt.exe" "mailadler-win64\mailadler.exe" 2>$null
|
||||
Compress-Archive -Path "mailadler-win64\*" -DestinationPath "mailadler-win64-$version.zip"
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-portable
|
||||
path: ./build/mailadler-win64-*.zip
|
||||
path: mailadler-win64-*.zip
|
||||
|
||||
- name: Upload packages to S3
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }}
|
||||
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
for file in build/*.{exe,zip}; do
|
||||
echo Uploading "$file" to S3
|
||||
aws s3 cp "$file" s3://builds.us.meltytech/mailadler/ --no-progress
|
||||
done
|
||||
- name: Upload to release (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: mailadler-win64-*.zip
|
||||
|
||||
30
.github/workflows/build-windows_arm64.yml
vendored
30
.github/workflows/build-windows_arm64.yml
vendored
@@ -1,30 +0,0 @@
|
||||
name: build-shotcut-windows-arm64
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# nightly
|
||||
- cron: '0 12 * * *'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.repository_owner == 'mltframework' }}
|
||||
steps:
|
||||
- name: Download from S3
|
||||
run: |
|
||||
VERSION=$(date +"%y%m%d")
|
||||
echo VERSION=$VERSION
|
||||
sudo apt install -yqq s3cmd
|
||||
s3cmd --access_key=${{ secrets.AWS_ACCESS_KEY }} --secret_key=${{ secrets.AWS_SECRET_KEY }} --stop-on-error get s3://builds.us.meltytech/shotcut-build-win_arm.txt.xz
|
||||
s3cmd --access_key=${{ secrets.AWS_ACCESS_KEY }} --secret_key=${{ secrets.AWS_SECRET_KEY }} --stop-on-error get s3://builds.us.meltytech/shotcut/shotcut-win_ARM-$VERSION.zip
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: portable
|
||||
path: |
|
||||
*.zip
|
||||
|
||||
- name: Dump log
|
||||
run: xzcat shotcut-build-win_arm.txt.xz
|
||||
39
.github/workflows/check-code-format.yml
vendored
39
.github/workflows/check-code-format.yml
vendored
@@ -3,8 +3,9 @@ name: check-code-format
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
types: [opened, reopened]
|
||||
types: [opened, reopened, synchronize]
|
||||
push:
|
||||
branches: [main, master]
|
||||
|
||||
jobs:
|
||||
clang-format:
|
||||
@@ -19,22 +20,24 @@ jobs:
|
||||
|
||||
- name: Check style
|
||||
run: |
|
||||
FILES=`find . -type f -name "*.h" -o -name "*.c" -o -name "*.cpp"`
|
||||
FILTERED_FILES=()
|
||||
for file in ${FILES[@]};
|
||||
do
|
||||
[[ $file =~ "./src/" ]] &&
|
||||
[[ ! $file =~ "spatialmedia" ]] &&
|
||||
[[ ! $file =~ "defaultlayouts.h" ]] &&
|
||||
[[ ! $file =~ "_autogen" ]] &&
|
||||
FILTERED_FILES+=($file)
|
||||
done
|
||||
clang-format-14 --verbose --dry-run --Werror -style=file -i ${FILTERED_FILES[@]}
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "SUCCESS: All files are formatted correctly"
|
||||
FILES=$(find ./src -type f \( -name "*.h" -o -name "*.c" -o -name "*.cpp" \) \
|
||||
! -path "*/spatialmedia/*" \
|
||||
! -name "defaultlayouts.h" \
|
||||
! -path "*_autogen*")
|
||||
|
||||
if [ -z "$FILES" ]; then
|
||||
echo "No source files found to check"
|
||||
exit 0
|
||||
else
|
||||
echo "FAILURE: some files are formatted incorrectly"
|
||||
exit 99
|
||||
fi
|
||||
|
||||
echo "Checking $(echo "$FILES" | wc -l) files..."
|
||||
clang-format-14 --dry-run --Werror -style=file $FILES
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "SUCCESS: All files are formatted correctly"
|
||||
else
|
||||
echo "FAILURE: Some files are formatted incorrectly"
|
||||
echo "Run 'clang-format-14 -i <files>' locally to fix"
|
||||
exit 1
|
||||
fi
|
||||
# Trigger CI
|
||||
|
||||
101
docs/PI_RUNNER_SETUP.md
Normal file
101
docs/PI_RUNNER_SETUP.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# Raspberry Pi 5 als GitHub Actions Self-Hosted Runner
|
||||
|
||||
## Voraussetzungen
|
||||
- Raspberry Pi 5 (8GB) mit Raspberry Pi OS (64-bit)
|
||||
- Internetverbindung
|
||||
- GitHub Repository Admin-Zugang
|
||||
|
||||
## 1. Dependencies installieren (einmalig)
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
sudo apt install -y \
|
||||
build-essential cmake ninja-build git curl \
|
||||
qt6-base-dev qt6-websockets-dev \
|
||||
libgl1-mesa-dev libxkbcommon-dev \
|
||||
libxcb-xinerama0-dev libxcb-cursor0 \
|
||||
libsqlite3-dev libssl-dev
|
||||
```
|
||||
|
||||
## 2. GitHub Runner installieren
|
||||
|
||||
```bash
|
||||
# Verzeichnis erstellen
|
||||
mkdir -p ~/actions-runner && cd ~/actions-runner
|
||||
|
||||
# Runner herunterladen (ARM64 Version)
|
||||
curl -o actions-runner-linux-arm64-2.321.0.tar.gz -L \
|
||||
https://github.com/actions/runner/releases/download/v2.321.0/actions-runner-linux-arm64-2.321.0.tar.gz
|
||||
|
||||
# Entpacken
|
||||
tar xzf ./actions-runner-linux-arm64-2.321.0.tar.gz
|
||||
```
|
||||
|
||||
## 3. Runner registrieren
|
||||
|
||||
1. Gehe zu: https://github.com/georg0480/mailadler/settings/actions/runners/new
|
||||
2. Wähle "Linux" und "ARM64"
|
||||
3. Kopiere den Token aus der Anleitung
|
||||
4. Führe aus:
|
||||
|
||||
```bash
|
||||
./config.sh --url https://github.com/georg0480/mailadler --token DEIN_TOKEN
|
||||
```
|
||||
|
||||
Bei der Konfiguration:
|
||||
- **Runner group**: Enter (default)
|
||||
- **Runner name**: `pi5-dns` (oder anderer Name)
|
||||
- **Labels**: `self-hosted,linux,ARM64` (wichtig!)
|
||||
- **Work folder**: Enter (default: `_work`)
|
||||
|
||||
## 4. Als Systemd-Service einrichten (läuft automatisch)
|
||||
|
||||
```bash
|
||||
sudo ./svc.sh install
|
||||
sudo ./svc.sh start
|
||||
|
||||
# Status prüfen
|
||||
sudo ./svc.sh status
|
||||
```
|
||||
|
||||
## 5. Testen
|
||||
|
||||
Gehe zu: https://github.com/georg0480/mailadler/actions
|
||||
|
||||
Klicke auf "build-mailadler-linux-arm64" → "Run workflow"
|
||||
|
||||
Der Build sollte auf deinem Pi laufen!
|
||||
|
||||
## Ressourcen-Tipps für DNS-Server + Runner
|
||||
|
||||
Da der Pi auch DNS-Server ist:
|
||||
|
||||
```bash
|
||||
# Runner-Priority senken (nice)
|
||||
sudo nano /etc/systemd/system/actions.runner.*.service
|
||||
```
|
||||
|
||||
Füge hinzu unter `[Service]`:
|
||||
```ini
|
||||
Nice=10
|
||||
CPUQuota=75%
|
||||
MemoryMax=6G
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart actions.runner.*.service
|
||||
```
|
||||
|
||||
## Logs anschauen
|
||||
|
||||
```bash
|
||||
journalctl -u actions.runner.* -f
|
||||
```
|
||||
|
||||
## Runner stoppen/deaktivieren
|
||||
|
||||
```bash
|
||||
sudo ./svc.sh stop
|
||||
sudo ./svc.sh uninstall
|
||||
```
|
||||
30
scripts/format-code.ps1
Normal file
30
scripts/format-code.ps1
Normal file
@@ -0,0 +1,30 @@
|
||||
# Format all C++ source files with clang-format
|
||||
# Run this before committing to avoid CI failures
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Check if clang-format is installed
|
||||
$clangFormat = Get-Command clang-format -ErrorAction SilentlyContinue
|
||||
if (-not $clangFormat) {
|
||||
Write-Host "clang-format not found. Installing via winget..." -ForegroundColor Yellow
|
||||
winget install LLVM.LLVM
|
||||
Write-Host "Please restart PowerShell and run this script again." -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Find all source files
|
||||
$srcPath = Join-Path $PSScriptRoot "..\src"
|
||||
$files = Get-ChildItem -Path $srcPath -Recurse -Include "*.h", "*.c", "*.cpp" |
|
||||
Where-Object {
|
||||
$_.FullName -notmatch "spatialmedia" -and
|
||||
$_.Name -ne "defaultlayouts.h" -and
|
||||
$_.FullName -notmatch "_autogen"
|
||||
}
|
||||
|
||||
Write-Host "Formatting $($files.Count) files..." -ForegroundColor Cyan
|
||||
|
||||
foreach ($file in $files) {
|
||||
clang-format -style=file -i $file.FullName
|
||||
}
|
||||
|
||||
Write-Host "Done! All files formatted." -ForegroundColor Green
|
||||
@@ -261,12 +261,9 @@ public:
|
||||
ConsoleAppender *consoleAppender = new ConsoleAppender();
|
||||
consoleAppender->setFormat(fileAppender->format());
|
||||
cuteLogger->registerAppender(consoleAppender);
|
||||
|
||||
// mlt_log_set_level(MLT_LOG_VERBOSE);
|
||||
// #else
|
||||
// mlt_log_set_level(MLT_LOG_INFO);
|
||||
// #endif
|
||||
// mlt_log_set_callback(mlt_log_handler); // MLT disabled
|
||||
// MLT logging disabled
|
||||
// mlt_log_set_level(MLT_LOG_VERBOSE);
|
||||
// mlt_log_set_callback(mlt_log_handler);
|
||||
cuteLogger->logToGlobalInstance("qml", true);
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
|
||||
@@ -1811,7 +1811,11 @@ bool MainWindow::saveRepairedXmlFile_disabled(MltXmlChecker &checker, QString &f
|
||||
*/
|
||||
|
||||
bool MainWindow::isXmlRepaired(MltXmlChecker &checker, QString &fileName)
|
||||
{ return true; } // DISABLED: MLT XML checker
|
||||
{
|
||||
Q_UNUSED(checker)
|
||||
Q_UNUSED(fileName)
|
||||
return true; // DISABLED: MLT XML checker
|
||||
}
|
||||
|
||||
/*
|
||||
bool MainWindow::isXmlRepaired_disabled(MltXmlChecker &checker, QString &fileName)
|
||||
@@ -2301,7 +2305,13 @@ void MainWindow::openMultiple(const QStringList &paths)
|
||||
*/
|
||||
|
||||
bool MainWindow::open(QString url, const Mlt::Properties *properties, bool play, bool skipConvert)
|
||||
{ return false; } // DISABLED: MLT
|
||||
{
|
||||
Q_UNUSED(url)
|
||||
Q_UNUSED(properties)
|
||||
Q_UNUSED(play)
|
||||
Q_UNUSED(skipConvert)
|
||||
return false; // DISABLED: MLT
|
||||
}
|
||||
|
||||
// This one is invoked from above (command line) or drag-n-drop.
|
||||
void MainWindow::openMultiple(const QList<QUrl> &urls)
|
||||
@@ -2433,7 +2443,7 @@ void MainWindow::seekPlaylist(int start)
|
||||
// MLT.seek(start);
|
||||
// m_player->setFocus();
|
||||
// m_player->switchToTab(Player::ProjectTabIndex);
|
||||
(void)start;
|
||||
Q_UNUSED(start)
|
||||
}
|
||||
|
||||
void MainWindow::seekTimeline(int position, bool seekPlayer)
|
||||
@@ -2460,15 +2470,15 @@ void MainWindow::seekTimeline(int position, bool seekPlayer)
|
||||
// m_player->seek(position);
|
||||
// else
|
||||
// m_player->pause();
|
||||
(void)position;
|
||||
(void)seekPlayer;
|
||||
Q_UNUSED(position)
|
||||
Q_UNUSED(seekPlayer)
|
||||
}
|
||||
|
||||
void MainWindow::seekKeyframes(int position)
|
||||
{
|
||||
// DISABLED: MLT keyframe seeking
|
||||
// m_player->seek(position);
|
||||
(void)position;
|
||||
Q_UNUSED(position)
|
||||
}
|
||||
|
||||
void MainWindow::readPlayerSettings()
|
||||
@@ -3318,7 +3328,7 @@ void MainWindow::onProducerOpened(bool withReopen)
|
||||
// else if (!MLT.URL().isEmpty())
|
||||
// setCurrentFile(MLT.URL());
|
||||
// on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked());
|
||||
(void)withReopen;
|
||||
Q_UNUSED(withReopen)
|
||||
}
|
||||
|
||||
void MainWindow::onProducerChanged()
|
||||
@@ -3489,8 +3499,8 @@ void MainWindow::getSelectionRange(int *start, int *end)
|
||||
*start = -1;
|
||||
*end = -1;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
*/
|
||||
|
||||
/* DISABLED: MLT binPlaylist
|
||||
Mlt::Playlist *MainWindow::binPlaylist()
|
||||
@@ -4219,11 +4229,11 @@ QWidget *MainWindow::loadProducerWidget(Mlt::Producer *producer)
|
||||
scrollArea->setWidget(w);
|
||||
onProducerChanged();
|
||||
} else if (scrollArea->widget()) {
|
||||
scrollArea->widget()->deleteLater();
|
||||
}
|
||||
return w;
|
||||
scrollArea->widget()->deleteLater();
|
||||
}
|
||||
*/
|
||||
return w;
|
||||
}
|
||||
*/
|
||||
|
||||
void MainWindow::on_actionEnterFullScreen_triggered()
|
||||
{
|
||||
@@ -4576,7 +4586,7 @@ void MainWindow::onExternalTriggered(QAction *action)
|
||||
// ui->actionPreview540->setEnabled(true);
|
||||
// }
|
||||
// setPreviewScale(Settings.playerPreviewScale());
|
||||
(void)action;
|
||||
Q_UNUSED(action)
|
||||
}
|
||||
|
||||
void MainWindow::onDecklinkGammaTriggered(QAction *action)
|
||||
@@ -5896,7 +5906,7 @@ void MainWindow::onPlaylistInChanged(int in)
|
||||
// m_player->blockSignals(true);
|
||||
// m_player->setIn(in);
|
||||
// m_player->blockSignals(false);
|
||||
(void)in;
|
||||
Q_UNUSED(in)
|
||||
}
|
||||
|
||||
void MainWindow::onPlaylistOutChanged(int out)
|
||||
@@ -5905,7 +5915,7 @@ void MainWindow::onPlaylistOutChanged(int out)
|
||||
// m_player->blockSignals(true);
|
||||
// m_player->setOut(out);
|
||||
// m_player->blockSignals(false);
|
||||
(void)out;
|
||||
Q_UNUSED(out)
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPreviewNone_triggered(bool checked)
|
||||
@@ -5925,7 +5935,7 @@ void MainWindow::on_actionPreview360_triggered(bool checked)
|
||||
// setPreviewScale(360);
|
||||
// m_player->showIdleStatus();
|
||||
// }
|
||||
(void)checked;
|
||||
Q_UNUSED(checked)
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPreview540_triggered(bool checked)
|
||||
@@ -5936,7 +5946,7 @@ void MainWindow::on_actionPreview540_triggered(bool checked)
|
||||
// setPreviewScale(540);
|
||||
// m_player->showIdleStatus();
|
||||
// }
|
||||
(void)checked;
|
||||
Q_UNUSED(checked)
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPreview720_triggered(bool checked)
|
||||
@@ -6137,7 +6147,7 @@ void MainWindow::on_actionUseProxy_triggered(bool checked)
|
||||
// Settings.setProxyEnabled(checked);
|
||||
// }
|
||||
// m_player->showIdleStatus();
|
||||
(void)checked;
|
||||
Q_UNUSED(checked)
|
||||
}
|
||||
|
||||
void MainWindow::on_actionProxyStorageSet_triggered()
|
||||
|
||||
Reference in New Issue
Block a user