diff mbox series

[1/1] package/tinysshd: Fix static-only build

Message ID 20240725173709.1087549-1-martin@wetterwald.eu
State Accepted
Headers show
Series [1/1] package/tinysshd: Fix static-only build | expand

Commit Message

Martin Wetterwald July 25, 2024, 5:37 p.m. UTC
When using BR2_STATIC_LIBS=y, tinysshd's build was successful, but the
binary didn't work on the final target: this is because a dynamically
linked ELF was produced, on a target having no dynamic loader at all.

Using $(TARGET_CONFIGURE_OPTS) propagates all the options and not only
"CC", resulting in a correct static binary able to run on the target.

Without the patch:

> tinysshd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
> dynamically linked, interpreter /lib/ld-musl-armhf.so.1, stripped

With the patch:

> tinysshd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
> statically linked, stripped

Signed-off-by: Martin Wetterwald <martin@wetterwald.eu>
---
 package/tinyssh/tinyssh.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Petazzoni July 26, 2024, 7:19 a.m. UTC | #1
Hello Martin,

On Thu, 25 Jul 2024 19:37:09 +0200
Martin Wetterwald <martin@wetterwald.eu> wrote:

> When using BR2_STATIC_LIBS=y, tinysshd's build was successful, but the
> binary didn't work on the final target: this is because a dynamically
> linked ELF was produced, on a target having no dynamic loader at all.
> 
> Using $(TARGET_CONFIGURE_OPTS) propagates all the options and not only
> "CC", resulting in a correct static binary able to run on the target.
> 
> Without the patch:
> 
> > tinysshd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
> > dynamically linked, interpreter /lib/ld-musl-armhf.so.1, stripped  
> 
> With the patch:
> 
> > tinysshd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
> > statically linked, stripped  
> 
> Signed-off-by: Martin Wetterwald <martin@wetterwald.eu>
> ---
>  package/tinyssh/tinyssh.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks for your contribution, I've applied your patch, after fixing
some small details:

- package/tinyssh instead of package/tinysshd as the commit prefix.
  Indeed, the package name is tinyssh, not tinyssd

- remove the capital letter in "Fix", as we try to have consistency
  between our commit titles, and the vast majority of them don't
  capitalize the first word

- add a "Fixes:" tag that points to which commit is being fixed by your
  change, so that we know if your fix needs to be backported to our LTS
  branch or not

Thanks!

Thomas
Peter Korsgaard Aug. 31, 2024, 9:48 p.m. UTC | #2
>>>>> "Martin" == Martin Wetterwald <martin@wetterwald.eu> writes:

 > When using BR2_STATIC_LIBS=y, tinysshd's build was successful, but the
 > binary didn't work on the final target: this is because a dynamically
 > linked ELF was produced, on a target having no dynamic loader at all.

 > Using $(TARGET_CONFIGURE_OPTS) propagates all the options and not only
 > "CC", resulting in a correct static binary able to run on the target.

 > Without the patch:

 >> tinysshd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
 >> dynamically linked, interpreter /lib/ld-musl-armhf.so.1, stripped

 > With the patch:

 >> tinysshd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
 >> statically linked, stripped

 > Signed-off-by: Martin Wetterwald <martin@wetterwald.eu>

Committed to 2024.02.x and 2024.05.x, thanks.
diff mbox series

Patch

diff --git a/package/tinyssh/tinyssh.mk b/package/tinyssh/tinyssh.mk
index 80b6ccb850..e92ac628f2 100644
--- a/package/tinyssh/tinyssh.mk
+++ b/package/tinyssh/tinyssh.mk
@@ -10,7 +10,7 @@  TINYSSH_LICENSE = CC0-1.0
 TINYSSH_LICENSE_FILES = LICENCE
 
 define TINYSSH_BUILD_CMDS
-	$(TARGET_MAKE_ENV) CC="$(TARGET_CC)" $(MAKE) -C $(@D) cross-compile
+	$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) cross-compile
 endef
 
 define TINYSSH_INSTALL_TARGET_CMDS