aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/update-rc.d
diff options
context:
space:
mode:
authorLaurentiu Palcu <laurentiu.palcu@intel.com>2013-01-16 13:58:55 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-16 12:07:55 +0000
commit4b63e73422ea25aba1bde0beddb02bc04948e13c (patch)
treed044c531693c1962c9fb8291dfaa65c048df3887 /meta/recipes-core/update-rc.d
parent0ada16fe509d9a8608c05d16666243c8ebe4d3b3 (diff)
downloadopenembedded-core-contrib-4b63e73422ea25aba1bde0beddb02bc04948e13c.tar.gz
update-rc.d: check also that symlinks are valid
Running: update-rc.d -r /path/to/target/rootfs basename defaults at do_rootfs time in package postinstall stage, when /path/to/target/rootfs/etc/init.d/basename is a symlink and points to some path on target (for example: /etc/init.d/basename.some_package), would fail and the postinstall execution would be postponed for first boot, on target. This patch adds the posibility to verify whether the file the symlink points to actually exists in the target rootfs. [YOCTO #3716] Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/update-rc.d')
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch53
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d_0.7.bb6
2 files changed, 57 insertions, 2 deletions
diff --git a/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch
new file mode 100644
index 0000000000..4476e9101d
--- /dev/null
+++ b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch
@@ -0,0 +1,53 @@
+Check if symlinks are valid
+
+When using root option and $initd/$bn is a symlink, the script would fail because
+the symlink points to a path on target. For example:
+
+/path/to/target/rootfs/etc/init.d/syslog -> /etc/init.d/syslog.busybox
+
+Hence, [ -f /path/to/target/rootfs/etc/init.d/syslog ] condition would return
+false.
+
+This patch adds the posibility to check whether the file the symlink points to
+actually exists in rootfs path and then continue.
+
+Upstream-Status: Pending
+
+Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
+
+Index: git/update-rc.d
+===================================================================
+--- git.orig/update-rc.d 2013-01-16 12:12:58.349814356 +0200
++++ git/update-rc.d 2013-01-16 13:02:42.490864939 +0200
+@@ -147,13 +147,29 @@
+ bn=$1
+ shift
+
++sn=$initd/$bn
++if [ -L "$sn" -a -n $root ]; then
++ readlink=$(which readlink)
++
++ if [ -n $readlink ]; then
++ sn=$($readlink "$sn")
++ case "$sn" in
++ /*) sn=${root}${sn} ;;
++ *) sn=$initd/$sn ;;
++ esac
++ else
++ echo "update-rc.d: readlink tool not present, cannot check whether \
++ $sn symlink points to a valid file." >&2
++ fi
++fi
++
+ if [ $1 != "remove" ]; then
+- if [ ! -f "$initd/$bn" ]; then
++ if [ ! -f "$sn" ]; then
+ echo "update-rc.d: $initd/$bn: file does not exist" >&2
+ exit 1
+ fi
+ else
+- if [ -f "$initd/$bn" ]; then
++ if [ -f "$sn" ]; then
+ if [ $force -eq 1 ]; then
+ echo "update-rc.d: $initd/$bn exists during rc.d purge (continuing)" >&2
+ else
diff --git a/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb b/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
index 0aac5fa013..bfcbd97bcd 100644
--- a/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
+++ b/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
@@ -5,13 +5,15 @@ SECTION = "base"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=148a48321b10eb37c1fa3ee02b940a75"
-PR = "r4"
+PR = "r5"
# Revision corresponding to tag update-rc.d_0.7
SRCREV = "eca680ddf28d024954895f59a241a622dd575c11"
SRC_URI = "git://github.com/philb/update-rc.d.git;protocol=git \
- file://add-verbose.patch;"
+ file://add-verbose.patch \
+ file://check-if-symlinks-are-valid.patch \
+ "
S = "${WORKDIR}/git"
light .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
# CONF_VERSION is increased each time build/conf/ changes incompatibly
CONF_VERSION = "1"

# Uncomment and change to cache the files Poky downloads in an alternative
# location, default it ${TOPDIR}/downloads
#DL_DIR ?= "${TOPDIR}/downloads"
# Uncomment and change to cache Poky's built staging output in an alternative
# location, default ${TOPDIR}/sstate-cache
#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

# Uncomment and set to allow bitbake to execute multiple tasks at once.
# For a quadcore, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
# be appropriate.
# BB_NUMBER_THREADS = "4"
# Also, make can be passed flags so it run parallel threads e.g.:
# PARALLEL_MAKE = "-j 4"

# The machine to target
MACHINE ?= "qemux86"

# Other supported machines
#MACHINE ?= "qemuarm"
#MACHINE ?= "qemux86-64"
#MACHINE ?= "atom-pc"
#MACHINE ?= "c7x0"
#MACHINE ?= "akita"
#MACHINE ?= "spitz"
#MACHINE ?= "nokia770"
#MACHINE ?= "nokia800"
#MACHINE ?= "fic-gta01"
#MACHINE ?= "bootcdx86"
#MACHINE ?= "cm-x270"
#MACHINE ?= "em-x270"
#MACHINE ?= "htcuniversal"
#MACHINE ?= "mx31ads"
#MACHINE ?= "mx31litekit"
#MACHINE ?= "mx31phy"
#MACHINE ?= "zylonite"
#MACHINE ?= "igep0020"
#MACHINE ?= "igep0030"

DISTRO ?= "poky"
# For bleeding edge / experimental / unstable package versions
# DISTRO ?= "poky-bleeding"

BBMASK = ""

# EXTRA_IMAGE_FEATURES allows extra packages to be added to the generated images 
# (Some of these are automatically added to certain image types)
# "dbg-pkgs"     - add -dbg packages for all installed packages
#                  (adds symbol information for debugging/profiling)
# "dev-pkgs"     - add -dev packages for all installed packages
#                  (useful if you want to develop against libs in the image)
# "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
# "tools-debug"    - add debugging tools (gdb, strace)
# "tools-profile"  - add profiling tools (oprofile, exmap, lttng valgrind (x86 only))
# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
# "debug-tweaks"   - make an image for suitable of development
#                    e.g. ssh root access has a blank password
# There are other application targets too, see meta/classes/poky-image.bbclass 
# and meta/packages/tasks/task-poky.bb for more details.

EXTRA_IMAGE_FEATURES = "tools-debug tools-profile tools-testapps debug-tweaks"

# The default IMAGE_FEATURES above are too large for the mx31phy and 
# c700/c750 machines which have limited space. The code below limits
# the default features for those machines.
EXTRA_IMAGE_FEATURES_c7x0 = "tools-testapps debug-tweaks"
EXTRA_IMAGE_FEATURES_mx31phy = "debug-tweaks"
EXTRA_IMAGE_FEATURES_mx31ads = "tools-testapps debug-tweaks"

# A list of packaging systems used in generated images
# The first package type listed will be used for rootfs generation
# include 'package_deb' for debs
# include 'package_ipk' for ipks
# include 'package_rpm' for rpms
#PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
PACKAGE_CLASSES ?= "package_rpm package_ipk"

# A list of additional classes to use when building the system
# include 'image-prelink' in order to prelink the filesystem image
# include 'image-swab' to perform host system intrusion detection
USER_CLASSES ?= "image-prelink"

# POKYMODE controls the characteristics of the generated packages/images by
# telling poky which type of toolchain to use.
#
# Options include several different EABI combinations and a compatibility 
# mode for the OABI mode poky previously used. 
#
# The default is "eabi"
# Use "oabi" for machines with kernels < 2.6.18 on ARM for example.
# Use "external-MODE" to use the precompiled external toolchains where MODE
# is the type of external toolchain to use e.g. eabi.
# POKYMODE = "external-eabi"

# Uncomment this to specify where BitBake should create its temporary files.
# Note that a full build of everything in OpenEmbedded will take GigaBytes of hard
# disk space, so make sure to free enough space. The default TMPDIR is
# <build directory>/tmp
#TMPDIR = "${POKYBASE}/build/tmp"


# Uncomment this if you are using the Openedhand provided qemu deb - see README
# ASSUME_PROVIDED += "qemu-native"

# Comment this out if you don't have a 3.x gcc version available and wish
# poky to build one for you. The 3.x gcc is required to build qemu-native.
# ASSUME_PROVIDED += "gcc3-native"

# Uncomment these two if you want BitBake to build images useful for debugging.
# DEBUG_BUILD = "1"
# INHIBIT_PACKAGE_STRIP = "1"

# Uncomment these to build a package such that you can use gprof to profile it.
# NOTE: This will only work with 'linux' targets, not
# 'linux-uclibc', as uClibc doesn't provide the necessary
# object files.  Also, don't build glibc itself with these
# flags, or it'll fail to build.
#
# PROFILE_OPTIMIZATION = "-pg"
# SELECTED_OPTIMIZATION = "${PROFILE_OPTIMIZATION}"
# LDFLAGS =+ "-pg"

# Uncomment this if you want BitBake to emit debugging output
# BBDEBUG = "yes"
# Uncomment this if you want BitBake to emit the log if a build fails.
BBINCLUDELOGS = "yes"

# Set this if you wish to make pkgconfig libraries from your system available 
# for native builds. Combined with extra ASSUME_PROVIDEDs this can allow 
# native builds of applications like oprofileui-native (unsupported feature).
#EXTRA_NATIVE_PKGCONFIG_PATH = ":/usr/lib/pkgconfig"
#ASSUME_PROVIDED += "gtk+-native libglade-native"

ENABLE_BINARY_LOCALE_GENERATION = "1"

# The architecture to build SDK items for, by setting this you can build SDK
# packages for architectures other than the host i.e. building i586 packages
# on an x86_64 host.
# Supported values are i586 and x86_64
#SDKMACHINE ?= "i586"

# Poky can try and fetch packaged-staging packages from a http, https or ftp
# mirror. Set this variable to the root of a pstage directory on a server.
#SSTATE_MIRRORS ?= "\
#file://.* http://someserver.tld/share/sstate/ \n \
#file://.* file:///some/local/dir/sstate/"

# Set IMAGETEST to qemu if you want to build testcases and start 
# testing in qemu after do_rootfs.
#IMAGETEST = "qemu"

# By default test cases in sanity suite will be ran. If you want to run other 
# test suite or specific test case(e.g. bat or boot test case under sanity suite), 
# list them like following.
#TEST_SCEN = "sanity bat sanity:boot"

# Set GLIBC_GENERATE_LOCALES to the locales you wish to generate should you not
# wish to perform the time-consuming step of generating all LIBC locales.
# WARNING: this may break localisation!
#GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"

# Default to not build 32 bit libs on 64 bit systems, comment this
# out if that is desired
NO32LIBS = "1"