205 lines
5.9 KiB
YAML
205 lines
5.9 KiB
YAML
---
|
|
name: Cross-Compile Binaries
|
|
|
|
"on":
|
|
"workflow_dispatch":
|
|
push:
|
|
branches:
|
|
- '*'
|
|
paths:
|
|
- 'src/**'
|
|
- 'go.**'
|
|
- 'meshbook/**'
|
|
schedule:
|
|
- cron: '0 0 * * 6'
|
|
|
|
env:
|
|
py_down_url: https://www.python.org/ftp/python/3.13.12/python-3.13.12-embed-amd64.zip
|
|
get_pip_url: https://bootstrap.pypa.io/get-pip.py
|
|
|
|
jobs:
|
|
compile-linux:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout and pull the code
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Set the Python programming language
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.13'
|
|
cache: 'pip'
|
|
|
|
- name: Install python dependencies
|
|
run: |
|
|
cd ./meshbook
|
|
|
|
pip install -r ./requirements.txt
|
|
pip install pyinstaller
|
|
|
|
- name: Compile the python binary
|
|
run: |
|
|
cd ./meshbook
|
|
|
|
pyinstaller \
|
|
--onefile \
|
|
--name meshbook \
|
|
--distpath ../dist \
|
|
meshbook.py
|
|
|
|
- name: Setup the Go programming language
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: 'stable'
|
|
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install -y \
|
|
build-essential libgl1-mesa-dev libx11-dev libxrandr-dev \
|
|
libxi-dev libxcursor-dev libxinerama-dev libglfw3-dev \
|
|
libxxf86vm-dev
|
|
|
|
- name: Compile the fyne application for native Linux
|
|
run: |
|
|
export CGO_ENABLED=1
|
|
export CC=gcc
|
|
export CXX=g++
|
|
export GOOS=linux
|
|
export GOARCH=amd64
|
|
go build -o ./patchworks ./src
|
|
|
|
- name: move files for upload
|
|
run: |
|
|
mv ./meshbook ./meshbook-dir
|
|
mkdir ./bin
|
|
mv ./dist/meshbook ./bin/meshbook
|
|
|
|
- name: upload the building actifacts
|
|
uses: https://gitea.com/actions/gitea-upload-artifact@main
|
|
with:
|
|
name: package-linux64
|
|
path: |
|
|
./patchworks
|
|
./bin/meshbook
|
|
retention-days: 7
|
|
overwrite: true
|
|
|
|
compile-windows:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout and pull the code
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Set the Wine Windows Emulation program up
|
|
# https://gitlab.winehq.org/wine/wine/-/wikis/Debian-Ubuntu
|
|
run: |
|
|
sudo apt-get update
|
|
|
|
mkdir -pm755 /etc/apt/keyrings
|
|
wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key -
|
|
|
|
sudo dpkg --add-architecture i386
|
|
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources
|
|
|
|
sudo apt-get update
|
|
sudo apt-get install -y --install-recommends winehq-devel
|
|
wine --version
|
|
|
|
- name: Install python under wine
|
|
run: |
|
|
cd ./meshbook
|
|
|
|
export PYTHONHOME=/root/meshbook/python-win
|
|
export PYTHONPATH=/root/meshbook/python-win/Lib/site-packages
|
|
|
|
wget ${{ env.py_down_url }} -O ./python.zip
|
|
unzip ./python.zip -d ./python-win
|
|
sed -i 's/^#\s*import site/import site/' ./python-win/python313._pth
|
|
|
|
wget ${{ env.get_pip_url }} -O ./get-pip.py
|
|
wine ./python-win/python.exe ./get-pip.py
|
|
|
|
wine ./python-win/python.exe -m pip install --upgrade pip
|
|
wine ./python-win/python.exe -m pip install -r ./requirements.txt
|
|
wine ./python-win/python.exe -m pip install pyinstaller
|
|
|
|
- name: Compile the binary with python wine
|
|
run: |
|
|
cd ./meshbook
|
|
|
|
wine ./python-win/python.exe -m PyInstaller \
|
|
--onefile \
|
|
--name meshbook \
|
|
--distpath ../dist \
|
|
meshbook.py
|
|
|
|
- name: Setup the Go programming language
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: 'stable'
|
|
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install -y \
|
|
build-essential libgl1-mesa-dev libx11-dev libxrandr-dev \
|
|
libxi-dev libxcursor-dev libxinerama-dev libglfw3-dev \
|
|
libxxf86vm-dev gcc-mingw-w64 gcc-multilib
|
|
|
|
- name: Install go binary
|
|
run: |
|
|
go install github.com/tc-hib/go-winres@latest
|
|
env:
|
|
GOBIN: /usr/local/bin
|
|
|
|
- name: Compile the fyne application for Windows
|
|
run: |
|
|
export CGO_ENABLED=1
|
|
export GOOS=windows
|
|
export GOARCH=amd64
|
|
export CC=x86_64-w64-mingw32-gcc
|
|
export CXX=x86_64-w64-mingw32-g++
|
|
export CGO_LDFLAGS="-static-libgcc -static-libstdc++"
|
|
go-winres simply --icon ./src/Icon.png --manifest gui
|
|
mv *.syso ./src
|
|
go build -o ./patchworks.exe -tags "windows" -ldflags -H=windowsgui ./src
|
|
|
|
- name: Compile the fyne application DEBUG style for Windows
|
|
run: |
|
|
export CGO_ENABLED=1
|
|
export GOOS=windows
|
|
export GOARCH=amd64
|
|
export CC=x86_64-w64-mingw32-gcc
|
|
export CXX=x86_64-w64-mingw32-g++
|
|
export CGO_LDFLAGS="-static-libgcc -static-libstdc++"
|
|
go-winres simply --icon ./src/Icon.png --manifest gui
|
|
mv *.syso ./src
|
|
go build -o ./patchworks-debug.exe ./src
|
|
|
|
- name: move files for upload
|
|
run: |
|
|
mv ./meshbook ./meshbook-dir
|
|
mkdir ./bin
|
|
mv ./dist/meshbook.exe ./bin/meshbook.exe
|
|
|
|
- name: upload the building actifacts
|
|
uses: https://gitea.com/actions/gitea-upload-artifact@main
|
|
with:
|
|
name: package-win64
|
|
path: |
|
|
./*.exe
|
|
./bin/*.exe
|
|
retention-days: 7
|
|
overwrite: true
|