--- /dev/null
+#!/bin/sh
+echo "############### vendor.post ################"
+
+mkdir /mnt/vendor/usr
+mkdir /mnt/vendor/usr/lib
+mkdir /mnt/vendor/usr/lib64
+mkdir /mnt/vendor/hal
+mkdir /mnt/vendor/hal/lib
+mkdir /mnt/vendor/hal/lib64
+mkdir /mnt/vendor/root
+mkdir /mnt/vendor/etc
+mkdir /mnt/vendor/rpm
+
+echo "Initialize rpmdb for Vendor Image"
+mkdir -p /mnt/vendor/rpm
+cp /var/lib/rpm/Packages /mnt/vendor/rpm/
+rpm --rebuilddb --dbpath=/mnt/vendor/rpm
+
+check_vendor_building_block() {
+ PKG=`rpm -qR $1 | uniq | grep -v "^rpmlib" | grep -v ".\+\.so\..\+" | grep -v "^\/" | grep -v "=" | grep -v "(.\+)"`
+ for pkgs in ${PKG}; do
+ INSTALLED=`rpm -q $pkgs`
+ RET=$?
+ if [[ $pkgs =~ "building-blocks" ]]; then
+ check_vendor_building_block $pkgs
+ elif [ $RET -eq 0 ]; then
+ echo -e $INSTALLED >> /mnt/vendor/list/vendor-list.ini
+ fi
+ done
+}
+
+create_vendor_dependency_file() {
+ echo "Creating Vendor Image Dependency List"
+
+ PKG=`rpm -qa`
+ mkdir -p /mnt/vendor/temp
+
+ for packages in ${PKG}; do
+ rpm -qP $packages > /mnt/vendor/temp/${packages}
+ done
+
+ for packages in ${PKG}; do
+ FOUND=0
+ while read line; do
+ if [ $line == $packages ]; then
+ FOUND=1
+ break
+ fi
+ done < /mnt/vendor/list/vendor-list.ini
+
+ if [ $FOUND -eq 0 ]; then
+ rpm -e --justdb $packages --nodeps --noscripts --dbpath=/mnt/vendor/rpm
+ fi
+ done
+
+ rm -rf /mnt/vendor/temp
+ rm -rf /mnt/vendor/list
+ rm -rf /mnt/vendor/etc/rpm/vendor-list.ini
+ echo "Finished to Create Vendor Image Dependency List"
+}
+
+TARGET=("RPI4" "VIM3" "C4" "GENERIC" "VISIONFIVE2" "BPIF3" "LPI4A");
+
+PKGGROUP=`rpm -qa | grep package-groups`
+if [ $PKGGROUP ]; then
+ for target in ${TARGET[@]}; do
+ RET=`rpm -qa | grep $target`
+ RET=$?
+ if [ $RET -eq 0 ]; then
+ break;
+ fi
+ done
+
+ case $target in
+ RPI4)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor RPI4"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ VIM3)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor VIM3"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ C4)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor C4"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ GENERIC)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor GENERIC"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ VISIONFIVE2)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor VISIONFIVE2"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ BPIF3)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor BPIF3"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ LPI4A)
+ BACKEND=`xmlstarlet sel -t -v '//group[name = "IoT Vendor LPI4A"]/packagelist/packagereq' -n /usr/share/package-groups/group.xml`
+ ;;
+ esac
+
+ mkdir -p /mnt/vendor/list/
+
+ VENDOR_PKG=`rpm -q $BACKEND`
+ echo "Create Vendor Image Packages List"
+ for packages in ${VENDOR_PKG}; do
+ check_vendor_building_block $packages
+ done
+
+ create_vendor_dependency_file
+
+ #Create exportdb file to update a rpmdb of core image
+ rpmdb --dbpath=/mnt/vendor/rpm --exportdb > /mnt/vendor/etc/vendor-rpmdb.ini
+
+ # Copy files from vendor packages to vendor image
+
+ VENDOR_PKGS=`rpm -qR $VENDOR_PKG | uniq | grep -v "^rpmlib" | grep -v ".\+\.so\..\+" | grep -v "^\/" | grep -v "=" | grep -v "(.\+)"`
+
+ # 1. copy all files of a package to /mnt/vendor
+ for entry in etc/tmpfiles.d/vendor.d/*; do
+ while IFS="" read -r line; do
+ path_to_file=`dirname $line`
+ mkdir -p /mnt/vendor/$path_to_file
+ cp -a $line /mnt/vendor/$path_to_file
+ done < "${entry}"
+ done
+
+ # 2. Remove vendor building-block and all packages which it provides
+ rpm -e $BACKEND
+
+ for package in ${VENDOR_PKGS}; do
+ rpm -e $package
+ done
+fi