hyfetch/tools/build_pkg.sh

114 lines
3.1 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
2024-04-23 06:31:23 -06:00
FASTFETCH_VERSION="2.10.2"
FASTFETCH_DL="https://github.com/fastfetch-cli/fastfetch/releases/download/$FASTFETCH_VERSION/"
2024-04-23 05:43:48 -06:00
# Get script directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
2024-04-23 06:31:23 -06:00
cd "$DIR/.."
2024-04-23 05:43:48 -06:00
set -e
# Remove the old build
rm -rf dist/
rm -rf build/
# Remove git from the source code before building
rm -rf hyfetch/git/
# Build python from setup.py
python3 setup.py sdist bdist_wheel
# Check
2024-04-23 06:31:23 -06:00
twine check dist/*.tar.gz
twine check dist/*.whl
# =================
# Build for windows
cd dist
# Get the file name
2024-04-23 06:31:23 -06:00
# file="$(ls | grep .whl)" use glob instead
file=$(echo *-none-any.whl)
2024-04-23 05:42:08 -06:00
# Build bash pacakge
2024-04-23 06:31:23 -06:00
"$DIR/build_bash.sh"
# Unzip the wheel
2024-04-23 06:31:23 -06:00
echo "> Unzipping $file"
rm -rf wheel
unzip -qq "$file" -d wheel
# TODO: Find a way to exclude the tools folder
rm -rf wheel/tools
# Copy the git distribution to the wheel
cp -r git/ wheel/hyfetch/
2024-04-23 06:31:23 -06:00
# Embed fastfetch binary
echo "> Embedding fastfetch binary"
wget -q "$FASTFETCH_DL/fastfetch-windows-i686.zip" -O fastfetch-windows.zip
mkdir -p wheel/hyfetch/fastfetch
bsdtar -zxf fastfetch-windows.zip -C wheel/hyfetch/fastfetch
rm -rf fastfetch-windows.zip
# Change the file name (replace -none-any with -win_amd64)
2024-04-23 06:31:23 -06:00
new_name=${file/-any/-win32}
# Zip the wheel to win_amd64.whl
2024-04-23 06:31:23 -06:00
cd wheel && zip -qq -y -r "../$new_name" * && cd ..
2024-04-24 21:45:13 -06:00
cp "$new_name" "${new_name/.whl/-win_amd64.whl}"
# Check again
2024-04-23 06:31:23 -06:00
twine check "$new_name"
# =================
# Build for linux
# Now we're done with windows, delete the git folder
rm -rf wheel/git
function build_for_platform() {
ff_platform=$1
wheel_platform=$2
echo "Building for $ff_platform"
# Download the fastfetch binary
wget -q "$FASTFETCH_DL/fastfetch-$ff_platform.zip" -O "fastfetch-$ff_platform.zip"
# Delete the old fastfetch folder
rm -rf wheel/hyfetch/fastfetch
# Unzip the fastfetch binary
# unzip -qq "fastfetch-$ff_platform.zip" -d wheel/hyfetch/fastfetch
mkdir -p wheel/hyfetch/fastfetch
bsdtar -zxf "fastfetch-$ff_platform.zip" -C wheel/hyfetch/fastfetch --strip-components 1
rm -rf "fastfetch-$ff_platform.zip"
# Change the file name
new_name=${file/-any/-"$wheel_platform"}
# Zip the wheel to platform.whl
cd wheel && zip -qq -y -r "../$new_name" * && cd ..
# Check again
twine check "$new_name"
}
# See https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/
# The official fastfetch build uses Ubuntu 20.04 with glibc 2.31
build_for_platform "linux-amd64" "manylinux_2_31_x86_64"
build_for_platform "linux-aarch64" "manylinux_2_31_aarch64"
2024-04-23 06:31:23 -06:00
# There doesn't seem to be tags for freebsd?
# build_for_platform "freebsd-amd64" "freebsd_x86_64"
# build_for_platform "freebsd-aarch64" "freebsd_aarch64"
build_for_platform "musl-amd64" "musllinux_1_1_x86_64"
build_for_platform "musl-aarch64" "musllinux_1_1_aarch64"
# The official fastfetch build uses macOS 12.0
2024-04-23 06:31:23 -06:00
build_for_platform "macos-universal" "macosx_11_0_x86_64"
build_for_platform "macos-universal" "macosx_11_0_arm64"
# TODO: linux_riscv64
2024-04-23 06:57:39 -06:00
# Finally, remove temporary files
2024-04-23 06:59:00 -06:00
rm -rf wheel git