Spaces:
Sleeping
Sleeping
| # Nuitka build script for g4f | |
| # This script builds g4f executables using Nuitka for different platforms and architectures | |
| set -e | |
| # Default values | |
| PLATFORM=${PLATFORM:-$(uname -s | tr '[:upper:]' '[:lower:]')} | |
| ARCHITECTURE=${ARCHITECTURE:-$(uname -m)} | |
| VERSION=${G4F_VERSION:-0.0.0-dev} | |
| OUTPUT_DIR=${OUTPUT_DIR:-dist} | |
| # Normalize architecture names | |
| case "${ARCHITECTURE}" in | |
| "x86_64"|"amd64") | |
| ARCH="x64" | |
| ;; | |
| "arm64"|"aarch64") | |
| ARCH="arm64" | |
| ;; | |
| "armv7l"|"armhf") | |
| ARCH="armv7" | |
| ;; | |
| *) | |
| ARCH="${ARCHITECTURE}" | |
| ;; | |
| esac | |
| # Create output directory | |
| mkdir -p "${OUTPUT_DIR}" | |
| echo "Building g4f with Nuitka..." | |
| echo "Platform: ${PLATFORM}" | |
| echo "Architecture: ${ARCH} (${ARCHITECTURE})" | |
| echo "Version: ${VERSION}" | |
| echo "Output: ${OUTPUT_DIR}" | |
| # Set output filename based on platform | |
| case "${PLATFORM}" in | |
| "windows"|"win32") | |
| OUTPUT_NAME="g4f-windows-${VERSION}-${ARCH}.exe" | |
| NUITKA_ARGS="--windows-console-mode=attach --onefile" | |
| ;; | |
| "darwin"|"macos") | |
| OUTPUT_NAME="g4f-macos-${VERSION}-${ARCH}" | |
| NUITKA_ARGS="--macos-create-app-bundle --onefile" | |
| ;; | |
| "linux") | |
| OUTPUT_NAME="g4f-linux-${VERSION}-${ARCH}" | |
| NUITKA_ARGS="--onefile" | |
| ;; | |
| *) | |
| OUTPUT_NAME="g4f-${PLATFORM}-${VERSION}-${ARCH}" | |
| NUITKA_ARGS="--onefile" | |
| ;; | |
| esac | |
| # Basic Nuitka arguments | |
| NUITKA_COMMON_ARGS=" | |
| --standalone | |
| --output-filename=${OUTPUT_NAME} | |
| --output-dir=${OUTPUT_DIR} | |
| --remove-output | |
| --no-pyi-file | |
| --assume-yes-for-downloads | |
| --show-progress | |
| --show-memory | |
| " | |
| # Platform-specific optimizations | |
| if [[ "${PLATFORM}" == "windows" ]] && [[ -f "projects/windows/icon.ico" ]]; then | |
| NUITKA_ARGS="${NUITKA_ARGS} --windows-icon-from-ico=projects/windows/icon.ico" | |
| fi | |
| # Build command | |
| echo "Running Nuitka build..." | |
| python -m nuitka ${NUITKA_COMMON_ARGS} ${NUITKA_ARGS} g4f_cli.py | |
| echo "Build completed: ${OUTPUT_DIR}/${OUTPUT_NAME}" | |
| # Verify the build | |
| if [[ -f "${OUTPUT_DIR}/${OUTPUT_NAME}" ]]; then | |
| echo "✓ Build successful!" | |
| ls -la "${OUTPUT_DIR}/${OUTPUT_NAME}" | |
| else | |
| echo "✗ Build failed - output file not found" | |
| exit 1 | |
| fi |