diff options
-rw-r--r-- | lib/Makefile.in | 1 | ||||
-rw-r--r-- | lib/cache.sh | 37 | ||||
-rw-r--r-- | src/opkbuild.sh | 39 |
3 files changed, 59 insertions, 18 deletions
diff --git a/lib/Makefile.in b/lib/Makefile.in index aa7cacd..1f40840 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -40,6 +40,7 @@ SRCS = control.sh \ changelog.sh \ locale.sh \ messages.sh \ + cache.sh \ util.sh OBJS = $(SRCS:.sh=) diff --git a/lib/cache.sh b/lib/cache.sh new file mode 100644 index 0000000..b428fd8 --- /dev/null +++ b/lib/cache.sh @@ -0,0 +1,37 @@ +# opkhelper +# lib/cache +# Cache property functions. +# +# Copyright (C) 2012 Patrick "P. J." McDermott +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +[ -n "${_OH_CACHE_SH}" ] && return 0 +_OH_CACHE_SH=true + +. @@LIBDIR@@/util + +oh_cache() +{ + _property="${1}" + shift + + mkdir -p "${OH_SOURCE_DIR}/tmp/.cache" + + if [ ${#} -eq 1 ]; then + cat "${OH_SOURCE_DIR}/tmp/.cache/${_property}" 2>/dev/null + else + echo "${*}" >"${OH_SOURCE_DIR}/tmp/.cache/${_property}" + fi +} diff --git a/src/opkbuild.sh b/src/opkbuild.sh index 8c50e6c..8621051 100644 --- a/src/opkbuild.sh +++ b/src/opkbuild.sh @@ -23,6 +23,7 @@ . @@LIBDIR@@/locale . @@LIBDIR@@/changelog . @@LIBDIR@@/control +. @@LIBDIR@@/cache # Environment variables: export OH_SOURCE= @@ -93,8 +94,9 @@ main() "${OPT_CHECK_BUILD_DEPS}" && oh-checkbuilddeps setup_build print_arch_stats - if [ -n "${OH_CV_STEP}" ]; then - "step_${OH_CV_STEP}" + cp_step=$(oh_cache 'opkbuild.step') + if [ -n "${cp_step}" ]; then + "step_${cp_step}" else step_unpack fi @@ -239,9 +241,11 @@ setup_source_control() oh_control_parse_source for field in ${OH_CONTROL_SOURCE_FIELDS_REQUIRED} \ ${OH_CONTROL_SOURCE_FIELDS_OPTIONAL}; do - param="OH_CONTROL_SOURCE_FIELD_$(echo "${field}" | \ - LC_CTYPE=C tr '[:lower:]-' '[:upper:]_')" - oh_pv_set 'src:.control' "${field}" "$(eval echo \$\{"${param}"\})" + field_tr=$(echo "${field}" | \ + LC_CTYPE=POSIX tr '[:lower:]-' '[:upper:]_') + param="OH_CONTROL_SOURCE_FIELD_${field_tr}" + oh_cache "src.control.${field}" \ + "$(eval echo \$\{"${param}"\})" done } @@ -374,7 +378,7 @@ print_arch_stats() step_unpack() { - oh_cv_set step unpack + oh_cache 'opkbuild.step' 'unpack' oh-unpacksource @@ -383,7 +387,7 @@ step_unpack() step_patch() { - oh_cv_set step patch + oh_cache 'opkbuild.step' 'patch' oh-applypatches @@ -392,7 +396,7 @@ step_patch() step_config() { - oh_cv_set step config + oh_cache 'opkbuild.step' config ./config @@ -401,7 +405,7 @@ step_config() step_bincontrol() { - oh_cv_set step bincontrol + oh_cache 'opkbuild.step' bincontrol for pkg in ../*.pkg/; do pkg="${pkg#../}" @@ -409,10 +413,11 @@ step_bincontrol() oh_control_parse_binary "${pkg}" for field in ${OH_CONTROL_BINARY_FIELDS_REQUIRED} \ ${OH_CONTROL_BINARY_FIELDS_OPTIONAL}; do - param="OH_CONTROL_BINARY_FIELD_$(echo "${field}" | \ - LC_CTYPE=C tr '[:lower:]-' '[:upper:]_')" - oh_pv_set "${pkg}.control" \ - "${field}" "$(eval echo \$\{"${param}"\})" + field_tr=$(echo "${field}" | \ + LC_CTYPE=POSIX tr '[:lower:]-' '[:upper:]_') + param="OH_CONTROL_BINARY_FIELD_${field_tr}" + oh_cache "bin.${pkg}.control.${field}" \ + "$(eval echo \$\{"${param}"\})" done done @@ -421,7 +426,7 @@ step_bincontrol() step_platconf() { - oh_cv_set step platconf + oh_cache 'opkbuild.step' platconf oh-copyconfig @@ -430,7 +435,7 @@ step_platconf() step_build() { - oh_cv_set step build + oh_cache 'opkbuild.step' build ./build "${OPT_TARGET}" @@ -439,7 +444,7 @@ step_build() step_clean() { - oh_cv_set step clean + oh_cache 'opkbuild.step' clean ./config clean @@ -448,8 +453,6 @@ step_clean() step_cleanwork() { - oh_cv_clear - cd .. rm -Rf tmp } |