summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Makefile.in1
-rw-r--r--lib/cache.sh37
-rw-r--r--src/opkbuild.sh39
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
}