From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/4332 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: _PATH_LASTLOG Date: Tue, 3 Dec 2013 14:54:33 -0500 Message-ID: <20131203195433.GM24286@brightrain.aerifal.cx> References: <20131203184248.GT1685@port70.net> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1386100486 27262 80.91.229.3 (3 Dec 2013 19:54:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 3 Dec 2013 19:54:46 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-4336-gllmg-musl=m.gmane.org@lists.openwall.com Tue Dec 03 20:54:49 2013 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Vnw3S-0006wI-M3 for gllmg-musl@plane.gmane.org; Tue, 03 Dec 2013 20:54:46 +0100 Original-Received: (qmail 30498 invoked by uid 550); 3 Dec 2013 19:54:45 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 30489 invoked from network); 3 Dec 2013 19:54:45 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Xref: news.gmane.org gmane.linux.lib.musl.general:4332 Archived-At: On Tue, Dec 03, 2013 at 07:09:05PM +0000, Raphael Cohn wrote: > Ta. > > Would it be possible to have the "/dev/null/xxx" paths' values as an option > to ./configure? > > Actually, it would be very useful to be able to ./configure all the other > hard coded paths in musl, eg the default dynamlic linker search path. When > running with a setup like Nixos, or the like, these paths need to be > different. Of course, one can patch, but that's not sustainable in the long > run. The dynamic linker searches for its path file relative to its own location, which should cover this kind of usage. It's only in the case where no path file exists that the hard-coded /lib, /usr/lib, etc. would get searched. > Please? I think such a request should be accompanied by explanations of what you're trying to achieve that's difficult or impossible with the current scheme. Most of the hard-coded paths in musl are hard-coded because there's a standard pathname either required by the standards or that was universal in all historical systems, and because musl aims to be useful for producing "run anywhere" static binaries. Gratuitously changing paths defeats this goal. Of course musl attempts to minimize the number of hard-coded pathnames anyway; here's a list from the current documentation draft which you could review to determine which are problematic to your intended usage cases: ---------------------------------------------------------------------- * `/dev/null` - device node, required by POSIX * `/dev/tty` - device node, required by POSIX * `/tmp` - required by POSIX to exist as a directory, and used by various temporary file creation functions. * `/bin/sh` - an executable file providing a POSIX-conforming shell * `/proc` - must be a mount point for Linux procfs or a symlink to such. Several functions such as realpath, fexecve, and a number of the "at" functions added in POSIX 2008 need access to /proc to function correctly. While some programs may operate correctly even without some or all of the above, musl's behavior in their absence is unspecified. ### Additional Pathnames Used * `/dev/log` - a UNIX domain socket to which the `syslog()` interface sends log messages. If absent or inaccessible, log messages will be discarded. * `/dev/shm` - a directory; should have permissions 01777. If absent, POSIX shared memory and named semaphore interfaces will fail; programs not using these features will be unaffected. * `/dev/ptmx` and `/dev/pts` - device node and devpts filesystem mount point, respectively. If absent or inaccessible, `posix_openpt()` and `openpty()` will fail. * `/etc/passwd` and `/etc/group` - text files containing the user and group databases, mappings between names and numeric ids, and group membership lists, in the standard traditional format. If absent, user and/or group lookups will fail. * `/etc/shadow` - text file containing shadow password hashes for some or all users. * `/etc/resolv.conf` - text file providing addresses of nameservers to be used for DNS lookups. If absent, DNS requests will be sent to the loopback address and will fail unless the host has its own nameserver. * `/etc/hosts` - text file mapping hostnames to IP addresses. * `/etc/services` - text file mapping network service names to port numbers. * `/usr/share/zoneinfo`, `/share/zoneinfo`, and `/etc/zoneinfo` - directories searched for time zone files when the `TZ` environment variable is set to a relative pathname. * `../etc/ld-musl-$(ARCH).path`, taken relative to the location of the "program interpreter" specified in the program's headers - if present, this will be processed as a text file containing the shared library search path, with components delimited by newlines or colons. If absent, a default path of `"/lib:/usr/local/lib:/usr/lib"` will be used. Not used by static-linked programs. ---------------------------------------------------------------------- Let me know. This may end up being an ugly issue but it's something we should look at, in any case... Rich