Support the use of PREFIX and PKG_PREFIX.
This commit is contained in:
		
							
								
								
									
										7
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								README
									
									
									
									
									
								
							@@ -13,6 +13,8 @@ DESTDIR=/tmp/openrc-image
 | 
			
		||||
MKPAM=pam
 | 
			
		||||
MKTERMCAP=ncurses
 | 
			
		||||
MKTERMCAP=termcap
 | 
			
		||||
PKG_PREFIX=/usr/pkg
 | 
			
		||||
PREFIX=/usr/local
 | 
			
		||||
 | 
			
		||||
We don't support building a static OpenRC with PAM.
 | 
			
		||||
You may need to use PROGLDFLAGS=-Wl,-Bstatic on glibc instead of just -static.
 | 
			
		||||
@@ -20,6 +22,9 @@ You may need to use PROGLDFLAGS=-Wl,-Bstatic on glibc instead of just -static.
 | 
			
		||||
You can also brand OpenRC if you so wish like so
 | 
			
		||||
BRANDING=\"Gentoo/$(uname -s)\"
 | 
			
		||||
 | 
			
		||||
PKG_PREFIX should be set to where packages install to by default.
 | 
			
		||||
PREFIX should be set when OpenRC is not installed to /.
 | 
			
		||||
 | 
			
		||||
If any of the following files exist then we do not overwrite them
 | 
			
		||||
/etc/devd.conf
 | 
			
		||||
/etc/rc
 | 
			
		||||
@@ -40,7 +45,6 @@ tweaking on a per distro basis. They are also non essential to the operation
 | 
			
		||||
of the system.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Reporting Bugs
 | 
			
		||||
-------------
 | 
			
		||||
If you installed OpenRC from your chosen distribution, you should report
 | 
			
		||||
@@ -50,7 +54,6 @@ then you should reports bugs to http://bugs.gentoo.org.
 | 
			
		||||
Otherwise, you can report them directly to me at http://bugs.marples.name
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
History - by Roy Marples
 | 
			
		||||
------------------------
 | 
			
		||||
I became a Gentoo/Linux developer in 2004 and wrote the modular network
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								mk/os.mk
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								mk/os.mk
									
									
									
									
									
								
							@@ -29,3 +29,11 @@ LIBDL?=		${_LIBDL}$(shell ${_LIBDL_SH})
 | 
			
		||||
_LIBKVM_SH=	case `uname -s` in *BSD) echo "-lkvm";; *) echo;; esac
 | 
			
		||||
_LIBKVM!=	${_LIBKVM_SH}
 | 
			
		||||
LIBKVM?=	${_LIBKVM}$(shell ${_LIBKVM_SH})
 | 
			
		||||
 | 
			
		||||
_PREFIX_SH=	if test -n "${PREFIX}" && test "${PREFIX}" != "/"; then echo "-DPREFIX=\\\"${PREFIX}\\\""; else echo ""; fi
 | 
			
		||||
_PREFIX!=	${_PREFIX_SH}
 | 
			
		||||
CFLAGS+=	${_PREFIX}$(shell ${_PREFIX_SH})
 | 
			
		||||
 | 
			
		||||
_PKG_PREFIX_SH=	if test -n "${PKG_PREFIX}" && test "${PKG_PREFIX}" != "/"; then echo "-DPKG_PREFIX=\\\"${PKG_PREFIX}\\\""; else echo ""; fi
 | 
			
		||||
_PKG_PREFIX!=	${_PKG_PREFIX_SH}
 | 
			
		||||
CFLAGS+=	${_PKG_PREFIX}$(shell ${_PKG_PREFIX_SH})
 | 
			
		||||
 
 | 
			
		||||
@@ -16,24 +16,24 @@ include ${MK}/os.mk
 | 
			
		||||
# Tweak our shell scripts
 | 
			
		||||
.SUFFIXES:	.sh.in
 | 
			
		||||
.sh.in.sh:
 | 
			
		||||
	sed -e 's:@SHELL@:${SH}:g' -e 's:@LIB@:${LIBNAME}:g' $< > $@
 | 
			
		||||
	sed -e 's:@SHELL@:${SH}:g' -e 's:@LIB@:${LIBNAME}:g' -e 's:@PREFIX@:${PREFIX}:g' -e 's:@PKG_PREFIX@:${PKG_PREFIX}:g' $< > $@
 | 
			
		||||
 | 
			
		||||
all: ${OBJS}
 | 
			
		||||
 | 
			
		||||
realinstall: ${BIN} ${CONF} ${CONF_APPEND}
 | 
			
		||||
	if test -n "${DIR}"; then ${INSTALL} -d ${DESTDIR}${DIR} || exit $$?; fi
 | 
			
		||||
	if test -n "${BIN}"; then ${INSTALL} -m ${BINMODE} ${BIN} ${DESTDIR}${DIR} || exit $$?; fi
 | 
			
		||||
	if test -n "${INC}"; then ${INSTALL} -m ${INCMODE} ${INC} ${DESTDIR}${DIR} || exit $$?; fi
 | 
			
		||||
	if test -n "${DIR}"; then ${INSTALL} -d ${DESTDIR}/${PREFIX}${DIR} || exit $$?; fi
 | 
			
		||||
	if test -n "${BIN}"; then ${INSTALL} -m ${BINMODE} ${BIN} ${DESTDIR}/${PREFIX}${DIR} || exit $$?; fi
 | 
			
		||||
	if test -n "${INC}"; then ${INSTALL} -m ${INCMODE} ${INC} ${DESTDIR}/${PREFIX}${DIR} || exit $$?; fi
 | 
			
		||||
	for x in ${CONF}; do \
 | 
			
		||||
	 	if ! test -e ${DESTDIR}${DIR}/$$x; then \
 | 
			
		||||
			${INSTALL} -m ${CONFMODE} $$x ${DESTDIR}${DIR} || exit $$?; \
 | 
			
		||||
	 	if ! test -e ${DESTDIR}/${PREFIX}${DIR}/$$x; then \
 | 
			
		||||
			${INSTALL} -m ${CONFMODE} $$x ${DESTDIR}/${PREFIX}${DIR} || exit $$?; \
 | 
			
		||||
		fi; \
 | 
			
		||||
	done
 | 
			
		||||
	for x in ${CONF_APPEND}; do \
 | 
			
		||||
		if test -e ${DESTDIR}${DIR}/$$x; then \
 | 
			
		||||
			cat $$x >> ${DESTDIR}${DIR}/$$x || exit $$?; \
 | 
			
		||||
		if test -e ${DESTDIR}/${PREFIX}${DIR}/$$x; then \
 | 
			
		||||
			cat $$x >> ${DESTDIR}/${PREFIX}${DIR}/$$x || exit $$?; \
 | 
			
		||||
		else \
 | 
			
		||||
	   		${INSTALL} -m ${CONFMODE} $$x ${DESTDIR}${DIR} || exit $$?; \
 | 
			
		||||
	   		${INSTALL} -m ${CONFMODE} $$x ${DESTDIR}/${PREFIX}${DIR} || exit $$?; \
 | 
			
		||||
		fi; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								mk/sys.mk
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								mk/sys.mk
									
									
									
									
									
								
							@@ -7,23 +7,26 @@ INSTALL?=		install
 | 
			
		||||
RANLIB?=		ranlib
 | 
			
		||||
SH=			/bin/sh
 | 
			
		||||
 | 
			
		||||
PREFIX=			
 | 
			
		||||
PKG_PREFIX=		/usr/local
 | 
			
		||||
 | 
			
		||||
PICFLAG?=		-fPIC
 | 
			
		||||
 | 
			
		||||
BINDIR?=		/sbin
 | 
			
		||||
BINDIR?=		${PREFIX}/sbin
 | 
			
		||||
BINMODE?=		0755
 | 
			
		||||
 | 
			
		||||
INCDIR?=		/usr/include
 | 
			
		||||
INCDIR?=		${PREFIX}/usr/include
 | 
			
		||||
INCMODE?=		0444
 | 
			
		||||
 | 
			
		||||
LIBNAME?=		lib
 | 
			
		||||
LIBDIR?=		/usr/${LIBNAME}
 | 
			
		||||
LIBDIR?=		${PREFIX}/usr/${LIBNAME}
 | 
			
		||||
LIBMODE?=		0444
 | 
			
		||||
SHLIBDIR?=		/${LIBNAME}
 | 
			
		||||
SHLIBDIR?=		${PREFIX}/${LIBNAME}
 | 
			
		||||
 | 
			
		||||
MANDIR?=		/usr/share/man/man
 | 
			
		||||
MANDIR?=		${PREFIX}/usr/share/man/man
 | 
			
		||||
MANMODE?=		0444
 | 
			
		||||
 | 
			
		||||
DOCDIR?=		/usr/share/doc
 | 
			
		||||
DOCDIR?=		${PREFIX}/usr/share/doc
 | 
			
		||||
DOCMODE?=		0644	
 | 
			
		||||
 | 
			
		||||
CONFMODE?=		0644
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ include ${MK}/scripts.mk
 | 
			
		||||
_installafter:
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}/etc/init.d
 | 
			
		||||
	@# Provide an init script for the loopback interface
 | 
			
		||||
	ln -snf ${RC_LIB}/sh/net.sh ${DESTDIR}/etc/init.d/${NET_LO} || exit $$?
 | 
			
		||||
	ln -snf ${RC_LIB}/sh/net.sh ${DESTDIR}/${PREFIX}/etc/init.d/${NET_LO} || exit $$?
 | 
			
		||||
	@# Put functions.sh into the init.d dir so 3rd party apps don't have to
 | 
			
		||||
	@# be multilib aware
 | 
			
		||||
	ln -snf ${RC_LIB}/sh/functions.sh ${DESTDIR}/etc/init.d || exit $$?
 | 
			
		||||
	ln -snf ${RC_LIB}/sh/functions.sh ${DESTDIR}/${PREFIX}/etc/init.d || exit $$?
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ _sanitize_path()
 | 
			
		||||
	local IFS=":" p= path=
 | 
			
		||||
	for p in ${PATH}; do
 | 
			
		||||
		case "${p}" in
 | 
			
		||||
			/lib/rc/sbin|/bin|/sbin|/usr/bin|/usr/sbin|/usr/pkg/bin|/usr/pkg/sbin|/usr/local/bin|/usr/local/sbin);;
 | 
			
		||||
			@PREFIX@/lib/rc/sbin|/bin|/sbin|/usr/bin|/usr/sbin|@PKG_PREFIX@/bin|@PKG_PREFIX/sbin);;
 | 
			
		||||
			*) path="${path}:${p}";;
 | 
			
		||||
		esac
 | 
			
		||||
	done
 | 
			
		||||
@@ -60,7 +60,7 @@ if [ -n "${ZSH_VERSION}" ]; then
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Add our bin to $PATH
 | 
			
		||||
export PATH="/lib/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin:/usr/local/bin:/usr/local/sbin$(_sanitize_path "${PATH}")"
 | 
			
		||||
export PATH="@PREFIX@/lib/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin:@PKG_PREFIX@/bin:@PKG_PREFIX@/sbin:$(_sanitize_path "${PATH}")"
 | 
			
		||||
unset _sanitize_path
 | 
			
		||||
 | 
			
		||||
for arg; do
 | 
			
		||||
 
 | 
			
		||||
@@ -75,6 +75,6 @@ get_bootparam()
 | 
			
		||||
 | 
			
		||||
# Add our sbin to $PATH
 | 
			
		||||
case "${PATH}" in
 | 
			
		||||
	/lib/rc/sbin|/lib/rc/sbin:*);;
 | 
			
		||||
	*) export PATH="/lib/rc/sbin:${PATH}";;
 | 
			
		||||
	@PREFIX@/lib/rc/sbin|@PREFIX@/lib/rc/sbin:*);;
 | 
			
		||||
	*) export PATH="@PREFIX@/lib/rc/sbin:${PATH}";;
 | 
			
		||||
esac
 | 
			
		||||
 
 | 
			
		||||
@@ -38,21 +38,30 @@
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#ifndef LIB
 | 
			
		||||
#  define LIB "lib"
 | 
			
		||||
#  define LIB			"lib"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef PREFIX
 | 
			
		||||
#  define PREFIX		""
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define RC_LEVEL_BOOT           "boot"
 | 
			
		||||
#define RC_LEVEL_DEFAULT        "default"
 | 
			
		||||
 | 
			
		||||
#define RC_LIBDIR               "/" LIB "/rc"
 | 
			
		||||
#define RC_LIBDIR               PREFIX "/" LIB "/rc"
 | 
			
		||||
#define RC_SVCDIR               RC_LIBDIR "/init.d"
 | 
			
		||||
#define RC_DEPTREE              RC_SVCDIR "/deptree"
 | 
			
		||||
#define RC_RUNLEVELDIR          "/etc/runlevels"
 | 
			
		||||
#define RC_INITDIR              "/etc/init.d"
 | 
			
		||||
#define RC_CONFDIR              "/etc/conf.d"
 | 
			
		||||
#define RC_RUNLEVELDIR          PREFIX "/etc/runlevels"
 | 
			
		||||
#define RC_INITDIR              PREFIX "/etc/init.d"
 | 
			
		||||
#define RC_CONFDIR              PREFIX "/etc/conf.d"
 | 
			
		||||
 | 
			
		||||
#define RC_INITDIR_LOCAL        "/usr/local/etc/init.d"
 | 
			
		||||
#define RC_CONFDIR_LOCAL        "/usr/local/etc/conf.d"
 | 
			
		||||
/* PKG_PREFIX is where packages are installed if different from the base OS
 | 
			
		||||
 * On Gentoo this is normally unset, on FreeBSD /usr/local and on NetBSD
 | 
			
		||||
 * /usr/pkg. */
 | 
			
		||||
#ifdef PKG_PREFIX
 | 
			
		||||
#  define RC_PKG_INITDIR        PKG_PREFIX "/etc/init.d"
 | 
			
		||||
#  define RC_PKG_CONFDIR        PKG_PREFIX "/usr/local/etc/conf.d"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define RC_KSOFTLEVEL           RC_SVCDIR "/ksoftlevel"
 | 
			
		||||
#define RC_STARTING             RC_SVCDIR "/rc.starting"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,6 @@ SRCS=			libeinfo.c
 | 
			
		||||
INCS=			einfo.h
 | 
			
		||||
VERSION_MAP=		einfo.map
 | 
			
		||||
 | 
			
		||||
SHLIBDIR=		/${LIBNAME}
 | 
			
		||||
 | 
			
		||||
CFLAGS+=		-I../includes
 | 
			
		||||
 | 
			
		||||
include ${MK}/cc.mk
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,5 @@ LDADD+=		${LIBKVM}
 | 
			
		||||
 | 
			
		||||
CFLAGS+=	-I../includes
 | 
			
		||||
 | 
			
		||||
SHLIBDIR=	/${LIBNAME}
 | 
			
		||||
 | 
			
		||||
include ${MK}/cc.mk
 | 
			
		||||
include ${MK}/lib.mk
 | 
			
		||||
 
 | 
			
		||||
@@ -696,8 +696,12 @@ bool rc_deptree_update_needed (void)
 | 
			
		||||
	if (! existss (RC_DEPTREE) ||
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, RC_INITDIR) ||
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, RC_CONFDIR) ||
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, RC_INITDIR_LOCAL) ||
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, RC_CONFDIR_LOCAL) ||
 | 
			
		||||
#ifdef RC_PKG_INITDIR
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, RC_PKG_INITDIR) ||
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef RC_PKG_CONFDIR
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, RC_PKG_CONFDIR) ||
 | 
			
		||||
#endif
 | 
			
		||||
	    ! rc_newer_than (RC_DEPTREE, "/etc/rc.conf"))
 | 
			
		||||
		return (true);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -328,11 +328,13 @@ char *rc_service_resolve (const char *service)
 | 
			
		||||
	snprintf (buffer, sizeof (buffer), RC_INITDIR "/%s", service);
 | 
			
		||||
 | 
			
		||||
	/* So we don't exist in /etc/init.d - check /usr/local/etc/init.d */
 | 
			
		||||
#ifdef RC_PKG_INITDIR
 | 
			
		||||
	if (stat (buffer, &buf) != 0) {
 | 
			
		||||
		snprintf (buffer, sizeof (buffer), RC_INITDIR_LOCAL "/%s", service);
 | 
			
		||||
		snprintf (buffer, sizeof (buffer), RC_PKG_INITDIR "/%s", service);
 | 
			
		||||
		if (stat (buffer, &buf) != 0)
 | 
			
		||||
			return (NULL);
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return (xstrdup (buffer));
 | 
			
		||||
}
 | 
			
		||||
@@ -781,12 +783,18 @@ char **rc_services_in_runlevel (const char *runlevel)
 | 
			
		||||
 | 
			
		||||
	if (! runlevel) {
 | 
			
		||||
		int i;
 | 
			
		||||
		char **local = ls_dir (RC_INITDIR_LOCAL, LS_INITD);
 | 
			
		||||
#ifdef RC_PKG_INITDIR
 | 
			
		||||
		char **local = ls_dir (RC_PKG_INITDIR, LS_INITD);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		list = ls_dir (RC_INITDIR, LS_INITD);
 | 
			
		||||
 | 
			
		||||
#ifdef RC_PKG_INITDIR
 | 
			
		||||
		STRLIST_FOREACH (local, dir, i)
 | 
			
		||||
			rc_strlist_addsortu (&list, dir);
 | 
			
		||||
		rc_strlist_free (local);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		return (list);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,10 @@ SRCS=		checkpath.c fstabinfo.c mountinfo.c \
 | 
			
		||||
 | 
			
		||||
CLEANFILES=	version.h
 | 
			
		||||
 | 
			
		||||
BINDIR?=	/sbin
 | 
			
		||||
BINDIR=		${PREFIX}/bin
 | 
			
		||||
SBINDIR=	${PREFIX}/sbin
 | 
			
		||||
LINKDIR=	${PREFIX}/${LIBNAME}/${PROG}
 | 
			
		||||
 | 
			
		||||
LINKDIR=	${LIBNAME}/${PROG}
 | 
			
		||||
BINLINKS=	rc-status
 | 
			
		||||
SBINLINKS=	rc-update runscript start-stop-daemon
 | 
			
		||||
RC_BINLINKS=	einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \
 | 
			
		||||
@@ -50,16 +51,16 @@ version.h:
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
install: all
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}${SBINDIR}
 | 
			
		||||
	${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${SBINDIR}
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}${BINDIR}
 | 
			
		||||
	${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR}
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}/bin
 | 
			
		||||
	for x in ${BINLINKS}; do ln -fs ${BINDIR}/${PROG} ${DESTDIR}/bin/$$x; done
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}/bin
 | 
			
		||||
	for x in ${SBINLINKS}; do ln -fs ${PROG} ${DESTDIR}${BINDIR}/$$x; done
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}/${LIBNAME}/${PROG}/bin
 | 
			
		||||
	for x in $(RC_BINLINKS); do ln -fs ${BINDIR}/${PROG} $(DESTDIR)/${LIBNAME}/${PROG}/bin/$$x; done
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}/${LIBNAME}/${PROG}/sbin
 | 
			
		||||
	for x in ${RC_SBINLINKS}; do ln -fs ${BINDIR}/${PROG} ${DESTDIR}/${LIBNAME}/${PROG}/sbin/$$x; done
 | 
			
		||||
	for x in ${BINLINKS}; do ln -fs ${DESTDIR}${SBINDIR}/${PROG} ${DESTDIR}${BINDIR}/$$x; done
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}${SBINDIR}
 | 
			
		||||
	for x in ${SBINLINKS}; do ln -fs ${PROG} ${DESTDIR}${SBINDIR}/$$x; done
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}${LINKDIR}/bin
 | 
			
		||||
	for x in $(RC_BINLINKS); do ln -fs ${DESTDIR}${SBINDIR}/${PROG} ${DESTDIR}${LINKDIR}/bin/$$x; done
 | 
			
		||||
	${INSTALL} -d ${DESTDIR}${LINKDIR}/sbin
 | 
			
		||||
	for x in ${RC_SBINLINKS}; do ln -fs ${DESTDIR}${SBINDIR}/${PROG} ${DESTDIR}${LINKDIR}/sbin/$$x; done
 | 
			
		||||
	if test "${MKPAM}" = pam; then \
 | 
			
		||||
		${INSTALL} -d ${DESTDIR}${PAMDIR}; \
 | 
			
		||||
		${INSTALL} -m ${PAMMODE} start-stop-daemon.pam ${DESTDIR}${PAMDIR}/start-stop-daemon; \
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user