diff mbox series

[v3,1/3] package/cross-ldd: new package

Message ID 20211223111348.3532601-1-thierry.bultel@linatsea.fr
State Changes Requested
Headers show
Series [v3,1/3] package/cross-ldd: new package | expand

Commit Message

Thierry Bultel Dec. 23, 2021, 11:13 a.m. UTC
cross-ldd works just as ldd, but supports
other architectures. It is needed by dracut, for instance.

Signed-off-by: Thierry Bultel <thierry.bultel@linatsea.fr>
---
Changes v1 -> v2:
  - simplified the download (suggested by Arnoult)
Changes v2 -> v3
  - changed the name to -ldd-cross, in order to avoid
    a conflict with the external toolchains that implement it

Signed-off-by: Thierry Bultel <thierry.bultel@linatsea.fr>
---
 package/Config.in              |  1 +
 package/cross-ldd/Config.in    |  7 +++++++
 package/cross-ldd/cross-ldd.mk | 19 +++++++++++++++++++
 3 files changed, 27 insertions(+)
 create mode 100644 package/cross-ldd/Config.in
 create mode 100644 package/cross-ldd/cross-ldd.mk

Comments

Yann E. MORIN Jan. 5, 2022, 10:29 p.m. UTC | #1
Thierry, All,

On 2021-12-23 12:13 +0100, Thierry Bultel spake thusly:
> cross-ldd works just as ldd, but supports
> other architectures. It is needed by dracut, for instance.
> 
> Signed-off-by: Thierry Bultel <thierry.bultel@linatsea.fr>
> ---
[--SNIP--]
> diff --git a/package/cross-ldd/Config.in b/package/cross-ldd/Config.in
> new file mode 100644
> index 0000000000..3858fbc5fe
> --- /dev/null
> +++ b/package/cross-ldd/Config.in
> @@ -0,0 +1,7 @@
> +config BR2_PACKAGE_HOST_CROSS_LDD
> +	bool "cross-ldd"

I don't think this tool warrants a Kconfig entry. I.e. it should be a
blind host-only package, with no Config.in.

> +	help
> +	  ldd drop-in replacement for cross-compilation
> +	  toolchains.
> +	  This is the officially supported version mentioned
> +	  in the dracut documentation

It would have been nice to add a pointer to that documentation (I spent
quite some time look for it...). It's in: docs/README.cross

> diff --git a/package/cross-ldd/cross-ldd.mk b/package/cross-ldd/cross-ldd.mk
> new file mode 100644
> index 0000000000..fc0752adff
> --- /dev/null
> +++ b/package/cross-ldd/cross-ldd.mk
> @@ -0,0 +1,19 @@
> +################################################################################
> +#
> +# cross-ldd
> +#
> +################################################################################
> +
> +CROSS_LDD_VERSION = 6c9c724ebd6a29c279c6e5734e44c07f067808ec
> +CROSS_LDD_SOURCE = $(CROSS_LDD_VERSION).tar.gz
> +CROSS_LDD_SITE = https://gist.github.com/jerome-pouiller/c403786c1394f53f44a3b61214489e6f/archive

I find it really sad that we have to use a random gist without proper
packaging or repository... :-( But I guess we don't have much options...

You are missing the license for that script:

    CROSS_LDD_LICENSE = GPL-2.0

(I should know, I wrote it! ;-) And incidentally, it is also mentioned
in the help text.)

> +# Notice that we change the name to '-ldd-cross', in order to avoid conflict
> +# with some external toolchains that implement it

-ldd-cross is still too generic. Make it really specific to buildroot, by
calling it -ldd-buildroot

> +define HOST_CROSS_LDD_INSTALL_CMDS
> +	$(SED) 's/-ldd}/-ldd-cross}'/g $(@D)/cross-compile-ldd
> +	install -D -m 755 $(@D)/cross-compile-ldd $(TARGET_CROSS)ldd-cross
> +endef

This install comand does two things:

  - modify the source script
  - install the modified script

Semantically, we want to separate actions that happen in the source tree
into one of the extract, patch, configure, or build commands.

Also, usually, we shy away from patching with sed expressions, and we
prefer actual patches.

Regards,
Yann E. MORIN.

> +
> +$(eval $(host-generic-package))
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index bcb23132c9..5d0f858c03 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -162,6 +162,7 @@  menu "Development tools"
 	source "package/check/Config.in"
 	source "package/cmake/Config.in"
 	source "package/cppunit/Config.in"
+	source "package/cross-ldd/Config.in"
 	source "package/cukinia/Config.in"
 	source "package/cunit/Config.in"
 	source "package/cvs/Config.in"
diff --git a/package/cross-ldd/Config.in b/package/cross-ldd/Config.in
new file mode 100644
index 0000000000..3858fbc5fe
--- /dev/null
+++ b/package/cross-ldd/Config.in
@@ -0,0 +1,7 @@ 
+config BR2_PACKAGE_HOST_CROSS_LDD
+	bool "cross-ldd"
+	help
+	  ldd drop-in replacement for cross-compilation
+	  toolchains.
+	  This is the officially supported version mentioned
+	  in the dracut documentation
diff --git a/package/cross-ldd/cross-ldd.mk b/package/cross-ldd/cross-ldd.mk
new file mode 100644
index 0000000000..fc0752adff
--- /dev/null
+++ b/package/cross-ldd/cross-ldd.mk
@@ -0,0 +1,19 @@ 
+################################################################################
+#
+# cross-ldd
+#
+################################################################################
+
+CROSS_LDD_VERSION = 6c9c724ebd6a29c279c6e5734e44c07f067808ec
+CROSS_LDD_SOURCE = $(CROSS_LDD_VERSION).tar.gz
+CROSS_LDD_SITE = https://gist.github.com/jerome-pouiller/c403786c1394f53f44a3b61214489e6f/archive
+
+# Notice that we change the name to '-ldd-cross', in order to avoid conflict
+# with some external toolchains that implement it
+
+define HOST_CROSS_LDD_INSTALL_CMDS
+	$(SED) 's/-ldd}/-ldd-cross}'/g $(@D)/cross-compile-ldd
+	install -D -m 755 $(@D)/cross-compile-ldd $(TARGET_CROSS)ldd-cross
+endef
+
+$(eval $(host-generic-package))