up
This commit is contained in:
parent
de353e7d04
commit
e669395536
2 changed files with 85 additions and 3 deletions
61
.github/workflows/build-bgcode.yml
vendored
Normal file
61
.github/workflows/build-bgcode.yml
vendored
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
name: Build bgcode Binaries
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- '.github/workflows/build-bgcode.yml'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
artifact_name: bgcode-linux
|
||||||
|
binary_path: build/src/LibBGCode/cmd/bgcode
|
||||||
|
final_name: bgcode
|
||||||
|
- os: windows-latest
|
||||||
|
artifact_name: bgcode-windows
|
||||||
|
binary_path: build/src/LibBGCode/cmd/Release/bgcode.exe
|
||||||
|
final_name: bgcode.exe
|
||||||
|
- os: macos-latest
|
||||||
|
artifact_name: bgcode-macos
|
||||||
|
binary_path: build/src/LibBGCode/cmd/bgcode
|
||||||
|
final_name: bgcode_mac
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout libbgcode
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: prusa3d/libbgcode
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Setup CMake
|
||||||
|
uses: jwlawson/actions-setup-cmake@v2.0
|
||||||
|
with:
|
||||||
|
cmake-version: '3.25.x'
|
||||||
|
|
||||||
|
- name: Configure and Build
|
||||||
|
run: |
|
||||||
|
cmake --preset default -DLibBGCode_BUILD_DEPS=ON
|
||||||
|
cmake --build --preset default --config Release
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Rename Binary (macOS/Linux)
|
||||||
|
if: runner.os != 'Windows'
|
||||||
|
run: mv ${{ matrix.binary_path }} ${{ matrix.final_name }}
|
||||||
|
|
||||||
|
- name: Rename Binary (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
run: move ${{ matrix.binary_path }} ${{ matrix.final_name }}
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ matrix.artifact_name }}
|
||||||
|
path: ${{ matrix.final_name }}
|
||||||
|
|
@ -1,16 +1,37 @@
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
import shutil
|
import platform
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
def get_bgcode_binary():
|
||||||
|
"""Returns the path to the correct bgcode binary for the current platform."""
|
||||||
|
addon_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
||||||
|
os_name = platform.system()
|
||||||
|
|
||||||
|
if os_name == "Windows":
|
||||||
|
bin_name = "bgcode.exe"
|
||||||
|
elif os_name == "Darwin": # macOS
|
||||||
|
bin_name = "bgcode_mac"
|
||||||
|
else: # Linux/Other
|
||||||
|
bin_name = "bgcode"
|
||||||
|
|
||||||
|
bin_path = os.path.join(addon_dir, "infra", "bin", bin_name)
|
||||||
|
|
||||||
|
# Fallback to just "bgcode" if platform-specific one isn't found
|
||||||
|
if not os.path.exists(bin_path):
|
||||||
|
fallback_path = os.path.join(addon_dir, "infra", "bin", "bgcode")
|
||||||
|
if os.path.exists(fallback_path):
|
||||||
|
return fallback_path
|
||||||
|
|
||||||
|
return bin_path
|
||||||
|
|
||||||
def convert_to_bgcode(gcode: str, name_part: str, compress: bool = True) -> bytes:
|
def convert_to_bgcode(gcode: str, name_part: str, compress: bool = True) -> bytes:
|
||||||
"""
|
"""
|
||||||
Converts a G-code string to binary BGCode using the internal bgcode tool.
|
Converts a G-code string to binary BGCode using the internal bgcode tool.
|
||||||
Returns the binary content of the converted file.
|
Returns the binary content of the converted file.
|
||||||
"""
|
"""
|
||||||
addon_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
bgcode_bin = get_bgcode_binary()
|
||||||
bgcode_bin = os.path.join(addon_dir, "infra", "bin", "bgcode")
|
|
||||||
|
|
||||||
if not os.path.exists(bgcode_bin):
|
if not os.path.exists(bgcode_bin):
|
||||||
raise FileNotFoundError(f"bgcode binary not found at {bgcode_bin}")
|
raise FileNotFoundError(f"bgcode binary not found at {bgcode_bin}")
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue