diff --git a/scripts/unpack b/scripts/unpack index 322e2da06e..9e73e9a4d2 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -106,79 +106,81 @@ if [ -d "$SOURCES/$1" -o -d "$PKG_DIR/sources" ]; then post_unpack fi - if [ "$(type -t pre_patch)" = "function" ]; then - pre_patch - fi + if [ "${PKG_SKIP_PATCHES}" != "yes" ]; then + if [ "$(type -t pre_patch)" = "function" ]; then + pre_patch + fi - if [ "$TARGET_ARCH" = "x86_64" ]; then - PATCH_ARCH="x86" - else - PATCH_ARCH="${TARGET_PATCH_ARCH:-$TARGET_ARCH}" - fi - - PATCH_DIRS_PKG="" - PATCH_DIRS_PRJ="" - if [ -n "$PKG_PATCH_DIRS" ]; then - for patch_dir in $PKG_PATCH_DIRS; do - [ -d $PKG_DIR/patches/$patch_dir ] && PATCH_DIRS_PKG="$PATCH_DIRS_PKG $PKG_DIR/patches/$patch_dir/*.patch" - [ -d $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$patch_dir ] && PATCH_DIRS_PRJ="$PATCH_DIRS_PRJ $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$patch_dir/*.patch" - [ -d $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME/$patch_dir ] && PATCH_DIRS_PRJ="$PATCH_DIRS_PRJ $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME/$patch_dir/*.patch" - done - fi - - for i in $PKG_DIR/patches/*.patch \ - $PKG_DIR/patches/$PATCH_ARCH/*.patch \ - $PATCH_DIRS_PKG \ - $PKG_DIR/patches/$PKG_VERSION/*.patch \ - $PKG_DIR/patches/$PKG_VERSION/$PATCH_ARCH/*.patch \ - $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/*.patch \ - $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PATCH_ARCH/*.patch \ - $PATCH_DIRS_PRJ \ - $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PKG_VERSION/*.patch \ - $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME/*.patch; do - - thisdir="$(dirname "$i")" - - if [ "$thisdir" = "$PKG_DIR/patches" ]; then - PATCH_DESC="(common)" - elif [ "$thisdir" = "$PKG_DIR/patches/$PATCH_ARCH" ]; then - PATCH_DESC="(common - $PATCH_ARCH)" - elif [ "$thisdir" = "$PKG_DIR/patches/$PKG_VERSION" ]; then - PATCH_DESC="(common - $PKG_VERSION)" - elif [ "$thisdir" = "$PKG_DIR/patches/$PKG_VERSION/$PATCH_ARCH" ]; then - PATCH_DESC="($PKG_VERSION - $PATCH_ARCH)" - elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/patches/$PKG_NAME" ]; then - PATCH_DESC="(project)" - elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PATCH_ARCH" ]; then - PATCH_DESC="(project - $PATCH_ARCH)" - elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PKG_VERSION" ]; then - PATCH_DESC="(project - $PKG_VERSION)" - elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME" ]; then - PATCH_DESC="(device)" + if [ "$TARGET_ARCH" = "x86_64" ]; then + PATCH_ARCH="x86" else - if [[ "$thisdir" =~ ^$PKG_DIR/.* ]]; then - PATCH_DESC="(common - $(basename "$thisdir"))" - elif [[ "$thisdir" =~ ^$PROJECT_DIR/.*/devices/.* ]]; then - PATCH_DESC="(device - $(basename "$thisdir"))" - elif [[ "$thisdir" =~ ^$PROJECT_DIR/.* ]]; then - PATCH_DESC="(project - $(basename "$thisdir"))" - else - PATCH_DESC="(unknown - $(basename "$thisdir"))" - fi + PATCH_ARCH="${TARGET_PATCH_ARCH:-$TARGET_ARCH}" fi - if [ -f "$i" ]; then - printf "%${BUILD_INDENT}c $(print_color CLR_APPLY_PATCH "APPLY PATCH") $(print_color CLR_PATCH_DESC "${PATCH_DESC}") ${i#$ROOT/}\n" ' '>&$SILENT_OUT - if grep -qE '^GIT binary patch$|^rename from|^rename to' $i; then - cat $i | git apply --directory=`echo "$PKG_BUILD" | cut -f1 -d\ ` -p1 --verbose --whitespace=nowarn --unsafe-paths >&$VERBOSE_OUT - else - cat $i | patch -d `echo "$PKG_BUILD" | cut -f1 -d\ ` -p1 >&$VERBOSE_OUT - fi + PATCH_DIRS_PKG="" + PATCH_DIRS_PRJ="" + if [ -n "$PKG_PATCH_DIRS" ]; then + for patch_dir in $PKG_PATCH_DIRS; do + [ -d $PKG_DIR/patches/$patch_dir ] && PATCH_DIRS_PKG="$PATCH_DIRS_PKG $PKG_DIR/patches/$patch_dir/*.patch" + [ -d $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$patch_dir ] && PATCH_DIRS_PRJ="$PATCH_DIRS_PRJ $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$patch_dir/*.patch" + [ -d $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME/$patch_dir ] && PATCH_DIRS_PRJ="$PATCH_DIRS_PRJ $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME/$patch_dir/*.patch" + done fi - done - if [ "$(type -t post_patch)" = "function" ]; then - post_patch + for i in $PKG_DIR/patches/*.patch \ + $PKG_DIR/patches/$PATCH_ARCH/*.patch \ + $PATCH_DIRS_PKG \ + $PKG_DIR/patches/$PKG_VERSION/*.patch \ + $PKG_DIR/patches/$PKG_VERSION/$PATCH_ARCH/*.patch \ + $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/*.patch \ + $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PATCH_ARCH/*.patch \ + $PATCH_DIRS_PRJ \ + $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PKG_VERSION/*.patch \ + $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME/*.patch; do + + thisdir="$(dirname "$i")" + + if [ "$thisdir" = "$PKG_DIR/patches" ]; then + PATCH_DESC="(common)" + elif [ "$thisdir" = "$PKG_DIR/patches/$PATCH_ARCH" ]; then + PATCH_DESC="(common - $PATCH_ARCH)" + elif [ "$thisdir" = "$PKG_DIR/patches/$PKG_VERSION" ]; then + PATCH_DESC="(common - $PKG_VERSION)" + elif [ "$thisdir" = "$PKG_DIR/patches/$PKG_VERSION/$PATCH_ARCH" ]; then + PATCH_DESC="($PKG_VERSION - $PATCH_ARCH)" + elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/patches/$PKG_NAME" ]; then + PATCH_DESC="(project)" + elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PATCH_ARCH" ]; then + PATCH_DESC="(project - $PATCH_ARCH)" + elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/patches/$PKG_NAME/$PKG_VERSION" ]; then + PATCH_DESC="(project - $PKG_VERSION)" + elif [ "$thisdir" = "$PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME" ]; then + PATCH_DESC="(device)" + else + if [[ "$thisdir" =~ ^$PKG_DIR/.* ]]; then + PATCH_DESC="(common - $(basename "$thisdir"))" + elif [[ "$thisdir" =~ ^$PROJECT_DIR/.*/devices/.* ]]; then + PATCH_DESC="(device - $(basename "$thisdir"))" + elif [[ "$thisdir" =~ ^$PROJECT_DIR/.* ]]; then + PATCH_DESC="(project - $(basename "$thisdir"))" + else + PATCH_DESC="(unknown - $(basename "$thisdir"))" + fi + fi + + if [ -f "$i" ]; then + printf "%${BUILD_INDENT}c $(print_color CLR_APPLY_PATCH "APPLY PATCH") $(print_color CLR_PATCH_DESC "${PATCH_DESC}") ${i#$ROOT/}\n" ' '>&$SILENT_OUT + if grep -qE '^GIT binary patch$|^rename from|^rename to' $i; then + cat $i | git apply --directory=`echo "$PKG_BUILD" | cut -f1 -d\ ` -p1 --verbose --whitespace=nowarn --unsafe-paths >&$VERBOSE_OUT + else + cat $i | patch -d `echo "$PKG_BUILD" | cut -f1 -d\ ` -p1 >&$VERBOSE_OUT + fi + fi + done + + if [ "$(type -t post_patch)" = "function" ]; then + post_patch + fi fi if [ ! "$PKG_NAME" == "configtools" ] ; then