All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] system: add options for /bin /sbin and /lib to be symlinks into /usr
Date: Wed, 2 Sep 2015 22:59:52 +0200	[thread overview]
Message-ID: <55E76348.3020509@mind.be> (raw)
In-Reply-To: <1441148113-4894-1-git-send-email-yann.morin.1998@free.fr>

On 02-09-15 00:55, Yann E. MORIN wrote:
> systemd is incresaingly expected things to live in /usr/bin or

 increasingly

> /usr/sbin.
> 
> However, a lot of packages stil install stuff directly into /bin or

 still

> /sbin.
> 
> Add an option so that /bin and /sbin be symlinks to /usr/bin and

 be -> are

> /usr/sbin. Ditto for .lib for consistency.

 .lib -> /lib

 In reality, this option is only tangentially related to systemd. Rather, it's a
Fedora feature [1] that was taken over by Lennart P. and therefore by systemd
[2]. A better name for the feature is "merged /usr".


> That option is forcibly enabled when the init system is systemd.
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
>  package/skeleton/skeleton.mk | 17 ++++++++++++++++-
>  system/Config.in             | 13 +++++++++++++
>  system/skeleton/bin/.empty   |  0
>  system/skeleton/lib/.empty   |  0
>  system/skeleton/sbin/.empty  |  0
>  5 files changed, 29 insertions(+), 1 deletion(-)
>  delete mode 100644 system/skeleton/bin/.empty
>  delete mode 100644 system/skeleton/lib/.empty
>  delete mode 100644 system/skeleton/sbin/.empty
> 
> diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk
> index 48e7085..173b485 100644
> --- a/package/skeleton/skeleton.mk
> +++ b/package/skeleton/skeleton.mk
> @@ -19,14 +19,29 @@ else
>  SKELETON_PATH = system/skeleton
>  endif
>  
> +ifeq ($(BR2_ROOTFS_USR_SYMLINKS),y)
> +define SKELETON_USR_SYMLINKS
> +	ln -snf usr/bin $(TARGET_DIR)/bin
> +	ln -snf usr/sbin $(TARGET_DIR)/sbin
> +	ln -snf usr/lib $(TARGET_DIR)/lib
> +endef
> +else
> +define SKELETON_NO_USR_SYMLINKS

 I would define only a single variable: SKELETON_USR_SYMLINKS_OR_DIRECTORIES.

> +	$(INSTALL) -d -m 0755 $(TARGET_DIR)/bin
> +	$(INSTALL) -d -m 0755 $(TARGET_DIR)/sbin
> +	$(INSTALL) -d -m 0755 $(TARGET_DIR)/lib
> +endef
> +endif
> +
>  define SKELETON_INSTALL_TARGET_CMDS
>  	rsync -a --ignore-times $(SYNC_VCS_EXCLUSIONS) \
>  		--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \
>  		$(SKELETON_PATH)/ $(TARGET_DIR)/
> +	$(SKELETON_NO_USR_SYMLINKS)
> +	$(SKELETON_USR_SYMLINKS)
>  	$(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
>  		$(TARGET_DIR_WARNING_FILE)
>  	ln -snf lib $(TARGET_DIR)/$(LIB_SYMLINK)
> -	mkdir -p $(TARGET_DIR)/usr
>  	ln -snf lib $(TARGET_DIR)/usr/$(LIB_SYMLINK)
>  endef
>  
> diff --git a/system/Config.in b/system/Config.in
> index fad829d..96860d1 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -88,6 +88,7 @@ config BR2_INIT_SYSTEMD
>  	depends on BR2_USE_MMU
>  	depends on !BR2_STATIC_LIBS
>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> +	select BR2_ROOTFS_USR_SYMLINKS
>  	select BR2_PACKAGE_SYSTEMD
>  
>  comment 'systemd needs an (e)glibc toolchain, headers >= 3.10'
> @@ -178,6 +179,18 @@ endif
>  
>  if BR2_ROOTFS_SKELETON_DEFAULT
>  
> +config BR2_ROOTFS_USR_SYMLINKS
> +	bool "Use symlinks to /usr for /bin, /sbin and /lib"

 I like this summary!

> +	help
> +	  If you say 'n' here, then /bin /sbin and /lib and their
> +	  counterparts in /usr will be separate directories. This
> +	  is the traditional UNIX way. In this case, /usr can be a
> +	  partition separate from / .
> +
> +	  If you say 'y' here, then /bin /sbin and /lib will be symlinks

 If you say 'y' here, then /bin, /sbin and /lib will be merged to their
counterparts in /usr and replaced by symlinks.

> +	  to their counterparts in /usr. This is the new systemd way. In

 There's not much point to refer to systemd here, since it is forcibly selected
in the systemd case.

> +	  this case, /usr has to be on the / partition.

 /usr cannot be a separate filesystem.


 BTW I wouldn't mind if this option would default to y eventually. I've been
doing this (using a custom skeleton) for quite a while now.

 Regards,
 Arnout


> +
>  config BR2_TARGET_ENABLE_ROOT_LOGIN
>  	bool "Enable root login with password"
>  	default y
> diff --git a/system/skeleton/bin/.empty b/system/skeleton/bin/.empty
> deleted file mode 100644
> index e69de29..0000000
> diff --git a/system/skeleton/lib/.empty b/system/skeleton/lib/.empty
> deleted file mode 100644
> index e69de29..0000000
> diff --git a/system/skeleton/sbin/.empty b/system/skeleton/sbin/.empty
> deleted file mode 100644
> index e69de29..0000000
> 

[1] https://fedoraproject.org/wiki/Features/UsrMove
[2] http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

  parent reply	other threads:[~2015-09-02 20:59 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-01 22:55 [Buildroot] [PATCH] system: add options for /bin /sbin and /lib to be symlinks into /usr Yann E. MORIN
2015-09-02  4:54 ` Baruch Siach
2015-09-02  7:10 ` Thomas Petazzoni
2015-09-02 13:50   ` Mike Williams
2015-09-02 14:04     ` Thomas Petazzoni
2015-09-02 14:05       ` Mike Williams
2015-09-02 14:28         ` Yann E. MORIN
2015-09-02 14:07       ` Vicente Olivert Riera
2015-09-02 14:11         ` Yann E. MORIN
2015-09-02 14:12         ` Thomas Petazzoni
2015-09-02 14:13           ` Vicente Olivert Riera
2015-09-02 20:59 ` Arnout Vandecappelle [this message]
2015-09-02 21:17   ` Arnout Vandecappelle
2015-09-02 22:09     ` Yann E. MORIN
2015-09-03 14:46       ` Mike Williams
2015-09-03 15:12         ` Vicente Olivert Riera
2015-09-03 15:57           ` Yann E. MORIN
2015-09-02 22:07   ` Yann E. MORIN
  -- strict thread matches above, loose matches on Subject: below --
2015-09-03 23:47 Yann E. MORIN
2015-09-04  7:48 ` Vicente Olivert Riera
2015-09-04  8:16   ` Arnout Vandecappelle
2015-09-04 16:29     ` Yann E. MORIN
2015-09-04 19:05       ` Arnout Vandecappelle
2015-09-04 16:12   ` Yann E. MORIN
2015-09-04  8:11 ` Thomas Petazzoni
2015-09-04  8:19   ` Arnout Vandecappelle
2015-09-04 16:31     ` Yann E. MORIN
2015-09-14 21:12       ` Peter Korsgaard
2015-09-14 21:23         ` Yann E. MORIN
2015-09-14 21:26         ` Arnout Vandecappelle
2015-09-14 21:39           ` Peter Korsgaard
2015-10-07 16:19             ` Mike Williams
2015-10-07 22:03               ` Arnout Vandecappelle
2015-09-14 21:32         ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55E76348.3020509@mind.be \
    --to=arnout@mind.be \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.