added my Recipes
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# Copyright (C) 2019, STMicroelectronics - All Rights Reserved
|
||||
# Released under the MIT license (see COPYING.MIT for the terms)
|
||||
|
||||
SUMMARY = "Tools for cleaning apt databse"
|
||||
SECTION = "devel"
|
||||
LICENSE = "BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
|
||||
|
||||
RDEPENDS:${PN} += " apt "
|
||||
|
||||
SRC_URI = " file://userfs-cleanup-package.service file://userfs-cleanup-package.sh"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit systemd update-rc.d
|
||||
|
||||
ST_USERFS ?= "1"
|
||||
|
||||
SYSTEMD_PACKAGES += "${PN}"
|
||||
SYSTEMD_SERVICE:${PN} = "userfs-cleanup-package.service"
|
||||
SYSTEMD_AUTO_ENABLE:${PN} = "${@bb.utils.contains('ST_USERFS', '1', 'enable', 'disable', d)}"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${systemd_unitdir}/system ${D}${base_sbindir}
|
||||
install -m 0644 ${WORKDIR}/userfs-cleanup-package.service ${D}${systemd_unitdir}/system
|
||||
install -m 0755 ${WORKDIR}/userfs-cleanup-package.sh ${D}${base_sbindir}
|
||||
|
||||
install -d ${D}${sysconfdir}/init.d
|
||||
install -m 0755 ${WORKDIR}/userfs-cleanup-package.sh ${D}${sysconfdir}/init.d/userfs-cleanup-package.sh
|
||||
|
||||
sed -i -e "s:@sbindir@:${base_sbindir}:; s:@sysconfdir@:${sysconfdir}:" ${D}${sysconfdir}/init.d/userfs-cleanup-package.sh
|
||||
sed -i -e "s:@sbindir@:${base_sbindir}:; s:@sysconfdir@:${sysconfdir}:" ${D}${systemd_unitdir}/system/userfs-cleanup-package.service
|
||||
}
|
||||
|
||||
INITSCRIPT_NAME = "userfs-cleanup-package.sh"
|
||||
INITSCRIPT_PARAMS = "start 22 5 3 ."
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Userfs cleanup package
|
||||
After=systemd-logind.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=-@sbindir@/userfs-cleanup-package.sh start
|
||||
ExecStartPost=/bin/systemctl --no-reload disable userfs-cleanup-package.service
|
||||
WatchdogSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,149 @@
|
||||
#! /bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# remove package which are present on the database but not present on userfs
|
||||
### END INIT INFO
|
||||
|
||||
DESC="cleanup apt database"
|
||||
|
||||
get_type() {
|
||||
local __resultvar=$1
|
||||
ROOT_TYPE="unknown"
|
||||
if [ -f /usr/bin/findmnt ];
|
||||
then
|
||||
ROOT_DEVICE=$(findmnt --noheadings --output=SOURCE / | cut -d'[' -f1)
|
||||
case $ROOT_DEVICE in
|
||||
ubi*)
|
||||
ROOT_TYPE="nand"
|
||||
;;
|
||||
/dev/mmcblk0*)
|
||||
ROOT_TYPE="sdmmc"
|
||||
;;
|
||||
/dev/mmcblk1*)
|
||||
ROOT_TYPE="mmc"
|
||||
;;
|
||||
/dev/disk/by-*)
|
||||
LINK=$(/usr/bin/readlink $ROOT_DEVICE | tr '/' ' ' | tr '.' ' ' | sed "s/ //g")
|
||||
case $LINK in
|
||||
ubi*)
|
||||
ROOT_TYPE="nand"
|
||||
;;
|
||||
mmcblk0*)
|
||||
ROOT_TYPE="sdmmc"
|
||||
;;
|
||||
mmcblk1*)
|
||||
ROOT_TYPE="mmc"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
else
|
||||
if [ `cat /proc/cmdline | sed "s/.*mmcblk0.*/mmcblk0/" ` == "mmcblk0" ]; then
|
||||
ROOT_TYPE="sdmmc"
|
||||
elif [ `cat /proc/cmdline | sed "s/.*mmcblk1.*/mmcblk1/" ` == "mmcblk1" ]; then
|
||||
ROOT_TYPE="mmc"
|
||||
elif [ `cat /proc/cmdline | sed "s/.*ubi0.*/ubi0/" ` == "ubi0" ]; then
|
||||
ROOT_TYPE="nand"
|
||||
elif [ `cat /proc/cmdline | sed "s/.*nfsroot.*/nfs/" ` == "nfs" ]; then
|
||||
ROOT_TYPE="nfs"
|
||||
fi
|
||||
fi
|
||||
eval $__resultvar="'$ROOT_TYPE'"
|
||||
}
|
||||
|
||||
found_devices() {
|
||||
local __resultvar=$1
|
||||
local __resultopt=$2
|
||||
local _type=$3
|
||||
local _search=$4
|
||||
local _device="unknown"
|
||||
local _option=" "
|
||||
case $_type in
|
||||
nand)
|
||||
local ubi_volumes=$(ls -1 -d /sys/class/ubi/ubi0_*)
|
||||
for f in $ubi_volumes;
|
||||
do
|
||||
if [ -r $f/name ];
|
||||
then
|
||||
cat $f/name | grep -sq "^${_search}"
|
||||
if [ "$?" -eq 0 ];
|
||||
then
|
||||
_device="/dev/$(basename $f)"
|
||||
_option="-t ubifs"
|
||||
break;
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
sdmmc)
|
||||
local sdmmc_parts=$(ls -1 -d /sys/block/mmcblk0/mmcblk0p*)
|
||||
for f in $sdmmc_parts;
|
||||
do
|
||||
if [ -r $f/uevent ];
|
||||
then
|
||||
cat $f/uevent | grep PARTNAME | sed "s/PARTNAME=//" | grep -sq "^${_search}"
|
||||
if [ "$?" -eq 0 ];
|
||||
then
|
||||
_device="/dev/$(basename $f)"
|
||||
break;
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
mmc)
|
||||
local mmc_parts=$(ls -1 -d /sys/block/mmcblk1/mmcblk1p*)
|
||||
for f in $mmc_parts;
|
||||
do
|
||||
if [ -r $f/uevent ];
|
||||
then
|
||||
cat $f/uevent | grep PARTNAME | sed "s/PARTNAME=//" | grep -sq "^${_search}"
|
||||
if [ "$?" -eq 0 ];
|
||||
then
|
||||
_device="/dev/$(basename $f)"
|
||||
break;
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
nfs)
|
||||
$_device="/dev/nfs"
|
||||
;;
|
||||
esac
|
||||
eval $__resultvar="'$_device'"
|
||||
eval $__resultopt="'$_option'"
|
||||
}
|
||||
|
||||
case $1 in
|
||||
start)
|
||||
echo "Starting $DESC"
|
||||
get_type TYPE
|
||||
found_devices DEVICE DEVICE_OPTION $TYPE userfs
|
||||
if [ "$DEVICE" = "/dev/null" ];
|
||||
then
|
||||
# nfs file system, do nothing
|
||||
exit 0
|
||||
fi
|
||||
case $DEVICE in
|
||||
unknown)
|
||||
# userfs partition are not present
|
||||
# we need to cleanup apt database
|
||||
grep -l "^/usr/local/" /var/lib/dpkg/info/* | sed -e "s|/var/lib/dpkg/info/\(.*\).list|\1|" | xargs apt-get purge -y
|
||||
echo "USERFS NOT PRESENT: CLEAN DPKG DATABASE" > /dev/kmsg
|
||||
;;
|
||||
/dev/nfs)
|
||||
# nfs file system, do nothing
|
||||
exit 0
|
||||
;;
|
||||
/dev/*)
|
||||
# userfs are present, do nothing
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
echo "Usage: @sysconfdir@/init.d/userfs-cleanup-package.sh {start}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# vim:noet
|
||||
Reference in New Issue
Block a user