[PATCH v2 6/7] coreutils: Import from packages feed

Christian Marangi ansuelsmth at gmail.com
Sat Jan 7 06:06:37 PST 2023


On Fri, Jan 06, 2023 at 11:49:44PM -0800, Brian Norris wrote:
> I need to express a per-target dependency on the 'base64' utility, and
> that's seemingly impossible to do for busybox. Pull in coreutils to make
> that easier.
> 
> Signed-off-by: Brian Norris <computersforpeace at gmail.com>

We still need to think of a correct solution for this... coreutils is an
option but wonder if a better one is openssl... Actually we have a small
tool to handle specific decryption of some stuff... Wonder if that can
be expanded for this task and just use wolfssl or openssl api to decode
base64 stuff?

Would love some feedback about this from others since it's not so
trivial.

> ---
>  * New in v2
> 
> 
> (no changes since v1)
> 
>  package/utils/coreutils/Makefile              | 153 ++++++++++++++++++
>  .../patches/001-no_docs_man_tests.patch       |  93 +++++++++++
>  2 files changed, 246 insertions(+)
>  create mode 100644 package/utils/coreutils/Makefile
>  create mode 100644 package/utils/coreutils/patches/001-no_docs_man_tests.patch
> 
> diff --git a/package/utils/coreutils/Makefile b/package/utils/coreutils/Makefile
> new file mode 100644
> index 000000000000..d1af3ce962f1
> --- /dev/null
> +++ b/package/utils/coreutils/Makefile
> @@ -0,0 +1,153 @@
> +#
> +# Copyright (C) 2008-2014 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=coreutils
> +PKG_VERSION:=9.1
> +PKG_RELEASE:=1
> +
> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
> +PKG_SOURCE_URL:=@GNU/coreutils
> +PKG_HASH:=61a1f410d78ba7e7f37a5a4f50e6d1320aca33375484a3255eddf17a38580423
> +
> +PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
> +PKG_LICENSE:=GPL-3.0-or-later
> +PKG_LICENSE_FILES:=COPYING
> +PKG_CPE_ID:=cpe:/a:gnu:coreutils
> +
> +PKG_INSTALL:=1
> +PKG_BUILD_PARALLEL:=1
> +
> +include $(INCLUDE_DIR)/package.mk
> +
> +COREUTILS_APPLETS := \
> +	base32 base64 basename basenc b2sum cat chcon chgrp chmod chown chroot	\
> +	cksum comm cp csplit cut date dd df dir dircolors dirname du echo env	\
> +	expand expr factor false fmt fold groups head hostid id install join	\
> +	kill link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl	\
> +	nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd	\
> +	readlink realpath rm rmdir runcon seq sha1sum sha224sum sha256sum	\
> +	sha384sum sha512sum shred shuf sleep sort split stat stdbuf stty sum	\
> +	sync tac tail tee test timeout touch tr true truncate tsort tty uname	\
> +	unexpand uniq unlink uptime users vdir wc who whoami yes
> +
> +DIR_BIN := \
> +	base64 cat chgrp chmod chown cp date dd df echo false kill link ln ls	\
> +	mkdir mknod mktemp mv nice printenv pwd rm rmdir sleep stat stty sync	\
> +	touch true uname
> +
> +DIR_USR_BIN := \
> +	basename chcon cksum comm cut dirname du env expand expr factor fold	\
> +	groups head hostid id install logname md5sum mkfifo nl nohup nproc od	\
> +	paste printf readlink realpath runcon seq sha1sum sha256sum sha512sum	\
> +	shred shuf sort split sum tac tail tee test timeout tr truncate tty	\
> +	unexpand uniq unlink uptime users wc who whoami yes
> +
> +DIR_USR_SBIN := \
> +	chroot
> +
> +# BusyBox does not provide these yet
> +DIR_OTHERS := \
> +	base32 b2sum basenc csplit dir dircolors fmt join numfmt pathchk pinky	\
> +	pr ptx sha224sum sha384sum stdbuf tsort vdir
> +
> +$(eval $(foreach a,$(DIR_BIN),ALTS_$(a):=300:/bin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
> +$(eval $(foreach a,$(DIR_USR_BIN),ALTS_$(a):=300:/usr/bin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
> +$(eval $(foreach a,$(DIR_USR_SBIN),ALTS_$(a):=300:/usr/sbin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
> +
> +DEPENDS_sort = +libpthread
> +DEPENDS_timeout = +librt
> +DEPENDS_expr = +libgmp
> +DEPENDS_factor = +libgmp
> +DEPENDS_cp = +libacl
> +DEPENDS_dir = +libacl +libcap
> +DEPENDS_install = +libacl
> +DEPENDS_ls = +libacl +libcap
> +DEPENDS_mv = +libacl
> +DEPENDS_vdir = +libacl +libcap
> +
> +FILES_stdbuf := usr/lib/coreutils/libstdbuf.so
> +
> +define Package/coreutils/Default
> +  SECTION:=utils
> +  CATEGORY:=Utilities
> +  TITLE:=The GNU core utilities
> +  URL:=http://www.gnu.org/software/coreutils/
> +endef
> +
> +define Package/coreutils
> +  $(call Package/coreutils/Default)
> +  TITLE:=The GNU core utilities
> +  MENU:=1
> +endef
> +
> +define Package/coreutils/description
> + Full versions of standard GNU utilities. If an equivalent Busybox applet is
> + available, you should consider compiling that instead as Busybox applets are
> + usually smaller, at the expense of reduced functionality.
> +endef
> +
> +define GenPlugin
> + define Package/$(1)
> +   $(call Package/coreutils/Default)
> +   DEPENDS:=coreutils $(DEPENDS_$(2))
> +   TITLE:=Utility $(2) from the GNU core utilities
> +   ALTERNATIVES:=$(ALTS_$(2))
> + endef
> +
> + define Package/$(1)/description
> +  Full version of standard GNU $(2) utility.
> + endef
> +endef
> +
> +$(foreach a,$(COREUTILS_APPLETS),$(eval $(call GenPlugin,coreutils-$(a),$(a))))
> +
> +CONFIGURE_VARS += \
> +	gl_cv_func_mbrtowc_incomplete_state=yes \
> +	gl_cv_func_mbrtowc_retval=yes \
> +	gl_cv_func_wcrtomb_retval=yes \
> +	ac_cv_header_selinux_context_h=no \
> +	ac_cv_header_selinux_flash_h=no \
> +	ac_cv_header_selinux_selinux_h=no \
> +	ac_cv_search_setfilecon=no
> +
> +CONFIGURE_ARGS += \
> +	--disable-xattr \
> +	--enable-install-program=su \
> +	--enable-threads=posix \
> +	--enable-acl \
> +	--disable-assert \
> +	--disable-rpath \
> +	--disable-libsmack \
> +	--enable-libcap \
> +	--without-linux-crypto \
> +	--without-openssl \
> +	--$(if $(CONFIG_USE_MUSL),with,without)-included-regex \
> +	--without-selinux \
> +	--with-gmp
> +
> +define Package/coreutils/install
> +	true
> +endef
> +
> +define BuildPlugin
> +  define Package/$(1)/install
> +	$(INSTALL_DIR) $$(1)/usr/$(if $(ALTS_$(2)),libexec,bin)
> +	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $$(1)/usr/$(if $(ALTS_$(2)),libexec/$(2)-coreutils,bin/$(2))
> +	$(foreach f,$(FILES_$(2)),
> +		$(INSTALL_DIR) $$(1)/$(dir $(f))
> +		$(INSTALL_BIN) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(f)
> +	)
> +  endef
> +
> +  $$(eval $$(call BuildPackage,$(1)))
> +endef
> +
> +$(eval $(call BuildPackage,coreutils))
> +
> +$(foreach a,$(COREUTILS_APPLETS),$(eval $(call BuildPlugin,coreutils-$(a),$(a))))
> diff --git a/package/utils/coreutils/patches/001-no_docs_man_tests.patch b/package/utils/coreutils/patches/001-no_docs_man_tests.patch
> new file mode 100644
> index 000000000000..e4feaf5cd9a4
> --- /dev/null
> +++ b/package/utils/coreutils/patches/001-no_docs_man_tests.patch
> @@ -0,0 +1,93 @@
> +--- a/Makefile.am
> ++++ b/Makefile.am
> +@@ -17,7 +17,7 @@
> + 
> + ALL_RECURSIVE_TARGETS =
> + 
> +-SUBDIRS = po . gnulib-tests
> ++SUBDIRS = po
> + 
> + EXTRA_DIST =				\
> +   .mailmap				\
> +@@ -210,6 +210,3 @@ AM_CPPFLAGS = -Ilib -I$(top_srcdir)/lib
> + 
> + include $(top_srcdir)/lib/local.mk
> + include $(top_srcdir)/src/local.mk
> +-include $(top_srcdir)/doc/local.mk
> +-include $(top_srcdir)/man/local.mk
> +-include $(top_srcdir)/tests/local.mk
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -4115,11 +4115,7 @@ RECURSIVE_TARGETS = all-recursive check-
> + 	install-ps-recursive install-recursive installcheck-recursive \
> + 	installdirs-recursive pdf-recursive ps-recursive \
> + 	tags-recursive uninstall-recursive
> +-am__can_run_installinfo = \
> +-  case $$AM_UPDATE_INFO_DIR in \
> +-    n|no|NO) false;; \
> +-    *) (install-info --version) >/dev/null 2>&1;; \
> +-  esac
> ++am__can_run_installinfo = false
> + am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
> + am__vpath_adj = case $$p in \
> +     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
> +@@ -4369,10 +4365,10 @@ am__DIST_COMMON = $(doc_coreutils_TEXINF
> + 	$(top_srcdir)/build-aux/missing \
> + 	$(top_srcdir)/build-aux/test-driver \
> + 	$(top_srcdir)/build-aux/texinfo.tex \
> +-	$(top_srcdir)/build-aux/ylwrap $(top_srcdir)/doc/local.mk \
> +-	$(top_srcdir)/lib/alloca.c $(top_srcdir)/lib/config.hin \
> +-	$(top_srcdir)/lib/local.mk $(top_srcdir)/man/local.mk \
> +-	$(top_srcdir)/src/local.mk $(top_srcdir)/src/single-binary.mk \
> ++	$(top_srcdir)/build-aux/ylwrap \
> ++	$(top_srcdir)/lib/alloca.c \
> ++	$(top_srcdir)/lib/local.mk \
> ++	$(top_srcdir)/src/local.mk \
> + 	$(top_srcdir)/tests/local.mk ABOUT-NLS AUTHORS COPYING \
> + 	ChangeLog INSTALL NEWS README THANKS TODO build-aux/compile \
> + 	build-aux/config.guess build-aux/config.rpath \
> +@@ -4479,7 +4475,7 @@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
> + ERRNO_H = @ERRNO_H@
> + ETAGS = @ETAGS@
> + EXEEXT = @EXEEXT@
> +-EXTRA_MANS = @EXTRA_MANS@
> ++EXTRA_MANS =
> + FLOAT_H = @FLOAT_H@
> + FNMATCH_H = @FNMATCH_H@
> + GETADDRINFO_LIB = @GETADDRINFO_LIB@
> +@@ -6057,7 +6053,7 @@ libexecdir = @libexecdir@
> + lispdir = @lispdir@
> + localedir = @localedir@
> + localstatedir = @localstatedir@
> +-man1_MANS = @man1_MANS@
> ++man1_MANS =
> + mandir = @mandir@
> + mkdir_p = @mkdir_p@
> + oldincludedir = @oldincludedir@
> +@@ -6080,7 +6076,7 @@ top_build_prefix = @top_build_prefix@
> + top_builddir = @top_builddir@
> + top_srcdir = @top_srcdir@
> + ALL_RECURSIVE_TARGETS = distcheck-hook check-root
> +-SUBDIRS = po . gnulib-tests
> ++SUBDIRS = po
> + 
> + #if GNU_MAKE
> + #	[nicer features that work only with GNU Make]
> +@@ -8272,7 +8268,7 @@ all: $(BUILT_SOURCES)
> + .SUFFIXES: .1 .c .dvi .log .o .obj .pl .pl$(EXEEXT) .ps .sh .sh$(EXEEXT) .trs .x .xpl .xpl$(EXEEXT) .y
> + am--refresh: Makefile
> + 	@:
> +-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(top_srcdir)/doc/local.mk $(top_srcdir)/man/local.mk $(top_srcdir)/tests/local.mk $(am__configure_deps)
> ++$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(am__configure_deps)
> + 	@for dep in $?; do \
> + 	  case '$(am__configure_deps)' in \
> + 	    *$$dep*) \
> +@@ -8294,7 +8290,7 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
> + 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
> + 	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
> + 	esac;
> +-$(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(top_srcdir)/doc/local.mk $(top_srcdir)/man/local.mk $(top_srcdir)/tests/local.mk $(am__empty):
> ++$(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(am__empty):
> + 
> + $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
> + 	$(SHELL) ./config.status --recheck
> -- 
> 2.39.0
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

-- 
	Ansuel



More information about the openwrt-devel mailing list