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' 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