2006-09-19 09:04:09 +00:00
inherit rootfs_${IMAGE_PKGTYPE}
2005-08-31 10:45:47 +00:00
2012-06-23 00:38:30 +00:00
inherit populate_sdk_base
TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}"
2013-09-11 09:42:44 +00:00
POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_install_complementary populate_sdk; rootfs_sysroot_relativelinks; "
2012-06-23 00:38:30 +00:00
2012-03-21 11:26:09 +00:00
inherit gzipnative
2007-05-16 13:33:27 +00:00
LICENSE = "MIT"
2006-11-21 23:21:06 +00:00
PACKAGES = ""
2013-02-28 21:51:51 +00:00
DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross"
2013-08-06 15:41:33 +00:00
RDEPENDS += "${PACKAGE_INSTALL} ${LINGUAS_INSTALL}"
RRECOMMENDS += "${PACKAGE_INSTALL_ATTEMPTONLY}"
2007-05-16 13:33:27 +00:00
2008-10-28 15:14:00 +00:00
INHIBIT_DEFAULT_DEPS = "1"
2013-09-19 10:10:34 +00:00
TESTIMAGECLASS = "${@base_conditional('TEST_IMAGE', '1', 'testimage-auto', '', d)}"
inherit ${TESTIMAGECLASS}
2011-08-08 23:09:37 +00:00
# IMAGE_FEATURES may contain any available package group
IMAGE_FEATURES ?= ""
IMAGE_FEATURES[type] = "list"
2013-05-13 02:17:27 +00:00
IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs package-management"
2011-08-08 23:09:37 +00:00
2012-03-03 04:12:18 +00:00
# rootfs bootstrap install
ROOTFS_BOOTSTRAP_INSTALL = "${@base_contains("IMAGE_FEATURES", "package-management", "", "${ROOTFS_PKGMANAGE_BOOTSTRAP}",d)}"
2011-08-08 23:09:37 +00:00
# packages to install from features
FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}"
FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}"
2012-08-31 09:45:58 +00:00
# Define some very basic feature package groups
SPLASH ?= "psplash"
PACKAGE_GROUP_splash = "${SPLASH}"
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
# Wildcards specifying complementary packages to install for every package that has been explicitly
# installed into the rootfs
2013-05-03 13:21:59 +00:00
COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
COMPLEMENTARY_GLOB[staticdev-pkgs] = '*-staticdev'
COMPLEMENTARY_GLOB[doc-pkgs] = '*-doc'
COMPLEMENTARY_GLOB[dbg-pkgs] = '*-dbg'
COMPLEMENTARY_GLOB[ptest-pkgs] = '*-ptest'
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
def complementary_globs(featurevar, d):
2013-05-03 13:21:59 +00:00
all_globs = d.getVarFlags('COMPLEMENTARY_GLOB')
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
globs = []
features = set((d.getVar(featurevar, True) or '').split())
2013-05-03 13:21:59 +00:00
for name, glob in all_globs.items():
if name in features:
globs.append(glob)
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
return ' '.join(globs)
IMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("IMAGE_FEATURES", d)}'
SDKIMAGE_FEATURES ??= "dev-pkgs dbg-pkgs"
SDKIMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("SDKIMAGE_FEATURES", d)}'
2011-08-08 23:12:08 +00:00
2013-05-09 16:24:25 +00:00
def check_image_features(d):
valid_features = (d.getVarFlag('IMAGE_FEATURES', 'validitems', True) or "").split()
valid_features += d.getVarFlags('COMPLEMENTARY_GLOB').keys()
for var in d:
if var.startswith("PACKAGE_GROUP_"):
valid_features.append(var[14:])
valid_features.sort()
features = set(oe.data.typed_value('IMAGE_FEATURES', d))
for feature in features:
if feature not in valid_features:
bb.fatal("'%s' in IMAGE_FEATURES is not a valid image feature. Valid features: %s" % (feature, ' '.join(valid_features)))
2011-08-08 23:09:37 +00:00
IMAGE_INSTALL ?= ""
IMAGE_INSTALL[type] = "list"
2012-03-03 04:12:18 +00:00
export PACKAGE_INSTALL ?= "${IMAGE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL} ${FEATURE_INSTALL}"
2011-08-08 23:09:37 +00:00
PACKAGE_INSTALL_ATTEMPTONLY ?= "${FEATURE_INSTALL_OPTIONAL}"
2006-11-21 23:21:06 +00:00
2005-08-31 10:45:47 +00:00
# Images are generally built explicitly, do not need to be part of world.
EXCLUDE_FROM_WORLD = "1"
USE_DEVFS ?= "0"
2006-11-21 23:21:06 +00:00
PID = "${@os.getpid()}"
2006-02-10 11:38:23 +00:00
PACKAGE_ARCH = "${MACHINE_ARCH}"
2005-08-31 10:45:47 +00:00
2011-05-17 12:31:27 +00:00
LDCONFIGDEPEND ?= "ldconfig-native:do_populate_sysroot"
2011-05-17 13:52:27 +00:00
LDCONFIGDEPEND_libc-uclibc = ""
2011-04-05 16:21:53 +00:00
do_rootfs[depends] += "makedevs-native:do_populate_sysroot virtual/fakeroot-native:do_populate_sysroot ${LDCONFIGDEPEND}"
2011-03-29 00:37:53 +00:00
do_rootfs[depends] += "virtual/update-alternatives-native:do_populate_sysroot update-rc.d-native:do_populate_sysroot"
2013-01-23 14:27:33 +00:00
do_rootfs[recrdeptask] += "do_packagedata"
2005-08-31 10:45:47 +00:00
2012-03-01 07:46:21 +00:00
IMAGE_TYPE_live = '${@base_contains("IMAGE_FSTYPES", "live", "live", "empty", d)}'
inherit image-${IMAGE_TYPE_live}
IMAGE_TYPE_vmdk = '${@base_contains("IMAGE_FSTYPES", "vmdk", "vmdk", "empty", d)}'
inherit image-${IMAGE_TYPE_vmdk}
2011-07-26 15:30:08 +00:00
2013-11-29 14:36:42 +00:00
do_build[depends] += "virtual/kernel:do_deploy"
2007-04-03 11:31:02 +00:00
python () {
2012-06-13 10:38:16 +00:00
deps = " " + imagetypes_getdepends(d)
d.appendVarFlag('do_rootfs', 'depends', deps)
deps = ""
Convert to use direct access to the data store (instead of bb.data.*Var*())
This is the result of running the following over the metadata:
sed \
-e 's:bb.data.\(setVar([^,()]*,[^,()]*\), *\([^ )]*\) *):\2.\1):g' \
-e 's:bb.data.\(setVarFlag([^,()]*,[^,()]*,[^,()]*\), *\([^) ]*\) *):\2.\1):g' \
-e 's:bb.data.\(getVar([^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \
-e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \
-e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^() ]*\) *):\2.\1):g' \
-e 's:bb.data.\(getVar([^,()]*\), *\([^) ]*\) *):\2.\1):g' \
-i `grep -ril bb.data *`
(From OE-Core rev: b22831fd63164c4db9c0b72934d7d734a6585251)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-09 15:00:01 +00:00
for dep in (d.getVar('EXTRA_IMAGEDEPENDS', True) or "").split():
2009-11-10 14:55:23 +00:00
deps += " %s:do_populate_sysroot" % dep
2012-06-13 10:38:16 +00:00
d.appendVarFlag('do_build', 'depends', deps)
2008-04-08 17:23:04 +00:00
2012-07-03 04:43:32 +00:00
#process IMAGE_FEATURES, we must do this before runtime_mapping_rename
#Check for replaces image features
features = set(oe.data.typed_value('IMAGE_FEATURES', d))
remain_features = features.copy()
for feature in features:
replaces = set((d.getVar("IMAGE_FEATURES_REPLACES_%s" % feature, True) or "").split())
remain_features -= replaces
#Check for conflict image features
for feature in remain_features:
conflicts = set((d.getVar("IMAGE_FEATURES_CONFLICTS_%s" % feature, True) or "").split())
temp = conflicts & remain_features
if temp:
bb.fatal("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp))))
d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features)))
2012-12-14 22:40:33 +00:00
# Ensure we have the vendor list for complementary package handling
ml_vendor_list = ""
multilibs = d.getVar('MULTILIBS', True) or ""
for ext in multilibs.split():
eext = ext.split(':')
if len(eext) > 1 and eext[0] == 'multilib':
localdata = bb.data.createCopy(d)
vendor = localdata.getVar("TARGET_VENDOR_virtclass-multilib-" + eext[1], False)
ml_vendor_list += " " + vendor
d.setVar('MULTILIB_VENDORS', ml_vendor_list)
2013-05-09 16:24:25 +00:00
check_image_features(d)
2013-08-22 23:04:27 +00:00
initramfs_image = d.getVar('INITRAMFS_IMAGE', True) or ""
if initramfs_image != "":
d.appendVarFlag('do_build', 'depends', " %s:do_bundle_initramfs" % d.getVar('PN', True))
d.appendVarFlag('do_bundle_initramfs', 'depends', " %s:do_rootfs" % initramfs_image)
2012-08-17 14:19:38 +00:00
}
2007-09-01 15:25:40 +00:00
#
# Get a list of files containing device tables to create.
# * IMAGE_DEVICE_TABLE is the old name to an absolute path to a device table file
# * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, seached
# for in the BBPATH
# If neither are specified then the default name of files/device_table-minimal.txt
# is searched for in the BBPATH (same as the old version.)
#
def get_devtable_list(d):
2012-03-03 10:59:25 +00:00
devtable = d.getVar('IMAGE_DEVICE_TABLE', True)
2008-05-21 20:16:49 +00:00
if devtable != None:
return devtable
str = ""
2012-03-03 10:59:25 +00:00
devtables = d.getVar('IMAGE_DEVICE_TABLES', True)
2008-05-21 20:16:49 +00:00
if devtables == None:
devtables = 'files/device_table-minimal.txt'
for devtable in devtables.split():
2013-09-01 07:52:40 +00:00
str += " %s" % bb.utils.which(d.getVar('BBPATH', True), devtable)
2008-05-21 20:16:49 +00:00
return str
2007-09-01 15:25:40 +00:00
2011-11-07 19:20:04 +00:00
IMAGE_CLASSES ?= "image_types"
inherit ${IMAGE_CLASSES}
2011-03-24 12:23:10 +00:00
2005-08-31 10:45:47 +00:00
IMAGE_POSTPROCESS_COMMAND ?= ""
2007-08-08 12:40:01 +00:00
MACHINE_POSTPROCESS_COMMAND ?= ""
2012-09-18 15:39:49 +00:00
ROOTFS_POSTPROCESS_COMMAND_prepend = "run_intercept_scriptlets; "
2013-01-16 17:00:12 +00:00
# Allow dropbear/openssh to accept logins from accounts with an empty password string if debug-tweaks is enabled
ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "ssh_allow_empty_password; ", "",d)}'
2013-05-23 04:43:33 +00:00
# Enable postinst logging if debug-tweaks is enabled
ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "postinst_enable_logging; ", "",d)}'
# Set default postinst log file
POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
2005-08-31 10:45:47 +00:00
2006-11-21 23:21:06 +00:00
# some default locales
2007-09-01 15:25:40 +00:00
IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
2006-11-21 23:21:06 +00:00
2012-03-03 10:59:25 +00:00
LINGUAS_INSTALL ?= "${@" ".join(map(lambda s: "locale-base-%s" % s, d.getVar('IMAGE_LINGUAS', True).split()))}"
2006-11-21 23:21:06 +00:00
2011-12-07 17:34:07 +00:00
PSEUDO_PASSWD = "${IMAGE_ROOTFS}"
2012-09-18 15:39:49 +00:00
do_rootfs[dirs] = "${TOPDIR} ${WORKDIR}/intercept_scripts"
2010-10-07 14:41:17 +00:00
do_rootfs[lockfiles] += "${IMAGE_ROOTFS}.lock"
2012-09-18 15:39:49 +00:00
do_rootfs[cleandirs] += "${S} ${WORKDIR}/intercept_scripts"
2006-11-21 23:21:06 +00:00
2005-08-31 10:45:47 +00:00
# Must call real_do_rootfs() from inside here, rather than as a separate
# task, so that we have a single fakeroot context for the whole process.
2012-02-26 21:53:02 +00:00
do_rootfs[umask] = "022"
2011-06-22 04:56:25 +00:00
2012-09-18 15:39:49 +00:00
run_intercept_scriptlets () {
if [ -d ${WORKDIR}/intercept_scripts ]; then
cd ${WORKDIR}/intercept_scripts
echo "Running intercept scripts:"
for script in *; do
2013-02-12 16:12:37 +00:00
[ "$script" = "*" ] && break
[ "$script" = "postinst_intercept" ] || [ ! -x "$script" ] && continue
2012-09-18 15:39:49 +00:00
echo "> Executing $script"
2013-04-22 08:01:25 +00:00
./$script && continue
echo "WARNING: intercept script \"$script\" failed, falling back to running postinstalls at first boot"
2013-02-12 16:12:37 +00:00
#
2013-04-22 08:01:25 +00:00
# If we got here, than the intercept has failed. Next, we must
# mark the postinstalls as "unpacked". For rpm is a little bit
# different, we just have to save the package postinstalls in
2013-02-12 16:12:37 +00:00
# /etc/rpm-postinsts
#
pkgs="$(cat ./$script|grep "^##PKGS"|cut -d':' -f2)" || continue
case ${IMAGE_PKGTYPE} in
"rpm")
2013-04-22 08:01:25 +00:00
[ -d ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts/ ] || mkdir ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts/
v_expr=$(echo ${MULTILIB_GLOBAL_VARIANTS}|tr ' ' '|')
for p in $pkgs; do
# remove any multilib prefix from the package name (RPM
# does not use it like this)
new_p=$(echo $p | sed -r "s/^($v_expr)-//")
# extract the postinstall scriptlet from rpm package and
# save it in /etc/rpm-postinsts
echo " * postponing $new_p"
rpm -q --scripts --root=${IMAGE_ROOTFS} --dbpath=/var/lib/rpm $new_p |\
sed -n -e '/^postinstall scriptlet (using .*):$/,/^.* scriptlet (using .*):$/ {/.*/p}' |\
sed -e 's/postinstall scriptlet (using \(.*\)):$/#!\1/' -e '/^.* scriptlet (using .*):$/d'\
> ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts/$new_p
chmod +x ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts/$new_p
2013-02-12 16:12:37 +00:00
done
# move to the next intercept script
continue
;;
"ipk")
status_file="${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/status"
;;
"deb")
status_file="${IMAGE_ROOTFS}/var/lib/dpkg/status"
;;
esac
# the next piece of code is run only for ipk/dpkg
sed_expr=""
for p in $pkgs; do
2013-04-22 08:01:25 +00:00
echo " * postponing $p"
sed_expr="$sed_expr -e \"/^Package: ${p}$/,/^Status: install.* installed$/ {s/installed/unpacked/}\""
2013-02-12 16:12:37 +00:00
done
eval sed -i $sed_expr $status_file
2012-09-18 15:39:49 +00:00
done
fi
2013-01-22 02:34:09 +00:00
}
# A hook function to support read-only-rootfs IMAGE_FEATURES
# Currently, it only supports sysvinit system.
read_only_rootfs_hook () {
if ${@base_contains("DISTRO_FEATURES", "sysvinit", "true", "false", d)}; then
# Tweak the mount option and fs_passno for rootfs in fstab
sed -i -e '/^[#[:space:]]*rootfs/{s/defaults/ro/;s/\([[:space:]]*[[:digit:]]\)\([[:space:]]*\)[[:digit:]]$/\1\20/}' ${IMAGE_ROOTFS}/etc/fstab
# Change the value of ROOTFS_READ_ONLY in /etc/default/rcS to yes
if [ -e ${IMAGE_ROOTFS}/etc/default/rcS ]; then
sed -i 's/ROOTFS_READ_ONLY=no/ROOTFS_READ_ONLY=yes/' ${IMAGE_ROOTFS}/etc/default/rcS
fi
# Run populate-volatile.sh at rootfs time to set up basic files
# and directories to support read-only rootfs.
if [ -x ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh ]; then
${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh
fi
2013-07-29 02:11:07 +00:00
# If we're using openssh and the /etc/ssh directory has no pre-generated keys,
# we should configure openssh to use the configuration file /etc/ssh/sshd_config_readonly
# and the keys under /var/run/ssh.
if [ -d ${IMAGE_ROOTFS}/etc/ssh ]; then
if [ -e ${IMAGE_ROOTFS}/etc/ssh/ssh_host_rsa_key ]; then
echo "SYSCONFDIR=/etc/ssh" >> ${IMAGE_ROOTFS}/etc/default/ssh
echo "SSHD_OPTS=" >> ${IMAGE_ROOTFS}/etc/default/ssh
else
echo "SYSCONFDIR=/var/run/ssh" >> ${IMAGE_ROOTFS}/etc/default/ssh
echo "SSHD_OPTS='-f /etc/ssh/sshd_config_readonly'" >> ${IMAGE_ROOTFS}/etc/default/ssh
fi
fi
2013-01-22 02:34:09 +00:00
fi
2012-09-18 15:39:49 +00:00
}
2013-08-06 15:41:33 +00:00
PACKAGE_EXCLUDE ??= ""
PACKAGE_EXCLUDE[type] = "list"
python rootfs_process_ignore() {
excl_pkgs = d.getVar("PACKAGE_EXCLUDE", True).split()
inst_pkgs = d.getVar("PACKAGE_INSTALL", True).split()
inst_attempt_pkgs = d.getVar("PACKAGE_INSTALL_ATTEMPTONLY", True).split()
d.setVar('PACKAGE_INSTALL_ORIG', ' '.join(inst_pkgs))
d.setVar('PACKAGE_INSTALL_ATTEMPTONLY', ' '.join(inst_attempt_pkgs))
for pkg in excl_pkgs:
if pkg in inst_pkgs:
bb.warn("Package %s, set to be excluded, is in %s PACKAGE_INSTALL (%s). It will be removed from the list." % (pkg, d.getVar('PN', True), inst_pkgs))
inst_pkgs.remove(pkg)
if pkg in inst_attempt_pkgs:
bb.warn("Package %s, set to be excluded, is in %s PACKAGE_INSTALL_ATTEMPTONLY (%s). It will be removed from the list." % (pkg, d.getVar('PN', True), inst_pkgs))
inst_attempt_pkgs.remove(pkg)
d.setVar("PACKAGE_INSTALL", ' '.join(inst_pkgs))
d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", ' '.join(inst_attempt_pkgs))
}
do_rootfs[prefuncs] += "rootfs_process_ignore"
2013-08-09 23:41:05 +00:00
# We have to delay the runtime_mapping_rename until just before rootfs runs
# otherwise, the multilib renaming could step in and squash any fixups that
# may have occurred.
python rootfs_runtime_mapping() {
pn = d.getVar('PN', True)
runtime_mapping_rename("PACKAGE_INSTALL", pn, d)
runtime_mapping_rename("PACKAGE_INSTALL_ATTEMPTONLY", pn, d)
runtime_mapping_rename("BAD_RECOMMENDATIONS", pn, d)
}
do_rootfs[prefuncs] += "rootfs_runtime_mapping"
2005-08-31 10:45:47 +00:00
fakeroot do_rootfs () {
2011-02-16 04:54:38 +00:00
#set -x
2012-07-11 17:33:43 +00:00
# When use the rpm incremental image generation, don't remove the rootfs
if [ "${INC_RPM_IMAGE_GEN}" != "1" -o "${IMAGE_PKGTYPE}" != "rpm" ]; then
rm -rf ${IMAGE_ROOTFS}
elif [ -d ${T}/saved_rpmlib/var/lib/rpm ]; then
# Move the rpmlib back
if [ ! -d ${IMAGE_ROOTFS}/var/lib/rpm ]; then
mkdir -p ${IMAGE_ROOTFS}/var/lib/
mv ${T}/saved_rpmlib/var/lib/rpm ${IMAGE_ROOTFS}/var/lib/
fi
fi
2011-07-05 05:55:41 +00:00
rm -rf ${MULTILIB_TEMP_ROOTFS}
2007-09-01 15:25:40 +00:00
mkdir -p ${IMAGE_ROOTFS}
2008-06-12 20:18:24 +00:00
mkdir -p ${DEPLOY_DIR_IMAGE}
2005-08-31 10:45:47 +00:00
2012-03-16 11:43:44 +00:00
cp ${COREBASE}/meta/files/deploydir_readme.txt ${DEPLOY_DIR_IMAGE}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt || true
2011-08-16 17:13:04 +00:00
2013-02-12 16:12:37 +00:00
# copy the intercept scripts
cp ${COREBASE}/scripts/postinst-intercepts/* ${WORKDIR}/intercept_scripts/
2013-08-13 06:11:50 +00:00
rootfs_${IMAGE_PKGTYPE}_do_rootfs
if [ "${USE_DEVFS}" != "1" ]; then
2007-09-01 15:25:40 +00:00
for devtable in ${@get_devtable_list(d)}; do
2012-07-11 17:33:43 +00:00
# Always return ture since there maybe already one when use the
# incremental image generation
2007-09-01 15:25:40 +00:00
makedevs -r ${IMAGE_ROOTFS} -D $devtable
done
2005-08-31 10:45:47 +00:00
fi
2013-05-21 11:27:49 +00:00
# remove unneeded packages/files from the final image
2013-08-24 16:01:20 +00:00
rootfs_uninstall_unneeded
2013-05-21 11:27:49 +00:00
2008-05-21 20:16:49 +00:00
insert_feed_uris
2007-09-01 15:25:40 +00:00
2011-04-05 16:21:53 +00:00
if [ "x${LDCONFIGDEPEND}" != "x" ]; then
# Run ldconfig on the image to create a valid cache
# (new format for cross arch compatibility)
echo executing: ldconfig -r ${IMAGE_ROOTFS} -c new -v
ldconfig -r ${IMAGE_ROOTFS} -c new -v
fi
2007-11-23 17:05:35 +00:00
2008-10-09 09:36:00 +00:00
# (re)create kernel modules dependencies
# This part is done by kernel-module-* postinstall scripts but if image do
# not contains modules at all there are few moments in boot sequence with
# "unable to open modules.dep" message.
2008-10-09 19:08:11 +00:00
if [ -e ${STAGING_KERNEL_DIR}/kernel-abiversion ]; then
KERNEL_VERSION=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion`
2008-10-09 09:36:00 +00:00
2008-10-09 19:08:11 +00:00
mkdir -p ${IMAGE_ROOTFS}/lib/modules/$KERNEL_VERSION
2013-02-28 21:51:51 +00:00
depmodwrapper -a -b ${IMAGE_ROOTFS} $KERNEL_VERSION
2008-10-09 19:08:11 +00:00
fi
2008-10-09 09:36:00 +00:00
2009-01-07 16:31:48 +00:00
${IMAGE_PREPROCESS_COMMAND}
${@get_imagecmds(d)}
2005-08-31 10:45:47 +00:00
${IMAGE_POSTPROCESS_COMMAND}
2007-08-08 12:40:01 +00:00
${MACHINE_POSTPROCESS_COMMAND}
2005-08-31 10:45:47 +00:00
}
2006-11-21 23:21:06 +00:00
2007-09-01 15:25:40 +00:00
insert_feed_uris () {
echo "Building feeds for [${DISTRO}].."
2008-05-21 20:16:49 +00:00
2007-09-01 15:25:40 +00:00
for line in ${FEED_URIS}
do
# strip leading and trailing spaces/tabs, then split into name and uri
line_clean="`echo "$line"|sed 's/^[ \t]*//;s/[ \t]*$//'`"
feed_name="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\1/p'`"
2008-05-21 20:16:49 +00:00
feed_uri="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\2/p'`"
2007-09-01 15:25:40 +00:00
echo "Added $feed_name feed with URL $feed_uri"
# insert new feed-sources
2008-03-18 11:43:59 +00:00
echo "src/gz $feed_name $feed_uri" >> ${IMAGE_ROOTFS}/etc/opkg/${feed_name}-feed.conf
2008-05-21 20:16:49 +00:00
done
2007-09-01 15:25:40 +00:00
}
2006-11-21 23:21:06 +00:00
log_check() {
for target in $*
do
2012-06-18 21:42:45 +00:00
lf_path="`dirname ${BB_LOGFILE}`/log.do_$target.${PID}"
2006-11-21 23:21:06 +00:00
echo "log_check: Using $lf_path as logfile"
if test -e "$lf_path"
then
2011-01-30 04:04:46 +00:00
${IMAGE_PKGTYPE}_log_check $target $lf_path
2006-11-21 23:21:06 +00:00
else
echo "Cannot find logfile [$lf_path]"
fi
2008-05-21 20:16:49 +00:00
echo "Logfile is clean"
2006-11-21 23:21:06 +00:00
done
}
2014-03-21 18:02:39 +00:00
MULTILIBRE_ALLOW_REP =. "${base_bindir}|${base_sbindir}|${bindir}|${sbindir}|${libexecdir}|/lib/modules/[^/]*/modules.*|"
2011-07-05 05:55:41 +00:00
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}"))
2012-07-26 20:55:43 +00:00
error_prompt="Multilib check error:"
2011-07-05 05:55:41 +00:00
files={}
dirs=raw_input()
for dir in dirs.split():
2012-07-26 20:55:43 +00:00
for root, subfolders, subfiles in os.walk(dir):
2011-07-05 05:55:41 +00:00
for file in subfiles:
item=os.path.join(root,file)
key=str(os.path.join("/",os.path.relpath(item,dir)))
valid=True;
2013-05-07 12:56:04 +00:00
if key in files:
2011-09-16 12:41:36 +00:00
#check whether the file is allow to replace
if allow_rep.match(key):
valid=True
else:
2011-07-05 05:55:41 +00:00
if not filecmp.cmp(files[key],item):
valid=False
2012-07-26 20:55:43 +00:00
print("%s duplicate files %s %s is not the same\n" % (error_prompt, item, files[key]))
2011-07-05 05:55:41 +00:00
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}
}
2011-12-22 14:46:32 +00:00
get_split_linguas() {
for translation in ${IMAGE_LINGUAS}; do
translation_split=$(echo ${translation} | awk -F '-' '{print $1}')
echo ${translation}
echo ${translation_split}
done | sort | uniq
}
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
rootfs_install_complementary() {
# Install complementary packages based upon the list of currently installed packages
# e.g. locales, *-dev, *-dbg, etc. This will only attempt to install these packages,
# if they don't exist then no error will occur.
# Note: every backend needs to call this function explicitly after the normal
# package installation
# Get list of installed packages
list_installed_packages arch > ${WORKDIR}/installed_pkgs.txt
# Apply the globs to all the packages currently installed
2012-09-07 22:05:43 +00:00
if [ -n "$1" -a "$1" = "populate_sdk" ] ; then
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
GLOBS="${SDKIMAGE_INSTALL_COMPLEMENTARY}"
2012-09-07 22:05:43 +00:00
elif [ -n "$1" ]; then
GLOBS="$@"
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
else
GLOBS="${IMAGE_INSTALL_COMPLEMENTARY}"
# Add locales
SPLIT_LINGUAS=`get_split_linguas`
PACKAGES_TO_INSTALL=""
for lang in $SPLIT_LINGUAS ; do
GLOBS="$GLOBS *-locale-$lang"
2011-12-22 14:46:32 +00:00
done
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
fi
if [ "$GLOBS" != "" ] ; then
# Use the magic script to do all the work for us :)
2012-12-14 22:40:33 +00:00
: > ${WORKDIR}/complementary_pkgs.txt
2013-01-07 12:58:31 +00:00
for vendor in '${TARGET_VENDOR}' ${MULTILIB_VENDORS} ; do
2013-09-13 12:35:31 +00:00
oe-pkgdata-util glob ${PKGDATA_DIR} ${WORKDIR}/installed_pkgs.txt "$GLOBS" >> ${WORKDIR}/complementary_pkgs.txt
2012-12-14 22:40:33 +00:00
done
2011-12-22 14:46:32 +00:00
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at
rootfs generation time to install other "complementary" packages (e.g.
*-dev packages) - i.e. install all of the explicitly requested packages
and their dependencies, then get a list of the packages that were
installed, and use that list to install the complementary packages. This
has been implemented by using a list of globs which should make it
easier to extend in future.
The previous locale package installation code assumed that the locale
packages did not have any dependencies that were not already installed;
now that we are installing non-locale packages this is no longer
correct. In practice only the rpm backend actually made use of this
assumption, so it needed to be changed to call into the existing package
backend code to do the complementary package installation rather than
calling rpm directly.
This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and
also ensures that all dev/dbg packages get installed for
dev-pkgs/dbg-pkgs respectively even if the dependency chains between
those packages was not ensuring that already.
The code has also been adapted to work correctly with the new
SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable
has been added to allow specifying what extra image features should go
into the SDK (extra, because by virtue of installing all of the packages
in the image into the target part of the SDK, we already include all of
IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs".
Fixes [YOCTO #2614].
(From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-09 13:15:08 +00:00
# Install the packages, if any
sed -i '/^$/d' ${WORKDIR}/complementary_pkgs.txt
if [ -s ${WORKDIR}/complementary_pkgs.txt ]; then
echo "Installing complementary packages"
rootfs_install_packages ${WORKDIR}/complementary_pkgs.txt
fi
2011-12-22 14:46:32 +00:00
fi
# Workaround for broken shell function dependencies
if false ; then
get_split_linguas
fi
}
2013-08-24 16:01:20 +00:00
rootfs_uninstall_unneeded () {
2013-05-21 11:27:49 +00:00
if ${@base_contains("IMAGE_FEATURES", "package-management", "false", "true", d)}; then
if [ -z "$(delayed_postinsts)" ]; then
# All packages were successfully configured.
# update-rc.d, base-passwd, run-postinsts are no further use, remove them now
remove_run_postinsts=false
if [ -e ${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts ]; then
remove_run_postinsts=true
fi
2013-09-22 09:34:18 +00:00
# Remove package only if it's installed
pkgs_to_remove="update-rc.d base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
for pkg in $pkgs_to_remove; do
# regexp for pkg, to be used in grep and sed
pkg_regexp="^`echo $pkg | sed 's/\./\\\./'` "
if grep -q "$pkg_regexp" ${WORKDIR}/installed_pkgs.txt; then
rootfs_uninstall_packages $pkg
sed -i "/$pkg_regexp/d" ${WORKDIR}/installed_pkgs.txt
fi
done
2013-05-21 11:27:49 +00:00
# Need to remove rc.d files for run-postinsts by hand since opkg won't
# call postrm scripts in offline root mode.
if $remove_run_postinsts; then
update-rc.d -f -r ${IMAGE_ROOTFS} run-postinsts remove
fi
else
# Some packages were not successfully configured, save them only
# if we have run-postinsts script present. Otherwise, they're
# useless
if [ -e ${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts ]; then
save_postinsts
fi
fi
# Since no package manager is present in the image the metadata is not needed
remove_packaging_data_files
fi
}
2011-09-03 12:53:42 +00:00
# set '*' as the root password so the images
2006-11-21 23:21:06 +00:00
# can decide if they want it or not
zap_root_password () {
sed 's%^root:[^:]*:%root:*:%' < ${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new
2008-05-21 20:16:49 +00:00
mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd
2006-11-21 23:21:06 +00:00
}
2013-01-16 17:00:12 +00:00
# allow dropbear/openssh to accept root logins and logins from accounts with an empty password string
ssh_allow_empty_password () {
2012-06-11 08:51:51 +00:00
if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then
2012-09-07 22:18:36 +00:00
sed -i 's#.*PermitRootLogin.*#PermitRootLogin yes#' ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config
2012-06-11 08:51:51 +00:00
sed -i 's#.*PermitEmptyPasswords.*#PermitEmptyPasswords yes#' ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config
fi
2013-01-16 17:00:12 +00:00
if [ -e ${IMAGE_ROOTFS}${sbindir}/dropbear ] ; then
if grep -q DROPBEAR_EXTRA_ARGS ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear 2>/dev/null ; then
if ! grep -q "DROPBEAR_EXTRA_ARGS=.*-B" ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear ; then
sed -i 's/^DROPBEAR_EXTRA_ARGS="*\([^"]*\)"*/DROPBEAR_EXTRA_ARGS="\1 -B"/' ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear
fi
else
printf '\nDROPBEAR_EXTRA_ARGS="-B"\n' >> ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear
fi
fi
2012-06-11 08:51:51 +00:00
}
2013-05-23 04:43:33 +00:00
# Enable postinst logging if debug-tweaks is enabled
postinst_enable_logging () {
mkdir -p ${IMAGE_ROOTFS}${sysconfdir}/default
echo "POSTINST_LOGGING=1" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
echo "LOGFILE=${POSTINST_LOGFILE}" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
}
2006-11-21 23:21:06 +00:00
# Turn any symbolic /sbin/init link into a file
remove_init_link () {
if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
LINKFILE=${IMAGE_ROOTFS}`readlink ${IMAGE_ROOTFS}/sbin/init`
rm ${IMAGE_ROOTFS}/sbin/init
cp $LINKFILE ${IMAGE_ROOTFS}/sbin/init
fi
}
2007-01-08 21:07:10 +00:00
make_zimage_symlink_relative () {
if [ -L ${IMAGE_ROOTFS}/boot/zImage ]; then
(cd ${IMAGE_ROOTFS}/boot/ && for i in `ls zImage-* | sort`; do ln -sf $i zImage; done)
fi
}
2008-11-10 21:39:34 +00:00
write_image_manifest () {
rootfs_${IMAGE_PKGTYPE}_write_manifest
2012-02-29 05:41:16 +00:00
if [ -n "${IMAGE_LINK_NAME}" ]; then
rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest
ln -s ${IMAGE_NAME}.rootfs.manifest ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest
fi
2008-11-10 21:39:34 +00:00
}
2007-09-01 15:25:40 +00:00
# Make login manager(s) enable automatic login.
# Useful for devices where we do not want to log in at all (e.g. phones)
set_image_autologin () {
sed -i 's%^AUTOLOGIN=\"false"%AUTOLOGIN="true"%g' ${IMAGE_ROOTFS}/etc/sysconfig/gpelogin
}
2007-09-02 11:08:01 +00:00
# Can be use to create /etc/timestamp during image construction to give a reasonably
# sane default time setting
rootfs_update_timestamp () {
2012-02-24 10:25:30 +00:00
date -u +%4Y%2m%2d%2H%2M >${IMAGE_ROOTFS}/etc/timestamp
2007-09-02 11:08:01 +00:00
}
2007-09-01 15:25:40 +00:00
2008-11-10 16:21:10 +00:00
# Prevent X from being started
rootfs_no_x_startup () {
if [ -f ${IMAGE_ROOTFS}/etc/init.d/xserver-nodm ]; then
chmod a-x ${IMAGE_ROOTFS}/etc/init.d/xserver-nodm
fi
}
2009-08-28 16:11:57 +00:00
rootfs_trim_schemas () {
for schema in ${IMAGE_ROOTFS}/etc/gconf/schemas/*.schemas
do
# Need this in case no files exist
if [ -e $schema ]; then
2011-04-20 22:24:51 +00:00
oe-trim-schemas $schema > $schema.new
2012-07-11 17:33:43 +00:00
mv $schema.new $schema
2009-08-28 16:11:57 +00:00
fi
done
}
2013-09-11 09:42:44 +00:00
# Make any absolute links in a sysroot relative
rootfs_sysroot_relativelinks () {
sysroot-relativelinks.py ${SDK_OUTPUT}/${SDKTARGETSYSROOT}
}
2010-11-04 11:34:12 +00:00
EXPORT_FUNCTIONS zap_root_password remove_init_link do_rootfs make_zimage_symlink_relative set_image_autologin rootfs_update_timestamp rootfs_no_x_startup
2006-11-21 23:21:06 +00:00
2011-10-06 22:09:49 +00:00
do_fetch[noexec] = "1"
do_unpack[noexec] = "1"
do_patch[noexec] = "1"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install[noexec] = "1"
do_populate_sysroot[noexec] = "1"
do_package[noexec] = "1"
2013-01-23 14:27:33 +00:00
do_packagedata[noexec] = "1"
2011-10-06 22:09:49 +00:00
do_package_write_ipk[noexec] = "1"
do_package_write_deb[noexec] = "1"
do_package_write_rpm[noexec] = "1"
addtask rootfs before do_build
2013-08-22 23:04:27 +00:00
# Allow the kernel to be repacked with the initramfs and boot image file as a single file
do_bundle_initramfs[depends] += "virtual/kernel:do_bundle_initramfs"
do_bundle_initramfs[nostamp] = "1"
do_bundle_initramfs[noexec] = "1"
do_bundle_initramfs () {
:
}
addtask bundle_initramfs after do_rootfs