aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2015-07-04 21:39:03 +0800
committerTing-Wei Lan <lantw44@gmail.com>2015-07-06 01:18:15 +0800
commitac811b1b19d24a5101e62f148e270497612d9e66 (patch)
tree6c7ba493c6d718111ee7dc624f955d969adea9c9
parent17a9287f7953883348a8da0a784002e3fec52e4c (diff)
downloadwspkg-ac811b1b19d24a5101e62f148e270497612d9e66.tar.gz
wspkg-ac811b1b19d24a5101e62f148e270497612d9e66.tar.zst
wspkg-ac811b1b19d24a5101e62f148e270497612d9e66.zip
freebsd: 處理 make.conf 和 INDEX 不同步時可能遇到的狀況
這次修改加入了 @NOPKG_SETUP@ 和 @NOPKG_DEPS@ 兩個可在 template 中使用的變數。 由於產生 INDEX 檔要花費很長的時間,我們通常會選擇下載現有的 INDEX 檔。然而有 些 package 的名稱會因為 make.conf 設定的不同而改變,為了避免寫進 Makefile 的 package 名稱不正確,我們加入了這兩個變數,使得 package 名稱到真正使用這 個 meta-port 時產生。 由於每次執行 make 都要花非常多的時間產生 package 名稱,我們強烈建議除非必要, 否則不要改用這兩個新加入的變數。
-rw-r--r--freebsd/freebsd.mk12
-rwxr-xr-xfreebsd/freebsd.nopkg-deps.sh10
-rwxr-xr-xfreebsd/freebsd.nopkg-setup.sh14
3 files changed, 33 insertions, 3 deletions
diff --git a/freebsd/freebsd.mk b/freebsd/freebsd.mk
index 2d9ed19..57e226f 100644
--- a/freebsd/freebsd.mk
+++ b/freebsd/freebsd.mk
@@ -16,9 +16,13 @@ $(FREEBSD_OUT_PORTS): $(ports_deps)
> $(FREEBSD_OUT_PORTS) $(RM_IF_FAIL)
# freebsd.makefile.in + freebsd.ports --(freebsd.makefile.sh)-> freebsd.makefile
-makefile_script = $(BACKENDDIR)/freebsd.deps.sh
+makefile_deps_script = $(BACKENDDIR)/freebsd.deps.sh
+makefile_nopkg_setup_script = $(BACKENDDIR)/freebsd.nopkg-setup.sh
+makefile_nopkg_deps_script = $(BACKENDDIR)/freebsd.nopkg-deps.sh
makefile_deps = \
- $(makefile_script) \
+ $(makefile_deps_script) \
+ $(makefile_nopkg_setup_script) \
+ $(makefile_nopkg_deps_script) \
$(FREEBSD_IN_MAKEFILE_IN) \
$(FREEBSD_OUT_PORTS)
@@ -27,7 +31,9 @@ $(FREEBSD_OUT_MAKEFILE): $(makefile_deps)
-e "s|@NAME|$(NAME)|g" \
-e "s|@PKGNAME@|$(PKGNAME)|g" \
-e "s|@TODAY@|`date '+%Y.%m.%d'`|g" \
- -e "s|@DEPS@|`$(makefile_script) $(FREEBSD_OUT_PORTS)`|g" \
+ -e "s|@DEPS@|`$(makefile_deps_script) $(FREEBSD_OUT_PORTS)`|g" \
+ -e "s|@NOPKG_SETUP@|`$(makefile_nopkg_setup_script) $(FREEBSD_OUT_PORTS)`|g" \
+ -e "s|@NOPKG_DEPS@|`$(makefile_nopkg_deps_script) $(FREEBSD_OUT_PORTS)`|g" \
$(FREEBSD_IN_MAKEFILE_IN) | \
tr '^' '\\' | tr '%' '\n' \
> $(FREEBSD_OUT_MAKEFILE) $(RM_IF_FAIL)
diff --git a/freebsd/freebsd.nopkg-deps.sh b/freebsd/freebsd.nopkg-deps.sh
new file mode 100755
index 0000000..c7b4a27
--- /dev/null
+++ b/freebsd/freebsd.nopkg-deps.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+ports_file="$1"
+: ${ports_file:="freebsd.ports"}
+
+tr '/' '_' < "${ports_file}" | paste "${ports_file}" - | (
+ while read -r pkg_name pkg_ports unused pkg_ports_var; do
+ printf ' ${WSPKG_PACKAGE_NAME_%s}>=0:${PORTSDIR}/%s ^%%' \
+ "${pkg_ports_var}" "${pkg_ports}"
+ done )
diff --git a/freebsd/freebsd.nopkg-setup.sh b/freebsd/freebsd.nopkg-setup.sh
new file mode 100755
index 0000000..1e52ce3
--- /dev/null
+++ b/freebsd/freebsd.nopkg-setup.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+ports_file="$1"
+: ${ports_file:="freebsd.ports"}
+
+count=`wc -l < "${ports_file}"`
+tr '/' '_' < "${ports_file}" | paste "${ports_file}" - | (
+ index=1
+ while read -r pkg_name pkg_ports unused pkg_ports_var; do
+ printf 'WSPKG_PACKAGE_NAME_%-25s != printf "\\\\r===> Generating package names (%5d/%5d)" 1>\\&2; $(MAKE) -C ${PORTSDIR}/%-25s -V PKGNAMEPREFIX -V PORTNAME -V PKGNAMESUFFIX \\| tr -d "\\\\n"%%' \
+ "${pkg_ports_var}" "${index}" "${count}" "${pkg_ports}"
+ index=$(( ${index} + 1 ))
+ done )
+printf 'WSPKG_PACKAGE_NAME_%-25s != echo 1>\\&2; echo %%' "NULL"