|
@@ -0,0 +1,108 @@
|
|
|
+#!/bin/bash
|
|
|
+set -e
|
|
|
+
|
|
|
+DEB_DOWNLOAD_DIR=$(realpath "$(pwd)/../../")
|
|
|
+OUTPUT_DIR=${DEB_DOWNLOAD_DIR}/output
|
|
|
+SYSROOT_DIR=${OUTPUT_DIR}/sysroot
|
|
|
+
|
|
|
+PACKAGES=("libc-bin" "libstdc++6")
|
|
|
+export DOCKER_TAG=ubuntu2404
|
|
|
+
|
|
|
+TAR_NAME="glibc-ubuntu2404.tar.xz"
|
|
|
+TAR_PATH="$OUTPUT_DIR/$TAR_NAME"
|
|
|
+
|
|
|
+if ! mkdir -p "$OUTPUT_DIR"; then
|
|
|
+ echo "Error: Failed to create output directory" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+if ! mkdir -p "$SYSROOT_DIR"; then
|
|
|
+ echo "Error: Failed to create sysroot directory" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+
|
|
|
+pushd . || { echo "pushd failed" >&2; exit 1; }
|
|
|
+cd $DEB_DOWNLOAD_DIR || { echo "cd to $DEB_DOWNLOAD_DIR failed" >&2; exit 1; }
|
|
|
+
|
|
|
+if ! make clean; then
|
|
|
+ echo "Warning: make clean failed, retrying with sudo..." >&2
|
|
|
+ if ! sudo make clean; then
|
|
|
+ echo "Error: sudo make clean also failed" >&2
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+for PACKAGE in "${PACKAGES[@]}"; do
|
|
|
+ export PACKAGE_NAME=$PACKAGE
|
|
|
+if ! make download; then
|
|
|
+ echo "Error: make download failed for $PACKAGE" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+done
|
|
|
+
|
|
|
+if ! make unpack; then
|
|
|
+ echo "Error: make unpack failed" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+pushd . || { echo "pushd failed" >&2; exit 1; }
|
|
|
+cd $SYSROOT_DIR || { echo "cd to $SYSROOT_DIR failed" >&2; exit 1; }
|
|
|
+# Create required symlinks in sysroot
|
|
|
+if ! ln -sf usr/lib $SYSROOT_DIR/lib; then
|
|
|
+ echo "Warning: lib symlink creation failed with normal user, retrying with sudo..." >&2
|
|
|
+ if ! sudo ln -sf usr/lib $SYSROOT_DIR/lib; then
|
|
|
+ echo "Error: failed to create lib symlink" >&2
|
|
|
+ exit 1
|
|
|
+ else
|
|
|
+ echo "/usr/lib symlink creation successful with sudo." >&2
|
|
|
+ fi
|
|
|
+fi
|
|
|
+if ! ln -sf usr/lib64 $SYSROOT_DIR/lib64; then
|
|
|
+ if ! sudo ln -sf usr/lib64 $SYSROOT_DIR/lib64; then
|
|
|
+ echo "Error: failed to create lib64 symlink" >&2
|
|
|
+ exit 1
|
|
|
+ else
|
|
|
+ echo "/usr/lib64 symlink creation successful with sudo." >&2
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+popd || { echo "popd failed" >&2; exit 1; }
|
|
|
+
|
|
|
+if ! sudo chmod a+r $SYSROOT_DIR ; then
|
|
|
+ echo "Error: Failed to set read permissions on $SYSROOT_DIR" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+if ! sudo chmod a+rw $OUTPUT_DIR ; then
|
|
|
+ echo "Error: Failed to set read/write permissions on $OUTPUT_DIR" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+
|
|
|
+pushd . || { echo "pushd failed" >&2; exit 1; }
|
|
|
+cd $OUTPUT_DIR || { echo "cd to $OUTPUT_DIR failed" >&2; exit 1; }
|
|
|
+
|
|
|
+echo "Packaging..."
|
|
|
+# Package sysroot into tarball
|
|
|
+if ! sudo tar -cJf $OUTPUT_DIR/${TAR_NAME} sysroot ; then
|
|
|
+ echo "Error: failed to create tarball" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+echo "Calculating MD5 and renaming the tarball..."
|
|
|
+# Calculate MD5 and rename the tarball
|
|
|
+MD5_SUM=$(md5sum $OUTPUT_DIR/${TAR_NAME} | cut -d' ' -f1)
|
|
|
+DATE_SUFFIX=$(date +"%Y%m%d%H%M")
|
|
|
+NEW_TAR_NAME="${TAR_NAME%.tar.xz}-${DATE_SUFFIX}-${MD5_SUM}.tar.xz"
|
|
|
+if ! mv $OUTPUT_DIR/${TAR_NAME} $OUTPUT_DIR/${NEW_TAR_NAME}; then
|
|
|
+ echo "Error: failed to rename tarball with MD5 sum" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+echo "Package ${NEW_TAR_NAME} downloaded, unpacked, and sysroot prepared successfully."
|
|
|
+
|
|
|
+
|
|
|
+popd || { echo "popd failed" >&2; exit 1; }
|
|
|
+
|
|
|
+popd || { echo "popd failed" >&2; exit 1; }
|
|
|
+
|