From 29d6678fd546377459ef75cf54abeef5b969b5cf Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 27 Aug 2010 15:14:24 +0100 Subject: Major layout change to the packages directory Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie --- meta/recipes-devtools/prelink/prelink/prelink.conf | 18 ++++++++ .../prelink/prelink/prelink.cron.daily | 40 +++++++++++++++++ .../prelink/prelink/prelink.default | 22 ++++++++++ meta/recipes-devtools/prelink/prelink_git.bb | 50 ++++++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 meta/recipes-devtools/prelink/prelink/prelink.conf create mode 100644 meta/recipes-devtools/prelink/prelink/prelink.cron.daily create mode 100644 meta/recipes-devtools/prelink/prelink/prelink.default create mode 100644 meta/recipes-devtools/prelink/prelink_git.bb (limited to 'meta/recipes-devtools/prelink') diff --git a/meta/recipes-devtools/prelink/prelink/prelink.conf b/meta/recipes-devtools/prelink/prelink/prelink.conf new file mode 100644 index 0000000000..c5a4f4adc3 --- /dev/null +++ b/meta/recipes-devtools/prelink/prelink/prelink.conf @@ -0,0 +1,18 @@ +# This config file contains a list of directories both with binaries +# and libraries prelink should consider by default. +# If a directory name is prefixed with `-l ', the directory hierarchy +# will be walked as long as filesystem boundaries are not crossed. +# If a directory name is prefixed with `-h ', symbolic links in a +# directory hierarchy are followed. +-l /usr/local/sbin +-l /sbin +-l /usr/sbin +-l /usr/local/bin +-l /bin +-l /usr/bin +-l /usr/X11R6/bin +-l /usr/games +-l /usr/local/lib +-l /lib +-l /usr/lib +-l /usr/X11R6/lib diff --git a/meta/recipes-devtools/prelink/prelink/prelink.cron.daily b/meta/recipes-devtools/prelink/prelink/prelink.cron.daily new file mode 100644 index 0000000000..0b3c07322c --- /dev/null +++ b/meta/recipes-devtools/prelink/prelink/prelink.cron.daily @@ -0,0 +1,40 @@ +#!/bin/sh + +. /etc/default/prelink + +renice +19 -p $$ >/dev/null 2>&1 + +if [ "$PRELINKING" != yes ]; then + if [ -f /etc/prelink.cache ]; then + echo /usr/sbin/prelink -uav > /var/log/prelink.log + /usr/sbin/prelink -uav >> /var/log/prelink.log 2>&1 + rm -f /etc/prelink.cache + # Restart init if needed + [ -n "$(find `ldd /sbin/init | awk '{ print $3 }'` /sbin/init -ctime -1 2>/dev/null )" ] && /sbin/telinit u + fi + exit 0 +fi + +if [ ! -f /etc/prelink.cache -o -f /var/lib/misc/prelink.force ] \ + || grep -q '^prelink-ELF0.[0-2]' /etc/prelink.cache; then + # If cache does not exist or is from older prelink versions or + # if we were asked to explicitely, force full prelinking + rm -f /etc/prelink.cache /var/lib/misc/prelink.force + PRELINK_OPTS="$PRELINK_OPTS -f" + date > /var/lib/misc/prelink.full +elif [ -n "$PRELINK_FULL_TIME_INTERVAL" \ + -a "`find /var/lib/misc/prelink.full -mtime -${PRELINK_FULL_TIME_INTERVAL} 2>/dev/null`" \ + = /var/lib/misc/prelink.full ]; then + # If prelink without -q has been run in the last + # PRELINK_FULL_TIME_INTERVAL days, just use quick mode + PRELINK_OPTS="$PRELINK_OPTS -q" +else + date > /var/lib/misc/prelink.full +fi + +echo /usr/sbin/prelink -av $PRELINK_OPTS > /var/log/prelink.log +/usr/sbin/prelink -av $PRELINK_OPTS >> /var/log/prelink.log 2>&1 +# Restart init if needed +[ -n "$(find `ldd /sbin/init | awk '{ print $3 }'` /sbin/init -ctime -1 2>/dev/null )" ] && /sbin/telinit u + +exit 0 diff --git a/meta/recipes-devtools/prelink/prelink/prelink.default b/meta/recipes-devtools/prelink/prelink/prelink.default new file mode 100644 index 0000000000..901258ed2a --- /dev/null +++ b/meta/recipes-devtools/prelink/prelink/prelink.default @@ -0,0 +1,22 @@ +# Set this to no to disable prelinking altogether +# or to yes to enable it. +# (if you change this from yes to no prelink -ua +# will be run next night to undo prelinking) +PRELINKING=unknown + +# Options to pass to prelink +# -m Try to conserve virtual memory by allowing overlapping +# assigned virtual memory slots for libraries which +# never appear together in one binary +# -R Randomize virtual memory slot assignments for libraries. +# This makes it slightly harder for various buffer overflow +# attacks, since library addresses will be different on each +# host using -R. +PRELINK_OPTS=-mR + +# How often should full prelink be run (in days) +# Normally, prelink will be run in quick mode, every +# $PRELINK_FULL_TIME_INTERVAL days it will be run +# in normal mode. Comment this line out if prelink +# should be run in normal mode always. +PRELINK_FULL_TIME_INTERVAL=14 diff --git a/meta/recipes-devtools/prelink/prelink_git.bb b/meta/recipes-devtools/prelink/prelink_git.bb new file mode 100644 index 0000000000..06078ed68b --- /dev/null +++ b/meta/recipes-devtools/prelink/prelink_git.bb @@ -0,0 +1,50 @@ +SECTION = "devel" +# Need binutils for libiberty.a +DEPENDS = "elfutils binutils" +DESCRIPTION = " The prelink package contains a utility which modifies ELF shared libraries \ +and executables, so that far fewer relocations need to be resolved at \ +runtime and thus programs come up faster." +LICENSE = "GPLv2" +PV = "1.0+git${SRCPV}" +PR = "r0" + +SRC_URI = "git://git.pokylinux.org/prelink-cross.git;protocol=git \ + file://prelink.conf \ + file://prelink.cron.daily \ + file://prelink.default" + +TARGET_OS_ORIG := "${TARGET_OS}" +OVERRIDES_append = ":${TARGET_OS_ORIG}" + +S = "${WORKDIR}/git/trunk" + +inherit autotools + +BBCLASSEXTEND = "native" + +EXTRA_OECONF = "--disable-selinux --with-pkgversion=${PV}-${PR} \ + --with-bugurl=http://bugzilla.pokylinux.org/" + +do_install_append () { + install -d ${D}${sysconfdir}/cron.daily ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/prelink.conf ${D}${sysconfdir}/prelink.conf + install -m 0644 ${WORKDIR}/prelink.cron.daily ${D}${sysconfdir}/cron.daily/prelink + install -m 0644 ${WORKDIR}/prelink.default ${D}${sysconfdir}/default/prelink +} + +pkg_postinst_prelink() { +#!/bin/sh + +if [ "x$D" != "x" ]; then + exit 1 +fi + +prelink -a +} + +pkg_postrm_prelink() { +#!/bin/sh + +prelink -au +} + -- cgit v1.2.3-54-g00ecf