From d691d2b8f6ef2efaa87b1434b15c9e051bd99acf Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 19 Nov 2010 22:01:08 +0100 Subject: [PATCH] buildsystem: big rework & cleanup - PART-1: split functions from 'config/path' to an seperate file 'config/functions', rework and cleanup some build scripts, remove references to $TARGET_PLATFORM, add support for more then one downloadurl for $PKG_URL (partially done), remove support for: $PKG_DIR/arch, $PKG_DIR/platform, $PKG_DIR/url files, remove support for *.diff patches, create download-stampfiles in sources/$PKG_NAME, create md5 files after download, add support to download all sources at once with './scripts/get' Signed-off-by: Stephan Raue --- config/functions | 112 ++++++++++++++ config/path | 145 ++---------------- packages/drivers/rtl8192se/need_unpack | 2 - packages/linux/need_unpack | 1 - packages/multimedia/crystalhd/need_unpack | 2 - packages/toolchain/devel/ccache/meta | 2 +- .../x11/driver/xf86-video-nvidia/need_unpack | 2 - scripts/build | 14 +- scripts/create_addon | 11 +- scripts/extract | 13 +- scripts/get | 71 ++++----- scripts/install | 12 +- scripts/unpack | 10 +- 13 files changed, 179 insertions(+), 218 deletions(-) create mode 100644 config/functions diff --git a/config/functions b/config/functions new file mode 100644 index 0000000000..45daaefd9c --- /dev/null +++ b/config/functions @@ -0,0 +1,112 @@ +setup_toolchain() { + if [ "$1" = "--optimize" ]; then + OPTIMIZE=yes + shift + fi + + if [ "$1" = target ]; then + export CC=$TARGET_CC + export CXX=$TARGET_CXX + export LD=$TARGET_LD + export AS=$TARGET_AS + export AR=$TARGET_AR + export NM=$TARGET_NM + export RANLIB=$TARGET_RANLIB + export OBJCOPY=$TARGET_OBJCOPY + export STRIP=$TARGET_STRIP + export CPPFLAGS="$TARGET_CPPFLAGS" + export CFLAGS="$TARGET_CFLAGS" + export CXXFLAGS="$TARGET_CXXFLAGS" + export LDFLAGS="$TARGET_LDFLAGS" + export PKG_CONFIG_PATH="$TARGET_PKG_CONFIG_PATH" + export PKG_CONFIG_LIBDIR="$TARGET_PKG_CONFIG_LIBDIR" + export PKG_CONFIG_SYSROOT_DIR="$TARGET_PKG_CONFIG_SYSROOT_DIR" + + # set CMAKE configfile for target + export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$TARGET_NAME.conf + + elif [ "$1" = host ]; then + export AWK=$HOST_AWK + export CC=$HOST_CC + export CXX=$HOST_CXX + export LD=$HOST_LD + export AS=$HOST_AS + export AR=$HOST_AR + export NM=$HOST_NM + export RANLIB=$HOST_RANLIB + export OBJCOPY=$HOST_OBJCOPY + export STRIP=$HOST_STRIP + export CPPFLAGS="$HOST_CPPFLAGS" + export CFLAGS="$HOST_CFLAGS" + export CXXFLAGS="$HOST_CXXFLAGS" + export LDFLAGS="$HOST_LDFLAGS" + export PKG_CONFIG_PATH="$HOST_PKG_CONFIG_PATH" + export PKG_CONFIG_LIBDIR="$HOST_PKG_CONFIG_LIBDIR" + export PKG_CONFIG_SYSROOT_DIR="$HOST_PKG_CONFIG_SYSROOT_DIR" + + # set CMAKE configfile for host + export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$HOST_NAME.conf + + fi +} + +kernel_path() { + ls -d $ROOT/$BUILD/linux-[0-9]* +} + +tolower(){ + echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz +} + +require_eglibc() { + if [ "$TARGET_LIBC" != eglibc ]; then + echo "$1 requires eglibc, aborting." + exit 1 + fi +} + +require_cxx() { + if [ "$TOOLCHAIN_CXX" != yes ]; then + echo "$1 requires C++ toolchain support, aborting." + exit 1 + fi +} + +xorg_drv_configure_prepend() { + incdir=${SYSROOT_PREFIX}/usr/include/xorg + for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do + incfile="$incdir/$f" + if [ -f "$incfile" ]; then + p=`echo "$incfile" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'` + eval "export ac_cv_file_$p=yes" + fi + done +} + +add_user() { + # Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell" + mkdir -p ${INSTALL}/etc + touch ${INSTALL}/etc/passwd + if [ -z "`grep "$1:" ${INSTALL}/etc/passwd`" ]; then + echo "$1:$2:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd + fi +} + +add_group() { + # Usage: add_group "groupname" "groupid" ("members") + mkdir -p ${INSTALL}/etc + touch ${INSTALL}/etc/group + if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then + echo "$1:x:$2:$3" >> ${INSTALL}/etc/group + fi +} + +get_version() { + if [ "$OPENELEC_VERSION" = devel -o "$OPENELEC_VERSION" = debug ]; then + BUILD_DATE=`date +%Y%m%d` + GIT_BUILD=`git log --pretty=format:'' | wc -l` + OPENELEC_VERSION=$OPENELEC_VERSION-$BUILD_DATE-r$GIT_BUILD + fi + + TARGET_VERSION="$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION" +} diff --git a/config/path b/config/path index 73d6d10347..06624152e3 100644 --- a/config/path +++ b/config/path @@ -1,16 +1,5 @@ set -e -# setup initial directorys - CONFIG=config - SCRIPTS=scripts - PACKAGES=packages - SOURCES=sources - BUILD_BASE=build - TARGET=target - ADDONS=addons - -test -f config/target-$TARGET_PLATFORM && . config/target-$TARGET_PLATFORM - # determine architecture's family case $TARGET_ARCH in i386) @@ -35,12 +24,20 @@ if [ -z "$TARGET_CPU" ]; then esac fi +# setup initial directorys + CONFIG=config + SCRIPTS=scripts + PACKAGES=packages + SOURCES=sources + BUILD_BASE=build + TARGET=target + ADDONS=addons + HOST_NAME=`$SCRIPTS/configtools/config.guess` TARGET_NAME=$TARGET_FAMILY-openelec-linux-gnu OPENELEC_SRC=http://sources.openelec.tv/src/$OPENELEC_VERSION BUILD=$BUILD_BASE.OpenELEC-$PROJECT.$TARGET_ARCH.$OPENELEC_VERSION -[ -n "$TARGET_PLATFORM" ] && BUILD=$BUILD.$TARGET_PLATFORM TARGET_IMG=$ROOT/$TARGET TARGET_ADDONS="$TARGET_IMG/$ADDONS/$ADDON_PATH" ADDON_BUILD="$BUILD/$ADDONS/$1" @@ -212,57 +209,10 @@ if [ -f $ROOT/$TOOLCHAIN/bin/autoconf ]; then export AUTORECONF="$ROOT/$TOOLCHAIN/bin/autoreconf -v -f -i -I $ACLOCAL_DIR" fi -setup_toolchain() { - if [ "$1" = "--optimize" ]; then - OPTIMIZE=yes - shift - fi +VERSION_SUFFIX=$TARGET_ARCH - if [ "$1" = target ]; then - export CC=$TARGET_CC - export CXX=$TARGET_CXX - export LD=$TARGET_LD - export AS=$TARGET_AS - export AR=$TARGET_AR - export NM=$TARGET_NM - export RANLIB=$TARGET_RANLIB - export OBJCOPY=$TARGET_OBJCOPY - export STRIP=$TARGET_STRIP - export CPPFLAGS="$TARGET_CPPFLAGS" - export CFLAGS="$TARGET_CFLAGS" - export CXXFLAGS="$TARGET_CXXFLAGS" - export LDFLAGS="$TARGET_LDFLAGS" - export PKG_CONFIG_PATH="$TARGET_PKG_CONFIG_PATH" - export PKG_CONFIG_LIBDIR="$TARGET_PKG_CONFIG_LIBDIR" - export PKG_CONFIG_SYSROOT_DIR="$TARGET_PKG_CONFIG_SYSROOT_DIR" +. config/functions - # set CMAKE configfile for target - export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$TARGET_NAME.conf - - elif [ "$1" = host ]; then - export AWK=$HOST_AWK - export CC=$HOST_CC - export CXX=$HOST_CXX - export LD=$HOST_LD - export AS=$HOST_AS - export AR=$HOST_AR - export NM=$HOST_NM - export RANLIB=$HOST_RANLIB - export OBJCOPY=$HOST_OBJCOPY - export STRIP=$HOST_STRIP - export CPPFLAGS="$HOST_CPPFLAGS" - export CFLAGS="$HOST_CFLAGS" - export CXXFLAGS="$HOST_CXXFLAGS" - export LDFLAGS="$HOST_LDFLAGS" - export PKG_CONFIG_PATH="$HOST_PKG_CONFIG_PATH" - export PKG_CONFIG_LIBDIR="$HOST_PKG_CONFIG_LIBDIR" - export PKG_CONFIG_SYSROOT_DIR="$HOST_PKG_CONFIG_SYSROOT_DIR" - - # set CMAKE configfile for host - export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$HOST_NAME.conf - - fi -} setup_toolchain target SILENT_OUT=3 @@ -276,76 +226,3 @@ else fi INDENT_SIZE=4 -VERSION_SUFFIX=$TARGET_ARCH -[ -n "$TARGET_PLATFORM" ] && VERSION_SUFFIX=$TARGET_PLATFORM - -# read generic personal options if available - if [ -f ~/.openelec/options ]; then - . ~/.openelec/options - fi - -# read project based personal options if available - if [ -f ~/.openelec/$PROJECT/options ]; then - . ~/.openelec/$PROJECT/options - fi - -kernel_path() { - ls -d $ROOT/$BUILD/linux-[0-9]* -} - -tolower(){ - echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz -} - -require_eglibc() { - if [ "$TARGET_LIBC" != eglibc ]; then - echo "$1 requires eglibc, aborting." - exit 1 - fi -} - -require_cxx() { - if [ "$TOOLCHAIN_CXX" != yes ]; then - echo "$1 requires C++ toolchain support, aborting." - exit 1 - fi -} - -xorg_drv_configure_prepend() { - incdir=${SYSROOT_PREFIX}/usr/include/xorg - for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do - incfile="$incdir/$f" - if [ -f "$incfile" ]; then - p=`echo "$incfile" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'` - eval "export ac_cv_file_$p=yes" - fi - done -} - -add_user() { - # Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell" - mkdir -p ${INSTALL}/etc - touch ${INSTALL}/etc/passwd - if [ -z "`grep "$1:" ${INSTALL}/etc/passwd`" ]; then - echo "$1:$2:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd - fi -} - -add_group() { - # Usage: add_group "groupname" "groupid" ("members") - mkdir -p ${INSTALL}/etc - touch ${INSTALL}/etc/group - if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then - echo "$1:x:$2:$3" >> ${INSTALL}/etc/group - fi -} - -get_version() { - if [ "$OPENELEC_VERSION" = devel -o "$OPENELEC_VERSION" = debug ]; then - BUILD_DATE=`date +%Y%m%d` - GIT_BUILD=`git log --pretty=format:'' | wc -l` - OPENELEC_VERSION=$OPENELEC_VERSION-$BUILD_DATE-r$GIT_BUILD - fi - - TARGET_VERSION="$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION" -} diff --git a/packages/drivers/rtl8192se/need_unpack b/packages/drivers/rtl8192se/need_unpack index b60fcc137e..fcea9b102c 100755 --- a/packages/drivers/rtl8192se/need_unpack +++ b/packages/drivers/rtl8192se/need_unpack @@ -5,9 +5,7 @@ STAMP=$STAMPS/$1/unpack test $PKG_DIR/config/linux.$TARGET_ARCH.conf -nt $STAMP -o \ - $PKG_DIR/config/linux.$TARGET_PLATFORM.conf -nt $STAMP -o \ $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf -nt $STAMP -o \ - $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_PLATFORM.conf -nt $STAMP -o \ $PKG_DIR/url -nt $STAMP -o \ $PKG_DIR/meta -nt $STAMP && rm -f $STAMP diff --git a/packages/linux/need_unpack b/packages/linux/need_unpack index 4f5f0da275..4ae67178bc 100755 --- a/packages/linux/need_unpack +++ b/packages/linux/need_unpack @@ -5,6 +5,5 @@ STAMP=$STAMPS/$1/unpack test $PKG_DIR/config/$1.$TARGET_ARCH.conf -nt $STAMP && rm -f $STAMP -test $PKG_DIR/config/$1.$TARGET_PLATFORM.conf -nt $STAMP && rm -f $STAMP exit 0 diff --git a/packages/multimedia/crystalhd/need_unpack b/packages/multimedia/crystalhd/need_unpack index bfae889a4c..54c6c3621e 100755 --- a/packages/multimedia/crystalhd/need_unpack +++ b/packages/multimedia/crystalhd/need_unpack @@ -5,9 +5,7 @@ STAMP=$STAMPS/$1/unpack test $PKG_DIR/config/linux.$TARGET_ARCH.conf -nt $STAMP -o \ - $PKG_DIR/config/linux.$TARGET_PLATFORM.conf -nt $STAMP -o \ $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf -nt $STAMP -o \ - $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_PLATFORM.conf -nt $STAMP -o \ $PKG_DIR/url -nt $STAMP && rm -f $STAMP exit 0 diff --git a/packages/toolchain/devel/ccache/meta b/packages/toolchain/devel/ccache/meta index d6fc402577..4a4f6af15f 100644 --- a/packages/toolchain/devel/ccache/meta +++ b/packages/toolchain/devel/ccache/meta @@ -4,7 +4,7 @@ PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://ccache.samba.org/" -PKG_URL="http://samba.org/ftp/ccache/$PKG_NAME-$PKG_VERSION.tar.bz2" +PKG_URL="http://samba.org/ftp/ccache/$PKG_NAME-$PKG_VERSION.tar.bz2 http://www.eu.kernel.org/pub/linux/utils/kernel/hotplug/udev-164.tar.bz2 http://www.eu.kernel.org/pub/linux/utils/kernel/hotplug/udev-163.tar.bz2" PKG_DEPENDS="" PKG_BUILD_DEPENDS="" PKG_PRIORITY="optional" diff --git a/packages/x11/driver/xf86-video-nvidia/need_unpack b/packages/x11/driver/xf86-video-nvidia/need_unpack index bfae889a4c..54c6c3621e 100755 --- a/packages/x11/driver/xf86-video-nvidia/need_unpack +++ b/packages/x11/driver/xf86-video-nvidia/need_unpack @@ -5,9 +5,7 @@ STAMP=$STAMPS/$1/unpack test $PKG_DIR/config/linux.$TARGET_ARCH.conf -nt $STAMP -o \ - $PKG_DIR/config/linux.$TARGET_PLATFORM.conf -nt $STAMP -o \ $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf -nt $STAMP -o \ - $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_PLATFORM.conf -nt $STAMP -o \ $PKG_DIR/url -nt $STAMP && rm -f $STAMP exit 0 diff --git a/scripts/build b/scripts/build index a404346037..09f1c8fe84 100755 --- a/scripts/build +++ b/scripts/build @@ -7,14 +7,9 @@ if [ -z "$1" ]; then exit 1 fi -if [ -f $PKG_DIR/arch ]; then - grep -q "$TARGET_ARCH" "$PKG_DIR/arch" || exit 0 - grep -q "\-$TARGET_ARCH" "$PKG_DIR/arch" && exit 0 -fi - -if [ -f $PKG_DIR/platform ]; then - grep -q "$TARGET_PLATFORM" "$PKG_DIR/platform" || exit 0 - grep -q "\-$TARGET_PLATFORM" "$PKG_DIR/platform" && exit 0 +if [ -n "$PKG_ARCH" -a ! "$PKG_ARCH" = "any" ]; then + echo "$PKG_ARCH" | grep -q "$TARGET_ARCH" || exit 0 + echo "$PKG_ARCH" | grep -q "\-$TARGET_ARCH" && exit 0 fi unset INSTALL @@ -23,9 +18,11 @@ mkdir -p $STAMPS/$1 STAMP=$STAMPS/$1/build $SCRIPTS/unpack $1 + if [ -f $STAMP -a -f $PKG_DIR/need_build ]; then $PKG_DIR/need_build $@ fi + if [ -f $STAMP -a $PKG_DIR/build -nt $STAMP ]; then rm -f $STAMP fi @@ -62,7 +59,6 @@ if [ ! -f $STAMP ]; then make -C $PKG_BUILD $1 >&$VERBOSE_OUT fi - . $PROJECT_DIR/$PROJECT/options for i in `sed -n "s/^\([^#].*\)=\".*$/\1/p" $PROJECT_DIR/$PROJECT/options | grep -v "#"`; do eval val=\$$i echo "STAMP_$i=\"$val\"" >> $STAMP diff --git a/scripts/create_addon b/scripts/create_addon index e03f1aecde..9a1c5e2a83 100755 --- a/scripts/create_addon +++ b/scripts/create_addon @@ -7,14 +7,9 @@ if [ -z "$1" ]; then exit 1 fi -if [ -f $PKG_DIR/arch ]; then - grep -q "$TARGET_ARCH" "$PKG_DIR/arch" || exit 0 - grep -q "\-$TARGET_ARCH" "$PKG_DIR/arch" && exit 0 -fi - -if [ -f $PKG_DIR/platform ]; then - grep -q "$TARGET_PLATFORM" "$PKG_DIR/platform" || exit 0 - grep -q "\-$TARGET_PLATFORM" "$PKG_DIR/platform" && exit 0 +if [ -n $PKG_ARCH -a ! "$PKG_ARCH" = "any" ]; then + echo "$PKG_ARCH" | grep -q "$TARGET_ARCH" || exit 0 + echo "$PKG_ARCH" | grep -q "\-$TARGET_ARCH" && exit 0 fi $SCRIPTS/build $@ diff --git a/scripts/extract b/scripts/extract index 189b648ace..cad9cf5ad1 100755 --- a/scripts/extract +++ b/scripts/extract @@ -10,19 +10,18 @@ fi [ -z "$PKG_URL" ] && exit 1 [ ! -d "$SOURCES/$1" -o ! -d "$3" ] && exit 1 -[ -n "$PKG_URL" ] && \ - FILES="$FILES `echo $PKG_URL | sed 's%.*/\(.*\)\$%\1%'`" +for i in $PKG_URL; do + FILE="`basename $i`" -for s in $FILES; do - case $s in + case $FILE in $2) - f="$SOURCES/$1/$s" + f="$SOURCES/$1/$FILE" if [ ! -f $f ]; then - echo "error: File $s doesn't exists in package $1 sources directory" + echo "error: File $FILE doesn't exists in package $1 sources directory" echo "have you called scripts/extract before scripts/get ?" exit 1 fi - case $s in + case $FILE in *.tar) tar xf $f -C $3 ;; diff --git a/scripts/get b/scripts/get index 366ff0bab3..7b86b16670 100755 --- a/scripts/get +++ b/scripts/get @@ -1,5 +1,5 @@ #!/bin/sh -set -x + . config/options $1 if [ -z $1 ]; then @@ -9,54 +9,47 @@ if [ -z $1 ]; then done fi -mkdir -p $STAMPS_NOARCH/$1 -STAMP=$STAMPS_NOARCH/$1/get - -# if [ -n "$PKG_URL" ]; then -# if [ -f $STAMP ]; then -# [ ! $STAMP -ot $PKG_DIR/meta ] && exit 0 -# fi -# DL="yes" -# fi +[ -z "$PKG_URL" ] && exit 0 if [ -n "$PKG_URL" ]; then - if [ -f $STAMP ]; then - [ `cat $STAMP` = "$PKG_URL" ] && exit 0 - fi - DL="yes" -fi - -if [ "$DL" = yes ]; then - $SCRIPTS/checkdeps get - - rm -f $STAMP - - printf "%${INDENT}c GET $1\n" >&$SILENT_OUT - export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) - - [ "$VERBOSE" != yes ] && WGET_OPT=-q - - mkdir -p $SOURCES/$1 - - [ -n "$PKG_URL" ] && \ - URLS="$URLS `echo $PKG_URL | sed s%GEEXBOX_SRCS%$GEEXBOX_SRCS%`" + URLS="$URLS `echo $PKG_URL | sed s%GEEXBOX_SRCS%$GEEXBOX_SRCS%`" for i in $URLS; do + PACKAGE="$SOURCES/$1/`basename $i`" + STAMP="$PACKAGE.url" + MD5SUM="$PACKAGE.md5" + + mkdir -p $SOURCES/$1 + + if [ -f $STAMP ]; then + [ `cat $STAMP` = "$i" ] && continue + fi + DL="yes" + + $SCRIPTS/checkdeps get + + rm -f $STAMP + + printf "%${INDENT}c GET $1\n" >&$SILENT_OUT + export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) + + [ "$VERBOSE" != yes ] && WGET_OPT=-q + NBWGET=1 - until [ -f $STAMPS_NOARCH/$1/`basename $i`.ok ] || wget --passive-ftp -c $WGET_OPT -P $SOURCES/$1 $i; do + until [ -f $STAMP ] || wget --passive-ftp -c $WGET_OPT -P $SOURCES/$1 $i; do NBWGET=$(($NBWGET+1)) if [ $NBWGET -gt 10 ]; then echo -e "\nCant't get $1 sources : $i\n Try later !!" exit 1 fi done - touch $STAMPS_NOARCH/$1/`basename $i`.ok + + echo $i > $STAMP + md5sum -t $PACKAGE > $MD5SUM + + rm -f $BUILD_BASE*/$STAMPS_NOARCH/$1/unpack + rm -f $BUILD_BASE*/$STAMPS_NOARCH/$1/build + done - - [ -n "$PKG_URL" ] && \ - echo $PKG_URL > $STAMP -# cp -p $PKG_DIR/meta $STAMP - - rm -f $BUILD_BASE*/$STAMPS_NOARCH/$1/unpack - rm -f $BUILD_BASE*/$STAMPS_NOARCH/$1/build fi + diff --git a/scripts/install b/scripts/install index 9a24665e65..3b6ec7c3a8 100755 --- a/scripts/install +++ b/scripts/install @@ -17,14 +17,9 @@ fi [ -f $STAMP -a $FORCE_INSTALL = "no" ] && exit 0 -if [ -f $PKG_DIR/arch ]; then - grep -q "$TARGET_ARCH" "$PKG_DIR/arch" || exit 0 - grep -q "\-$TARGET_ARCH" "$PKG_DIR/arch" && exit 0 -fi - -if [ -f $PKG_DIR/platform ]; then - grep -q "$TARGET_PLATFORM" "$PKG_DIR/platform" || exit 0 - grep -q "\-$TARGET_PLATFORM" "$PKG_DIR/platform" && exit 0 +if [ -n "$PKG_ARCH" -a ! "$PKG_ARCH" = "any" ]; then + echo "$PKG_ARCH" | grep -q "$TARGET_ARCH" || exit 0 + echo "$PKG_ARCH" | grep -q "\-$TARGET_ARCH" && exit 0 fi if [ -d $PKG_DIR/init.d ]; then @@ -43,6 +38,7 @@ if [ -d $PKG_DIR/init.network ]; then fi $SCRIPTS/build $@ + printf "%${INDENT}c INSTALL $1\n" >&$SILENT_OUT export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) diff --git a/scripts/unpack b/scripts/unpack index 0a5735bf0f..467d1e67de 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -17,12 +17,14 @@ mkdir -p $STAMPS/$1 STAMP=$STAMPS/$1/unpack [ -f $STAMP -a -f $PKG_DIR/need_unpack ] && $PKG_DIR/need_unpack $@ + for patch in $PKG_DIR/patches/*; do if [ $patch -nt $STAMP ]; then rm -f $STAMP break fi done + [ -f $STAMP ] && exit 0 printf "%${INDENT}c UNPACK $1\n" >&$SILENT_OUT @@ -46,13 +48,11 @@ if [ -d $PKG_DIR/sources ]; then cp -PRf $PKG_DIR/sources/* $BUILD/$1*/ fi -[ -f $PKG_DIR/after_unpack ] && $PKG_DIR/after_unpack $@ >&$VERBOSE_OUT - -for i in $PKG_DIR/patches/*.diff $PKG_DIR/patches/$PKG_NAME-$PKG_VERSION*.patch ; do +for i in $PKG_DIR/patches/$PKG_NAME-$PKG_VERSION*.patch ; do if [ -f $i ]; then PATCH=`basename $i` PT=`echo $PATCH | sed 's/.*\.\(.*\)$/\1/'` - if [ "$PT" != patch -a "$PT" != diff -a "$PT" != "$TARGET_ARCH" -a "$PT" != "$TARGET_PLATFORM" ]; then + if [ "$PT" != "patch" -a "$PT" != "$TARGET_ARCH" ]; then echo "## Skipping patch: $i" continue; else @@ -67,7 +67,7 @@ $SCRIPTS/fixconfigtools $BUILD/$1* [ -f $PKG_DIR/unpack ] && $PKG_DIR/unpack $@ >&$VERBOSE_OUT rm -f $STAMPS/$1/build -. $PROJECT_DIR/$PROJECT/options + for i in `sed -n "s/^\([^#].*\)=\".*$/\1/p" $PROJECT_DIR/$PROJECT/options | grep -v "#"`; do eval val=\$$i echo "STAMP_$i=\"$val"\" >> $STAMP