diff options
author | Ting-Wei Lan <lantw44@gmail.com> | 2015-07-04 21:39:03 +0800 |
---|---|---|
committer | Ting-Wei Lan <lantw44@gmail.com> | 2015-07-06 01:18:15 +0800 |
commit | ac811b1b19d24a5101e62f148e270497612d9e66 (patch) | |
tree | 6c7ba493c6d718111ee7dc624f955d969adea9c9 | |
parent | 17a9287f7953883348a8da0a784002e3fec52e4c (diff) | |
download | wspkg-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.mk | 12 | ||||
-rwxr-xr-x | freebsd/freebsd.nopkg-deps.sh | 10 | ||||
-rwxr-xr-x | freebsd/freebsd.nopkg-setup.sh | 14 |
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" |