mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-09-26 20:31:14 +08:00
88 lines
2.2 KiB
Bash
Executable File
88 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# 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 |