Ticket #2995 (closed enhancement: fixed)

Opened 6 years ago

Last modified 6 years ago

Do not link gmodule in if it's not required

Reported by: er13 Owned by: andrew_b
Priority: minor Milestone: 4.8.10
Component: mc-core Version: master
Keywords: Cc: gotar@…
Blocked By: Blocking:
Branch state: merged Votes for changeset: committed-master

Description

Two mc-components require gmodule: aspell and textmode_x11_support. If however both are disabled there is no need to link it in.

Might be not that important for desktop-systems... Saves however space and memory on embedded systems.

Attached patch contains a possible solution.

Change History

comment:1 Changed 6 years ago by andrew_b

  • Status changed from new to closed
  • Resolution set to wontfix

Use --as-needed (or something like that if your linker is not GNU ld) in your build system if your don't want link unused libraries.
I hope embedded system developers who use GNU ld as part of their toolchain, use it with --as-needed by default. If not, they should, definitely.

comment:2 Changed 6 years ago by er13

Unfortunately using --as-needed globally is not an option because of the need to support older uClibc versions containing "pthread + .so's loaded per dlopen"-bug (one has to link libraries into the main binary in order to get dlopen loaded modules work).

Using it on a per package basis still requires to patch something in the package build system as CFLAGS and LDFLAGS are cached and reused for all packages.

I still consider the patch attached to be the proper way to fix it. It's better fixed in mc as in every embedded build system out there.

Btw. --as-needed is neither in buildroot nor in openwrt used by default.

p.s. an interesting link describing a couple of issues with using --as-needed with autotools based packages

Last edited 6 years ago by er13 (previous) (diff)

comment:3 Changed 6 years ago by gotar

  • Cc gotar@… added

I'm sharing er13 point of view, that such dependencies should be removed as soon as possible. Decent program should not depend on environment features, especially when solution is so simple and doesn't require maintaince.

comment:4 Changed 6 years ago by andrew_b

  • Status changed from closed to reopened
  • Resolution wontfix deleted

comment:5 Changed 6 years ago by andrew_b

  • Owner set to andrew_b
  • Status changed from reopened to accepted
  • Branch state changed from no branch to on review
  • Milestone changed from Future Releases to 4.8.10

Branch: 2995_link_gmodule_if_required
changeset:b40a7bcbc7037b596fcfe4a9519e38dce5b0e5dc

comment:6 Changed 6 years ago by slavazanko

  • Votes for changeset set to slavazanko

comment:7 Changed 6 years ago by andrew_b

  • Votes for changeset changed from slavazanko to slavazanko andrew_b

comment:8 Changed 6 years ago by andrew_b

  • Status changed from accepted to testing
  • Votes for changeset changed from slavazanko andrew_b to committed-master
  • Resolution set to fixed
  • Branch state changed from on review to merged

comment:9 Changed 6 years ago by andrew_b

  • Status changed from testing to closed
Note: See TracTickets for help on using tickets.