From ad1bea088e780c5393f893cfe93419266758c05b Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 10 Mar 2025 19:18:04 -0300 Subject: [PATCH 1/8] Fix check_command in build.sh --- scripts/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build.sh b/scripts/build.sh index e365eb54..ac9e01b2 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,7 +1,7 @@ #!/bin/sh check_command() { - if ! command -v $1 &> /dev/null + if ! command -v "$1" > /dev/null then echo "Error: $1 could not be found. Please install it." exit 1 From 3376bf8b99ef08650bd827bd8e4c59219bc365f2 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 10 Mar 2025 19:34:05 -0300 Subject: [PATCH 2/8] Avoid ignoring errors --- scripts/build.sh | 49 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index ac9e01b2..1a43ed82 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,10 +1,12 @@ #!/bin/sh +set -eu + check_command() { - if ! command -v "$1" > /dev/null + if ! command -v "$1" >/dev/null then - echo "Error: $1 could not be found. Please install it." - exit 1 + echo "Error: $1 could not be found. Please install it." >&2 + return 1 fi } @@ -13,82 +15,97 @@ check_command go check_command 7z check_command upx +set -x + # Windows amd64 export GOOS=windows export GOARCH=amd64 FILENAME="go2rtc_win64.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Windows 386 export GOOS=windows export GOARCH=386 FILENAME="go2rtc_win32.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Windows arm64 export GOOS=windows export GOARCH=arm64 FILENAME="go2rtc_win_arm64.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Linux amd64 export GOOS=linux export GOARCH=amd64 FILENAME="go2rtc_linux_amd64" -go build -ldflags "-s -w" -trimpath -o $FILENAME && upx --lzma --force-overwrite -q --no-progress $FILENAME +go build -ldflags "-s -w" -trimpath -o $FILENAME +upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux 386 export GOOS=linux export GOARCH=386 FILENAME="go2rtc_linux_i386" -go build -ldflags "-s -w" -trimpath -o $FILENAME && upx --lzma --force-overwrite -q --no-progress $FILENAME +go build -ldflags "-s -w" -trimpath -o $FILENAME +upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux arm64 export GOOS=linux export GOARCH=arm64 FILENAME="go2rtc_linux_arm64" -go build -ldflags "-s -w" -trimpath -o $FILENAME && upx --lzma --force-overwrite -q --no-progress $FILENAME +go build -ldflags "-s -w" -trimpath -o $FILENAME +upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux arm v7 export GOOS=linux export GOARCH=arm export GOARM=7 FILENAME="go2rtc_linux_arm" -go build -ldflags "-s -w" -trimpath -o $FILENAME && upx --lzma --force-overwrite -q --no-progress $FILENAME +go build -ldflags "-s -w" -trimpath -o $FILENAME +upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux arm v6 export GOOS=linux export GOARCH=arm export GOARM=6 FILENAME="go2rtc_linux_armv6" -go build -ldflags "-s -w" -trimpath -o $FILENAME && upx --lzma --force-overwrite -q --no-progress $FILENAME +go build -ldflags "-s -w" -trimpath -o $FILENAME +upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux mipsle export GOOS=linux export GOARCH=mipsle FILENAME="go2rtc_linux_mipsel" -go build -ldflags "-s -w" -trimpath -o $FILENAME && upx --lzma --force-overwrite -q --no-progress $FILENAME +go build -ldflags "-s -w" -trimpath -o $FILENAME +upx --lzma --force-overwrite -q --no-progress $FILENAME # Darwin amd64 export GOOS=darwin export GOARCH=amd64 FILENAME="go2rtc_mac_amd64.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc # Darwin arm64 export GOOS=darwin export GOARCH=arm64 FILENAME="go2rtc_mac_arm64.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc # FreeBSD amd64 export GOOS=freebsd export GOARCH=amd64 FILENAME="go2rtc_freebsd_amd64.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc # FreeBSD arm64 export GOOS=freebsd export GOARCH=arm64 FILENAME="go2rtc_freebsd_arm64.zip" -go build -ldflags "-s -w" -trimpath && 7z a -mx9 -bso0 -sdel $FILENAME go2rtc +go build -ldflags "-s -w" -trimpath +7z a -mx9 -bso0 -sdel $FILENAME go2rtc From 5f17474ff4fa8cb311cb118f404fc713bd1d252b Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 10 Mar 2025 19:36:16 -0300 Subject: [PATCH 3/8] Fix build in linux amd64 --- scripts/build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/build.sh b/scripts/build.sh index 1a43ed82..82c5d506 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -17,6 +17,8 @@ check_command upx set -x +export CGO_ENABLED=0 + # Windows amd64 export GOOS=windows export GOARCH=amd64 From 9a7c7d2a4b0baa69fb3dfcd5e9bb0fb12a4b370f Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 10 Mar 2025 19:45:13 -0300 Subject: [PATCH 4/8] Fix GOTOOLCHAIN in build.sh --- scripts/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 82c5d506..05d364ff 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -30,7 +30,7 @@ go build -ldflags "-s -w" -trimpath export GOOS=windows export GOARCH=386 FILENAME="go2rtc_win32.zip" -go build -ldflags "-s -w" -trimpath +GOTOOLCHAIN=go1.20.14 go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Windows arm64 @@ -88,7 +88,7 @@ upx --lzma --force-overwrite -q --no-progress $FILENAME export GOOS=darwin export GOARCH=amd64 FILENAME="go2rtc_mac_amd64.zip" -go build -ldflags "-s -w" -trimpath +GOTOOLCHAIN=go1.20.14 go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc # Darwin arm64 From c51c13b4b8a8b5a9a80be290b9bfb5be637b63f7 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 10 Mar 2025 19:49:04 -0300 Subject: [PATCH 5/8] Avoid export pollution --- scripts/build.sh | 67 +++++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 41 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 05d364ff..1e978abe 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -20,94 +20,79 @@ set -x export CGO_ENABLED=0 # Windows amd64 -export GOOS=windows -export GOARCH=amd64 FILENAME="go2rtc_win64.zip" -go build -ldflags "-s -w" -trimpath +GOOS=windows GOARCH=amd64 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Windows 386 -export GOOS=windows -export GOARCH=386 FILENAME="go2rtc_win32.zip" -GOTOOLCHAIN=go1.20.14 go build -ldflags "-s -w" -trimpath +GOOS=windows GOARCH=386 GOTOOLCHAIN=go1.20.14 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Windows arm64 -export GOOS=windows -export GOARCH=arm64 FILENAME="go2rtc_win_arm64.zip" -go build -ldflags "-s -w" -trimpath +GOOS=windows GOARCH=arm64 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe # Linux amd64 -export GOOS=linux -export GOARCH=amd64 FILENAME="go2rtc_linux_amd64" -go build -ldflags "-s -w" -trimpath -o $FILENAME +GOOS=linux GOARCH=amd64 \ + go build -ldflags "-s -w" -trimpath -o $FILENAME upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux 386 -export GOOS=linux -export GOARCH=386 FILENAME="go2rtc_linux_i386" -go build -ldflags "-s -w" -trimpath -o $FILENAME +GOOS=linux GOARCH=386 \ + go build -ldflags "-s -w" -trimpath -o $FILENAME upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux arm64 -export GOOS=linux -export GOARCH=arm64 FILENAME="go2rtc_linux_arm64" -go build -ldflags "-s -w" -trimpath -o $FILENAME +GOOS=linux GOARCH=arm64 \ + go build -ldflags "-s -w" -trimpath -o $FILENAME upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux arm v7 -export GOOS=linux -export GOARCH=arm -export GOARM=7 FILENAME="go2rtc_linux_arm" -go build -ldflags "-s -w" -trimpath -o $FILENAME +GOOS=linux GOARCH=arm GOARM=7 \ + go build -ldflags "-s -w" -trimpath -o $FILENAME upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux arm v6 -export GOOS=linux -export GOARCH=arm -export GOARM=6 FILENAME="go2rtc_linux_armv6" -go build -ldflags "-s -w" -trimpath -o $FILENAME +GOOS=linux GOARCH=arm GOARM=6 \ + go build -ldflags "-s -w" -trimpath -o $FILENAME upx --lzma --force-overwrite -q --no-progress $FILENAME # Linux mipsle -export GOOS=linux -export GOARCH=mipsle FILENAME="go2rtc_linux_mipsel" -go build -ldflags "-s -w" -trimpath -o $FILENAME +GOOS=linux GOARCH=mipsle \ + go build -ldflags "-s -w" -trimpath -o $FILENAME upx --lzma --force-overwrite -q --no-progress $FILENAME # Darwin amd64 -export GOOS=darwin -export GOARCH=amd64 FILENAME="go2rtc_mac_amd64.zip" -GOTOOLCHAIN=go1.20.14 go build -ldflags "-s -w" -trimpath +GOOS=darwin GOARCH=amd64 GOTOOLCHAIN=go1.20.14 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc # Darwin arm64 -export GOOS=darwin -export GOARCH=arm64 FILENAME="go2rtc_mac_arm64.zip" -go build -ldflags "-s -w" -trimpath +GOOS=darwin GOARCH=arm64 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc # FreeBSD amd64 -export GOOS=freebsd -export GOARCH=amd64 FILENAME="go2rtc_freebsd_amd64.zip" -go build -ldflags "-s -w" -trimpath +GOOS=freebsd GOARCH=amd64 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc # FreeBSD arm64 -export GOOS=freebsd -export GOARCH=arm64 FILENAME="go2rtc_freebsd_arm64.zip" -go build -ldflags "-s -w" -trimpath +GOOS=freebsd GOARCH=arm64 \ + go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc From c415c8f2afa5f04fd29e5ea0b3e471ccd6d36f66 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Wed, 15 Oct 2025 09:44:11 -0300 Subject: [PATCH 6/8] Remove GOTOOLCHAIN like done in CI --- scripts/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 1e978abe..4a1266ca 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -27,7 +27,7 @@ GOOS=windows GOARCH=amd64 \ # Windows 386 FILENAME="go2rtc_win32.zip" -GOOS=windows GOARCH=386 GOTOOLCHAIN=go1.20.14 \ +GOOS=windows GOARCH=386 \ go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe @@ -75,7 +75,7 @@ upx --lzma --force-overwrite -q --no-progress $FILENAME # Darwin amd64 FILENAME="go2rtc_mac_amd64.zip" -GOOS=darwin GOARCH=amd64 GOTOOLCHAIN=go1.20.14 \ +GOOS=darwin GOARCH=amd64 \ go build -ldflags "-s -w" -trimpath 7z a -mx9 -bso0 -sdel $FILENAME go2rtc From 19226df7d67d3b5634b0c746decaccbdb464c627 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Wed, 15 Oct 2025 09:44:20 -0300 Subject: [PATCH 7/8] Add go2rtc.exe to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8713e925..272fb7f0 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ go2rtc_mac* go2rtc_win* /go2rtc +/go2rtc.exe 0_test.go From cf4acd5a8d8503de3900c4b4003d1321d0dbcd9c Mon Sep 17 00:00:00 2001 From: Alex X Date: Wed, 15 Oct 2025 18:07:18 +0300 Subject: [PATCH 8/8] Code refactoring for #1641 --- scripts/build.sh | 103 ++++++++++++----------------------------------- 1 file changed, 26 insertions(+), 77 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 4a1266ca..ed188c2c 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,6 +1,7 @@ #!/bin/sh -set -eu +set -e # Exit immediately if a command exits with a non-zero status. +set -u # Treat unset variables as an error when substituting. check_command() { if ! command -v "$1" >/dev/null @@ -10,89 +11,37 @@ check_command() { fi } -# Check for required commands +build_zip() { + go build -ldflags "-s -w" -trimpath -o $2 + 7z a -mx9 -sdel $1 $2 +} + +build_upx() { + go build -ldflags "-s -w" -trimpath -o $1 + upx --best --lzma $1 +} + check_command go check_command 7z check_command upx -set -x - export CGO_ENABLED=0 -# Windows amd64 -FILENAME="go2rtc_win64.zip" -GOOS=windows GOARCH=amd64 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe +set -x # Print commands and their arguments as they are executed. -# Windows 386 -FILENAME="go2rtc_win32.zip" -GOOS=windows GOARCH=386 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe +GOOS=windows GOARCH=amd64 build_zip go2rtc_win64.zip go2rtc.exe +GOOS=windows GOARCH=386 build_zip go2rtc_win32.zip go2rtc.exe +GOOS=windows GOARCH=arm64 build_zip go2rtc_win_arm64.zip go2rtc.exe -# Windows arm64 -FILENAME="go2rtc_win_arm64.zip" -GOOS=windows GOARCH=arm64 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc.exe +GOOS=linux GOARCH=amd64 build_upx go2rtc_linux_amd64 +GOOS=linux GOARCH=386 build_upx go2rtc_linux_i386 +GOOS=linux GOARCH=arm64 build_upx go2rtc_linux_arm64 +GOOS=linux GOARCH=mipsle build_upx go2rtc_linux_mipsel +GOOS=linux GOARCH=arm GOARM=7 build_upx go2rtc_linux_arm +GOOS=linux GOARCH=arm GOARM=6 build_upx go2rtc_linux_armv6 -# Linux amd64 -FILENAME="go2rtc_linux_amd64" -GOOS=linux GOARCH=amd64 \ - go build -ldflags "-s -w" -trimpath -o $FILENAME -upx --lzma --force-overwrite -q --no-progress $FILENAME +GOOS=darwin GOARCH=amd64 build_zip go2rtc_mac_amd64.zip go2rtc +GOOS=darwin GOARCH=arm64 build_zip go2rtc_mac_arm64.zip go2rtc -# Linux 386 -FILENAME="go2rtc_linux_i386" -GOOS=linux GOARCH=386 \ - go build -ldflags "-s -w" -trimpath -o $FILENAME -upx --lzma --force-overwrite -q --no-progress $FILENAME - -# Linux arm64 -FILENAME="go2rtc_linux_arm64" -GOOS=linux GOARCH=arm64 \ - go build -ldflags "-s -w" -trimpath -o $FILENAME -upx --lzma --force-overwrite -q --no-progress $FILENAME - -# Linux arm v7 -FILENAME="go2rtc_linux_arm" -GOOS=linux GOARCH=arm GOARM=7 \ - go build -ldflags "-s -w" -trimpath -o $FILENAME -upx --lzma --force-overwrite -q --no-progress $FILENAME - -# Linux arm v6 -FILENAME="go2rtc_linux_armv6" -GOOS=linux GOARCH=arm GOARM=6 \ - go build -ldflags "-s -w" -trimpath -o $FILENAME -upx --lzma --force-overwrite -q --no-progress $FILENAME - -# Linux mipsle -FILENAME="go2rtc_linux_mipsel" -GOOS=linux GOARCH=mipsle \ - go build -ldflags "-s -w" -trimpath -o $FILENAME -upx --lzma --force-overwrite -q --no-progress $FILENAME - -# Darwin amd64 -FILENAME="go2rtc_mac_amd64.zip" -GOOS=darwin GOARCH=amd64 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc - -# Darwin arm64 -FILENAME="go2rtc_mac_arm64.zip" -GOOS=darwin GOARCH=arm64 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc - -# FreeBSD amd64 -FILENAME="go2rtc_freebsd_amd64.zip" -GOOS=freebsd GOARCH=amd64 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc - -# FreeBSD arm64 -FILENAME="go2rtc_freebsd_arm64.zip" -GOOS=freebsd GOARCH=arm64 \ - go build -ldflags "-s -w" -trimpath -7z a -mx9 -bso0 -sdel $FILENAME go2rtc +GOOS=freebsd GOARCH=amd64 build_zip go2rtc_freebsd_amd64.zip go2rtc +GOOS=freebsd GOARCH=arm64 build_zip go2rtc_freebsd_arm64.zip go2rtc