Date: Wed, 30 Dec 2015 14:07:42 +0000 (UTC) From: Alex Kozlov <ak@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r404857 - in head: benchmarks/tcpblast benchmarks/tcpblast/files benchmarks/tcpblast/src net-mgmt/nagios-check_cpu_usage net-mgmt/nagios-check_cpu_usage/files net-mgmt/nagios-check_cpu_... Message-ID: <201512301407.tBUE7gih093007@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ak Date: Wed Dec 30 14:07:42 2015 New Revision: 404857 URL: https://svnweb.freebsd.org/changeset/ports/404857 Log: - Rename nonstandard src directory to files - Modernize ports Added: head/benchmarks/tcpblast/files/ - copied from r404856, head/benchmarks/tcpblast/src/ head/net-mgmt/nagios-check_cpu_usage/files/ - copied from r404855, head/net-mgmt/nagios-check_cpu_usage/src/ head/net-mgmt/nagios-check_hdd_health/files/ - copied from r404855, head/net-mgmt/nagios-check_hdd_health/src/ head/net/tcpmssd/files/ - copied from r404855, head/net/tcpmssd/src/ head/security/safesh/files/ - copied from r404855, head/security/safesh/src/ head/sysutils/personality/files/personality - copied unchanged from r404855, head/sysutils/personality/src/personality head/sysutils/personality/files/personality.8 - copied unchanged from r404855, head/sysutils/personality/src/personality.8 head/textproc/mkcatalog/files/ - copied from r404855, head/textproc/mkcatalog/src/ Deleted: head/benchmarks/tcpblast/files/Makefile head/benchmarks/tcpblast/src/ head/net-mgmt/nagios-check_cpu_usage/src/ head/net-mgmt/nagios-check_hdd_health/pkg-plist head/net-mgmt/nagios-check_hdd_health/src/ head/net/tcpmssd/src/ head/security/safesh/pkg-plist head/security/safesh/src/ head/sysutils/personality/src/ head/textproc/mkcatalog/scripts/ head/textproc/mkcatalog/src/ Modified: head/benchmarks/tcpblast/Makefile head/benchmarks/tcpblast/files/tcpblast.c head/net-mgmt/nagios-check_cpu_usage/Makefile head/net-mgmt/nagios-check_hdd_health/Makefile head/net/tcpmssd/Makefile head/security/safesh/Makefile head/sysutils/personality/Makefile head/textproc/mkcatalog/Makefile head/textproc/mkcatalog/files/mkcatalog.in Modified: head/benchmarks/tcpblast/Makefile ============================================================================== --- head/benchmarks/tcpblast/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/benchmarks/tcpblast/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -5,19 +5,20 @@ PORTNAME= tcpblast PORTVERSION= 1.1 PORTREVISION= 1 CATEGORIES= benchmarks net ipv6 +MASTER_SITES= # none DISTFILES= # none MAINTAINER= ports@FreeBSD.org COMMENT= Measures the throughput of a TCP connection +NO_WRKSUBDIR= yes + PLIST_FILES= bin/tcpblast -USES= uidfix -WRKSRC= ${WRKDIR}/src +do-build: + ${CC} ${CFLAGS} ${FILESDIR}/${PORTNAME}.c -o ${WRKDIR}/${PORTNAME} -do-extract: - @${RM} -rf ${WRKDIR} - @${MKDIR} ${WRKDIR} - ${CP} -RP ${.CURDIR}/src ${WRKDIR} +do-install: + ${INSTALL_PROGRAM} ${WRKDIR}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin .include <bsd.port.mk> Modified: head/benchmarks/tcpblast/files/tcpblast.c ============================================================================== --- head/benchmarks/tcpblast/src/tcpblast.c Wed Dec 30 14:03:42 2015 (r404856) +++ head/benchmarks/tcpblast/files/tcpblast.c Wed Dec 30 14:07:42 2015 (r404857) @@ -17,6 +17,7 @@ #include <unistd.h> #include <stdlib.h> #include <string.h> +#include <err.h> #include <errno.h> #define BLKSIZE 1024 @@ -26,7 +27,7 @@ struct servent *sp; struct hostent *host; long starts, startms, stops, stopms, expms; -struct timeval ti; +struct timeval ti; struct timezone tiz; char greet[BLKSIZE] = "Hi!"; Modified: head/net-mgmt/nagios-check_cpu_usage/Makefile ============================================================================== --- head/net-mgmt/nagios-check_cpu_usage/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/net-mgmt/nagios-check_cpu_usage/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -11,12 +11,13 @@ MAINTAINER= ports@FreeBSD.org COMMENT= Nagios plug-in to check CPU usage NO_BUILD= yes +NO_ARCH= yes PLIST_FILES= libexec/nagios/check_cpu_usage do-install: - ${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios - ${INSTALL_SCRIPT} ${.CURDIR}/src/check_cpu_usage \ + @${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios + ${INSTALL_SCRIPT} ${FILESDIR}/check_cpu_usage \ ${STAGEDIR}${PREFIX}/libexec/nagios .include <bsd.port.mk> Modified: head/net-mgmt/nagios-check_hdd_health/Makefile ============================================================================== --- head/net-mgmt/nagios-check_hdd_health/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/net-mgmt/nagios-check_hdd_health/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -4,8 +4,8 @@ PORTNAME= nagios-check_hdd_health PORTVERSION= 1.1 CATEGORIES= net-mgmt -MASTER_SITES= # No distfile -DISTFILES= # No distfile +MASTER_SITES= # none +DISTFILES= # none MAINTAINER= ports@FreeBSD.org COMMENT= Nagios plug-in to check HDD health from S.M.A.R.T @@ -13,9 +13,13 @@ COMMENT= Nagios plug-in to check HDD hea RUN_DEPENDS= smartmontools>=0:${PORTSDIR}/sysutils/smartmontools NO_BUILD= yes +NO_ARCH= yes + +PLIST_FILES= libexec/nagios/check_hdd_health do-install: @${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios - @${INSTALL_SCRIPT} ${.CURDIR}/src/check_hdd_health ${STAGEDIR}${PREFIX}/libexec/nagios + ${INSTALL_SCRIPT} ${FILESDIR}/check_hdd_health \ + ${STAGEDIR}${PREFIX}/libexec/nagios .include <bsd.port.mk> Modified: head/net/tcpmssd/Makefile ============================================================================== --- head/net/tcpmssd/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/net/tcpmssd/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -10,20 +10,15 @@ DISTFILES= # none MAINTAINER= ports@FreeBSD.org COMMENT= Utility to correct requested TCP receive segment size -WRKSRC= ${WRKDIR}/src - -SRC= ${.CURDIR}/src +NO_WRKSUBDIR= yes PLIST_FILES= bin/tcpmssd man/man8/tcpmssd.8.gz -pre-patch: - @${CP} -R ${SRC} ${WRKDIR} - do-build: - (cd ${WRKSRC} && ${MAKE} tcpmssd) + ${CC} ${CFLAGS} ${FILESDIR}/${PORTNAME}.c -o ${WRKDIR}/${PORTNAME} do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/tcpmssd ${STAGEDIR}${PREFIX}/bin - ${INSTALL_MAN} ${WRKSRC}/tcpmssd.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 + ${INSTALL_PROGRAM} ${WRKDIR}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin + ${INSTALL_MAN} ${FILESDIR}/${PORTNAME}.8 ${STAGEDIR}${MANPREFIX}/man/man8 .include <bsd.port.mk> Modified: head/security/safesh/Makefile ============================================================================== --- head/security/safesh/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/security/safesh/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -6,24 +6,27 @@ PORTVERSION= 1.5 CATEGORIES= security MASTER_SITES= # none DISTFILES= # none -EXTRACT_ONLY= # none MAINTAINER= ports@FreeBSD.org COMMENT= Authentication manager for OpenSSH (making secure auth easier) NO_BUILD= yes -NO_WRKSUBDIR= yes +NO_ARCH= yes -SRC= ${.CURDIR}/src +PLIST_FILES= bin/cvs-safesh \ + bin/safesh \ + bin/safeshinstall \ + bin/scpsh \ + man/man1/safesh.1.gz # XXX Anybody that know how to create manlinks from ports easily, please # contact me. do-install: - ${INSTALL_SCRIPT} ${SRC}/${PORTNAME}.sh ${STAGEDIR}${PREFIX}/bin/${PORTNAME} - ${INSTALL_SCRIPT} ${SRC}/cvs-safesh.sh ${STAGEDIR}${PREFIX}/bin/cvs-safesh - ${INSTALL_MAN} ${SRC}/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/man/man1 - @${LN} -sf ${PORTNAME} ${STAGEDIR}${PREFIX}/bin/scpsh - @${LN} -sf ${PORTNAME} ${STAGEDIR}${PREFIX}/bin/safeshinstall + ${INSTALL_SCRIPT} ${FILESDIR}/${PORTNAME}.sh ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_SCRIPT} ${FILESDIR}/cvs-safesh.sh ${STAGEDIR}${PREFIX}/bin/cvs-safesh + ${INSTALL_MAN} ${FILESDIR}/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/man/man1 + ${LN} -sf ${PORTNAME} ${STAGEDIR}${PREFIX}/bin/scpsh + ${LN} -sf ${PORTNAME} ${STAGEDIR}${PREFIX}/bin/safeshinstall .include <bsd.port.mk> Modified: head/sysutils/personality/Makefile ============================================================================== --- head/sysutils/personality/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/sysutils/personality/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -4,24 +4,20 @@ PORTNAME= personality PORTVERSION= 1.0 CATEGORIES= sysutils +MASTER_SITES= # none DISTFILES= # none MAINTAINER= ports@FreeBSD.org COMMENT= System configuration management utility to alter system personality -WRKSRC= ${WRKDIR}/src -NO_BUILD= YES +NO_BUILD= yes +NO_ARCH= yes SUB_FILES= pkg-message -PLIST_FILES= man/man8/${PORTNAME}.8.gz sbin/personality - -do-extract: - @ ${RM} -rf ${WRKDIR} - @ ${MKDIR} ${WRKDIR} - @ ${CP} -RP ${.CURDIR}/src ${WRKDIR} +PLIST_FILES= man/man8/${PORTNAME}.8.gz sbin/${PORTNAME} do-install: - @ ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/sbin - @ ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.8 ${STAGEDIR}${PREFIX}/man/man8 + ${INSTALL_SCRIPT} ${FILESDIR}/${PORTNAME} ${STAGEDIR}${PREFIX}/sbin + ${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.8 ${STAGEDIR}${PREFIX}/man/man8 .include <bsd.port.mk> Copied: head/sysutils/personality/files/personality (from r404855, head/sysutils/personality/src/personality) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/personality/files/personality Wed Dec 30 14:07:42 2015 (r404857, copy of r404855, head/sysutils/personality/src/personality) @@ -0,0 +1,536 @@ +#! /bin/sh +############################################################################## +# +# Copyright (c) 1997 Michael Smith +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# +############################################################################## +# +# This script provides functionality for manipulating collections of +# configuration files which can be organised so as to alter the +# personality of a system. +# +# Initially, the "base" personality is established. This personality +# contains the "reference" copies of configuration files, and is used +# when creating new personalities. The files which are currently +# considered part of the system's personality are those contained in +# the base personality. +# +# A new personality is established by making a copy of the base +# personality under a new name. Each personality maintains a +# separate copy of all configuration files under /etc/personality. +# +# To install a new personality, the files currently in place are +# saved back to the current personality as indicated in +# /etc/personality/current, and the files for the new personality +# copied into place. The 'select' and 'menu' commands which perform +# these installations are implemented in such a fashion as to only +# require the tools available on the root filesystem, so that they +# may be invoked at the earliest stage during system startup. +# +# If the current personality has become damaged, it can be restored +# from the saved copy. +# +# Files can be added to and removed from the personality set. When +# a new file is added, it is copied from the current system into all +# personalities and added to the list file. When a file is removed +# the current version is kept in place, but all copies are removed +# from saved personalities and the file is removed from the list. +# +# XXX To Do : +# Files can be inherited by one personality from another. This is +# simply achieved by copying the relevant files under /etc/personality, +# and into the current system if required. +# +############################################################################## + +# Establish some global constants +P_ROOT=/etc/personality +#P_ROOT=/tmp/personality +P_BASE="${P_ROOT}/_base" +P_CURRENT="${P_ROOT}/current" +P_FILES="${P_ROOT}/files" +P_LIST="${P_ROOT}/list" +scriptname="$0" + +############################################################################## +# pers_main +# +# Execution begins here after the file has been read. +# +pers_main() +{ + case "$1" in + menu) + pers_menu $2 $3 + ;; + select) + pers_select $2 + ;; + restore) + pers_restore + ;; + save) + pers_save + ;; + saveas) + pers_saveas $2 + pers_reindex + ;; + create) + pers_create $2 + pers_reindex + ;; + delete) + pers_delete $2 + pers_reindex + ;; + add) + pers_add $2 + pers_reindex + ;; + list) + pers_list + ;; + remove) + pers_remove $2 + pers_reindex + ;; + init) + pers_init + pers_reindex + ;; + *) + usage + ;; + esac +} + +############################################################################## +# pers_menu +# +# Present a menu of currently-selectable personalities, assign hotkeys, +# describe the default and optionally go with the default after a timeout +# +pers_menu() +{ + # Look and see if there's actually anything to work with + if [ ! -d "${P_ROOT}" ]; then + return + fi + + # Pick up a timeout if specified, default to 10 seconds + timeout=10 + if [ ! -z "$1" ]; then + timeout="$1" + fi + + # Assign a default, if suitable + defpers="" + defname="<none>" + if [ -f "${P_CURRENT}" ]; then + defpers=`cat "${P_CURRENT}"` + defname="${defpers}" + fi + + # Loop prompting/reading input until we get a result + while :; do + + # Print menu + echo ""; + echo "Select System Personality" + echo "=========================" + hkey=0 + for pers in `cat "${P_LIST}"`; do + echo " ${hkey}) ${pers}" + eval index_${hkey}="${pers}" + hkey=`expr ${hkey} + 1` + done + echo ""; + + echo " Default : ${defname}" + read -t "${timeout}" -p " Selection : " input + eval selvar=\$index_"${input}" + selpers="" + if [ -z "${input}" ]; then + selpers="${defpers}" + break + elif [ -n "${selvar}" ]; then + selpers="${selvar}" + break + elif [ -d "${P_ROOT}/_${input}" ]; then + selpers="${input}" + break + fi + done + + # $selpers now contains the personality we wish to select, + # or is empty if we selected the default when there was none + if [ -z "${selpers}" ]; then + return + fi + + # select the personality nominated + pers_select "${selpers}" +} + +############################################################################## +# pers_select +# +# Copy the files from the nominated personality out of the repository +# into the real system. Note that this must be able to run with +# nothing other than the contents of /bin available. +# +pers_select() +{ + src="${P_ROOT}/_$1"; + if [ ! -d "${src}" ]; then + fail "no such personality '$1'" + fi + + # Iterate over the file listing, copy them all out + for file in `cat "${P_FILES}"`; do + cp -p "${src}/${file}" "${file}" + done + + # Register this personality as being current + echo "$1" > "${P_CURRENT}" +} + +############################################################################## +# pers_restore +# +# Reload the configuration files for the current personality, eliminating +# any changes that may have been made. +# +pers_restore() +{ + if [ ! -e "${P_CURRENT}" ]; then + fail "no personality currently active" + fi + + # Check that the current personality exists + pers=`cat "${P_CURRENT}"` + src="${P_ROOT}/_${pers}" + if [ ! -d "${src}" ]; then + fail "current personality '${pers}' not in the repository!" + fi + + # Iterate over the file listing, copy them all out + for file in `cat "${P_FILES}"`; do + cp -p "${src}/${file}" "${file}" + done +} + +############################################################################## +# pers_save +# +# If a personality is current, save the current set of files to that +# personality. +# +pers_save() +{ + if [ ! -e "${P_CURRENT}" ]; then + fail "no personality currently active" + fi + + # Check that the current personality exists + pers=`cat "${P_CURRENT}"` + dest="${P_ROOT}/_${pers}" + if [ ! -d "${dest}" ]; then + fail "current personality '${pers}' not in the repository!" + fi + + # OK, go ahead and save stuff. If this fails, we're + # moderately stuffed, so don't worry about it. + for file in `cat "${P_FILES}"`; do + stub=`dirname "${file}"` + mkdir -p "${dest}/${stub}" + cp -p "${file}" "${dest}/${file}" + done +} + +############################################################################## +# pers_saveas +# +# Take the currently-active set of configuration files, and save them as +# a new personality, set the new personality as current. +# +pers_saveas() +{ + dest="${P_ROOT}/_$1" + if [ -e "${dest}" ]; then + fail "cannot create new personality '$1', name already in use" + fi + + # Create the personality directory + mkdir -p "${dest}" || pers_saveas_fail "$1" + + # iterate over files to save, copy them in + for file in `cat "${P_FILES}"`; do + stub=`dirname "${file}"` + mkdir -p "${dest}/${stub}" + cp -p "${file}" "${dest}/${file}" || pers_saveas_fail $1 + done + + # new personality is current + echo "$1" > "${P_CURRENT}" +} + +######################################## +# pers_saveas_fail +# +# The 'save as' operation failed. Clean +# up and emit a failure message. +# +pers_saveas_fail() +{ + rm -Rf "${P_ROOT}/_$1" + fail "could not save current personality as '$1'" +} + +############################################################################## +# pers_create +# +# Create a new personality, duplicated from the current base personality +# +pers_create() +{ + if [ -e "${P_ROOT}/_$1" ]; then + fail "cannot create new personality '$1', name already in use" + fi + + # Ok, duplicate it + cp -Rp "${P_BASE}" "${P_ROOT}/_$1" || pers_create_fail "$1" +} + +######################################## +# pers_create_fail +# +# An attempt to create a personality failed. +# Clean up and exit with an error message. +# +pers_create_fail() +{ + rm -Rf "${P_ROOT}/_$1" + fail "'$1' could not be created" +} + +############################################################################## +# pers_delete +# +# Remove a personality from the system. It is legitimate to remove +# the current personality. +# +pers_delete() +{ + if [ ! -e "${P_ROOT}/_$1" ]; then + fail "no such personality '$1' to remove" + fi + if [ "$1" = _base ]; then + fail "cannot remove base personality" + fi + + # If the requested personality is current, remove the + # reference. + if [ -e "${P_CURRENT}" ]; then + if [ `cat "${P_CURRENT}"` = "$1" ]; then + rm -f "${P_CURRENT}" + fi + fi + + # Remove the repository entry + rm -Rf "${P_ROOT}/_$1"; + + # Make sure it's gone + if [ -e "${P_ROOT}/_$1" ]; then + fail "failed to completely remove personality '$1'"; + fi +} + +############################################################################## +# pers_add +# +# Add a new file to the system; copy it from the 'real' path into +# each personality directory. Check first to make sure it's not already +# part of the system, and check that the path supplied is absolute. +# +# The file is stored with its full path relative to the repository +# directory. +# +pers_add() +{ + if [ ! -r "/$1" ]; then + fail "cannot read '$1' to add to the Personality System" + fi + if [ -e "${P_BASE}/$1" ]; then + fail "file '$1' already part of the Personality System" + fi + if [ ! -f "$1" ]; then + fail "only files can be added to the Personality System" + fi + + # looks OK, copy it in + stub=`dirname "$1"` + for targ in ${P_ROOT}/_*; do + mkdir -p "${targ}/${stub}" + cp -p "$1" "${targ}/${stub}" || pers_add_fail "$1"; + done +} + +######################################## +# pers_add_fail +# +# A failure occurred while adding a file to +# the repository; back out any copies that +# made it in and abort with an error. +# +pers_add_fail() +{ + for cand in ${P_ROOT}/_*; do + if [ -f "${cand}/$1" ]; then + rm -f "${cand}/$1"; + fi + done + fail "'$1' could not be added"; +} + +############################################################################## +# pers_remove +# +# Remove a file from all personalities in the repository. +# +pers_remove() +{ + if [ ! -f "${P_BASE}/$1" ]; then + fail "'$1' is not part of the Personality System"; + fi + + # OK, it should be there; nuke whatever we can find + for cand in ${P_ROOT}/_*; do + if [ -f "${cand}/$1" ]; then + rm -f "${cand}/$1"; + fi + done +} + +############################################################################## +# pers_list +# +# List all of the files that comprise the system personality. +# +pers_list() +{ + echo "Current personalities:" + for pers in `cat "${P_LIST}"`; do + echo " ${pers}"; + done + echo "Files in system personality:" + for file in `cat "${P_FILES}"`; do + echo " ${file}" + done +} + +############################################################################## +# pers_init +# +# Initialise the personality collection; refuse to do so if there is +# already one in place, or something else occupying the root path. +# +pers_init() +{ + if [ -e "${P_ROOT}" ]; then + fail "cannot initialise, '${P_ROOT}' already exists" + fi + + # Create the repository with no files, and no current personality + mkdir -p "${P_ROOT}" + mkdir -p "${P_BASE}" +} + +############################################################################## +# pers_reindex +# +# Clean out any empty directories in the repository. This is achieved +# by silently trying to rmdir everything that looks like a directory +# under any personality. +# +# Then rebuild the list of files that comprise the system personality, +# so that the select and menu functions work. +# +pers_reindex() +{ + # Remove empty directories + for cand in ${P_ROOT}/_*; do + find -dX "${cand}/." -type d | xargs rmdir >/dev/null 2>&1 + done + + # Regenerate the files list + find -X "${P_BASE}" -type f | sed "s%${P_BASE}%%" > "${P_FILES}" + # regenerate the personalities list + ls -d "${P_ROOT}/_"* | sed "s%${P_ROOT}/_%%" > "${P_LIST}" +} + +############################################################################## +# usage +# +# Emit a (hopefully) helpful diagnostic and exit +# +usage() +{ + echo "${scriptname}: incorrect argument(s)" + echo "" + echo " Usage is ${scriptname} <command>, where valid commands are :" + echo " menu [<timeout>] Invoke the menu-driven personality selector" + echo " select <personality> Select a specific personality" + echo " restore Restore the current personality from the saved version" + echo " save Save the current personality" + echo " saveas <personality> Save the current personality under a new name" + echo " create <personality> Create a new personality from the base" + echo " delete <personality> Delete a personality" + echo " add <full path> Add a new file" + echo " remove <full path> Remove a file" + echo " list List all files" + echo " init Initialise the Personality System" + echo "" + exit 2; +} + +############################################################################## +# fail +# +# Emit an error message to stderr and exit +# +fail () +{ + echo "${scriptname}: $1"; + exit 1; +} + +############################################################################## +# Now we have parsed everything, start. +pers_main $1 $2 $3 $4; +exit 0; Copied: head/sysutils/personality/files/personality.8 (from r404855, head/sysutils/personality/src/personality.8) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/personality/files/personality.8 Wed Dec 30 14:07:42 2015 (r404857, copy of r404855, head/sysutils/personality/src/personality.8) @@ -0,0 +1,72 @@ +.\" Copyright (c) 2000 +.\" Andreas Klemm <andreas@FreeBSD.org>. All rights reserved. +.\" +.\" $FreeBSD$ +.\" +.Dd March 25, 2001 +.Dt PERSONALITY 8 +.Os +.Sh NAME +.Nm personality +.Nd system configuration management utility +.Sh SYNOPSIS +.Nm personality +.Op options ... +.Sh DESCRIPTION +This script provides functionality for manipulating collections of +configuration files which can be organised so as to alter the +personality of a system. +.Pp +Initially, the +.Ic base +personality is established. This personality contains the +.Ic reference +copies of configuration files, and is used when creating new personalities. +The files which are currently considered part of the system's personality +are those contained in the base personality. +.Pp +A new personality is established by making a copy of the base personality +under a new name. Each personality maintains a separate copy of all +configuration files under +.Ic /etc/personality . +.Pp +To install a new personality, the files currently in place are saved back +to the current personality as indicated in +.Ic /etc/personality/current , +and the files for the new personality copied into place. +.Pp +The +.Ic select +and +.Ic menu +commands which perform these installations are implemented in such a +fashion as to only require the tools available on the root filesystem, +so that they may be invoked at the earliest stage during system startup. +.Pp +If the current personality has become damaged, it can be restored +from the saved copy. +.Pp +Files can be added to and removed from the personality set. When a new +file is added, it is copied from the current system into all personalities +and added to the list file. When a file is removed the current version is +kept in place, but all copies are removed from saved personalities and the +file is removed from the list. +.Sh FILES +.Bl -tag -width /etc/personality/current -compact +.It Pa /etc/personality +configuration base +.It Pa /etc/personality/_base +system files under management of personality +.It Pa /etc/personality/current +backup location of current files before new personality is copied into place +.Sh SEE ALSO +.Xr rc 8 +.Sh BUGS +Currently none. +.Sh HISTORY +The +.Nm +script has been written 1997 by Mike Smith <msmith@FreeBSD.org>. +The +.Nm +manual page has been written by Andreas Klemm <andreas@FreeBSD.org>. Modified: head/textproc/mkcatalog/Makefile ============================================================================== --- head/textproc/mkcatalog/Makefile Wed Dec 30 14:03:42 2015 (r404856) +++ head/textproc/mkcatalog/Makefile Wed Dec 30 14:07:42 2015 (r404857) @@ -13,19 +13,13 @@ COMMENT= Maintenance utility for sgml ca NO_WRKSUBDIR= yes NO_BUILD= yes -PLIST_FILES= sbin/mkcatalog -SCRIPTS_ENV= CONFIGURE_TARGETS=${CONFIGURE_TARGETS} - -SRC= ${.CURDIR}/src -CONFIGURE_TARGETS= mkcatalog +NO_ARCH= yes -pre-configure: -.for f in ${CONFIGURE_TARGETS} - ${CP} ${SRC}/${f}.in ${WRKDIR} -.endfor +SUB_FILES= mkcatalog +PLIST_FILES= sbin/mkcatalog do-install: - @${INSTALL_SCRIPT} ${WRKDIR}/mkcatalog \ + ${INSTALL_SCRIPT} ${WRKDIR}/mkcatalog \ ${STAGEDIR}${PREFIX}/sbin/mkcatalog .include <bsd.port.mk> Modified: head/textproc/mkcatalog/files/mkcatalog.in ============================================================================== --- head/textproc/mkcatalog/src/mkcatalog.in Wed Dec 30 12:52:24 2015 (r404855) +++ head/textproc/mkcatalog/files/mkcatalog.in Wed Dec 30 14:07:42 2015 (r404857) @@ -47,7 +47,7 @@ verbose_msg () esac } -PREFIX=@@PREFIX@@ +PREFIX=%%PREFIX%% TMPDIR=/tmp ARGV0=`sh_basename $0`
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201512301407.tBUE7gih093007>