Compare commits

...

6 Commits

Author SHA1 Message Date
e3ecc6a59f Build macOS x86_64 release
Add actions to build a release for macOS x86_64 in addition to the
aarch64 version.
2024-11-26 00:20:25 +01:00
6a2f35e7dc Specify architecture for Linux and macOS releases
Co-authored-by: Genxster1998 <ck.2229.ck@gmail.com>
2024-11-26 00:18:27 +01:00
4f74bf7f2b Rename TARGET to TARGET_DIRNAME 2024-11-26 00:18:03 +01:00
5c7d0717a2 Use FORMAT variable name in package_client.sh
The format is used several times, avoid using "$2" directly.
2024-11-26 00:16:46 +01:00
f7ff391afd Simplify GitHub actions step descriptions
Each step is executed within the context of an action, so there is no
need to mention the name of the action.
2024-11-26 00:16:04 +01:00
b901cb1c40 Remove apt update on GitHub Actions
Assume the image is up-to-date.
2024-11-26 00:13:02 +01:00
6 changed files with 153 additions and 72 deletions

View File

@ -42,10 +42,10 @@ jobs:
distribution: 'zulu'
java-version: '17'
- name: Build scrcpy-server
- name: Build
run: release/build_server.sh
- name: Upload scrcpy-server artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: scrcpy-server
@ -63,7 +63,7 @@ jobs:
distribution: 'zulu'
java-version: '17'
- name: Build scrcpy-server without gradle
- name: Build without gradle
run: server/build_without_gradle.sh
test-client:
@ -74,7 +74,6 @@ jobs:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \
libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \
libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \
@ -83,7 +82,7 @@ jobs:
- name: Test
run: release/test_client.sh
build-linux:
build-linux-x86_64:
runs-on: ubuntu-latest
steps:
- name: Checkout code
@ -91,28 +90,27 @@ jobs:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \
libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \
libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \
libv4l-dev
- name: Build linux
run: release/build_linux.sh
- name: Build
run: release/build_linux.sh x86_64
# upload-artifact does not preserve permissions
- name: Tar
run: |
cd release/work/build-linux
cd release/work/build-linux-x86_64
mkdir dist-tar
cd dist-tar
tar -C .. -cvf dist.tar.gz dist/
- name: Upload build-linux artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: build-linux-intermediate
path: release/work/build-linux/dist-tar/
name: build-linux-x86_64-intermediate
path: release/work/build-linux-x86_64/dist-tar/
build-win32:
runs-on: ubuntu-latest
@ -122,7 +120,6 @@ jobs:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \
libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \
libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \
@ -131,7 +128,7 @@ jobs:
- name: Workaround for old meson version run by Github Actions
run: sed -i 's/^pkg-config/pkgconfig/' cross_win32.txt
- name: Build win32
- name: Build
run: release/build_windows.sh 32
# upload-artifact does not preserve permissions
@ -142,7 +139,7 @@ jobs:
cd dist-tar
tar -C .. -cvf dist.tar.gz dist/
- name: Upload build-win32 artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: build-win32-intermediate
@ -156,7 +153,6 @@ jobs:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \
libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \
libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \
@ -165,7 +161,7 @@ jobs:
- name: Workaround for old meson version run by Github Actions
run: sed -i 's/^pkg-config/pkgconfig/' cross_win64.txt
- name: Build win64
- name: Build
run: release/build_windows.sh 64
# upload-artifact does not preserve permissions
@ -176,13 +172,13 @@ jobs:
cd dist-tar
tar -C .. -cvf dist.tar.gz dist/
- name: Upload build-win64 artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: build-win64-intermediate
path: release/work/build-win64/dist-tar/
build-macos:
build-macos-aarch64:
runs-on: macos-latest
steps:
- name: Checkout code
@ -193,27 +189,54 @@ jobs:
brew install meson ninja nasm libiconv zlib automake autoconf \
libtool
- name: Build macOS
run: release/build_macos.sh
- name: Build
run: release/build_macos.sh aarch64
# upload-artifact does not preserve permissions
- name: Tar
run: |
cd release/work/build-macos
cd release/work/build-macos-aarch64
mkdir dist-tar
cd dist-tar
tar -C .. -cvf dist.tar.gz dist/
- name: Upload build-macos artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: build-macos-intermediate
path: release/work/build-macos/dist-tar/
name: build-macos-aarch64-intermediate
path: release/work/build-macos-aarch64/dist-tar/
package-linux:
build-macos-x86_64:
runs-on: macos-13
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
run: brew install meson ninja nasm libiconv zlib automake
# autoconf and libtool are already installed on macos-13
- name: Build
run: release/build_macos.sh x86_64
# upload-artifact does not preserve permissions
- name: Tar
run: |
cd release/work/build-macos-x86_64
mkdir dist-tar
cd dist-tar
tar -C .. -cvf dist.tar.gz dist/
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: build-macos-x86_64-intermediate
path: release/work/build-macos-x86_64/dist-tar/
package-linux-x86_64:
needs:
- build-scrcpy-server
- build-linux
- build-linux-x86_64
runs-on: ubuntu-latest
steps:
- name: Checkout code
@ -225,25 +248,25 @@ jobs:
name: scrcpy-server
path: release/work/build-server/server/
- name: Download build-linux
- name: Download build-linux-x86_64
uses: actions/download-artifact@v4
with:
name: build-linux-intermediate
path: release/work/build-linux/dist-tar/
name: build-linux-x86_64-intermediate
path: release/work/build-linux-x86_64/dist-tar/
# upload-artifact does not preserve permissions
- name: Detar
run: |
cd release/work/build-linux
cd release/work/build-linux-x86_64
tar xf dist-tar/dist.tar.gz
- name: Package linux
run: release/package_client.sh linux tar.gz
- name: Package
run: release/package_client.sh linux-x86_64 tar.gz
- name: Upload linux release
- name: Upload release
uses: actions/upload-artifact@v4
with:
name: release-linux
name: release-linux-x86_64
path: release/output/
package-win32:
@ -273,10 +296,10 @@ jobs:
cd release/work/build-win32
tar xf dist-tar/dist.tar.gz
- name: Package win32
- name: Package
run: release/package_client.sh win32 zip
- name: Upload win32 release
- name: Upload release
uses: actions/upload-artifact@v4
with:
name: release-win32
@ -309,19 +332,55 @@ jobs:
cd release/work/build-win64
tar xf dist-tar/dist.tar.gz
- name: Package win64
- name: Package
run: release/package_client.sh win64 zip
- name: Upload win64 release
- name: Upload release
uses: actions/upload-artifact@v4
with:
name: release-win64
path: release/output
package-macos:
package-macos-aarch64:
needs:
- build-scrcpy-server
- build-macos
- build-macos-aarch64
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download scrcpy-server
uses: actions/download-artifact@v4
with:
name: scrcpy-server
path: release/work/build-server/server/
- name: Download build-macos-aarch64
uses: actions/download-artifact@v4
with:
name: build-macos-aarch64-intermediate
path: release/work/build-macos-aarch64/dist-tar/
# upload-artifact does not preserve permissions
- name: Detar
run: |
cd release/work/build-macos-aarch64
tar xf dist-tar/dist.tar.gz
- name: Package
run: release/package_client.sh macos-aarch64 tar.gz
- name: Upload release
uses: actions/upload-artifact@v4
with:
name: release-macos-aarch64
path: release/output/
package-macos-x86_64:
needs:
- build-scrcpy-server
- build-macos-x86_64
runs-on: ubuntu-latest
steps:
- name: Checkout code
@ -336,31 +395,32 @@ jobs:
- name: Download build-macos
uses: actions/download-artifact@v4
with:
name: build-macos-intermediate
path: release/work/build-macos/dist-tar/
name: build-macos-x86_64-intermediate
path: release/work/build-macos-x86_64/dist-tar/
# upload-artifact does not preserve permissions
- name: Detar
run: |
cd release/work/build-macos
cd release/work/build-macos-x86_64
tar xf dist-tar/dist.tar.gz
- name: Package macos
run: release/package_client.sh macos tar.gz
- name: Package
run: release/package_client.sh macos-x86_64 tar.gz
- name: Upload macos release
- name: Upload release
uses: actions/upload-artifact@v4
with:
name: release-macos
name: release-macos-x86_64
path: release/output/
release:
needs:
- build-scrcpy-server
- package-linux
- package-linux-x86_64
- package-win32
- package-win64
- package-macos
- package-macos-aarch64
- package-macos-x86_64
runs-on: ubuntu-latest
steps:
- name: Checkout code
@ -372,10 +432,10 @@ jobs:
name: scrcpy-server
path: release/work/build-server/server/
- name: Download release-linux
- name: Download release-linux-x86_64
uses: actions/download-artifact@v4
with:
name: release-linux
name: release-linux-x86_64
path: release/output/
- name: Download release-win32
@ -390,10 +450,16 @@ jobs:
name: release-win64
path: release/output/
- name: Download release-macos
- name: Download release-macos-aarch64
uses: actions/download-artifact@v4
with:
name: release-macos
name: release-macos-aarch64
path: release/output/
- name: Download release-macos-x86_64
uses: actions/download-artifact@v4
with:
name: release-macos-aarch64
path: release/output/
- name: Package server

View File

@ -4,7 +4,14 @@ cd "$(dirname ${BASH_SOURCE[0]})"
. build_common
cd .. # root project dir
LINUX_BUILD_DIR="$WORK_DIR/build-linux"
ARCH="$1"
if [[ $# != 1 ]]
then
echo "Syntax: $0 <arch>" >&2
exit 1
fi
LINUX_BUILD_DIR="$WORK_DIR/build-linux-$ARCH"
app/deps/adb_linux.sh
app/deps/sdl.sh linux native static

View File

@ -4,7 +4,14 @@ cd "$(dirname ${BASH_SOURCE[0]})"
. build_common
cd .. # root project dir
MACOS_BUILD_DIR="$WORK_DIR/build-macos"
ARCH="$1"
if [[ $# != 1 ]]
then
echo "Syntax: $0 <arch>" >&2
exit 1
fi
MACOS_BUILD_DIR="$WORK_DIR/build-macos-$ARCH"
app/deps/adb_macos.sh
app/deps/sdl.sh macos native static

View File

@ -5,9 +5,10 @@ cd "$(dirname ${BASH_SOURCE[0]})"
cd "$OUTPUT_DIR"
sha256sum "scrcpy-server-$VERSION" \
"scrcpy-linux-$VERSION.tar.gz" \
"scrcpy-linux-x86_64-$VERSION.tar.gz" \
"scrcpy-win32-$VERSION.zip" \
"scrcpy-win64-$VERSION.zip" \
"scrcpy-macos-$VERSION.tar.gz" \
"scrcpy-macos-aarch64-$VERSION.tar.gz" \
"scrcpy-macos-x86_64-$VERSION.tar.gz" \
| tee SHA256SUMS.txt
echo "Release checksums generated in $PWD/SHA256SUMS.txt"

View File

@ -14,39 +14,39 @@ fi
FORMAT=$2
if [[ "$2" != zip && "$2" != tar.gz ]]
if [[ "$FORMAT" != zip && "$FORMAT" != tar.gz ]]
then
echo "Invalid format (expected zip or tar.gz): $2" >&2
echo "Invalid format (expected zip or tar.gz): $FORMAT" >&2
exit 1
fi
BUILD_DIR="$WORK_DIR/build-$1"
ARCHIVE_DIR="$BUILD_DIR/release-archive"
TARGET="scrcpy-$1-$VERSION"
TARGET_DIRNAME="scrcpy-$1-$VERSION"
rm -rf "$ARCHIVE_DIR/$TARGET"
mkdir -p "$ARCHIVE_DIR/$TARGET"
rm -rf "$ARCHIVE_DIR/$TARGET_DIRNAME"
mkdir -p "$ARCHIVE_DIR/$TARGET_DIRNAME"
cp -r "$BUILD_DIR/dist/." "$ARCHIVE_DIR/$TARGET/"
cp "$WORK_DIR/build-server/server/scrcpy-server" "$ARCHIVE_DIR/$TARGET/"
cp -r "$BUILD_DIR/dist/." "$ARCHIVE_DIR/$TARGET_DIRNAME/"
cp "$WORK_DIR/build-server/server/scrcpy-server" "$ARCHIVE_DIR/$TARGET_DIRNAME/"
mkdir -p "$OUTPUT_DIR"
cd "$ARCHIVE_DIR"
rm -f "$OUTPUT_DIR/$TARGET.$FORMAT"
rm -f "$OUTPUT_DIR/$TARGET_DIRNAME.$FORMAT"
case "$FORMAT" in
zip)
zip -r "$OUTPUT_DIR/$TARGET.zip" "$TARGET"
zip -r "$OUTPUT_DIR/$TARGET_DIRNAME.zip" "$TARGET_DIRNAME"
;;
tar.gz)
tar cvf "$OUTPUT_DIR/$TARGET.tar.gz" "$TARGET"
tar cvf "$OUTPUT_DIR/$TARGET_DIRNAME.tar.gz" "$TARGET_DIRNAME"
;;
*)
echo "Invalid format (expected zip or tar.gz): $FORMAT" >&2
exit 1
esac
rm -rf "$TARGET"
rm -rf "$TARGET_DIRNAME"
cd -
echo "Generated '$OUTPUT_DIR/$TARGET.$FORMAT'"
echo "Generated '$OUTPUT_DIR/$TARGET_DIRNAME.$FORMAT'"

View File

@ -12,12 +12,12 @@ rm -rf output
./build_server.sh
./build_windows.sh 32
./build_windows.sh 64
./build_linux.sh
./build_linux.sh x86_64
./package_server.sh
./package_client.sh win32 zip
./package_client.sh win64 zip
./package_client.sh linux tar.gz
./package_client.sh linux-x86_64 tar.gz
./generate_checksums.sh