Update to handled pre-installed dependencies
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
# Define the main package name and list file location
|
# Define the main package name and list file location
|
||||||
PKG_NAME="sdxpinn-mount-fix"
|
PKG_NAME="sdxpinn-mount-fix"
|
||||||
LIST_FILE="/usr/lib/opkg/info/${PKG_NAME}.list"
|
LIST_FILE="/usr/lib/opkg/info/${PKG_NAME}.list"
|
||||||
|
DETECTED_PACKAGES_FILE="/tmp/detected_packages.tmp"
|
||||||
|
|
||||||
# Function to handle bundled packages post-install
|
# Function to handle bundled packages post-install
|
||||||
handle_bundled_postinst() {
|
handle_bundled_postinst() {
|
||||||
@@ -58,32 +59,79 @@ fi
|
|||||||
# Make the init scripts and binaries executable
|
# Make the init scripts and binaries executable
|
||||||
chmod +x /etc/init.d/mount-fix /etc/init.d/init-overlay-watchdog /etc/init.d/add_opkg_status_bundled /usr/sbin/init-overlay-watchdog.sh
|
chmod +x /etc/init.d/mount-fix /etc/init.d/init-overlay-watchdog /etc/init.d/add_opkg_status_bundled /usr/sbin/init-overlay-watchdog.sh
|
||||||
|
|
||||||
# Enable and start the services for the main components
|
# Enable and start the services
|
||||||
echo "Starting primary services..."
|
echo "Starting services..."
|
||||||
service mount-fix enable
|
service mount-fix enable
|
||||||
service mount-fix start
|
service mount-fix start
|
||||||
sleep 1
|
sleep 1
|
||||||
service init-overlay-watchdog enable
|
service init-overlay-watchdog enable
|
||||||
service init-overlay-watchdog start
|
service init-overlay-watchdog start
|
||||||
|
|
||||||
# Print a message indicating successful installation
|
|
||||||
echo -e "\e[32m sdxpinn-mount-fix installed! Here is the new file structure! \e[0m"
|
echo -e "\e[32m sdxpinn-mount-fix installed! Here is the new file structure! \e[0m"
|
||||||
echo -e "\e[32m ============================================================ \e[0m"
|
echo -e "\e[32m ============================================================ \e[0m"
|
||||||
mount && df -h
|
mount && df -h
|
||||||
echo -e "\e[32m ============================================================ \e[0m"
|
echo -e "\e[32m ============================================================ \e[0m"
|
||||||
echo -e "\e[32m sdxpinn-mount-fix installed! New file structure above! \e[0m"
|
echo -e "\e[32m sdxpinn-mount-fix installed! New file structure above! \e[0m"
|
||||||
|
|
||||||
# Handle bundled packages
|
# Handle bundled packages based on detection results
|
||||||
BUNDLED_PACKAGES="libinotifytools inotifywait"
|
BUNDLED_PACKAGES="libinotifytools inotifywait"
|
||||||
|
|
||||||
# Iterate through each bundled package
|
# Check if the detected packages file exists and read its content
|
||||||
|
if [ -f "$DETECTED_PACKAGES_FILE" ]; then
|
||||||
|
SKIP_PACKAGES=$(cat "$DETECTED_PACKAGES_FILE")
|
||||||
|
echo "Skipping the following pre-installed bundled packages: $SKIP_PACKAGES"
|
||||||
|
else
|
||||||
|
SKIP_PACKAGES=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update the bundled packages in the add_opkg_status_bundled script dynamically
|
||||||
|
BUNDLED_PACKAGES_INFO=""
|
||||||
for bundled_package_name in $BUNDLED_PACKAGES; do
|
for bundled_package_name in $BUNDLED_PACKAGES; do
|
||||||
# Run postinst for each bundled package
|
if echo "$SKIP_PACKAGES" | grep -q "$bundled_package_name"; then
|
||||||
handle_bundled_postinst "$bundled_package_name"
|
echo "Skipping bundled package: $bundled_package_name"
|
||||||
|
else
|
||||||
|
handle_bundled_postinst "$bundled_package_name"
|
||||||
|
BUNDLED_PACKAGES_INFO="$BUNDLED_PACKAGES_INFO
|
||||||
|
Package: $bundled_package_name
|
||||||
|
Version: 3.20.11.0-1
|
||||||
|
Depends: $( [ "$bundled_package_name" = "inotifywait" ] && echo "libc, libinotifytools" || echo "libc")
|
||||||
|
Status: install user installed
|
||||||
|
Architecture: aarch64_cortex-a53
|
||||||
|
Installed-Time: $(date +%s)"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Start the add_opkg_status_bundled service for handling status updates
|
# If BUNDLED_PACKAGES_INFO is empty, remove the add_opkg_status_bundled script and do not start it
|
||||||
echo "Starting add_opkg_status_bundled service..."
|
if [ -z "$BUNDLED_PACKAGES_INFO" ]; then
|
||||||
service add_opkg_status_bundled start
|
echo "All bundled packages are pre-installed. Removing /etc/init.d/add_opkg_status_bundled."
|
||||||
|
rm -f /etc/init.d/add_opkg_status_bundled
|
||||||
|
else
|
||||||
|
echo "Updating /etc/init.d/add_opkg_status_bundled with missing bundled package info."
|
||||||
|
echo "#!/bin/ash /etc/rc.common
|
||||||
|
USE_PROCD=1
|
||||||
|
START=99
|
||||||
|
STOP=15
|
||||||
|
|
||||||
|
STATUS_FILE=\"/usr/lib/opkg/status\"
|
||||||
|
|
||||||
|
BUNDLED_PACKAGES_INFO=\"$BUNDLED_PACKAGES_INFO\"
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
procd_open_instance
|
||||||
|
procd_set_param command /bin/sh -c \"(
|
||||||
|
echo 'Waiting for 4 seconds...'
|
||||||
|
sleep 4
|
||||||
|
echo 'Adding missing bundled package entries to \$STATUS_FILE...'
|
||||||
|
echo \"\$BUNDLED_PACKAGES_INFO\" >> \"\$STATUS_FILE\"
|
||||||
|
sync
|
||||||
|
rm -f /etc/init.d/add_opkg_status_bundled
|
||||||
|
) &\"
|
||||||
|
procd_close_instance
|
||||||
|
}" > /etc/init.d/add_opkg_status_bundled
|
||||||
|
|
||||||
|
chmod +x /etc/init.d/add_opkg_status_bundled
|
||||||
|
service add_opkg_status_bundled enable
|
||||||
|
service add_opkg_status_bundled start
|
||||||
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -1,5 +1,35 @@
|
|||||||
#!/bin/ash
|
#!/bin/ash
|
||||||
|
|
||||||
|
# Define the location of detected packages file
|
||||||
|
DETECTED_PACKAGES_FILE="/tmp/detected_packages.tmp"
|
||||||
|
|
||||||
|
# Check if specific packages are installed and delete their list files
|
||||||
|
detect_and_remove_list_files() {
|
||||||
|
local package_name="$1"
|
||||||
|
local list_file="/usr/lib/opkg/info/${package_name}.list"
|
||||||
|
|
||||||
|
# Check if the package is installed by checking its .list file
|
||||||
|
if [ -f "$list_file" ]; then
|
||||||
|
echo "$package_name is already installed. Deleting $list_file to avoid conflicts."
|
||||||
|
rm -f "$list_file"
|
||||||
|
echo "$package_name" >> "$DETECTED_PACKAGES_FILE"
|
||||||
|
else
|
||||||
|
echo "$package_name is not installed."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for installed packages and handle accordingly
|
||||||
|
detect_and_remove_list_files "libinotifytools"
|
||||||
|
detect_and_remove_list_files "inotifywait"
|
||||||
|
|
||||||
|
# Report if any packages were detected and list them
|
||||||
|
if [ -f "$DETECTED_PACKAGES_FILE" ]; then
|
||||||
|
echo "Detected the following installed packages, which were handled to avoid clashes:"
|
||||||
|
cat "$DETECTED_PACKAGES_FILE"
|
||||||
|
else
|
||||||
|
echo "No pre-existing bundled packages detected."
|
||||||
|
fi
|
||||||
|
|
||||||
# Check if /etc is mounted
|
# Check if /etc is mounted
|
||||||
if grep -qs '/etc ' /proc/mounts; then
|
if grep -qs '/etc ' /proc/mounts; then
|
||||||
echo "Unmounting /etc..."
|
echo "Unmounting /etc..."
|
||||||
|
|||||||
Reference in New Issue
Block a user