diff options
author | Rob Austein <sra@hactrn.net> | 2013-01-31 21:56:29 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2013-01-31 21:56:29 +0000 |
commit | 4d0fed473ded20a855bc68e552b9b912ce9c09c2 (patch) | |
tree | 0d2aa4bd2841ece8bf1e4d51aa567f70774d0e0e /rcynic | |
parent | 1dfcb1fc0ae6e9367868c3dab8d38c1bd091dcaf (diff) |
Checkpoint
svn path=/branches/tk377/; revision=4995
Diffstat (limited to 'rcynic')
-rw-r--r-- | rcynic/Makefile.in | 25 | ||||
-rw-r--r-- | rcynic/rules.darwin.mk | 30 | ||||
-rw-r--r-- | rcynic/rules.freebsd.mk | 6 | ||||
-rw-r--r-- | rcynic/rules.linux.mk | 36 | ||||
-rw-r--r-- | rcynic/rules.unknown.mk | 2 |
5 files changed, 97 insertions, 2 deletions
diff --git a/rcynic/Makefile.in b/rcynic/Makefile.in index 58522a7f..d8b5ec75 100644 --- a/rcynic/Makefile.in +++ b/rcynic/Makefile.in @@ -28,6 +28,7 @@ RCYNIC_DIR = @RCYNIC_DIR@ RCYNIC_JAIL_DIRS = @RCYNIC_JAIL_DIRS@ RCYNIC_CONF_FILE = @RCYNIC_CONF_FILE@ RCYNIC_TA_DIR = @RCYNIC_TA_DIR@ +RCYNIC_BIN_RCYNIC = @RCYNIC_BIN_RCYNIC@ RCYNIC_DATA_DIR = ${RCYNIC_DIR}/data RCYNIC_RPKI_RTR_DIR = ${RCYNIC_DIR}/rpki-rtr RCYNIC_DIRS = ${RCYNIC_TA_DIR} ${RCYNIC_JAIL_DIRS} ${RCYNIC_DATA_DIR} ${RCYNIC_RPKI_RTR_DIR} @@ -152,6 +153,30 @@ ${RCYNIC_CONF_FILE}: @chmod 444 $@.tmp @mv $@.tmp $@ +install-rcynic: ${RCYNIC_BIN_RCYNIC} + +${RCYNIC_BIN_RCYNIC}: ${BIN} + ${INSTALL} -p -m 555 ${BIN} $@ + +install-static-rsync: ${RCYNIC_DIR}/bin/rsync + +${RCYNIC_DIR}/bin/rsync: static-rsync/rsync + ${INSTALL} -p -m 555 static-rsync/rsync $@ + +install-scripts: ${bindir}/rcynic-text ${bindir}/rcynic-html ${bindir}/rcynic-svn ${bindir}/validation_status + +${bindir}/rcynic-text: rcynic-text + ${INSTALL} -p -m 555 rcynic-text ${bindir} + +${bindir}/rcynic-html: rcynic-html + ${INSTALL} -p -m 555 rcynic-html ${bindir} + +${bindir}/rcynic-svn: rcynic-svn + ${INSTALL} -p -m 555 rcynic-svn ${bindir} + +${bindir}/validation_status: validation_status + ${INSTALL} -p -m 555 validation_status ${bindir} + .FORCE: # Not sure we want this, test it both ways I guess diff --git a/rcynic/rules.darwin.mk b/rcynic/rules.darwin.mk index 8f0e87b7..6eebed41 100644 --- a/rcynic/rules.darwin.mk +++ b/rcynic/rules.darwin.mk @@ -1,7 +1,7 @@ # $Id$ create-rcynic-user-and-group: .FORCE - if /usr/bin/dscl . -read "/Groups/${RCYNIC_GROUP}" >/dev/null 2>&1; \ + @if /usr/bin/dscl . -read "/Groups/${RCYNIC_GROUP}" >/dev/null 2>&1; \ then \ echo "You already have a group \"${RCYNIC_GROUP}\", so I will use it."; \ elif gid="$$(/usr/bin/dscl . -list /Groups PrimaryGroupID | /usr/bin/awk 'BEGIN {gid = 501} $$2 >= gid {gid = 1 + $$2} END {print gid}')" && \ @@ -36,3 +36,31 @@ create-rcynic-user-and-group: .FORCE echo "Please create it, then try again."; \ exit 1; \ fi + + +install-shared-libraries: .FORCE + @echo "Copying required shared libraries" + @shared_libraries="${RCYNIC_DIR}/bin/rcynic ${RCYNIC_DIR}/bin/rsync"; \ + while true; \ + do \ + closure="$$(/usr/bin/otool -L $${shared_libraries} | /usr/bin/awk '/:$$/ {next} {print $$1}' | /usr/bin/sort -u)"; \ + if test "x$$shared_libraries" = "x$$closure"; + then \ + break; \ + else \ + shared_libraries="$$closure"; \ + fi; \ + done; \ + for shared in /usr/lib/dyld $$shared_libraries; \ + do \ + if /bin/test -r "${RCYNIC_DIR}/$${shared}"; \ + then \ + echo "You already have a \"${RCYNIC_DIR}/$${shared}\", so I will use it"; \ + elif /usr/bin/install -m 555 -o root -g wheel -p "$${shared}" "${RCYNIC_DIR}/$${shared}"; \ + then \ + echo "Copied $${shared} into ${RCYNIC_DIR}"; \ + else \ + echo "Unable to copy $${shared} into ${RCYNIC_DIR}"; \ + exit 1; \ + fi; \ + done diff --git a/rcynic/rules.freebsd.mk b/rcynic/rules.freebsd.mk index 3eab4780..a37abac7 100644 --- a/rcynic/rules.freebsd.mk +++ b/rcynic/rules.freebsd.mk @@ -23,3 +23,9 @@ create-rcynic-user-and-group: .FORCE echo "Please create it, then try again."; \ exit 1; \ fi + + +# We use static compilation on FreeBSD, so no need for shared libraries + +install-shared-libraries: + @true diff --git a/rcynic/rules.linux.mk b/rcynic/rules.linux.mk index 3ed5b730..8686bd07 100644 --- a/rcynic/rules.linux.mk +++ b/rcynic/rules.linux.mk @@ -25,3 +25,39 @@ create-rcynic-user-and-group: .FORCE echo "Please create it, then try again."; \ exit 1; \ fi + + +install-shared-libraries: .FORCE + @echo "Copying required shared libraries" + @if test -d /lib64; then libdir=/lib64; else libdir=/lib; fi; \ + shared_libraries="${RCYNIC_DIR}/bin/rcynic ${RCYNIC_DIR}/bin/rsync $$(/usr/bin/find $${libdir} -name 'libnss*.so*' -print)"; \ + while true; \ + do \ + closure="$$(/usr/bin/ldd $${shared_libraries} | \ + ${AWK} ' \ + { sub(/:$/, "") } \ + $$0 == "${RCYNIC_DIR}/bin/rcynic" { next } \ + $$0 == "${RCYNIC_DIR}/bin/rsync" { next } \ + $$1 ~ /\/ld-linux\.so/ { next } \ + { for (i = 1; i <= NF; i++) if ($$i ~ /^\//) print $$i } \ + ' | \ + ${SORT} -u)"; \ + if test "X$$shared_libraries" = "X$$closure"; \ + then \ + break; \ + else \ + shared_libraries="$$closure"; \ + fi; \ + done; \ + if test -f $${libdir}/libresolv.so.2; \ + then \ + shared_libraries="$${shared_libraries} $${libdir}/libresolv.so.2"; + fi; \ + for shared in $${libdir}/*ld*.so* $$shared_libraries; \ + do \ + if test ! -r "${RCYNIC_DIR}/$${shared}"; \ + then \ + ${INSTALL} -m 555 -d `dirname "${RCYNIC_DIR}$${shared}"` && \ + ${INSTALL} -m 555 -p "$${shared}" "${RCYNIC_DIR}$${shared}"; \ + fi; \ + done diff --git a/rcynic/rules.unknown.mk b/rcynic/rules.unknown.mk index fea2aebc..1ee63a63 100644 --- a/rcynic/rules.unknown.mk +++ b/rcynic/rules.unknown.mk @@ -1,4 +1,4 @@ # $Id$ -create-rcynic-user-and-group: .FORCE +create-rcynic-user-and-group install-shared-libraries: .FORCE @echo "Don't know how to make $@ on this platform"; exit 1 |