123 lines
3.5 KiB
Bash
Executable file
123 lines
3.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
FASTFETCH_VERSION="2.12.0"
|
|
FASTFETCH_DL="https://github.com/fastfetch-cli/fastfetch/releases/download/$FASTFETCH_VERSION/"
|
|
|
|
# Get script directory
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
cd "$DIR/.."
|
|
|
|
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
|
|
twine check dist/*.tar.gz
|
|
twine check dist/*.whl
|
|
|
|
# =================
|
|
# Build for windows
|
|
cd dist
|
|
|
|
# Get the file name
|
|
# file="$(ls | grep .whl)" use glob instead
|
|
file=$(echo *-none-any.whl)
|
|
|
|
# Build bash pacakge
|
|
"$DIR/build_bash.sh"
|
|
|
|
# Unzip the wheel
|
|
echo "> Unzipping $file"
|
|
rm -rf wheel
|
|
unzip -qq "$file" -d wheel
|
|
|
|
# Copy the git distribution to the wheel
|
|
cp -r git/ wheel/hyfetch/
|
|
|
|
# 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
|
|
|
|
# Edit .dist-info/WHEEL "Tag: {platform}" and rehash
|
|
sed -i 's/Tag: py3-none-.*/Tag: py3-none-win32/' wheel/*.dist-info/WHEEL
|
|
python "$DIR/build_rehash.py" wheel
|
|
|
|
# Zip to -win32.whl
|
|
new_name=${file/-any/-win32}
|
|
cd wheel && zip -qq -y -r "../$new_name" * && cd ..
|
|
twine check "$new_name"
|
|
|
|
# Zip to -win_amd64.whl
|
|
# Since pypi doesn't allow two identical files with different names to be uploaded
|
|
# We need to change the zip content a little bit for win_amd64
|
|
new_name=${file/-any/-win_amd64}
|
|
sed -i 's/Tag: py3-none-.*/Tag: py3-none-win_amd64/' wheel/*.dist-info/WHEEL
|
|
python "$DIR/build_rehash.py" wheel
|
|
cd wheel && zip -qq -y -r "../$new_name" * && cd ..
|
|
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"}
|
|
|
|
# Edit WHEEL and rehash
|
|
sed -i "s/Tag: py3-none-.*/Tag: py3-none-$wheel_platform/" wheel/*.dist-info/WHEEL
|
|
python "$DIR/build_rehash.py" wheel
|
|
|
|
# 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"
|
|
# 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
|
|
build_for_platform "macos-universal" "macosx_11_0_x86_64"
|
|
build_for_platform "macos-universal" "macosx_11_0_arm64"
|
|
# TODO: linux_riscv64
|
|
|
|
# Finally, remove temporary files
|
|
rm -rf wheel git
|