From 2687d202809dfaafe8f40f613aec131ad9501433 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Wed, 18 Sep 2024 23:51:52 +0200 Subject: [PATCH] Rework release.mk for CI Make it possible to build scrcpy-server and Windows binaries in parallel from different GitHub Actions workflows, and to package everything as a final step. PR #5306 --- release.mk | 87 +++++++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/release.mk b/release.mk index f99eaf4f..61145002 100644 --- a/release.mk +++ b/release.mk @@ -13,9 +13,8 @@ build-server \ prepare-deps-win32 prepare-deps-win64 \ build-win32 build-win64 \ - dist-win32 dist-win64 \ zip-win32 zip-win64 \ - release + package release GRADLE ?= ./gradlew @@ -26,7 +25,7 @@ WIN64_BUILD_DIR := build-win64 VERSION ?= $(shell git describe --tags --exclude='*install-release' --always) -DIST := dist +ZIP := zip WIN32_TARGET_DIR := scrcpy-win32-$(VERSION) WIN64_TARGET_DIR := scrcpy-win64-$(VERSION) WIN32_TARGET := $(WIN32_TARGET_DIR).zip @@ -34,21 +33,11 @@ WIN64_TARGET := $(WIN64_TARGET_DIR).zip RELEASE_DIR := release-$(VERSION) -release: clean test build-server zip-win32 zip-win64 - mkdir -p "$(RELEASE_DIR)" - cp "$(SERVER_BUILD_DIR)/server/scrcpy-server" \ - "$(RELEASE_DIR)/scrcpy-server-$(VERSION)" - cp "$(DIST)/$(WIN32_TARGET)" "$(RELEASE_DIR)" - cp "$(DIST)/$(WIN64_TARGET)" "$(RELEASE_DIR)" - cd "$(RELEASE_DIR)" && \ - sha256sum "scrcpy-server-$(VERSION)" \ - "scrcpy-win32-$(VERSION).zip" \ - "scrcpy-win64-$(VERSION).zip" > SHA256SUMS.txt - @echo "Release generated in $(RELEASE_DIR)/" +release: clean test build-server build-win32 build-win64 package clean: $(GRADLE) clean - rm -rf "$(DIST)" "$(TEST_BUILD_DIR)" "$(SERVER_BUILD_DIR)" \ + rm -rf "$(ZIP)" "$(TEST_BUILD_DIR)" "$(SERVER_BUILD_DIR)" \ "$(WIN32_BUILD_DIR)" "$(WIN64_BUILD_DIR)" test-client: @@ -91,6 +80,15 @@ build-win32: prepare-deps-win32 -Dcompile_server=false \ -Dportable=true ninja -C "$(WIN32_BUILD_DIR)" + # Group intermediate outputs into a 'dist' directory + mkdir -p "$(WIN32_BUILD_DIR)/dist" + cp "$(WIN32_BUILD_DIR)"/app/scrcpy.exe "$(WIN32_BUILD_DIR)/dist/" + cp app/data/scrcpy-console.bat "$(WIN32_BUILD_DIR)/dist/" + cp app/data/scrcpy-noconsole.vbs "$(WIN32_BUILD_DIR)/dist/" + cp app/data/icon.png "$(WIN32_BUILD_DIR)/dist/" + cp app/data/open_a_terminal_here.bat "$(WIN32_BUILD_DIR)/dist/" + cp app/deps/work/install/win32/bin/*.dll "$(WIN32_BUILD_DIR)/dist/" + cp app/deps/work/install/win32/bin/adb.exe "$(WIN32_BUILD_DIR)/dist/" build-win64: prepare-deps-win64 rm -rf "$(WIN64_BUILD_DIR)" @@ -104,33 +102,40 @@ build-win64: prepare-deps-win64 -Dcompile_server=false \ -Dportable=true ninja -C "$(WIN64_BUILD_DIR)" + # Group intermediate outputs into a 'dist' directory + mkdir -p "$(WIN64_BUILD_DIR)/dist" + cp "$(WIN64_BUILD_DIR)"/app/scrcpy.exe "$(WIN64_BUILD_DIR)/dist/" + cp app/data/scrcpy-console.bat "$(WIN64_BUILD_DIR)/dist/" + cp app/data/scrcpy-noconsole.vbs "$(WIN64_BUILD_DIR)/dist/" + cp app/data/icon.png "$(WIN64_BUILD_DIR)/dist/" + cp app/data/open_a_terminal_here.bat "$(WIN64_BUILD_DIR)/dist/" + cp app/deps/work/install/win64/bin/*.dll "$(WIN64_BUILD_DIR)/dist/" + cp app/deps/work/install/win64/bin/adb.exe "$(WIN64_BUILD_DIR)/dist/" -dist-win32: build-server build-win32 - mkdir -p "$(DIST)/$(WIN32_TARGET_DIR)" - cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN32_TARGET_DIR)/" - cp "$(WIN32_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/data/scrcpy-console.bat "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/data/icon.png "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/deps/work/install/win32/bin/*.dll "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/deps/work/install/win32/bin/adb.exe "$(DIST)/$(WIN32_TARGET_DIR)/" - -dist-win64: build-server build-win64 - mkdir -p "$(DIST)/$(WIN64_TARGET_DIR)" - cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN64_TARGET_DIR)/" - cp "$(WIN64_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/data/scrcpy-console.bat "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/data/icon.png "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/deps/work/install/win64/bin/*.dll "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/deps/work/install/win64/bin/adb.exe "$(DIST)/$(WIN64_TARGET_DIR)/" - -zip-win32: dist-win32 - cd "$(DIST)"; \ +zip-win32: + mkdir -p "$(ZIP)/$(WIN32_TARGET_DIR)" + cp -r "$(WIN32_BUILD_DIR)/dist/." "$(ZIP)/$(WIN32_TARGET_DIR)/" + cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(ZIP)/$(WIN32_TARGET_DIR)/" + cd "$(ZIP)"; \ zip -r "$(WIN32_TARGET)" "$(WIN32_TARGET_DIR)" + rm -rf "$(ZIP)/$(WIN32_TARGET_DIR)" -zip-win64: dist-win64 - cd "$(DIST)"; \ +zip-win64: + mkdir -p "$(ZIP)/$(WIN64_TARGET_DIR)" + cp -r "$(WIN64_BUILD_DIR)/dist/." "$(ZIP)/$(WIN64_TARGET_DIR)/" + cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(ZIP)/$(WIN64_TARGET_DIR)/" + cd "$(ZIP)"; \ zip -r "$(WIN64_TARGET)" "$(WIN64_TARGET_DIR)" + rm -rf "$(ZIP)/$(WIN64_TARGET_DIR)" + +package: zip-win32 zip-win64 + mkdir -p "$(RELEASE_DIR)" + cp "$(SERVER_BUILD_DIR)/server/scrcpy-server" \ + "$(RELEASE_DIR)/scrcpy-server-$(VERSION)" + cp "$(ZIP)/$(WIN32_TARGET)" "$(RELEASE_DIR)" + cp "$(ZIP)/$(WIN64_TARGET)" "$(RELEASE_DIR)" + cd "$(RELEASE_DIR)" && \ + sha256sum "scrcpy-server-$(VERSION)" \ + "scrcpy-win32-$(VERSION).zip" \ + "scrcpy-win64-$(VERSION).zip" > SHA256SUMS.txt + @echo "Release generated in $(RELEASE_DIR)/"