diff options
24 files changed, 228 insertions, 118 deletions
diff --git a/etc/README.md b/etc/README.md index 38206285..5d16ed47 100644 --- a/etc/README.md +++ b/etc/README.md @@ -962,7 +962,7 @@ usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[ ## 4.6. ``pkgtool.sh`` ``` -usage: ./pkgtool.sh [-a nt32|nt64] [-b debug|release] [-e|-f|-i|-m <dname> -M <dname>|-p|-r|-R|-t] +usage: ./pkgtool.sh [-a nt32|nt64] [-b debug|release] [-e|-f|-i|-m <dname> -M <dname>|-p|-r|-t] [--theme theme] [-v] [<variable name>=<variable override>[ ..]] name[,name..] @@ -976,8 +976,7 @@ usage: ./pkgtool.sh [-a nt32|nt64] [-b debug|release] [-e|-f|-i|-m <dname> -M <d Specify "" or '' as <dname> to default to the defaults in ${HOME}/pkgtool.vars, if present. -p <log_fname> Profile last build. - -r List reverse dependencies of single named package. - -R List recursive reverse dependencies of single named package. + -r List recursive reverse dependencies of single named package. -t Produce tarball of package build root directory and build log file for the purpose of distribution given build failure. -v Increase verbosity. diff --git a/etc/build.msgs.en b/etc/build.msgs.en index ddacb97b..30545eb2 100644 --- a/etc/build.msgs.en +++ b/etc/build.msgs.en @@ -12,7 +12,8 @@ MSG_build_killed_pids="1;Killed PID(s): %s"; MSG_build_reset_pkg_state="1;Reset package state for: %s"; MSG_build_resolved_deps="1;Resolved \`%s' dependencies."; MSG_build_resolving_deps="1;Resolving \`%s' dependencies..."; -MSG_build_unknown_dep="2;Error: dependency \`%s' of \`%s' unknown."; +MSG_build_unknown_dep="2;Warning: dependency \`%s' of \`%s' unknown."; +MSG_build_unknown_deps="0;Warning: packages with unknown dependencies."; MSG_group_begin="4;[%3d%% ] [%03d/%03d] Starting \`%s' build group..."; MSG_group_finish="4;[%3d%% ] [%03d/%03d] Finished \`%s' build group."; diff --git a/etc/pkgtool.msgs.en b/etc/pkgtool.msgs.en index 1fe000f0..05331ab6 100644 --- a/etc/pkgtool.msgs.en +++ b/etc/pkgtool.msgs.en @@ -24,7 +24,6 @@ MSG_mirror_pkg_skip_no_urls="1;Package \`%s' has neither archive nor Git URL(s), MSG_rdepends_pkg_deps_rev_none="1;Package \`%s' has no reverse dependencies."; MSG_rdepends_pkgs_deps_rev_disabled="2;Reverse dependencies of \`%s' (disabled packages:) [0m%s"; -MSG_rdepends_pkgs_deps_rev="2;Reverse dependencies of \`%s': [0m%s"; MSG_rdepends_pkgs_deps_rev_recurse="2;Recursive reverse dependencies of \`%s': %s"; MSG_tarball_created="2;Created compressed tarball of \`%s' and \`%s_stderrout.log'."; diff --git a/etc/pkgtool.usage b/etc/pkgtool.usage index 7fc7e77b..a07f8e47 100644 --- a/etc/pkgtool.usage +++ b/etc/pkgtool.usage @@ -1,4 +1,4 @@ -[97musage[90m: [33m./[93mpkgtool.sh [90m[[33m-[93ma nt32[90m|[93mnt64[90m] [[33m-[93mb [93mdebug[90m|[93mrelease[90m] [[33m-[93me[90m|[33m-[93mf[90m|[33m-[93mi[90m|[33m-[93mm [90m<[93mdname[90m> [33m-[93mM [90m<[93mdname[90m>|[33m-[93mp[90m|[33m-[93mr[90m|[33m-[93mR[90m|[33m-[93mt[90m][0m +[97musage[90m: [33m./[93mpkgtool.sh [90m[[33m-[93ma nt32[90m|[93mnt64[90m] [[33m-[93mb [93mdebug[90m|[93mrelease[90m] [[33m-[93me[90m|[33m-[93mf[90m|[33m-[93mi[90m|[33m-[93mm [90m<[93mdname[90m> [33m-[93mM [90m<[93mdname[90m>|[33m-[93mp[90m|[33m-[93mr[90m|[33m-[93mt[90m][0m [90m[[93m--theme theme[90m] [90m[[33m-[93mv[90m][0m [90m[<[93mvariable name[90m>[93m=[90m<[93mvariable override[90m>[ ..]] [93mname[90m[,[93mname[90m..][0m @@ -12,8 +12,7 @@ [96mSpecify "" or '' as <dname> to default to the defaults in[0m [93m${HOME}/pkgtool.vars[96m, if present.[0m [33m-[93mp [90m<[93mlog_fname[90m>[0m [96mProfile last build.[0m - [33m-[93mr [96mList reverse dependencies of single named package.[0m - [33m-[93mR [96mList recursive reverse dependencies of single named package.[0m + [33m-[93mr [96mList recursive reverse dependencies of single named package.[0m [33m-[93mt [96mProduce tarball of package build root directory and build log[0m [96mfile for the purpose of distribution given build failure.[0m [33m-[93mv [96mIncrease verbosity.[0m diff --git a/groups.d/231.native_packages_etc.d/shared_mime_info.package b/groups.d/231.native_packages_etc.d/shared_mime_info.package index 04242ea7..b123d91c 100644 --- a/groups.d/231.native_packages_etc.d/shared_mime_info.package +++ b/groups.d/231.native_packages_etc.d/shared_mime_info.package @@ -5,6 +5,6 @@ : ${PKG_SHARED_MIME_INFO_CONFIGURE_ARGS_EXTRA:=--disable-update-mimedb}; : ${PKG_SHARED_MIME_INFO_MAKEFLAGS_PARALLELISE:="-j1"}; -ex_pkg_register "shared" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; +ex_pkg_register "shared_mime_info" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; # vim:filetype=sh textwidth=0 diff --git a/groups.d/251.native_packages_lib.d/libass.package b/groups.d/251.native_packages_lib.d/libass.package index 7e888002..1c85c986 100644 --- a/groups.d/251.native_packages_lib.d/libass.package +++ b/groups.d/251.native_packages_lib.d/libass.package @@ -3,11 +3,6 @@ : ${PKG_LIBASS_VERSION:=0.17.1}; : ${PKG_LIBASS_URL:=https://github.com/libass/libass/releases/download/${PKG_LIBASS_VERSION}/libass-${PKG_LIBASS_VERSION}.tar.xz}; : ${PKG_LIBASS_CONFIGURE_ARGS_EXTRA:="--disable-asm"}; -: ${PKG_LIBASSUAN_DEPENDS:="libgpg_error"}; -: ${PKG_LIBASSUAN_SHA256SUM:=8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4}; -: ${PKG_LIBASSUAN_VERSION:=2.5.5}; -: ${PKG_LIBASSUAN_URL:=https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${PKG_LIBASSUAN_VERSION}.tar.bz2}; -: ${PKG_LIBASSUAN_CONFIGURE_ARGS_EXTRA:=--with-libgpg-error-prefix=${PREFIX_NATIVE}}; ex_pkg_register "libass" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; diff --git a/groups.d/251.native_packages_lib.d/libassuan.package b/groups.d/251.native_packages_lib.d/libassuan.package new file mode 100644 index 00000000..1872a149 --- /dev/null +++ b/groups.d/251.native_packages_lib.d/libassuan.package @@ -0,0 +1,9 @@ +: ${PKG_LIBASSUAN_DEPENDS:="libgpg_error"}; +: ${PKG_LIBASSUAN_SHA256SUM:=8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4}; +: ${PKG_LIBASSUAN_VERSION:=2.5.5}; +: ${PKG_LIBASSUAN_URL:=https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${PKG_LIBASSUAN_VERSION}.tar.bz2}; +: ${PKG_LIBASSUAN_CONFIGURE_ARGS_EXTRA:=--with-libgpg-error-prefix=${PREFIX_NATIVE}}; + +ex_pkg_register "libassuan" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 diff --git a/groups.d/251.native_packages_lib.d/libidn.package b/groups.d/251.native_packages_lib.d/libidn.package index dcfddf78..6cf084e3 100644 --- a/groups.d/251.native_packages_lib.d/libidn.package +++ b/groups.d/251.native_packages_lib.d/libidn.package @@ -3,10 +3,6 @@ : ${PKG_LIBIDN_VERSION:=1.42}; : ${PKG_LIBIDN_URL:=https://ftp.gnu.org/gnu/libidn/libidn-${PKG_LIBIDN_VERSION}.tar.gz}; : ${PKG_LIBIDN_CONFIGURE_ARGS_EXTRA:="--disable-java --disable-csharp --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf"}; -: ${PKG_LIBIDN2_DEPENDS:="libunistring libiconv"}; -: ${PKG_LIBIDN2_SHA256SUM:=93caba72b4e051d1f8d4f5a076ab63c99b77faee019b72b9783b267986dbb45f}; -: ${PKG_LIBIDN2_VERSION:=2.3.4}; -: ${PKG_LIBIDN2_URL:=https://ftp.gnu.org/gnu/libidn/libidn2-${PKG_LIBIDN2_VERSION}.tar.gz}; ex_pkg_register "libidn" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; diff --git a/groups.d/251.native_packages_lib.d/libidn2.package b/groups.d/251.native_packages_lib.d/libidn2.package new file mode 100644 index 00000000..e17f8411 --- /dev/null +++ b/groups.d/251.native_packages_lib.d/libidn2.package @@ -0,0 +1,8 @@ +: ${PKG_LIBIDN2_DEPENDS:="libunistring libiconv"}; +: ${PKG_LIBIDN2_SHA256SUM:=93caba72b4e051d1f8d4f5a076ab63c99b77faee019b72b9783b267986dbb45f}; +: ${PKG_LIBIDN2_VERSION:=2.3.4}; +: ${PKG_LIBIDN2_URL:=https://ftp.gnu.org/gnu/libidn/libidn2-${PKG_LIBIDN2_VERSION}.tar.gz}; + +ex_pkg_register "libidn2" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/xrender.package b/groups.d/261.native_packages_x11.d/Xrender.package index 585d6015..6ed27851 100644 --- a/groups.d/261.native_packages_x11.d/xrender.package +++ b/groups.d/261.native_packages_x11.d/Xrender.package @@ -3,6 +3,6 @@ : ${PKG_XRENDER_VERSION:=0.9.10}; : ${PKG_XRENDER_URL:=https://www.x.org/releases/individual/lib/libXrender-${PKG_XRENDER_VERSION}.tar.bz2}; -ex_pkg_register "xrender" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; +ex_pkg_register "Xrender" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; # vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/freetype.package b/groups.d/261.native_packages_x11.d/freetype.package index e826bf3f..4f42ad0a 100644 --- a/groups.d/261.native_packages_x11.d/freetype.package +++ b/groups.d/261.native_packages_x11.d/freetype.package @@ -3,12 +3,6 @@ : ${PKG_FREETYPE_VERSION:=2.11.1}; : ${PKG_FREETYPE_URL:=http://download.savannah.gnu.org/releases/freetype/freetype-${PKG_FREETYPE_VERSION}.tar.xz}; : ${PKG_FREETYPE_CONFIGURE_ARGS_EXTRA:="--with-bzip2=yes --with-harfbuzz=yes --with-png=yes --with-zlib=yes"}; -: ${PKG_FREETYPE_PRE_DEPENDS:="bzip2 libpng libz"}; -: ${PKG_FREETYPE_PRE_SHA256SUM:=3333ae7cfda88429c97a7ae63b7d01ab398076c3b67182e960e5684050f2c5c8}; -: ${PKG_FREETYPE_PRE_VERSION:=2.11.1}; -: ${PKG_FREETYPE_PRE_URL:=http://download.savannah.gnu.org/releases/freetype/freetype-${PKG_FREETYPE_PRE_VERSION}.tar.xz}; -: ${PKG_FREETYPE_PRE_CONFIGURE_ARGS_EXTRA:="--with-bzip2=yes --with-harfbuzz=no --with-png=yes --with-zlib=yes"}; -: ${PKG_FREETYPE_PRE_RPM_DISABLE:=1}; ex_pkg_register "freetype" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; diff --git a/groups.d/261.native_packages_x11.d/freetype_pre.package b/groups.d/261.native_packages_x11.d/freetype_pre.package new file mode 100644 index 00000000..8c650556 --- /dev/null +++ b/groups.d/261.native_packages_x11.d/freetype_pre.package @@ -0,0 +1,10 @@ +: ${PKG_FREETYPE_PRE_DEPENDS:="bzip2 libpng libz"}; +: ${PKG_FREETYPE_PRE_SHA256SUM:=3333ae7cfda88429c97a7ae63b7d01ab398076c3b67182e960e5684050f2c5c8}; +: ${PKG_FREETYPE_PRE_VERSION:=2.11.1}; +: ${PKG_FREETYPE_PRE_URL:=http://download.savannah.gnu.org/releases/freetype/freetype-${PKG_FREETYPE_PRE_VERSION}.tar.xz}; +: ${PKG_FREETYPE_PRE_CONFIGURE_ARGS_EXTRA:="--with-bzip2=yes --with-harfbuzz=no --with-png=yes --with-zlib=yes"}; +: ${PKG_FREETYPE_PRE_RPM_DISABLE:=1}; + +ex_pkg_register "freetype_pre" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/libice.package b/groups.d/261.native_packages_x11.d/libICE.package index 75e5484a..fd17e503 100644 --- a/groups.d/261.native_packages_x11.d/libice.package +++ b/groups.d/261.native_packages_x11.d/libICE.package @@ -4,6 +4,6 @@ : ${PKG_LIBICE_URL:=https://www.x.org/releases/individual/lib/libICE-${PKG_LIBICE_VERSION}.tar.xz}; : ${PKG_LIBICE_CONFIGURE_ARGS_EXTRA:="--disable-unix-transport"}; -ex_pkg_register "libice" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; +ex_pkg_register "libICE" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; # vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/libsm.package b/groups.d/261.native_packages_x11.d/libSM.package index 269eb51d..9b16489d 100644 --- a/groups.d/261.native_packages_x11.d/libsm.package +++ b/groups.d/261.native_packages_x11.d/libSM.package @@ -4,6 +4,6 @@ : ${PKG_LIBSM_URL:=https://www.x.org/releases/individual/lib/libSM-${PKG_LIBSM_VERSION}.tar.xz}; : ${PKG_LIBSM_CONFIGURE_ARGS_EXTRA:="--disable-unix-transport"}; -ex_pkg_register "libsm" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; +ex_pkg_register "libSM" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; # vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/xcb.package b/groups.d/261.native_packages_x11.d/xcb.package index 4feb38f7..0e166daa 100644 --- a/groups.d/261.native_packages_x11.d/xcb.package +++ b/groups.d/261.native_packages_x11.d/xcb.package @@ -6,21 +6,6 @@ : ${PKG_XCB_CONFIG_CACHE_EXTRA:="ac_cv_search_sendmsg=no"}; : ${PKG_XCB_CONFIGURE_ARGS_EXTRA:="--disable-randr PYTHON=${PREFIX}/bin/python3"}; : ${PKG_XCB_ENV_VARS_EXTRA:="XCBPROTO_XCBPYTHONDIR=${PREFIX_NATIVE}/lib/python2.7/site-packages:XCBPROTO_XCBINCLUDEDIR=${PREFIX_NATIVE}/share/xcb"}; -: ${PKG_XCB_PROTO_SHA256SUM:=a75a1848ad2a89a82d841a51be56ce988ff3c63a8d6bf4383ae3219d8d915119}; -: ${PKG_XCB_PROTO_VERSION:=1.16.0}; -: ${PKG_XCB_PROTO_URL:=https://www.x.org/releases/individual/proto/xcb-proto-${PKG_XCB_PROTO_VERSION}.tar.xz}; -: ${PKG_XCB_UTIL_DEPENDS:="xcb"}; -: ${PKG_XCB_UTIL_SHA256SUM:=5abe3bbbd8e54f0fa3ec945291b7e8fa8cfd3cccc43718f8758430f94126e512}; -: ${PKG_XCB_UTIL_VERSION:=0.4.1}; -: ${PKG_XCB_UTIL_URL:=https://x.org/releases/individual/xcb/xcb-util-${PKG_XCB_UTIL_VERSION}.tar.xz}; -: ${PKG_XCB_UTIL_IMAGE_DEPENDS:="xcb xcb_util"}; -: ${PKG_XCB_UTIL_IMAGE_SHA256SUM:=ccad8ee5dadb1271fd4727ad14d9bd77a64e505608766c4e98267d9aede40d3d}; -: ${PKG_XCB_UTIL_IMAGE_VERSION:=0.4.1}; -: ${PKG_XCB_UTIL_IMAGE_URL:=https://x.org/releases/individual/xcb/xcb-util-image-${PKG_XCB_UTIL_IMAGE_VERSION}.tar.xz}; -: ${PKG_XCB_UTIL_WM_DEPENDS:="xcb"}; -: ${PKG_XCB_UTIL_WM_SHA256SUM:=62c34e21d06264687faea7edbf63632c9f04d55e72114aa4a57bb95e4f888a0b}; -: ${PKG_XCB_UTIL_WM_VERSION:=0.4.2}; -: ${PKG_XCB_UTIL_WM_URL:=https://x.org/releases/individual/xcb/xcb-util-wm-${PKG_XCB_UTIL_WM_VERSION}.tar.xz}; ex_pkg_register "xcb" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; diff --git a/groups.d/261.native_packages_x11.d/xcb_proto.package b/groups.d/261.native_packages_x11.d/xcb_proto.package new file mode 100644 index 00000000..8717d5b6 --- /dev/null +++ b/groups.d/261.native_packages_x11.d/xcb_proto.package @@ -0,0 +1,7 @@ +: ${PKG_XCB_PROTO_SHA256SUM:=a75a1848ad2a89a82d841a51be56ce988ff3c63a8d6bf4383ae3219d8d915119}; +: ${PKG_XCB_PROTO_VERSION:=1.16.0}; +: ${PKG_XCB_PROTO_URL:=https://www.x.org/releases/individual/proto/xcb-proto-${PKG_XCB_PROTO_VERSION}.tar.xz}; + +ex_pkg_register "xcb_proto" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/xcb_util.package b/groups.d/261.native_packages_x11.d/xcb_util.package new file mode 100644 index 00000000..b16d0d72 --- /dev/null +++ b/groups.d/261.native_packages_x11.d/xcb_util.package @@ -0,0 +1,8 @@ +: ${PKG_XCB_UTIL_DEPENDS:="xcb"}; +: ${PKG_XCB_UTIL_SHA256SUM:=5abe3bbbd8e54f0fa3ec945291b7e8fa8cfd3cccc43718f8758430f94126e512}; +: ${PKG_XCB_UTIL_VERSION:=0.4.1}; +: ${PKG_XCB_UTIL_URL:=https://x.org/releases/individual/xcb/xcb-util-${PKG_XCB_UTIL_VERSION}.tar.xz}; + +ex_pkg_register "xcb_util" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/xcb_util_image.package b/groups.d/261.native_packages_x11.d/xcb_util_image.package new file mode 100644 index 00000000..83536d61 --- /dev/null +++ b/groups.d/261.native_packages_x11.d/xcb_util_image.package @@ -0,0 +1,8 @@ +: ${PKG_XCB_UTIL_IMAGE_DEPENDS:="xcb xcb_util"}; +: ${PKG_XCB_UTIL_IMAGE_SHA256SUM:=ccad8ee5dadb1271fd4727ad14d9bd77a64e505608766c4e98267d9aede40d3d}; +: ${PKG_XCB_UTIL_IMAGE_VERSION:=0.4.1}; +: ${PKG_XCB_UTIL_IMAGE_URL:=https://x.org/releases/individual/xcb/xcb-util-image-${PKG_XCB_UTIL_IMAGE_VERSION}.tar.xz}; + +ex_pkg_register "xcb_util_image" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 diff --git a/groups.d/261.native_packages_x11.d/xcb_util_wm.package b/groups.d/261.native_packages_x11.d/xcb_util_wm.package new file mode 100644 index 00000000..b2c9aecf --- /dev/null +++ b/groups.d/261.native_packages_x11.d/xcb_util_wm.package @@ -0,0 +1,8 @@ +: ${PKG_XCB_UTIL_WM_DEPENDS:="xcb"}; +: ${PKG_XCB_UTIL_WM_SHA256SUM:=62c34e21d06264687faea7edbf63632c9f04d55e72114aa4a57bb95e4f888a0b}; +: ${PKG_XCB_UTIL_WM_VERSION:=0.4.2}; +: ${PKG_XCB_UTIL_WM_URL:=https://x.org/releases/individual/xcb/xcb-util-wm-${PKG_XCB_UTIL_WM_VERSION}.tar.xz}; + +ex_pkg_register "xcb_util_wm" "${RTL_FILEOP_SOURCE_FNAME}" "native_packages"; + +# vim:filetype=sh textwidth=0 @@ -56,24 +56,22 @@ pkgtoolp_init_args() { + ${ARG_MIRROR:-0} + ${ARG_PROFILE:-0} + ${ARG_RDEPENDS:-0} - + ${ARG_RDEPENDS_FULL:-0} + ${ARG_TARBALL:-0}))" -gt 1 ]; then cat etc/pkgtool.usage; _ppia_rc=1; - rtl_setrstatus "${_ppia_rstatus}" 'only one of -e, -f, -i, -m and/or -M, -p, -r, -R, -s, or -t must be specified.'; + rtl_setrstatus "${_ppia_rstatus}" 'only one of -e, -f, -i, -m and/or -M, -p, -r, -s, or -t must be specified.'; elif [ "$((${ARG_INFO:-0} + ${ARG_EDIT:-0} + ${ARG_FILES:-0} + ${ARG_MIRROR:-0} + ${ARG_PROFILE:-0} + ${ARG_RDEPENDS:-0} - + ${ARG_RDEPENDS_FULL:-0} + ${ARG_TARBALL:-0}))" -eq 0 ]; then cat etc/pkgtool.usage; _ppia_rc=1; - rtl_setrstatus "${_ppia_rstatus}" 'one of -e, -f, -i, -m and/or -M, -p, -r, -R, -s, or -t must be specified.'; + rtl_setrstatus "${_ppia_rstatus}" 'one of -e, -f, -i, -m and/or -M, -p, -r, -s, or -t must be specified.'; else _ppia_rc=0; export TMP="${BUILD_WORKDIR}" TMPDIR="${BUILD_WORKDIR}"; @@ -93,8 +91,8 @@ pkgtoolp_init_getopts_fn() { : ${ARCH:="nt64"}; : ${BUILD_KIND:="debug"}; - ARG_INFO=0; ARG_EDIT=0; ARG_MIRROR=0; ARG_RDEPENDS=0; - ARG_RDEPENDS_FULL=0; ARG_TARBALL=0; ARG_VERBOSE=0; + ARG_INFO=0; ARG_EDIT=0; ARG_MIRROR=0; + ARG_RDEPENDS=0; ARG_TARBALL=0; ARG_VERBOSE=0; ;; longopt) @@ -148,7 +146,6 @@ pkgtoolp_init_getopts_fn() { fi; _ppigf_shiftfl=2; ;; r) ARG_RDEPENDS=1; _ppigf_shiftfl=1; ;; - R) ARG_RDEPENDS_FULL=1; _ppigf_shiftfl=1; ;; t) ARG_TARBALL=1; _ppigf_shiftfl=1; ;; v) ARG_VERBOSE=1; _ppigf_shiftfl=1; ;; *) cat etc/pkgtool.usage; exit 1; ;; @@ -619,9 +616,9 @@ pkgtoolp_profile() { return "${_ppp_rc}"; }; # }}} -# {{{ pkgtoolp_rdepends($_rstatus, $_pkg_name, $_full_rdependsfl) +# {{{ pkgtoolp_rdepends($_rstatus, $_pkg_name) pkgtoolp_rdepends() { - local _ppr_rstatus="${1}" _ppr_pkg_name="${2}" _ppr_full_rdependsfl="${3}" \ + local _ppr_rstatus="${1}" _ppr_pkg_name="${2}" \ _ppr_depends="" _ppr_group_name="" _ppr_groups="" _ppr_groups_noauto="" \ _ppr_pkg_depends="" _ppr_pkg_disabled="" _ppr_pkg_finished="" \ _ppr_pkg_name_rdepend="" _ppr_pkg_names="" _ppr_pkg_rdepends="" \ @@ -640,7 +637,8 @@ pkgtoolp_rdepends() { \$_ppr_pkg_disabled \$_ppr_pkg_finished \ \$_ppr_pkg_rdepends_direct \ "${_ppr_group_name}" "${_ppr_pkg_names}" \ - "${_ppr_pkg_name}" 1 "${BUILD_WORKDIR}"; + "${_ppr_pkg_name}" 1 "${BUILD_WORKDIR}" \ + "norecurse"; then _ppr_rc=1; rtl_setrstatus "${_ppr_rstatus}" 'Error: failed to unfold reverse dependency-expanded package name list for \`'"${_ppr_pkg_name}'"'.'; @@ -654,23 +652,19 @@ pkgtoolp_rdepends() { ${_ppr_pkg_finished} \ ${_ppr_pkg_rdepends_direct}); do - rtl_lconcat \$_ppr_pkg_rdepends "${_ppr_pkg_name_rdepend}"; - - if [ "${_ppr_full_rdependsfl}" -eq 1 ]; then - rtl_get_var_unsafe \$_ppr_depends -u "PKG_"${_ppr_pkg_name}"_DEPENDS"; + if rtl_get_var_unsafe \$_ppr_depends -u "PKG_"${_ppr_pkg_name_rdepend}"_DEPENDS"\ + && [ "${_ppr_depends:+1}" = 1 ]; then if rtl_lunfold_dependsV 'PKG_${_rld_name}_DEPENDS' \$_ppr_pkg_depends ${_ppr_depends}\ + && rtl_lfilter \$_ppr_pkg_depends "${_ppr_pkg_name}"\ && [ "${_ppr_pkg_depends:+1}" = 1 ]; then - rtl_lconcat \$_ppr_pkg_rdepends "[33m${_ppr_pkg_depends}[93m"; + rtl_lconcat \$_ppr_pkg_rdepends "[33m$(rtl_uniq "$(rtl_lsortV ${_ppr_pkg_depends})")[93m"; fi; fi; + rtl_lconcat \$_ppr_pkg_rdepends "${_ppr_pkg_name_rdepend}"; done; if [ "${_ppr_pkg_rdepends:+1}" = 1 ]; then - if [ "${_ppr_full_rdependsfl}" -eq 1 ]; then - rtl_log_msgV "info" "${MSG_rdepends_pkgs_deps_rev_recurse}" "${_ppr_pkg_name}" "${_ppr_pkg_rdepends}"; - else - rtl_log_msgV "info" "${MSG_rdepends_pkgs_deps_rev}" "${_ppr_pkg_name}" "${_ppr_pkg_rdepends}"; - fi; + rtl_log_msgV "info" "${MSG_rdepends_pkgs_deps_rev_recurse}" "${_ppr_pkg_name}" "${_ppr_pkg_rdepends}"; fi; if [ "${_ppr_pkg_disabled:+1}" = 1 ]; then @@ -746,8 +740,7 @@ pkgtool() { "${ARG_INFO:-0}") pkgtoolp_info \$_status "${PKGTOOL_PKG_NAME}"; ;; "${ARG_MIRROR:-0}") pkgtoolp_mirror \$_status "${ARG_MIRROR_DNAME}" "${ARG_MIRROR_DNAME_GIT}"; ;; "${ARG_PROFILE:-0}") pkgtoolp_profile \$_status "${ARG_PROFILE_LOG_FNAME}"; ;; - "${ARG_RDEPENDS:-0}") pkgtoolp_rdepends \$_status "${PKGTOOL_PKG_NAME}" 0; ;; - "${ARG_RDEPENDS_FULL:-0}") pkgtoolp_rdepends \$_status "${PKGTOOL_PKG_NAME}" 1; ;; + "${ARG_RDEPENDS:-0}") pkgtoolp_rdepends \$_status "${PKGTOOL_PKG_NAME}"; ;; "${ARG_TARBALL:-0}") pkgtoolp_tarball \$_status "${PKGTOOL_PKG_NAME}"; ;; esac; _rc="${?}"; fi; diff --git a/subr.ex/ex_init.subr b/subr.ex/ex_init.subr index e9b4d3f4..5dc4f857 100644 --- a/subr.ex/ex_init.subr +++ b/subr.ex/ex_init.subr @@ -321,7 +321,7 @@ ex_init_files() { # # ex_init_logging() - initialise build logging # @_rstatus: out reference to variable of status string on failure -# @_rverbose_tags: in reference toout variable of -V argument value +# @_rverbose_tags: in reference to out variable of -V argument value # @_verbose: -[vV] argument value # # Returns: zero (0) on success, non-zero (>0) on failure diff --git a/subr.ex/ex_pkg.subr b/subr.ex/ex_pkg.subr index 2e86c319..0458ed6d 100644 --- a/subr.ex/ex_pkg.subr +++ b/subr.ex/ex_pkg.subr @@ -3,7 +3,6 @@ # set +o errexit -o noglob -o nounset is assumed. # - # # ex_pkg_check_depends() - check single named package for unsatisfied dependencies # @_checkfl: enable (1) or inhibit (0) dependency expansion @@ -14,25 +13,15 @@ # @_workdir: pathname to build-specific temporary directory # # Returns: zero (0) given no outstanding dependencies, non-zero (>0) otherwise -# Side effects: ${PKG_${_PKG_NAME}_DEPENDS_FULL} may be mutated # ex_pkg_check_depends() { local _epcd_checkfl="${1}" _epcd_rpkg_disabled="${2}" _epcd_rpkg_finished="${3#\$}" \ _epcd_pkg_name="${4}" _epcd_rpkg_names="${5#\$}" _epcd_workdir="${6}" \ _epcd_dependfl=0 _epcd_depends="" _epcd_pkg_name_depend=""; - if [ "${_epcd_checkfl}" -eq 1 ]; then - if ! rtl_get_var_unsafe \$_epcd_depends -u "PKG_"${_epcd_pkg_name}"_DEPENDS_FULL"\ - || [ "${_epcd_depends:+1}" != 1 ]; - then - if rtl_get_var_unsafe \$_epcd_depends -u "PKG_"${_epcd_pkg_name}"_DEPENDS"; - then - eval PKG_"${_epcd_pkg_name}"_DEPENDS_FULL='$(rtl_uniq ${_epcd_depends})'; - else - return 0; - fi; - fi; - + if [ "${_epcd_checkfl}" -eq 1 ]\ + && rtl_get_var_unsafe \$_epcd_depends -u "PKG_"${_epcd_pkg_name}"_DEPENDS"\ + && [ "${_epcd_depends:+1}" = 1 ]; then for _epcd_pkg_name_depend in ${_epcd_depends}; do if ! rtl_lmatch "${_epcd_rpkg_disabled}" "${_epcd_pkg_name_depend}"\ && ! ex_pkg_state_test2 "${_epcd_workdir}" "${_epcd_pkg_name_depend}" finish; @@ -50,6 +39,34 @@ ex_pkg_check_depends() { }; # +# ex_pkg_check_depends_unknown() - check single named package for unknown dependencies +# @_pkg_name: single package name +# @_rpkg_names_set: in reference to variable of set of package names +# @_rpkg_unknown: out reference to variable of list of finished packages +# +# Returns: zero (0) given no unknown dependencies, non-zero (>0) otherwise +# +ex_pkg_check_depends_unknown() { + local _epcdu_pkg_name="${1}" _epcdu_rpkg_names_set="${2#\$}" \ + _epcdu_rpkg_unknown="${3#\$}" \ + _epcdu_defined=0 _epcdu_depends="" _epcdu_pkg_name_depend="" \ + _epcdu_rc=0; + + if rtl_get_var_unsafe \$_epcdu_depends -u "PKG_"${_epcdu_pkg_name}"_DEPENDS"\ + && [ "${_epcdu_depends:+1}" = 1 ]; then + for _epcdu_pkg_name_depend in ${_epcdu_depends}; do + if ! rtl_get_var_unsafe \$_epcdu_defined "${_epcdu_rpkg_names_set}_${_epcdu_pkg_name_depend}"\ + || [ "${_epcdu_defined:-0}" -eq 0 ]; then + rtl_lconcat "${_epcdu_rpkg_unknown}" "${_epcdu_pkg_name_depend}"; + _epcdu_rc=1; + fi; + done; + fi; + + return "${_epcdu_rc}"; +}; + +# # ex_pkg_copy_group_vars() - copy build group variables into build group # @_group_name_src: single source build group name # @_group_name_dst: single destination build group name @@ -365,8 +382,8 @@ ex_pkg_register_group() { # # ex_pkg_unfold_depends() - unfold list of package names into dependency-expanded set of complete, disabled, finished, and outstanding package names -# @_rdisabled: in reference toout variable of disabled packages -# @_rfinished: in reference toout variable of finished packages +# @_rdisabled: in reference to out variable of disabled packages +# @_rfinished: in reference to out variable of finished packages # @_rnames: out reference to variable of package names # @_checkfl: enable (1) or inhibit (0) dependency expansion # @_forcefl: enable (1) or inhibit (0) forcibly rebuilding finished packages @@ -383,8 +400,9 @@ ex_pkg_unfold_depends() { _epud_checkfl="${4}" _epud_forcefl="${5}" _epud_group_name="${6}" \ _epud_pkg_names="${7}" _epud_restart="${8}" _epud_test_finished="${9}" \ _epud_workdir="${10}" \ - _epud_pkg_disabled="" _epud_pkg_force="" _epud_pkg_name="" \ - _epud_pkg_names_new="" _epud_restartfl=0; + _epud_depends="" _epud_pkg_disabled="" _epud_pkg_force="" _epud_pkg_name="" \ + _epud_pkg_name_depend="" _epud_pkg_names_new="" _epud_pkg_names_set="" \ + _epud_pkg_unknown="" _epud_restartfl=0 _epud_unknown_depends=0; if [ "${_epud_restart:+1}" = 1 ]\ && ! rtl_lmatch \$_epud_restart "ALL LAST"; then @@ -396,7 +414,19 @@ ex_pkg_unfold_depends() { _epud_pkg_names="$(rtl_uniq ${_epud_pkg_names})"; fi; + rtl_llift_set \$_epud_pkg_names \$_epud_pkg_names_set; for _epud_pkg_name in ${_epud_pkg_names}; do + if rtl_get_var_unsafe \$_epud_depends -u "PKG_"${_epud_pkg_name}"_DEPENDS"\ + && [ "${_epud_depends:+1}" = 1 ]; then + _epud_pkg_unknown=""; + if ! ex_pkg_check_depends_unknown "${_epud_pkg_name}" \$_epud_pkg_names_set \$_epud_pkg_unknown; then + for _epud_pkg_name_depend in ${_epud_pkg_unknown}; do + rtl_log_msgV "warning" "${MSG_build_unknown_dep}" "${_epud_pkg_name_depend}" "${_epud_pkg_name}"; + done; + _epud_unknown_depends=1; + fi; + fi; + if [ "${_epud_restart}" = "ALL" ]\ || rtl_lmatch \$_epud_restart "${_epud_pkg_name}"; then _epud_restartfl=1; @@ -422,6 +452,11 @@ ex_pkg_unfold_depends() { rtl_lconcat \$_epud_pkg_names_new "${_epud_pkg_name}"; fi; done; + rtl_llift_unset \$_epud_pkg_names_set; + + if [ "${_epud_unknown_depends}" -eq 1 ]; then + rtl_log_msgV "warning" "${MSG_build_unknown_deps}"; + fi; eval ${_epud_rdisabled}='$(rtl_uniq2 "${_epud_rdisabled}")'; eval ${_epud_rfinished}='$(rtl_uniq2 "${_epud_rfinished}")'; @@ -432,24 +467,25 @@ ex_pkg_unfold_depends() { # # ex_pkg_unfold_rdepends() - unfold list of package names into reverse dependency-expanded set of complete, disabled, finished, and outstanding package names -# @_rdisabled: in reference toout variable of disabled packages -# @_rfinished: in reference toout variable of finished packages +# @_rdisabled: in reference to out variable of disabled packages +# @_rfinished: in reference to out variable of finished packages # @_rnames: out reference to variable of package names # @_group_name: build group name # @_pkg_names: list of package names # @_restart: optional whitespace-separated list of package names to rebuild # @_test_finished: only exclude disabled packages (0,) split finished packages # @_workdir: pathname to build-specific temporary directory +# @_recursefl: resolve recursively ("recurse") or non-recursively ("norecurse") # # Returns: zero (0) on success, non-zero (>0) on failure. # ex_pkg_unfold_rdepends() { local _epur_rdisabled="${1#\$}" _epur_rfinished="${2#\$}" _epur_rnames="${3#\$}" \ _epur_group_name="${4}" _epur_pkg_names="${5}" _epur_restart="${6}" \ - _epur_test_finished="${7}" _epur_workdir="${8}" \ + _epur_test_finished="${7}" _epur_workdir="${8}" _epur_recursefl="${9}" \ _epur_depends="" _epur_disabled=0 _epur_force=0 _epur_pkg_depends="" \ _epur_pkg_name="" _epur_pkg_names_new="" _epur_pkg_name_depend="" \ - _epur_pkg_rdepends=""; + _epur_pkg_name_rdepend="" _epur_pkg_rdepends=""; for _epur_pkg_name_depend in ${_epur_restart}; do for _epur_pkg_name in ${_epur_pkg_names}; do @@ -461,25 +497,32 @@ ex_pkg_unfold_rdepends() { && [ "${_epur_pkg_depends:+1}" = 1 ]\ && rtl_lmatch \$_epur_pkg_depends "${_epur_pkg_name_depend}"; then - if rtl_get_var_unsafe \$_epur_disabled -u "PKG_${_epur_pkg_name}_DISABLED"\ - && [ "${_epur_disabled}" = 1 ]; - then - rtl_lconcat "${_epur_rdisabled}" "${_epur_pkg_name}"; - - elif [ "${_epur_test_finished}" -eq 1 ]\ - && ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name}" finish\ - && rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\ - && [ "${_epur_force}" != 1 ]; - then - rtl_lconcat "${_epur_rfinished}" "${_epur_pkg_name}"; - - elif [ "${_epur_test_finished:-1}" -eq 0 ]\ - || ! ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name}" finish\ - || ( rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\ - && [ "${_epur_force}" = 1 ] ); - then - rtl_lconcat \$_epur_pkg_names_new "${_epur_pkg_name}"; - fi; + case "${_epur_recursefl}" in + recurse) _epur_pkg_rdepends="${_epur_pkg_name} ${_epur_pkg_depends}"; ;; + norecurse) _epur_pkg_rdepends="${_epur_pkg_name}"; ;; + esac; + + for _epur_pkg_name_rdepend in ${_epur_pkg_rdepends}; do + if rtl_get_var_unsafe \$_epur_disabled -u "PKG_${_epur_pkg_name_rdepend}_DISABLED"\ + && [ "${_epur_disabled}" = 1 ]; + then + rtl_lconcat "${_epur_rdisabled}" "${_epur_pkg_name_rdepend}"; + + elif [ "${_epur_test_finished}" -eq 1 ]\ + && ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name_rdepend}" finish\ + && rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\ + && [ "${_epur_force}" != 1 ]; + then + rtl_lconcat "${_epur_rfinished}" "${_epur_pkg_name_rdepend}"; + + elif [ "${_epur_test_finished:-1}" -eq 0 ]\ + || ! ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name_rdepend}" finish\ + || ( rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\ + && [ "${_epur_force}" = 1 ] ); + then + rtl_lconcat \$_epur_pkg_names_new "${_epur_pkg_name_rdepend}"; + fi; + done; fi; done; done; diff --git a/subr.ex/ex_pkg_dispatch.subr b/subr.ex/ex_pkg_dispatch.subr index 83f36656..19818e97 100644 --- a/subr.ex/ex_pkg_dispatch.subr +++ b/subr.ex/ex_pkg_dispatch.subr @@ -64,7 +64,7 @@ exp_pkg_dispatch_expand_packages() { "${_epdep_rdisabled}" "${_epdep_rfinished}" \ "${_epdep_rnames}" "${_epdep_group_name}" \ "${_epdep_pkg_names}" "${_epdep_restart}" 1 \ - "${_epdep_workdir}"; + "${_epdep_workdir}" "recurse"; fi; fi; @@ -77,16 +77,16 @@ exp_pkg_dispatch_expand_packages() { # # exp_pkg_dispatch_group() - dispatch a single build group -# @_rdispatch_count: in reference toout variable of dispatcher count -# @_rdispatch_count_cur: in reference toout variable of current dispatcher count +# @_rdispatch_count: in reference to out variable of dispatcher count +# @_rdispatch_count_cur: in reference to out variable of current dispatcher count # @_dispatch_count_max: maximum dispatcher count # @_dispatch_group_cur: current group # @_dispatch_group_max: maximum group -# @_rdispatch_njobs: in reference toout variable of dispatcher count -# @_rdispatch_wait: in reference toout variable of package names in a wait state +# @_rdispatch_njobs: in reference to out variable of dispatcher count +# @_rdispatch_wait: in reference to out variable of package names in a wait state # @_rpkg_disabled: in reference to variable of list of disabled packages -# @_rpkg_finished: in reference toout variable of list of finished packages -# @_rpkg_names: in reference toout variable of list of package names +# @_rpkg_finished: in reference to out variable of list of finished packages +# @_rpkg_names: in reference to out variable of list of package names # @_build_steps_default: list of default build steps # @_build_vars_default: list of default build variables # @_checkfl: enable (1) or inhibit (0) dependency expansion @@ -213,16 +213,16 @@ exp_pkg_dispatch_group() { # # exp_pkg_dispatch_packages() - dispatch set of packages -# @_rdispatch_count: in reference toout variable of dispatcher count +# @_rdispatch_count: in reference to out variable of dispatcher count # @_dispatch_count_cur: current dispatcher count # @_dispatch_count_max: maximum dispatcher count # @_dispatch_group_cur: current group # @_dispatch_group_max: maximum group -# @_rdispatch_njobs: in reference toout variable of dispatcher count -# @_rdispatch_wait: in reference toout variable of package names in a wait state +# @_rdispatch_njobs: in reference to out variable of dispatcher count +# @_rdispatch_wait: in reference to out variable of package names in a wait state # @_rpkg_disabled: in reference to variable of list of disabled packages -# @_rpkg_finished: in reference toout variable of list of finished packages -# @_rpkg_names: in reference toout variable of list of package names +# @_rpkg_finished: in reference to out variable of list of finished packages +# @_rpkg_names: in reference to out variable of list of package names # @_build_steps_default: list of default build steps # @_build_vars_default: list of default build variables # @_checkfl: enable (1) or inhibit (0) dependency expansion diff --git a/subr.rtl/rtl_list.subr b/subr.rtl/rtl_list.subr index 36bc77e9..0ec53661 100644 --- a/subr.rtl/rtl_list.subr +++ b/subr.rtl/rtl_list.subr @@ -222,6 +222,54 @@ rtl_llift2() { }; # +# rtl_llift_set() - convert list w/ separator to set +# @_rlist: in reference to list +# @_rset_new: out reference to new set +# @_sep: single non-zero, possibly multi-character, separator +# +# Notate bene: all list items in @_rlist must form valid shell parameter name substrings; +# no list item must be named "__000000__" +# Returns: zero (0) on success, non-zero (>0) on failure +# +rtl_llift_set() { + local _rls3_rlist="${1#\$}" _rls3_rset_new="${2#\$}" _rls3_sep="${3:-}" \ + _rls3_litem=""; + + if [ "${_rls3_sep:+1}" = 1 ]; then + local IFS="${_rls3_sep}"; + else + local _rls3_sep=" " IFS="${RTL_IFS_ORIG}"; + fi; + + eval set -- '${'"${_rls3_rlist}"'}'; + eval "${_rls3_rset_new}___000000__=\${${_rls3_rlist}}"; + for _rls3_litem in "${@}"; do + eval "${_rls3_rset_new}_${_rls3_litem}=1"; + done; + return 0; +}; + +# +# rtl_llift_unset() - unset set previously created w/ rtl_llift_set() +# @_rset: in reference to set +# +# Returns: zero (0) on success, non-zero (>0) on failure +# +rtl_llift_unset() { + local _rlu_rset="${1#\$}" \ + _rlu_index="" _rlu_item=""; + + if rtl_get_var_unsafe \$_rlu_index "${_rlu_rset}___000000__"; then + for _rlu_item in ${_rlu_index}; do + unset "${_rlu_rset}_${_rlu_item}"; + done; + unset "${_rlu_rset}___000000__"; + fi; + + return 0; +}; + +# # rtl_lmatch() - check if item(s) in list # @_rlist: in reference to list # @_item: item(s) to search for |