Cleanup image,rootfs_ipk,package_ipk bbclass files
This commit cleans up the functions that were ported to python. (From OE-Core rev: d950ef40a3eae4b54cc62828e66d84a62d78c447) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
31906d8e91
commit
f52391a919
|
@ -287,44 +287,6 @@ MULTILIBRE_ALLOW_REP =. "${base_bindir}|${base_sbindir}|${bindir}|${sbindir}|${l
|
|||
MULTILIB_CHECK_FILE = "${WORKDIR}/multilib_check.py"
|
||||
MULTILIB_TEMP_ROOTFS = "${WORKDIR}/multilib"
|
||||
|
||||
multilib_generate_python_file() {
|
||||
cat >${MULTILIB_CHECK_FILE} <<EOF
|
||||
import sys, os, os.path
|
||||
import re,filecmp
|
||||
|
||||
allow_rep=re.compile(re.sub("\|$","","${MULTILIBRE_ALLOW_REP}"))
|
||||
error_prompt="Multilib check error:"
|
||||
|
||||
files={}
|
||||
dirs=raw_input()
|
||||
for dir in dirs.split():
|
||||
for root, subfolders, subfiles in os.walk(dir):
|
||||
for file in subfiles:
|
||||
item=os.path.join(root,file)
|
||||
key=str(os.path.join("/",os.path.relpath(item,dir)))
|
||||
|
||||
valid=True;
|
||||
if key in files:
|
||||
#check whether the file is allow to replace
|
||||
if allow_rep.match(key):
|
||||
valid=True
|
||||
else:
|
||||
if not filecmp.cmp(files[key],item):
|
||||
valid=False
|
||||
print("%s duplicate files %s %s is not the same\n" % (error_prompt, item, files[key]))
|
||||
sys.exit(1)
|
||||
|
||||
#pass the check, add to list
|
||||
if valid:
|
||||
files[key]=item
|
||||
EOF
|
||||
}
|
||||
|
||||
multilib_sanity_check() {
|
||||
multilib_generate_python_file
|
||||
echo $@ | python ${MULTILIB_CHECK_FILE}
|
||||
}
|
||||
|
||||
# This function is intended to disallow empty root password if 'debug-tweaks' is not in IMAGE_FEATURES.
|
||||
zap_empty_root_password () {
|
||||
if [ -e ${IMAGE_ROOTFS}/etc/shadow ]; then
|
||||
|
|
|
@ -10,207 +10,12 @@ PKGWRITEDIRIPK = "${WORKDIR}/deploy-ipks"
|
|||
# Program to be used to build opkg packages
|
||||
OPKGBUILDCMD ??= "opkg-build"
|
||||
|
||||
OPKG_ARGS = "-f $INSTALL_CONF_IPK -o $INSTALL_ROOTFS_IPK --force_postinstall --prefer-arch-to-version"
|
||||
OPKG_ARGS = "--force_postinstall --prefer-arch-to-version"
|
||||
OPKG_ARGS += "${@['', '--no-install-recommends'][d.getVar("NO_RECOMMENDATIONS", True) == "1"]}"
|
||||
OPKG_ARGS += "${@['', '--add-exclude ' + ' --add-exclude '.join((d.getVar('PACKAGE_EXCLUDE', True) or "").split())][(d.getVar("PACKAGE_EXCLUDE", True) or "") != ""]}"
|
||||
|
||||
OPKGLIBDIR = "${localstatedir}/lib"
|
||||
|
||||
package_tryout_install_multilib_ipk() {
|
||||
#try install multilib
|
||||
multilib_tryout_dirs=""
|
||||
for item in ${MULTILIB_VARIANTS}; do
|
||||
local target_rootfs="${MULTILIB_TEMP_ROOTFS}/${item}"
|
||||
local ipkg_args="${OPKG_ARGS}"
|
||||
local selected_pkg=""
|
||||
local pkgname_prefix="${item}-"
|
||||
local pkgname_len=${#pkgname_prefix}
|
||||
for pkg in ${INSTALL_PACKAGES_MULTILIB_IPK}; do
|
||||
local pkgname=$(echo $pkg | awk -v var=$pkgname_len '{ pkgname=substr($1, 1, var); print pkgname; }' )
|
||||
if [ ${pkgname} = ${pkgname_prefix} ]; then
|
||||
selected_pkg="${selected_pkg} ${pkg}"
|
||||
fi
|
||||
done
|
||||
if [ ! -z "${selected_pkg}" ]; then
|
||||
rm -f ${target_rootfs}
|
||||
mkdir -p ${target_rootfs}/${opkglibdir}
|
||||
opkg-cl ${ipkg_args} update
|
||||
opkg-cl ${ipkg_args} install ${selected_pkg}
|
||||
multilib_tryout_dirs="${multilib_tryout_dirs} ${target_rootfs}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
split_multilib_packages() {
|
||||
INSTALL_PACKAGES_NORMAL_IPK=""
|
||||
INSTALL_PACKAGES_MULTILIB_IPK=""
|
||||
for pkg in ${INSTALL_PACKAGES_IPK}; do
|
||||
is_multilib=0
|
||||
for item in ${MULTILIB_VARIANTS}; do
|
||||
local pkgname_prefix="${item}-"
|
||||
local pkgname_len=${#pkgname_prefix}
|
||||
local pkgname=$(echo $pkg | awk -v var=$pkgname_len '{ pkgname=substr($1, 1, var); print pkgname; }' )
|
||||
if [ ${pkgname} = ${pkgname_prefix} ]; then
|
||||
is_multilib=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${is_multilib} = 0 ]; then
|
||||
INSTALL_PACKAGES_NORMAL_IPK="${INSTALL_PACKAGES_NORMAL_IPK} ${pkg}"
|
||||
else
|
||||
INSTALL_PACKAGES_MULTILIB_IPK="${INSTALL_PACKAGES_MULTILIB_IPK} ${pkg}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#
|
||||
# install a bunch of packages using opkg
|
||||
# the following shell variables needs to be set before calling this func:
|
||||
# INSTALL_ROOTFS_IPK - install root dir
|
||||
# INSTALL_CONF_IPK - configuration file
|
||||
# INSTALL_PACKAGES_IPK - packages to be installed
|
||||
# INSTALL_PACKAGES_ATTEMPTONLY_IPK - packages attemped to be installed only
|
||||
# INSTALL_PACKAGES_LINGUAS_IPK - additional packages for uclibc
|
||||
# INSTALL_TASK_IPK - task name
|
||||
|
||||
package_install_internal_ipk() {
|
||||
|
||||
local target_rootfs="${INSTALL_ROOTFS_IPK}"
|
||||
local package_attemptonly="${INSTALL_PACKAGES_ATTEMPTONLY_IPK}"
|
||||
local package_linguas="${INSTALL_PACKAGES_LINGUAS_IPK}"
|
||||
local task="${INSTALL_TASK_IPK}"
|
||||
|
||||
split_multilib_packages
|
||||
|
||||
local package_to_install="${INSTALL_PACKAGES_NORMAL_IPK}"
|
||||
local package_multilib="${INSTALL_PACKAGES_MULTILIB_IPK}"
|
||||
|
||||
mkdir -p ${target_rootfs}${OPKGLIBDIR}/opkg
|
||||
touch ${target_rootfs}${OPKGLIBDIR}/opkg/status
|
||||
|
||||
local ipkg_args="${OPKG_ARGS}"
|
||||
|
||||
opkg-cl ${ipkg_args} update
|
||||
|
||||
for i in ${package_linguas}; do
|
||||
opkg-cl ${ipkg_args} install $i
|
||||
done
|
||||
|
||||
if [ ! -z "${package_to_install}" ]; then
|
||||
opkg-cl ${ipkg_args} install ${package_to_install}
|
||||
fi
|
||||
|
||||
if [ ! -z "${package_attemptonly}" ]; then
|
||||
opkg-cl ${ipkg_args} install ${package_attemptonly} > "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" || true
|
||||
fi
|
||||
|
||||
package_tryout_install_multilib_ipk
|
||||
if [ ! -z "${MULTILIB_CHECK_FILE}" ]; then
|
||||
#sanity check
|
||||
multilib_sanity_check ${target_rootfs} ${multilib_tryout_dirs} || exit 1
|
||||
fi
|
||||
|
||||
if [ ! -z "${package_multilib}" ]; then
|
||||
opkg-cl ${ipkg_args} install ${package_multilib}
|
||||
fi
|
||||
}
|
||||
|
||||
ipk_log_check() {
|
||||
target="$1"
|
||||
lf_path="$2"
|
||||
|
||||
lf_txt="`cat $lf_path`"
|
||||
for keyword_die in "exit 1" "Collected errors" ERR Fail
|
||||
do
|
||||
if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
|
||||
then
|
||||
echo "log_check: There were error messages in the logfile"
|
||||
printf "log_check: Matched keyword: [$keyword_die]\n\n"
|
||||
echo "$lf_txt" | grep -v log_check | grep -C 5 "$keyword_die"
|
||||
echo ""
|
||||
do_exit=1
|
||||
fi
|
||||
done
|
||||
test "$do_exit" = 1 && exit 1
|
||||
true
|
||||
}
|
||||
|
||||
#
|
||||
# Update the Packages index files in ${DEPLOY_DIR_IPK}
|
||||
#
|
||||
package_update_index_ipk () {
|
||||
#set -x
|
||||
|
||||
ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS} ${SDK_PACKAGE_ARCHS}"
|
||||
|
||||
if [ ! -z "${DEPLOY_KEEP_PACKAGES}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
packagedirs="${DEPLOY_DIR_IPK}"
|
||||
for arch in $ipkgarchs; do
|
||||
packagedirs="$packagedirs ${DEPLOY_DIR_IPK}/$arch"
|
||||
done
|
||||
|
||||
multilib_archs="${MULTILIB_ARCHS}"
|
||||
for arch in $multilib_archs; do
|
||||
packagedirs="$packagedirs ${DEPLOY_DIR_IPK}/$arch"
|
||||
done
|
||||
|
||||
found=0
|
||||
for pkgdir in $packagedirs; do
|
||||
if [ -e $pkgdir/ ]; then
|
||||
found=1
|
||||
touch $pkgdir/Packages
|
||||
flock $pkgdir/Packages.flock -c "opkg-make-index -r $pkgdir/Packages -p $pkgdir/Packages -m $pkgdir/"
|
||||
fi
|
||||
done
|
||||
if [ "$found" != "1" ]; then
|
||||
bbfatal "There are no packages in ${DEPLOY_DIR_IPK}!"
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Generate an ipkg conf file ${IPKGCONF_TARGET} suitable for use against
|
||||
# the target system and an ipkg conf file ${IPKGCONF_SDK} suitable for
|
||||
# use against the host system in sdk builds
|
||||
#
|
||||
package_generate_ipkg_conf () {
|
||||
package_generate_archlist
|
||||
echo "src oe file:${DEPLOY_DIR_IPK}" >> ${IPKGCONF_SDK}
|
||||
ipkgarchs="${SDK_PACKAGE_ARCHS}"
|
||||
for arch in $ipkgarchs; do
|
||||
if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
|
||||
echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_SDK}
|
||||
fi
|
||||
done
|
||||
|
||||
echo "src oe file:${DEPLOY_DIR_IPK}" >> ${IPKGCONF_TARGET}
|
||||
ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS}"
|
||||
for arch in $ipkgarchs; do
|
||||
if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
|
||||
echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_TARGET}
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
package_generate_archlist () {
|
||||
ipkgarchs="${SDK_PACKAGE_ARCHS}"
|
||||
priority=1
|
||||
for arch in $ipkgarchs; do
|
||||
echo "arch $arch $priority" >> ${IPKGCONF_SDK}
|
||||
priority=$(expr $priority + 5)
|
||||
done
|
||||
|
||||
ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS}"
|
||||
priority=1
|
||||
for arch in $ipkgarchs; do
|
||||
echo "arch $arch $priority" >> ${IPKGCONF_TARGET}
|
||||
priority=$(expr $priority + 5)
|
||||
done
|
||||
}
|
||||
|
||||
python do_package_ipk () {
|
||||
import re, copy
|
||||
import textwrap
|
||||
|
|
|
@ -15,117 +15,14 @@ rootfs_ipk_do_rootfs[vardepsexclude] += "BUILDNAME"
|
|||
|
||||
do_rootfs[lockfiles] += "${WORKDIR}/ipk.lock"
|
||||
|
||||
OPKG_PREPROCESS_COMMANDS = "package_update_index_ipk; package_generate_ipkg_conf"
|
||||
OPKG_PREPROCESS_COMMANDS = ""
|
||||
|
||||
OPKG_POSTPROCESS_COMMANDS = "ipk_insert_feed_uris; "
|
||||
OPKG_POSTPROCESS_COMMANDS = ""
|
||||
|
||||
OPKGLIBDIR = "${localstatedir}/lib"
|
||||
|
||||
MULTILIBRE_ALLOW_REP = "${OPKGLIBDIR}/opkg"
|
||||
|
||||
fakeroot rootfs_ipk_do_rootfs () {
|
||||
#set -x
|
||||
|
||||
rm -f ${IPKGCONF_TARGET}
|
||||
touch ${IPKGCONF_TARGET}
|
||||
|
||||
${OPKG_PREPROCESS_COMMANDS}
|
||||
|
||||
mkdir -p ${T}/
|
||||
|
||||
export INSTALL_CONF_IPK="${IPKGCONF_TARGET}"
|
||||
export INSTALL_ROOTFS_IPK="${IMAGE_ROOTFS}"
|
||||
STATUS=${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/status
|
||||
mkdir -p ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg
|
||||
|
||||
opkg-cl ${OPKG_ARGS} update
|
||||
|
||||
# prime the status file with bits that we don't want
|
||||
for i in ${BAD_RECOMMENDATIONS}; do
|
||||
pkginfo="`opkg-cl ${OPKG_ARGS} info $i`"
|
||||
if [ ! -z "$pkginfo" ]; then
|
||||
echo "$pkginfo" | awk "/^Status:/ { print \"Status: deinstall hold not-installed\n\" }" - >> $STATUS
|
||||
else
|
||||
echo "Requested ignored recommendation $i is not a package"
|
||||
fi
|
||||
done
|
||||
|
||||
#install
|
||||
export INSTALL_PACKAGES_ATTEMPTONLY_IPK="${PACKAGE_INSTALL_ATTEMPTONLY}"
|
||||
export INSTALL_PACKAGES_LINGUAS_IPK="${LINGUAS_INSTALL}"
|
||||
export INSTALL_TASK_IPK="rootfs"
|
||||
|
||||
|
||||
export INSTALL_PACKAGES_IPK="${PACKAGE_INSTALL}"
|
||||
|
||||
#post install
|
||||
export D=${IMAGE_ROOTFS}
|
||||
export OFFLINE_ROOT=${IMAGE_ROOTFS}
|
||||
export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
|
||||
export OPKG_OFFLINE_ROOT=${IPKG_OFFLINE_ROOT}
|
||||
export INTERCEPT_DIR=${WORKDIR}/intercept_scripts
|
||||
export NATIVE_ROOT=${STAGING_DIR_NATIVE}
|
||||
|
||||
package_install_internal_ipk
|
||||
|
||||
# Distro specific packages should create this
|
||||
#mkdir -p ${IMAGE_ROOTFS}/etc/opkg/
|
||||
#grep "^arch" ${IPKGCONF_TARGET} >${IMAGE_ROOTFS}/etc/opkg/arch.conf
|
||||
|
||||
rootfs_install_complementary
|
||||
|
||||
${OPKG_POSTPROCESS_COMMANDS}
|
||||
${ROOTFS_POSTINSTALL_COMMAND}
|
||||
|
||||
install -d ${IMAGE_ROOTFS}/${sysconfdir}
|
||||
echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
|
||||
|
||||
${ROOTFS_POSTPROCESS_COMMAND}
|
||||
|
||||
if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", "false" ,d)}; then
|
||||
delayed_postinsts="$(delayed_postinsts)"
|
||||
if [ -n "$delayed_postinsts" ]; then
|
||||
bberror "The following packages could not be configured offline and rootfs is read-only: $delayed_postinsts"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -f ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/lists/*
|
||||
log_check rootfs
|
||||
}
|
||||
|
||||
rootfs_ipk_do_rootfs[vardeps] += "delayed_postinsts"
|
||||
|
||||
delayed_postinsts () {
|
||||
cat ${STATUS}|grep -e "^Package:" -e "^Status:"|sed -ne 'N;s/Package: \(.*\)\nStatus:.*unpacked/\1/p'
|
||||
}
|
||||
|
||||
save_postinsts () {
|
||||
# Scripts need to be ordered when executed, this ensures numeric order
|
||||
# If we ever run into needing more the 899 scripts, we'll have to
|
||||
# change num to start with 1000.
|
||||
num=100
|
||||
for p in $(delayed_postinsts); do
|
||||
install -d ${IMAGE_ROOTFS}${sysconfdir}/ipk-postinsts
|
||||
cp ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/info/$p.postinst ${IMAGE_ROOTFS}${sysconfdir}/ipk-postinsts/$num-$p
|
||||
num=`echo \$((num+1))`
|
||||
done
|
||||
}
|
||||
|
||||
remove_packaging_data_files() {
|
||||
rm -rf ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg
|
||||
# We need the directory for the package manager lock
|
||||
mkdir ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg
|
||||
}
|
||||
|
||||
rootfs_install_packages() {
|
||||
opkg-cl ${OPKG_ARGS} install `cat $1`
|
||||
}
|
||||
|
||||
rootfs_uninstall_packages() {
|
||||
opkg-cl ${OPKG_ARGS} --force-depends remove $@
|
||||
}
|
||||
|
||||
ipk_insert_feed_uris () {
|
||||
|
||||
echo "Building from feeds activated!"
|
||||
|
@ -163,7 +60,7 @@ python () {
|
|||
flags = flags.replace("do_deploy", "")
|
||||
flags = flags.replace("do_populate_sysroot", "")
|
||||
d.setVarFlag('do_rootfs', 'recrdeptask', flags)
|
||||
d.setVar('OPKG_PREPROCESS_COMMANDS', "package_generate_archlist\nipk_insert_feed_uris")
|
||||
d.setVar('OPKG_PREPROCESS_COMMANDS', "ipk_insert_feed_uris")
|
||||
d.setVar('OPKG_POSTPROCESS_COMMANDS', '')
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue