HEADS UP: dynamic root support now in the tree
David O'Brien
obrien at FreeBSD.org
Sun Aug 17 18:48:27 PDT 2003
On Sun, Aug 17, 2003 at 01:54:38AM -0700, Gordon Tetlow wrote:
> I just got through with my commit spree to enable users to build /bin
> and /sbin dynamically linked. To do this required a fair amount of
> tweaking and moving around libraries and such dangerous equipment as
I think this is a more correct way to change the install locations of the
/ needed libs. Your current way makes the real location a "2nd class
citizen" vs. /usr/lib for any needed compatibility links.
I'd like to commit this:
Index: lib/libalias/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libalias/Makefile,v
retrieving revision 1.21
diff -u -r1.21 Makefile
--- lib/libalias/Makefile 17 Aug 2003 08:28:43 -0000 1.21
+++ lib/libalias/Makefile 18 Aug 2003 01:42:15 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libalias/Makefile,v 1.21 2003/08/17 08:28:43 gordon Exp $
LIB= alias
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SHLIB_MAJOR= 4
MAN= libalias.3
SRCS= alias.c alias_cuseeme.c alias_db.c alias_ftp.c alias_irc.c \
Index: lib/libatm/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libatm/Makefile,v
retrieving revision 1.8
diff -u -r1.8 Makefile
--- lib/libatm/Makefile 17 Aug 2003 08:28:43 -0000 1.8
+++ lib/libatm/Makefile 18 Aug 2003 01:42:11 -0000
@@ -28,7 +28,7 @@
#
LIB= atm
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS= atm_addr.c cache_key.c ioctl_subr.c ip_addr.c ip_checksum.c timer.c
INCS= libatm.h
Index: lib/libc/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libc/Makefile,v
retrieving revision 1.42
diff -u -r1.42 Makefile
--- lib/libc/Makefile 17 Aug 2003 08:28:44 -0000 1.42
+++ lib/libc/Makefile 18 Aug 2003 01:42:08 -0000
@@ -10,7 +10,7 @@
# system call stubs.
LIB=c
SHLIB_MAJOR= 5
-SHLIBDIR?=/lib
+LIBDIR?= /lib
CFLAGS+=-I${.CURDIR}/include -I${.CURDIR}/../../include
CFLAGS+=-I${.CURDIR}/${MACHINE_ARCH}
CLEANFILES+=tags
Index: lib/libcam/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libcam/Makefile,v
retrieving revision 1.11
diff -u -r1.11 Makefile
--- lib/libcam/Makefile 17 Aug 2003 08:28:44 -0000 1.11
+++ lib/libcam/Makefile 18 Aug 2003 01:42:21 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libcam/Makefile,v 1.11 2003/08/17 08:28:44 gordon Exp $
LIB= cam
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS= camlib.c scsi_cmdparse.c scsi_all.c scsi_da.c scsi_sa.c cam.c
INCS= camlib.h
Index: lib/libcrypt/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libcrypt/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- lib/libcrypt/Makefile 17 Aug 2003 08:28:44 -0000 1.33
+++ lib/libcrypt/Makefile 18 Aug 2003 01:42:23 -0000
@@ -4,7 +4,7 @@
SHLIB_MAJOR= 2
LIB= crypt
-SHLIBDIR?= /lib
+LIBDIR?= /lib
.PATH: ${.CURDIR}/../libmd
SRCS= crypt.c misc.c \
Index: lib/libdevstat/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libdevstat/Makefile,v
retrieving revision 1.12
diff -u -r1.12 Makefile
--- lib/libdevstat/Makefile 17 Aug 2003 08:28:44 -0000 1.12
+++ lib/libdevstat/Makefile 18 Aug 2003 01:42:28 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libdevstat/Makefile,v 1.12 2003/08/17 08:28:44 gordon Exp $
LIB= devstat
-SHLIBDIR?= /lib
+LIBDIR?= /lib
# Bump DEVSTAT_USER_API_VER in devstat.h every time this is incremented.
SHLIB_MAJOR= 4
SRCS= devstat.c
Index: lib/libedit/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libedit/Makefile,v
retrieving revision 1.27
diff -u -r1.27 Makefile
--- lib/libedit/Makefile 17 Aug 2003 08:28:44 -0000 1.27
+++ lib/libedit/Makefile 18 Aug 2003 01:42:37 -0000
@@ -4,7 +4,7 @@
LIB= edit
SHLIB_MAJOR= 4
-SHLIBDIR?= /lib
+LIBDIR?= /lib
OSRCS= chared.c common.c el.c emacs.c fcns.c help.c hist.c key.c map.c \
parse.c prompt.c read.c refresh.c search.c sig.c term.c tty.c vi.c
Index: lib/libexpat/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libexpat/Makefile,v
retrieving revision 1.4
diff -u -r1.4 Makefile
--- lib/libexpat/Makefile 17 Aug 2003 08:28:44 -0000 1.4
+++ lib/libexpat/Makefile 18 Aug 2003 01:42:43 -0000
@@ -3,7 +3,7 @@
EXPAT= ${.CURDIR}/../../contrib/expat
LIB= bsdxml
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SHLIB_MAJOR= 1
SRCS= xmlparse.c xmlrole.c xmltok.c
INCS= bsdxml.h
Index: lib/libgeom/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libgeom/Makefile,v
retrieving revision 1.8
diff -u -r1.8 Makefile
--- lib/libgeom/Makefile 17 Aug 2003 08:28:44 -0000 1.8
+++ lib/libgeom/Makefile 18 Aug 2003 01:42:48 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libgeom/Makefile,v 1.8 2003/08/17 08:28:44 gordon Exp $
LIB= geom
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS+= geom_getxml.c
SRCS+= geom_stats.c
SRCS+= geom_xml2tree.c
Index: lib/libipsec/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libipsec/Makefile,v
retrieving revision 1.13
diff -u -r1.13 Makefile
--- lib/libipsec/Makefile 17 Aug 2003 08:28:44 -0000 1.13
+++ lib/libipsec/Makefile 18 Aug 2003 01:42:51 -0000
@@ -27,7 +27,7 @@
# $FreeBSD: src/lib/libipsec/Makefile,v 1.13 2003/08/17 08:28:44 gordon Exp $
LIB= ipsec
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SHLIB_MAJOR= 1
CFLAGS+=-I. -I${.CURDIR}
CFLAGS+=-DIPSEC_DEBUG -DIPSEC
Index: lib/libipx/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libipx/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- lib/libipx/Makefile 17 Aug 2003 08:28:45 -0000 1.6
+++ lib/libipx/Makefile 18 Aug 2003 01:42:55 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libipx/Makefile,v 1.6 2003/08/17 08:28:45 gordon Exp $
LIB= ipx
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS= ipx_addr.c ipx_ntoa.c
MAN= ipx.3
MLINKS+=ipx.3 ipx_addr.3 ipx.3 ipx_ntoa.3
Index: lib/libkvm/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libkvm/Makefile,v
retrieving revision 1.13
diff -u -r1.13 Makefile
--- lib/libkvm/Makefile 17 Aug 2003 08:28:45 -0000 1.13
+++ lib/libkvm/Makefile 18 Aug 2003 01:42:59 -0000
@@ -2,7 +2,7 @@
# $FreeBSD: src/lib/libkvm/Makefile,v 1.13 2003/08/17 08:28:45 gordon Exp $
LIB= kvm
-SHLIBDIR?=/lib
+LIBDIR?= /lib
CFLAGS+=-DLIBC_SCCS -I${.CURDIR}
SRCS= kvm.c kvm_${MACHINE_ARCH}.c kvm_file.c kvm_getloadavg.c \
kvm_getswapinfo.c kvm_proc.c
Index: lib/libmd/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libmd/Makefile,v
retrieving revision 1.39
diff -u -r1.39 Makefile
--- lib/libmd/Makefile 17 Aug 2003 08:28:45 -0000 1.39
+++ lib/libmd/Makefile 18 Aug 2003 01:43:03 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libmd/Makefile,v 1.39 2003/08/17 08:28:45 gordon Exp $
LIB= md
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS= md2c.c md4c.c md5c.c md2hl.c md4hl.c md5hl.c \
rmd160c.c rmd160hl.c \
sha0c.c sha0hl.c sha1c.c sha1hl.c
Index: lib/libncurses/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libncurses/Makefile,v
retrieving revision 1.71
diff -u -r1.71 Makefile
--- lib/libncurses/Makefile 17 Aug 2003 08:28:45 -0000 1.71
+++ lib/libncurses/Makefile 18 Aug 2003 01:43:07 -0000
@@ -3,7 +3,7 @@
NCURSES=${.CURDIR}/../../contrib/ncurses
LIB= ncurses
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SHLIB_MAJOR=5
# Should be elsewhere
Index: lib/libsbuf/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libsbuf/Makefile,v
retrieving revision 1.4
diff -u -r1.4 Makefile
--- lib/libsbuf/Makefile 17 Aug 2003 08:28:45 -0000 1.4
+++ lib/libsbuf/Makefile 18 Aug 2003 01:43:10 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libsbuf/Makefile,v 1.4 2003/08/17 08:28:45 gordon Exp $
LIB= sbuf
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS= subr_sbuf.c
WARNS?= 2
Index: lib/libufs/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libufs/Makefile,v
retrieving revision 1.9
diff -u -r1.9 Makefile
--- lib/libufs/Makefile 17 Aug 2003 08:28:45 -0000 1.9
+++ lib/libufs/Makefile 18 Aug 2003 01:43:29 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libufs/Makefile,v 1.9 2003/08/17 08:28:45 gordon Exp $
LIB= ufs
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SRCS= block.c cgroup.c inode.c sblock.c type.c
INCS= libufs.h
MAN= bread.3 cgread.3 libufs.3 sbread.3 ufs_disk_close.3
Index: lib/libutil/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libutil/Makefile,v
retrieving revision 1.50
diff -u -r1.50 Makefile
--- lib/libutil/Makefile 17 Aug 2003 08:28:45 -0000 1.50
+++ lib/libutil/Makefile 18 Aug 2003 01:43:33 -0000
@@ -3,7 +3,7 @@
LIB= util
SHLIB_MAJOR= 3
-SHLIBDIR?=/lib
+LIBDIR?= /lib
CFLAGS+=-Wall -DLIBC_SCCS -I${.CURDIR} -I${.CURDIR}/../libc/gen/
CFLAGS+=-DINET6
SRCS= _secure_path.c auth.c fparseln.c login.c login_auth.c \
Index: lib/libz/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libz/Makefile,v
retrieving revision 1.15
diff -u -r1.15 Makefile
--- lib/libz/Makefile 17 Aug 2003 08:28:45 -0000 1.15
+++ lib/libz/Makefile 18 Aug 2003 01:43:35 -0000
@@ -5,7 +5,7 @@
MAINTAINER=peter at FreeBSD.org
LIB= z
-SHLIBDIR?= /lib
+LIBDIR?= /lib
MAN= zlib.3
#CFLAGS+= -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
Index: lib/msun/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/msun/Makefile,v
retrieving revision 1.35
diff -u -r1.35 Makefile
--- lib/msun/Makefile 17 Aug 2003 08:28:46 -0000 1.35
+++ lib/msun/Makefile 18 Aug 2003 01:43:40 -0000
@@ -55,6 +55,7 @@
e_remainder.S e_scalb.S e_sqrt.S s_atan.S s_ceil.S s_copysign.S \
s_cos.S s_finite.S s_floor.S s_ilogb.S s_logb.S \
s_rint.S s_scalbn.S s_significand.S s_sin.S s_tan.S
+#CSTD?= c99
# Broken:
# ARCH_SRCS+= s_log1p.S
.endif
@@ -66,7 +67,7 @@
CFLAGS+= -D_IEEE_LIBM
LIB= m
-SHLIBDIR?= /lib
+LIBDIR?= /lib
COMMON_SRCS= b_exp.c b_log.c b_tgamma.c \
e_acos.c e_acosf.c e_acosh.c e_acoshf.c e_asin.c e_asinf.c \
e_atan2.c e_atan2f.c e_atanh.c e_atanhf.c e_cosh.c e_coshf.c e_exp.c \
Index: libexec/ftpd/ftpd.c
===================================================================
RCS file: /home/ncvs/src/libexec/ftpd/ftpd.c,v
retrieving revision 1.145
diff -u -r1.145 ftpd.c
--- libexec/ftpd/ftpd.c 9 Jul 2003 12:46:24 -0000 1.145
+++ libexec/ftpd/ftpd.c 11 Jul 2003 17:16:44 -0000
@@ -183,8 +183,10 @@
pam_handle_t *pamh = NULL;
#endif
+#ifndef NO_OPIE
static struct opie opiedata;
static char opieprompt[OPIE_CHALLENGE_MAX+1];
+#endif
static int pwok;
char *pid_file = NULL;
@@ -1059,13 +1061,16 @@
#ifdef USE_PAM
/* XXX Kluge! The conversation mechanism needs to be fixed. */
#endif
+#ifndef NO_OPIE
if (opiechallenge(&opiedata, name, opieprompt) == 0) {
pwok = (pw != NULL) &&
opieaccessfile(remotehost) &&
opiealways(pw->pw_dir);
reply(331, "Response to %s %s for %s.",
opieprompt, pwok ? "requested" : "required", name);
- } else {
+ } else
+#endif
+ {
pwok = 1;
reply(331, "Password required for %s.", name);
}
@@ -1380,9 +1385,12 @@
goto skip;
}
#endif
+#ifndef NO_OPIE
if (opieverify(&opiedata, passwd) == 0)
xpasswd = pw->pw_passwd;
- else if (pwok) {
+ else
+#endif
+ if (pwok) {
xpasswd = crypt(passwd, pw->pw_passwd);
if (passwd[0] == '\0' && pw->pw_passwd[0] != '\0')
xpasswd = ":";
Index: libexec/rexecd/rexecd.c
===================================================================
RCS file: /home/ncvs/src/libexec/rexecd/rexecd.c,v
retrieving revision 1.30
diff -u -r1.30 rexecd.c
--- libexec/rexecd/rexecd.c 3 May 2002 13:12:06 -0000 1.30
+++ libexec/rexecd/rexecd.c 24 Feb 2003 05:33:34 -0000
@@ -63,6 +63,7 @@
#include <syslog.h>
#include <unistd.h>
+#ifndef NO_PAM
#include <security/pam_appl.h>
#include <security/openpam.h>
@@ -74,6 +75,7 @@
static int pam_flags = PAM_SILENT|PAM_DISALLOW_NULL_AUTHTOK;
static int pam_err;
#define pam_ok(err) ((pam_err = (err)) == PAM_SUCCESS)
+#endif
char **environ;
char remote[MAXHOSTNAMELEN];
@@ -183,12 +185,16 @@
getstr(cmdbuf, sizeof(cmdbuf), "command");
(void) alarm(0);
- if ((pwd = getpwnam(user)) == NULL || (pwd->pw_uid = 0 && no_uid_0) ||
+ if ((pwd = getpwnam(user)) == NULL || (pwd->pw_uid = 0 && no_uid_0)
+#ifndef NO_PAM
+ ||
!pam_ok(pam_start("rexecd", user, &pamc, &pamh)) ||
!pam_ok(pam_set_item(pamh, PAM_RHOST, remote)) ||
!pam_ok(pam_set_item(pamh, PAM_AUTHTOK, pass)) ||
!pam_ok(pam_authenticate(pamh, pam_flags)) ||
- !pam_ok(pam_acct_mgmt(pamh, pam_flags))) {
+ !pam_ok(pam_acct_mgmt(pamh, pam_flags))
+#endif
+ ) {
syslog(LOG_ERR, "%s LOGIN REFUSED from %s", user, remote);
error("Login incorrect.\n");
exit(1);
@@ -207,7 +213,9 @@
}
if (pid) {
/* parent */
+#ifndef NO_PAM
(void) pam_end(pamh, pam_err);
+#endif
(void) close(STDIN_FILENO);
(void) close(STDOUT_FILENO);
(void) close(STDERR_FILENO);
@@ -262,6 +270,7 @@
syslog(LOG_ERR, "setlogin() failed: %m");
(void) setgid((gid_t)pwd->pw_gid);
initgroups(pwd->pw_name, pwd->pw_gid);
+#ifndef NO_PAM
if (!pam_ok(pam_setcred(pamh, PAM_ESTABLISH_CRED)))
syslog(LOG_ERR, "pam_setcred() failed: %s",
pam_strerror(pamh, pam_err));
@@ -271,6 +280,7 @@
(void) pam_setenv(pamh, "PATH", _PATH_DEFPATH, 1);
environ = pam_getenvlist(pamh);
(void) pam_end(pamh, pam_err);
+#endif
(void) setuid((uid_t)pwd->pw_uid);
cp = strrchr(pwd->pw_shell, '/');
if (cp)
Index: secure/lib/libcrypto/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/lib/libcrypto/Makefile,v
retrieving revision 1.65
diff -u -r1.65 Makefile
--- secure/lib/libcrypto/Makefile 17 Aug 2003 08:28:46 -0000 1.65
+++ secure/lib/libcrypto/Makefile 18 Aug 2003 01:44:26 -0000
@@ -1,7 +1,7 @@
# $FreeBSD: src/secure/lib/libcrypto/Makefile,v 1.65 2003/08/17 08:28:46 gordon Exp $
LIB= crypto
-SHLIBDIR?= /lib
+LIBDIR?= /lib
SHLIB_MAJOR= 3
NOLINT= true
Index: share/mk/bsd.lib.mk
===================================================================
RCS file: /home/ncvs/src/share/mk/bsd.lib.mk,v
retrieving revision 1.149
diff -u -r1.149 bsd.lib.mk
--- share/mk/bsd.lib.mk 17 Aug 2003 07:42:50 -0000 1.149
+++ share/mk/bsd.lib.mk 18 Aug 2003 01:41:20 -0000
@@ -206,12 +206,7 @@
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
.if defined(SHLIB_LINK)
-.if (${LIBDIR} == ${SHLIBDIR})
- ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
-.else
- ln -fs ${LIBDIR:C|/[^/]+|/..|g:S|^/||}${SHLIBDIR}/${SHLIB_NAME} \
- ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
-.endif
+ ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
.endif
.endif
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
More information about the freebsd-current
mailing list