mirror of
https://github.com/LinwoodDev/Butterfly.git
synced 2025-08-06 15:09:51 +08:00
75 lines
2.6 KiB
Bash
75 lines
2.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Default values for architecture
|
|
DIRECTORY_ARCH="x64" # Default directory name
|
|
BINARY_ARCH="x86_64" # Default binary name
|
|
RPM_ARCH="x86_64" # Default RPM architecture
|
|
|
|
# Parse command-line arguments
|
|
while getopts "d:b:" opt; do
|
|
case $opt in
|
|
d) DIRECTORY_ARCH="$OPTARG" ;; # Set the directory architecture
|
|
b) BINARY_ARCH="$OPTARG" ;; # Set the binary architecture
|
|
*)
|
|
echo "Usage: $0 [-d directory_arch] [-b binary_arch]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
RPM_ARCH="$DIRECTORY_ARCH" # Set RPM architecture based on directory architecture
|
|
if [ "$RPM_ARCH" = "x64" ]; then
|
|
RPM_ARCH="x86_64"
|
|
elif [ "$RPM_ARCH" = "arm64" ]; then
|
|
RPM_ARCH="aarch64"
|
|
fi
|
|
|
|
# Read version from pubspec
|
|
BUTTERFLY_VERSION_REGEX="version:\s(.+)\+(.+)"
|
|
[[ $(grep -E "${BUTTERFLY_VERSION_REGEX}" pubspec.yaml) =~ ${BUTTERFLY_VERSION_REGEX} ]]
|
|
BUTTERFLY_VERSION="${BASH_REMATCH[1]}"
|
|
|
|
# Replace - with ~ to match RPM versioning
|
|
RPM_VERSION=$(echo $BUTTERFLY_VERSION | sed 's/-/~/g')
|
|
CURRENT_DIR=$(pwd)
|
|
echo "Building Butterfly $RPM_VERSION for $DIRECTORY_ARCH/$BINARY_ARCH ($RPM_ARCH)"
|
|
|
|
# Clean and set up build directories
|
|
rm -rf build/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
|
mkdir -p build/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
|
|
|
# Copy files
|
|
cp linux/rpm/linwood-butterfly.spec build/SPECS/linwood-butterfly.spec
|
|
cp -r build/linux/${DIRECTORY_ARCH}/release/bundle build/SOURCES/linwood-butterfly-$RPM_VERSION
|
|
chmod 755 build/SOURCES/linwood-butterfly-$RPM_VERSION/butterfly
|
|
mv build/SOURCES/linwood-butterfly-$RPM_VERSION/butterfly build/SOURCES/linwood-butterfly-$RPM_VERSION/linwood-butterfly
|
|
cp linux/rpm/linwood-butterfly.desktop build/SOURCES/linwood-butterfly-$RPM_VERSION/linwood-butterfly.desktop
|
|
|
|
# Update .spec file with the correct version
|
|
sed -i "2s/.*/Version: $RPM_VERSION/" build/SPECS/linwood-butterfly.spec
|
|
|
|
# Create tarball
|
|
cd build/SOURCES/
|
|
# Fix .so files using patchelf
|
|
cd linwood-butterfly-$RPM_VERSION/lib
|
|
for file in *.so; do
|
|
PATCHELF_OUTPUT=$(patchelf --print-rpath "$file")
|
|
echo "Checking $file: $PATCHELF_OUTPUT"
|
|
# Skip file if PATCHELF_OUTPUT does not contain CURRENT_DIR
|
|
if [[ ! $PATCHELF_OUTPUT =~ $CURRENT_DIR ]]; then
|
|
echo "Skipping $file"
|
|
continue
|
|
fi
|
|
echo "Fixing $file"
|
|
patchelf --set-rpath '$ORIGIN' "$file"
|
|
done
|
|
cd ../../
|
|
tar --create --file linwood-butterfly-$RPM_VERSION.tar.gz linwood-butterfly-$RPM_VERSION
|
|
cd ../../
|
|
|
|
# Build RPM
|
|
QA_RPATHS=$[ 0x0001|0x0010 ] rpmbuild -bb build/SPECS/linwood-butterfly.spec --define "_topdir $(pwd)/build"
|
|
|
|
# Copy the RPM to the build folder
|
|
cp build/RPMS/${RPM_ARCH}/linwood-butterfly-*.rpm build/linwood-butterfly-linux-${BINARY_ARCH}.rpm
|