Files
quectel-rgmii-toolkit/ipk-source/sdxpinn-mount-fix/CONTROL/postinst
iamromulan b5bf9a4fb9 Fix bundled packages issue
Fix bundled packages not showing up as a separate package in opkg
2024-10-05 02:34:00 -04:00

99 lines
3.2 KiB
Bash

#!/bin/ash
# Define the package name for the main package
PKG_NAME="sdxpinn-mount-fix"
LIST_FILE="/usr/lib/opkg/info/${PKG_NAME}.list"
STATUS_FILE="/usr/lib/opkg/status"
# Function to handle bundled packages post-install
handle_bundled_postinst() {
local bundled_package="$1"
# Use the target package name for default_postinst instead of $0
if [ "${IPKG_NO_SCRIPT}" = "1" ]; then
return 0
fi
# Source the necessary functions only once
if [ -s "${IPKG_INSTROOT}/lib/functions.sh" ]; then
. "${IPKG_INSTROOT}/lib/functions.sh"
else
echo "Error: ${IPKG_INSTROOT}/lib/functions.sh not found."
return 1
fi
echo "Executing default_postinst for bundled package: $bundled_package"
default_postinst "$bundled_package" $@
return $?
}
# Function to update the status file for a given package
update_status_file() {
local control_file="/usr/lib/opkg/info/$1.control"
if [ ! -f "$control_file" ]; then
echo "Control file for package $1 not found: $control_file"
return 1
fi
# Read the control file and append to /usr/lib/opkg/status
echo "" >> "$STATUS_FILE" # Ensure there's a newline before the new package entry
cat "$control_file" >> "$STATUS_FILE"
# Add a new line indicating the package is 'Installed' and 'ok'
echo "Status: install ok installed" >> "$STATUS_FILE"
echo "Added $1 to $STATUS_FILE"
}
# Replace distfeeds.conf with non-working sources commented out
if [ -f /tmp/distfeeds.conf ]; then
# Backup and replace distfeeds.conf
[ -f /etc/opkg/distfeeds.conf ] && cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bak
mv /tmp/distfeeds.conf /etc/opkg/distfeeds.conf
echo "Replaced /etc/opkg/distfeeds.conf with the custom version."
else
echo "Error: /tmp/distfeeds.conf not found. Cannot replace /etc/opkg/distfeeds.conf."
exit 1
fi
echo "Combo package cleanup in progress..."
# Remove entries in the .list file that refer to opkg control files
if [ -f "$LIST_FILE" ]; then
sed -i '/^\/usr\/lib\/opkg\/info\//d' "$LIST_FILE"
echo "Removed control file entries from $LIST_FILE."
else
echo "Warning: ${LIST_FILE} not found."
fi
# Make the init scripts and binaries executable
chmod +x /etc/init.d/mount-fix /etc/init.d/init-overlay-watchdog /usr/sbin/init-overlay-watchdog.sh
# Enable and start the services
echo "Starting services..."
service mount-fix enable
service mount-fix start
sleep 1
service init-overlay-watchdog enable
service init-overlay-watchdog start
echo -e "\e[32m sdxpinn-mount-fix installed! Here is the new file structure! \e[0m"
echo -e "\e[32m ============================================================ \e[0m"
mount && df -h
echo -e "\e[32m ============================================================ \e[0m"
echo -e "\e[32m sdxpinn-mount-fix installed! New file structure above! \e[0m"
# Use a space-separated string for the bundled packages
BUNDLED_PACKAGES="libinotifytools inotifywait"
# Iterate through each bundled package
for package in $BUNDLED_PACKAGES; do
# Run postinst for each bundled package
handle_bundled_postinst "$package"
# Update the status file
update_status_file "$package"
done
exit 0