Compare commits

...

6 Commits

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

View File

@ -4,7 +4,14 @@ cd "$(dirname ${BASH_SOURCE[0]})"
. build_common . build_common
cd .. # root project dir 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/adb_linux.sh
app/deps/sdl.sh linux native static app/deps/sdl.sh linux native static

View File

@ -4,7 +4,14 @@ cd "$(dirname ${BASH_SOURCE[0]})"
. build_common . build_common
cd .. # root project dir 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/adb_macos.sh
app/deps/sdl.sh macos native static app/deps/sdl.sh macos native static

View File

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

View File

@ -14,39 +14,39 @@ fi
FORMAT=$2 FORMAT=$2
if [[ "$2" != zip && "$2" != tar.gz ]] if [[ "$FORMAT" != zip && "$FORMAT" != tar.gz ]]
then then
echo "Invalid format (expected zip or tar.gz): $2" >&2 echo "Invalid format (expected zip or tar.gz): $FORMAT" >&2
exit 1 exit 1
fi fi
BUILD_DIR="$WORK_DIR/build-$1" BUILD_DIR="$WORK_DIR/build-$1"
ARCHIVE_DIR="$BUILD_DIR/release-archive" ARCHIVE_DIR="$BUILD_DIR/release-archive"
TARGET="scrcpy-$1-$VERSION" TARGET_DIRNAME="scrcpy-$1-$VERSION"
rm -rf "$ARCHIVE_DIR/$TARGET" rm -rf "$ARCHIVE_DIR/$TARGET_DIRNAME"
mkdir -p "$ARCHIVE_DIR/$TARGET" mkdir -p "$ARCHIVE_DIR/$TARGET_DIRNAME"
cp -r "$BUILD_DIR/dist/." "$ARCHIVE_DIR/$TARGET/" cp -r "$BUILD_DIR/dist/." "$ARCHIVE_DIR/$TARGET_DIRNAME/"
cp "$WORK_DIR/build-server/server/scrcpy-server" "$ARCHIVE_DIR/$TARGET/" cp "$WORK_DIR/build-server/server/scrcpy-server" "$ARCHIVE_DIR/$TARGET_DIRNAME/"
mkdir -p "$OUTPUT_DIR" mkdir -p "$OUTPUT_DIR"
cd "$ARCHIVE_DIR" cd "$ARCHIVE_DIR"
rm -f "$OUTPUT_DIR/$TARGET.$FORMAT" rm -f "$OUTPUT_DIR/$TARGET_DIRNAME.$FORMAT"
case "$FORMAT" in case "$FORMAT" in
zip) zip)
zip -r "$OUTPUT_DIR/$TARGET.zip" "$TARGET" zip -r "$OUTPUT_DIR/$TARGET_DIRNAME.zip" "$TARGET_DIRNAME"
;; ;;
tar.gz) 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 echo "Invalid format (expected zip or tar.gz): $FORMAT" >&2
exit 1 exit 1
esac esac
rm -rf "$TARGET" rm -rf "$TARGET_DIRNAME"
cd - 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_server.sh
./build_windows.sh 32 ./build_windows.sh 32
./build_windows.sh 64 ./build_windows.sh 64
./build_linux.sh ./build_linux.sh x86_64
./package_server.sh ./package_server.sh
./package_client.sh win32 zip ./package_client.sh win32 zip
./package_client.sh win64 zip ./package_client.sh win64 zip
./package_client.sh linux tar.gz ./package_client.sh linux-x86_64 tar.gz
./generate_checksums.sh ./generate_checksums.sh