Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 24 additions & 58 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,74 +3,40 @@ name: Build
on:
push:
pull_request:
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5

- name: Set up Go
uses: actions/setup-go@v3
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.19

- name: Build
run: |
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_win32_x64.exe
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_x64
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_arm64
CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_arm
CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_386
CGO_ENABLED=0 GOOS=linux GOARCH=mips go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_mips
CGO_ENABLED=0 GOOS=linux GOARCH=mips64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_mips64
CGO_ENABLED=0 GOOS=linux GOARCH=mipsle go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_mipsle
CGO_ENABLED=0 GOOS=linux GOARCH=ppc64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_ppc64
CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_riscv64
CGO_ENABLED=0 GOOS=linux GOARCH=s390x go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_s390x
CGO_ENABLED=0 GOOS=netbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_netbsd_x64
CGO_ENABLED=0 GOOS=netbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_netbsd_arm
CGO_ENABLED=0 GOOS=netbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_netbsd_arm64
CGO_ENABLED=0 GOOS=openbsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_386
CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_x64
CGO_ENABLED=0 GOOS=openbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_arm
CGO_ENABLED=0 GOOS=openbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_arm64
CGO_ENABLED=0 GOOS=freebsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_386
CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_x64
CGO_ENABLED=0 GOOS=freebsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_arm
CGO_ENABLED=0 GOOS=freebsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_arm64
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_darwin_amd64
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_darwin_arm64
- name: Setup 7z
uses: milliewalky/setup-7-zip@v2

- uses: "marvinpinto/action-automatic-releases@latest"
- name: Build zip-tools
run: ./build.sh

- name: Download 7z binaries
run: ./download_7z.sh

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: Development Build
path: |
output/*

- uses: softprops/action-gh-release@v2
if: github.ref_type == 'tag'
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "latest"
title: Development Build
prerelease: true
token: "${{ secrets.GITHUB_TOKEN }}"
make_latest: true
files: |
file_zip_win32_x64.exe
file_zip_linux_x64
file_zip_linux_arm64
file_zip_linux_arm
file_zip_linux_386
file_zip_linux_mips
file_zip_linux_mips64
file_zip_linux_mipsle
file_zip_linux_ppc64
file_zip_linux_riscv64
file_zip_linux_s390x
file_zip_netbsd_x64
file_zip_netbsd_arm
file_zip_netbsd_arm64
file_zip_openbsd_386
file_zip_openbsd_x64
file_zip_openbsd_arm
file_zip_openbsd_arm64
file_zip_freebsd_386
file_zip_freebsd_x64
file_zip_freebsd_arm
file_zip_freebsd_arm64
file_zip_darwin_amd64
file_zip_darwin_arm64
output/*
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,7 @@ file-zip

.vscode
main_linux
main
main

# 7z download target
output/
1 change: 1 addition & 0 deletions 7z.version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2501
31 changes: 31 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash
set -ex

mkdir -p output

export CGO_ENABLED=0

GOOS=windows GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_win32_x64.exe
GOOS=linux GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_x64
GOOS=linux GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_arm64
GOOS=linux GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_arm
GOOS=linux GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_386
GOOS=linux GOARCH=mips go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_mips
GOOS=linux GOARCH=mips64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_mips64
GOOS=linux GOARCH=mipsle go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_mipsle
GOOS=linux GOARCH=ppc64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_ppc64
GOOS=linux GOARCH=riscv64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_riscv64
GOOS=linux GOARCH=s390x go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_s390x
GOOS=netbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_netbsd_x64
GOOS=netbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_netbsd_arm
GOOS=netbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_netbsd_arm64
GOOS=openbsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_386
GOOS=openbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_x64
GOOS=openbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_arm
GOOS=openbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_arm64
GOOS=freebsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_386
GOOS=freebsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_x64
GOOS=freebsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_arm
GOOS=freebsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_arm64
GOOS=darwin GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_darwin_amd64
GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_darwin_arm64
45 changes: 45 additions & 0 deletions download_7z.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash
set -ex

LIB7Z_VERSION="$(cat 7z.version)"
URL_7Z_WINDOWS_ALL=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-extra.7z
URL_7Z_MAC_ALL=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-mac.tar.xz
URL_7Z_LINUX_X86=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-x86.tar.xz
URL_7Z_LINUX_X86_64=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-x64.tar.xz
URL_7Z_LINUX_ARM=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-arm.tar.xz
URL_7Z_LINUX_ARM64=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-arm64.tar.xz

mkdir -p output /tmp/7z

echo "Downloading Windows binaries..."
wget "${URL_7Z_WINDOWS_ALL}" -O /tmp/7z/win32.7z
7z x /tmp/7z/win32.7z -o/tmp/7z/win32 -y
mv /tmp/7z/win32/x64/7za.exe output/7z_win32_x64.exe
mv /tmp/7z/win32/arm64/7za.exe output/7z_win32_arm64.exe
mv /tmp/7z/win32/License.txt output/7z-extra-license.txt
echo "Done."

echo "Downloading Linux and Mac binaries..."
mkdir -p /tmp/7z/linux-x86 /tmp/7z/linux-x64 /tmp/7z/linux-arm /tmp/7z/linux-arm64 /tmp/7z/mac
wget "${URL_7Z_LINUX_X86}" -O /tmp/7z/linux-x86.tar.xz
wget "${URL_7Z_LINUX_X86_64}" -O /tmp/7z/linux-x64.tar.xz
wget "${URL_7Z_LINUX_ARM}" -O /tmp/7z/linux-arm.tar.xz
wget "${URL_7Z_LINUX_ARM64}" -O /tmp/7z/linux-arm64.tar.xz
wget "${URL_7Z_MAC_ALL}" -O /tmp/7z/mac.tar.xz
tar xJf /tmp/7z/linux-x86.tar.xz -C /tmp/7z/linux-x86
tar xJf /tmp/7z/linux-x64.tar.xz -C /tmp/7z/linux-x64
tar xJf /tmp/7z/linux-arm.tar.xz -C /tmp/7z/linux-arm
tar xJf /tmp/7z/linux-arm64.tar.xz -C /tmp/7z/linux-arm64
tar xJf /tmp/7z/mac.tar.xz -C /tmp/7z/mac
mv /tmp/7z/mac/License.txt output/7z-unix-license.txt
mv /tmp/7z/linux-x86/7zz output/7z_linux_386
mv /tmp/7z/linux-x64/7zz output/7z_linux_x64
mv /tmp/7z/linux-arm/7zz output/7z_linux_arm
mv /tmp/7z/linux-arm64/7zz output/7z_linux_arm64
mv /tmp/7z/mac/7zz output/7z_darwin_arm64
cp output/7z_darwin_arm64 output/7z_darwin_x64
echo "Done."

echo "Cleanup..."
rm -rf /tmp/7z
echo "Done."