From 5c52b2f5ca1b5b922f322f23dc27ea2362deabdd Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Thu, 4 Feb 2016 15:32:03 +0000 Subject: [PATCH] Rework the way .ucl files are generated. One of the major pain points with how this was implemented is the requirement of in-tree, hard-coded .ucl, as well as -.ucl where can be lib32, profile, development, debug, or any combination of the four. This created significant overhead when adding new packages and any of the files in any of the combinations were missing. Instead of test(1)-ing if the .ucl file exists, hand off to a script to figure out what the final ucl file name should be before invoking pkg(8). The default behavior is 'template.ucl' is used as a fallback. This affects only the userland packages, as the kernel code is already smart enough to handle these variations. Sponsored by: The FreeBSD Foundation --- Makefile.inc1 | 17 +-- release/packages/Makefile.package | 67 +++++++++ release/packages/acct-debug.ucl | 20 --- release/packages/acct.ucl | 4 +- release/packages/acpi-debug.ucl | 20 --- release/packages/acpi.ucl | 4 +- release/packages/amd-debug.ucl | 20 --- release/packages/amd.ucl | 4 +- release/packages/apm-debug.ucl | 20 --- release/packages/apm.ucl | 4 +- release/packages/at-debug.ucl | 20 --- release/packages/at.ucl | 4 +- release/packages/autofs-debug.ucl | 20 --- release/packages/autofs.ucl | 4 +- release/packages/bhyve-debug.ucl | 22 --- release/packages/bhyve.ucl | 8 +- release/packages/binutils-debug.ucl | 20 --- release/packages/binutils.ucl | 4 +- release/packages/bsdinstall-debug.ucl | 20 --- release/packages/bsdinstall.ucl | 4 +- release/packages/bsnmp-debug.ucl | 20 --- release/packages/bsnmp-development.ucl | 20 --- release/packages/bsnmp-lib32-debug.ucl | 20 --- release/packages/bsnmp-lib32-development.ucl | 20 --- release/packages/bsnmp-lib32-profile.ucl | 20 --- release/packages/bsnmp-lib32.ucl | 20 --- release/packages/bsnmp-profile.ucl | 20 --- release/packages/bsnmp.ucl | 4 +- release/packages/clang-debug.ucl | 20 --- release/packages/clang.ucl | 4 +- release/packages/debug.ucl | 4 +- release/packages/development.ucl | 2 +- release/packages/dma-debug.ucl | 21 --- release/packages/dma.ucl | 7 +- release/packages/ee-debug.ucl | 20 --- release/packages/ee.ucl | 4 +- release/packages/gdb-debug.ucl | 20 --- release/packages/gdb.ucl | 4 +- release/packages/generate-ucl.sh | 138 ++++++++++++++++++ release/packages/groff-debug.ucl | 20 --- release/packages/groff.ucl | 4 +- release/packages/jail-debug.ucl | 20 --- release/packages/jail-development.ucl | 20 --- release/packages/jail-lib32-debug.ucl | 20 --- release/packages/jail-lib32-development.ucl | 20 --- release/packages/jail-lib32-profile.ucl | 20 --- release/packages/jail-lib32.ucl | 20 --- release/packages/jail-profile.ucl | 20 --- release/packages/jail.ucl | 4 +- release/packages/lib32-debug.ucl | 20 --- release/packages/lib32-development.ucl | 20 --- release/packages/lib32.ucl | 4 +- release/packages/profile.ucl | 2 +- release/packages/rcmds-debug.ucl | 20 --- release/packages/rcmds.ucl | 4 +- release/packages/runtime-manuals.ucl | 4 +- release/packages/runtime.ucl | 7 - release/packages/ssh-debug.ucl | 20 --- release/packages/ssh-development.ucl | 20 --- release/packages/ssh-lib32-debug.ucl | 20 --- release/packages/ssh-lib32-development.ucl | 20 --- release/packages/ssh-lib32-profile.ucl | 20 --- release/packages/ssh-lib32.ucl | 20 --- release/packages/ssh-profile.ucl | 20 --- release/packages/ssh.ucl | 4 +- release/packages/svn-debug.ucl | 20 --- release/packages/svn.ucl | 6 +- release/packages/syscons.ucl | 6 +- .../{lib32-profile.ucl => template.ucl} | 9 +- release/packages/tests-debug.ucl | 20 --- release/packages/tests-development.ucl | 20 --- release/packages/tests-profile.ucl | 20 --- release/packages/tests.ucl | 2 +- release/packages/unbound-debug.ucl | 21 --- release/packages/unbound-development.ucl | 21 --- release/packages/unbound-lib32-debug.ucl | 21 --- .../packages/unbound-lib32-development.ucl | 21 --- release/packages/unbound-lib32-profile.ucl | 21 --- release/packages/unbound-lib32.ucl | 21 --- release/packages/unbound-profile.ucl | 21 --- release/packages/unbound.ucl | 7 +- release/packages/vi-debug.ucl | 20 --- release/packages/vi.ucl | 4 +- 83 files changed, 268 insertions(+), 1100 deletions(-) create mode 100644 release/packages/Makefile.package delete mode 100644 release/packages/acct-debug.ucl delete mode 100644 release/packages/acpi-debug.ucl delete mode 100644 release/packages/amd-debug.ucl delete mode 100644 release/packages/apm-debug.ucl delete mode 100644 release/packages/at-debug.ucl delete mode 100644 release/packages/autofs-debug.ucl delete mode 100644 release/packages/bhyve-debug.ucl delete mode 100644 release/packages/binutils-debug.ucl delete mode 100644 release/packages/bsdinstall-debug.ucl delete mode 100644 release/packages/bsnmp-debug.ucl delete mode 100644 release/packages/bsnmp-development.ucl delete mode 100644 release/packages/bsnmp-lib32-debug.ucl delete mode 100644 release/packages/bsnmp-lib32-development.ucl delete mode 100644 release/packages/bsnmp-lib32-profile.ucl delete mode 100644 release/packages/bsnmp-lib32.ucl delete mode 100644 release/packages/bsnmp-profile.ucl delete mode 100644 release/packages/clang-debug.ucl delete mode 100644 release/packages/dma-debug.ucl delete mode 100644 release/packages/ee-debug.ucl delete mode 100644 release/packages/gdb-debug.ucl create mode 100755 release/packages/generate-ucl.sh delete mode 100644 release/packages/groff-debug.ucl delete mode 100644 release/packages/jail-debug.ucl delete mode 100644 release/packages/jail-development.ucl delete mode 100644 release/packages/jail-lib32-debug.ucl delete mode 100644 release/packages/jail-lib32-development.ucl delete mode 100644 release/packages/jail-lib32-profile.ucl delete mode 100644 release/packages/jail-lib32.ucl delete mode 100644 release/packages/jail-profile.ucl delete mode 100644 release/packages/lib32-debug.ucl delete mode 100644 release/packages/lib32-development.ucl delete mode 100644 release/packages/rcmds-debug.ucl delete mode 100644 release/packages/ssh-debug.ucl delete mode 100644 release/packages/ssh-development.ucl delete mode 100644 release/packages/ssh-lib32-debug.ucl delete mode 100644 release/packages/ssh-lib32-development.ucl delete mode 100644 release/packages/ssh-lib32-profile.ucl delete mode 100644 release/packages/ssh-lib32.ucl delete mode 100644 release/packages/ssh-profile.ucl delete mode 100644 release/packages/svn-debug.ucl rename release/packages/{lib32-profile.ucl => template.ucl} (66%) delete mode 100644 release/packages/tests-debug.ucl delete mode 100644 release/packages/tests-development.ucl delete mode 100644 release/packages/tests-profile.ucl delete mode 100644 release/packages/unbound-debug.ucl delete mode 100644 release/packages/unbound-development.ucl delete mode 100644 release/packages/unbound-lib32-debug.ucl delete mode 100644 release/packages/unbound-lib32-development.ucl delete mode 100644 release/packages/unbound-lib32-profile.ucl delete mode 100644 release/packages/unbound-lib32.ucl delete mode 100644 release/packages/unbound-profile.ucl delete mode 100644 release/packages/vi-debug.ucl diff --git a/Makefile.inc1 b/Makefile.inc1 index 8fc07557dbf1..ded62724a588 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -1393,22 +1393,13 @@ create-world-packages: _pkgbootstrap ${DESTDIR}/METALOG @for plist in ${DESTDIR}/*.plist; do \ plist=$${plist##*/} ; \ - test -f ${SRCDIR}/release/packages/$${plist%.plist}.ucl || \ - ( echo "Unkown package FreeBSD-$${plist%.plist}" ; false ) ; \ + pkgname=$${plist%.plist} ; \ + sh ${SRCDIR}/release/packages/generate-ucl.sh -o $${pkgname} \ + -s ${SRCDIR} -u ${DESTDIR}/$${pkgname}.ucl ; \ done - @cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \ - pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \ - for plist in ${DESTDIR}/*.plist; do \ + @for plist in ${DESTDIR}/*.plist; do \ plist=$${plist##*/} ; \ pkgname=$${plist%.plist} ; \ - sed -e "s/%VERSION%/${PKG_VERSION}/" \ - -e "s/%PKGNAME%/$${pkgname}/" \ - -e "s/%COMMENT%/Generic comment for $${pkgname}/" \ - -e "s/%DESC%/Generic description for $${pkgname}/" \ - -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ - -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ - ${SRCDIR}/release/packages/$${pkgname}.ucl \ - > ${DESTDIR}/$${pkgname}.ucl ; \ awk -F\" ' \ /^name/ { printf("===> Creating %s-", $$2); next } \ /^version/ { print $$2; next } \ diff --git a/release/packages/Makefile.package b/release/packages/Makefile.package new file mode 100644 index 000000000000..27e310aabf11 --- /dev/null +++ b/release/packages/Makefile.package @@ -0,0 +1,67 @@ +# +# $FreeBSD$ +# + +acct_DESC= Accounting Utilties +acpi_DESC= ACPI Utilities +amd_DESC= AMD Utilities +apm_DESC= APM Utilities +at_DESC= AT Utilities +autofs_DESC= Autofs Utilities +bhyve_DESC= Bhyve Utilities +binutils_DESC= Binutils +bsdinstall_DESC= BSDInstall Utilities +bsnmp_DESC= BSNMP Utilities +clang_DESC= Clang Utilities +docs_DESC= Documentation +dma_DESC= DMA Mail Agent Utilities +ee_DESC= Easy Editor Utilities +gdb_DESC= GDB Utilities +groff_DESC= Groff Utilities +jail_DESC= Jail Utilities +kernel_DESC= FreeBSD Kernel +rcmds_DESC= Remote Command Utilities +manuals_DESC= Manual Pages +ssh_DESC= Secure Shell Utilities +svn_DESC= Subversion Version Conrol System +syscons_DESC= Syscons Console +tests_DESC= Test Suite +unbound_DESC= Unbound DNS Resolver +vi_DESC= Vi Editor +debug_DESC= FreeBSD Base System (Debugging Symbols) +development_DESC= FreeBSD Base System (Development Files) +lib32_DESC= FreeBSD Base System (32-bit Libraries) +profile_DESC= FreeBSD Base System (Profiling Libraries) +runtime_DESC= FreeBSD Base System + +acct_COMMENT= Accounting Utilties +acpi_COMMENT= ACPI Utilities +amd_COMMENT= AMD Utilities +apm_COMMENT= APM Utilities +at_COMMENT= AT Utilities +autofs_COMMENT= Autofs Utilities +bhyve_COMMENT= Bhyve Utilities +binutils_COMMENT= Binutils +bsdinstall_COMMENT= BSDInstall Utilities +bsnmp_COMMENT= BSNMP Utilities +clang_COMMENT= Clang Utilities +docs_COMMENT= Documentation +dma_COMMENT= DMA Mail Agent Utilities +ee_COMMENT= Easy Editor Utilities +gdb_COMMENT= GDB Utilities +groff_COMMENT= Groff Utilities +jail_COMMENT= Jail Utilities +kernel_COMMENT= FreeBSD Kernel +rcmds_COMMENT= Remote Command Utilities +manuals_COMMENT= Manual Pages +ssh_COMMENT= Secure Shell Utilities +svn_COMMENT= Subversion Version Conrol System +syscons_COMMENT= Syscons Console +tests_COMMENT= Test Suite +unbound_COMMENT= Unbound DNS Resolver +vi_COMMENT= Vi Editor +debug_COMMENT= FreeBSD Base System (Debugging Symbols) +development_COMMENT= FreeBSD Base System (Development Files) +lib32_COMMENT= FreeBSD Base System (32-bit Libraries) +profile_COMMENT= FreeBSD Base System (Profiling Libraries) +runtime_COMMENT= FreeBSD Base System diff --git a/release/packages/acct-debug.ucl b/release/packages/acct-debug.ucl deleted file mode 100644 index 90dc7a7dabb6..000000000000 --- a/release/packages/acct-debug.ucl +++ /dev/null @@ -1,20 +0,0 @@ -name = "FreeBSD-%PKGNAME%" -origin = "base" -version = "%VERSION%" -comment = "Accounting Tools (debugging symbols)" -categories = [ base ] -maintainer = "re@FreeBSD.org" -www = "https://www.FreeBSD.org" -prefix = "/" -licenselogic = "single" -licenses = [ BSD2CLAUSE ] -desc = < ${uclfile}" + echo "===============================================================" + echo "" + echo "" + echo "" + fi + + [ -z "${comment}" ] && comment="${outname} package" + [ ! -z "${_descr}" ] && comment="${comment} (${_descr})" + [ -z "${desc}" ] && desc="${outname} package" + + cp "${uclsource}" "${uclfile}" + cap_arg="$(make -C ${srctree}/etc -VCAP_MKDB_ENDIAN)" + pwd_arg="$(make -C ${srctree}/etc -VPWD_MKDB_ENDIAN)" + sed -i '' -e "s/%VERSION%/${PKG_VERSION}/" \ + -e "s/%PKGNAME%/${origname}/" \ + -e "s/%COMMENT%/${comment}/" \ + -e "s/%DESC%/${desc}/" \ + -e "s/%CAP_MKDB_ENDIAN%/${cap_arg}/g" \ + -e "s/%PWD_MKDB_ENDIAN%/${pwd_arg}/g" \ + -e "s/%PKGDEPS%/${pkgdeps}/" \ + ${uclfile} + return 0 +} + +main "${@}" diff --git a/release/packages/groff-debug.ucl b/release/packages/groff-debug.ucl deleted file mode 100644 index e753a1ed76f4..000000000000 --- a/release/packages/groff-debug.ucl +++ /dev/null @@ -1,20 +0,0 @@ -name = "FreeBSD-%PKGNAME%" -origin = "base" -version = "%VERSION%" -comment = "GNU groff (debugging symbols)" -categories = [ base ] -maintainer = "re@FreeBSD.org" -www = "https://www.FreeBSD.org" -prefix = "/" -licenselogic = "single" -licenses = [ GPLv2 ] -desc = <