diff options
-rw-r--r-- | sysutils/bareos-client-static/Makefile | 6 | ||||
-rw-r--r-- | sysutils/bareos-client/Makefile | 6 | ||||
-rw-r--r-- | sysutils/bareos-docs/Makefile | 1 | ||||
-rw-r--r-- | sysutils/bareos-server/Makefile | 19 | ||||
-rw-r--r-- | sysutils/bareos-server/files/chio-bareos | 350 | ||||
-rw-r--r-- | sysutils/bareos-traymonitor/Makefile | 8 | ||||
-rw-r--r-- | sysutils/bareos16-bat/Makefile | 7 | ||||
-rw-r--r-- | sysutils/bareos16-client-static/Makefile | 5 | ||||
-rw-r--r-- | sysutils/bareos16-client/Makefile | 5 | ||||
-rw-r--r-- | sysutils/bareos16-server/Makefile | 18 | ||||
-rw-r--r-- | sysutils/bareos16-server/files/chio-bareos | 350 | ||||
-rw-r--r-- | sysutils/bareos16-traymonitor/Makefile | 7 |
12 files changed, 384 insertions, 398 deletions
diff --git a/sysutils/bareos-client-static/Makefile b/sysutils/bareos-client-static/Makefile index e9acaa67096e..ab1967762b36 100644 --- a/sysutils/bareos-client-static/Makefile +++ b/sysutils/bareos-client-static/Makefile @@ -1,12 +1,13 @@ -# Created by: Alonso Cardenas <acm@FreeBSD.org> # $FreeBSD$ PORTNAME= bareos -PORTREVISION= 0 +PORTREVISION= 1 PKGNAMESUFFIX= -client-static COMMENT= Backup archiving recovery open sourced (static client) +CONFLICTS= bareos16-client-static-* + PLIST= ${.CURDIR}/pkg-plist MASTERDIR= ${.CURDIR}/../../sysutils/bareos-server @@ -14,7 +15,6 @@ PLIST_FILES= sbin/bareos-fd-static \ sbin/bconsole-static OPTIONS_DEFINE= NLS LMDB -OPTIONS_DEFAULT=# LMDB_DESC= Enable build of LMDB support CONFIGURE_ARGS+= --enable-client-only \ diff --git a/sysutils/bareos-client/Makefile b/sysutils/bareos-client/Makefile index f933f74db6c6..cff41eaa0ee1 100644 --- a/sysutils/bareos-client/Makefile +++ b/sysutils/bareos-client/Makefile @@ -1,14 +1,15 @@ -# Created by: Alonso Cardenas <acm@FreeBSD.org> # $FreeBSD$ PORTNAME= bareos -PORTREVISION= 0 +PORTREVISION= 1 PKGNAMESUFFIX= -client COMMENT= Backup archiving recovery open sourced (client) BROKEN_aarch64= Fails to link: missing sbrk +CONFLICTS= bareos16-client-* + WITH_CLIENT_ONLY=yes USE_RC_SUBR= bareos-fd @@ -16,7 +17,6 @@ PLIST= ${PKGDIR}/pkg-plist.client MASTERDIR= ${.CURDIR}/../../sysutils/bareos-server OPTIONS_DEFINE= NLS PYTHON LMDB SCSICRYPTO -OPTIONS_DEFAULT=# LMDB_DESC= Enable build of LMDB support .include "${MASTERDIR}/Makefile" diff --git a/sysutils/bareos-docs/Makefile b/sysutils/bareos-docs/Makefile index 023b97ed0e66..5a8c31bd292d 100644 --- a/sysutils/bareos-docs/Makefile +++ b/sysutils/bareos-docs/Makefile @@ -1,4 +1,3 @@ -# Created by: Alonso CArdenas <acm@FreeBSD.org> # $FreeBSD$ PORTNAME= bareos diff --git a/sysutils/bareos-server/Makefile b/sysutils/bareos-server/Makefile index 7d8063872359..57152b0d8d99 100644 --- a/sysutils/bareos-server/Makefile +++ b/sysutils/bareos-server/Makefile @@ -1,10 +1,9 @@ -# Created by: Alonso Cardenas <acm@FreeBSD.org> # $FreeBSD$ PORTNAME= bareos DISTVERSIONPREFIX= Release/ DISTVERSION= 17.2.5 -PORTREVISION?= 0 +PORTREVISION?= 1 CATEGORIES?= sysutils PKGNAMEPREFIX?= # PKGNAMESUFFIX?= -server @@ -19,7 +18,7 @@ USE_GITHUB= yes USES+= libtool:keepla pkgconfig readline:port shebangfix -CONFLICTS?= bacula*-server-* +CONFLICTS?= bacula*-server-* bareos16-server-* LIB_DEPENDS+= liblzo2.so:archivers/lzo2 \ libjansson.so:devel/jansson @@ -37,22 +36,29 @@ SHEBANG_FILES= ${WRKSRC}/src/cats/make_catalog_backup.pl.in CPPFLAGS+= -I${LOCALBASE}/readline -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib -OPTIONS_DEFINE?= MTX PYTHON NDMP NLS OPENSSL SCSICRYPTO -OPTIONS_DEFAULT?= OPENSSL PGSQL SCSICRYPTO +OPTIONS_DEFAULT= OPENSSL +OPTIONS_SINGLE= CRYPTO +OPTIONS_SINGLE_CRYPTO= OPENSSL GNUTLS OPTIONS_SUB= yes +CRYPTO_DESC= Cryptographic library MTX_DESC= Install mtx for control of autochanger devices NDMP_DESC= Enable build of NDMP support SCSICRYPTO_DESC= Build LTO AME crypto plugin .if ${PKGNAMESUFFIX} == "-server" +OPTIONS_DEFINE= MTX PYTHON NDMP NLS SCSICRYPTO +OPTIONS_DEFAULT+= PGSQL SCSICRYPTO OPTIONS_SINGLE_DATABASE= SQLITE3 MYSQL PGSQL -OPTIONS_SINGLE= DATABASE +OPTIONS_SINGLE+= DATABASE DATABASE_DESC= Database support NDMP_CONFIGURE_ON= --enable-ndmp=yes NDMP_CONFIGURE_OFF= --enable-ndmp=no .endif +GNUTLS_CONFIGURE_WITH= gnutls=${LOCALBASE} +GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls + OPENSSL_USES= ssl OPENSSL_CONFIGURE_ON= --with-openssl=${OPENSSLBASE} OPENSSL_CONFIGURE_OFF= --with-openssl="no" @@ -197,6 +203,7 @@ post-patch: @${REINPLACE_CMD} -e 's|../../lib/|$$(LOCALBASE)/lib/|g' ${WRKSRC}/src/plugins/dird/Makefile.in ${WRKSRC}/src/plugins/stored/Makefile.in @${REINPLACE_CMD} -e 's|fd_plugins.h|filed/fd_plugins.h|g' -e 's|dir_plugins.h|dird/dir_plugins.h|g' -e 's|stored.h|stored/stored.h|g' \ ${WRKSRC}/src/tools/bpluginfo.c + @${REINPLACE_CMD} -e 's|perl|$(LOCALBASE)/bin/perl|g' ${WRKSRC}/scripts/mtx-changer.in .endif post-extract: diff --git a/sysutils/bareos-server/files/chio-bareos b/sysutils/bareos-server/files/chio-bareos index 6650426857dc..f006ef78e6ce 100644 --- a/sysutils/bareos-server/files/chio-bareos +++ b/sysutils/bareos-server/files/chio-bareos @@ -1,200 +1,190 @@ #!/bin/sh # -# Bacula interface to FreeBSD chio autoloader command with -# multiple drive support -# (By Lars Köller, lars+bacula@koellers.net, 2004) +# BAREOS interface to tape libraries and autoloaders for FreeBSD +# (by Rudolf Cejka <cej...@fit.vutbr.cz>, v1.2, 2012/11/14) # -# If you set in your Device resource +# If you set in your Device resource +# Changer Command = "path-to-this-script/chio-changer %c %o %S %a %d" +# you will have the following input to this script: +# chio-changer "changer-device" "command" "slot" "tape-device" "drive-index" +# $1 $2 $3 $4 $5 +# for example (on a FreeBSD system): +# chio-changer /dev/ch0 load 1 /dev/nsa0 0 # -# Changer Command = "path-to-this-script/chio-bacula" %c %o %S %a -# you will have the following input to this script: +# If you change the script, take care to return either the chio exit +# code or a 0. If the script exits with a non-zero exit code, BAREOS +# will assume the request failed. # -# chio-bacula "changer-device" "command" "slot" "archive-device" "drive-index" -# $1 $2 $3 $4 $5 -# for example: -# -# chio-bacula /dev/sg0 load 1 /dev/nst0 0 (on a FreeBSD system) -# -# If you need to to an offline, refer to the drive as $4 -# e.g. mt -f $f offline -# -# Many changers need an offline after the unload. Also many -# changers need a sleep 60 after the mtx load. -# -# N.B. If you change the script, take care to return either -# the mtx exit code or a 0. If the script exits with a non-zero -# exit code, Bacula will assume the request failed. -# -me=$(basename $0) -# Debug output, take care this file is writeable for user bacula! -#LOG=/var/db/bacula/chio-bacula.log -#exec 2>>$LOG -#echo "------------------------- $(date) Start $(basename $0) -------------------------" >> $LOG -#set -x +PROGNAME=`basename $0` -# Debug -logger -p user.err "$me $@" +# Uncomment the following line, if you want to log debug output. +#DEBUG=/var/run/bareos/${PROGNAME}.log -# This simulates a barcode reader in the changer. -# The labes of the virtual barcode reader are located in the BARCODE_FILE -SIMULATE_BARCODE=true -BARCODE_FILE=/usr/local/etc/bacula/bacula-barcodes -MTX=/bin/chio -# Set default values (see case statement below for -# free mapping of drive index and tape device -# We have a double drive Qualstar where drive 1 is the default bacula drive -#TAPE=/dev/bacula-tape -TAPE=/dev/nrsa0 -DRIVE=0 -# Time to wait for (un)loading -SLEEP=20 +# Uncomment the following line, if you need to eject a tape before moving +# it from the drive. +#OFFLINE=yes + +# Uncomment one or more of the following lines, if you need to wait for +# some time (in seconds) after unloading, loading or transferring a tape. +#OFFLINE_SLEEP=10 +#LOAD_SLEEP=10 +#MOVE_SLEEP=10 + +# Uncomment the following line, if you do not have a changer with volume +# reader. +#FAKE_BARCODES=/usr/local/etc/bareos-barcodes usage() { - echo "" - echo "The $me script for bacula" - echo "--------------------------------------" - echo "" - echo "usage: $me <changer-device> <command> [slot] [devicename of tapedrive] [drive index]" - echo "" - echo "Valid commands:" - echo "" - echo "unload Unloads a tape into the slot" - echo " from where it was loaded." - echo "load <slot> Loads a tape from the slot <slot>" - echo " (slot-base is calculated to 1 as first slot)" - echo "list Lists full storage slots" - echo "loaded Gives slot from where the tape was loaded." - echo " 0 means the tape drive is empty." - echo "slots Gives Number of aviable slots." - echo "" - echo "Example:" - echo " $me /dev/changer load 1 loads a tape from slot 1" - echo "" - exit 2 -} + cat <<EOF +Usage: ${PROGNAME} <changer-device> <cmd> [slot] [tape-device] [drive-index] -# The changer device -if [ -z "$1" ] ; then - usage; -else - CHANGER=$1 -fi -# The command -if [ -z "$2" ] ; then - usage; -else - COMMAND=$2 -fi -# The slot number -if [ ! -z "$3" ]; then - SLOT=$3 - # btape fill says "... slot 1 drive 0" :-( - if [ "$SLOT" = "slot" ]; then - shift - SLOT=$3 - fi -fi -# Set tape device -if [ ! -z "$4" ]; then - TAPE=$4 -fi +Commands (<cmd>): + unload Unload a tape into the slot from where it was loaded + load <slot> Load a tape from the slot <slot> (1-based) + transfer <slot> <slotdst> Transfer a tape from the slot <slot> to + the slot <slotdst> (1-based) + list List full storage slots + listall List all storage slots and drives with source information + loaded Give slot from where the tape was loaded (0 = empty drive) + slots Give number of available slots -# Here you can map bacula drive number to any tape device -# DRIVE is the chio drive number used below by chio! -case $5 in - 0) - # First Drive in Changer is Bacula drive - DRIVE=0 - #TAPE=/dev/bacula-tape - TAPE=/dev/nrsa0 - ;; - 1) - DRIVE=1 - #TAPE=/dev/bacula-tape2 - TAPE=/dev/nrsa1 - ;; -esac +Example: + ${PROGNAME} /dev/ch0 load 1 Load a tape from the slot 1 -# -# Main -# -case ${COMMAND} in - unload) - # enable the following line if you need to eject the cartridge - mt -f ${TAPE} off - sleep 2 - # if we have a slot, try it - if [ ! -z "$SLOT" ]; then - ${MTX} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT}-1)) - exit $? - fi - # Try other way (works if source element information is valid for drive) - ${MTX} -f ${CHANGER} return drive ${DRIVE} - # If the changer is power cycled with a tape loaded in a drive - # we can compute the slot in case of a complete filled magazine, with - # one slot free. - if [ "$?" != "0" ]; then - free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'` - free_slot=${free_slot%:} - ${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot - fi - ;; +EOF + exit 1 +} - load) - ${MTX} -f ${CHANGER} move slot $((${SLOT}-1)) drive ${DRIVE} - rtn=$? - # Increase the sleep time if you have a slow device - sleep $SLEEP - exit $rtn - ;; +# Default settings +CHANGER=/dev/ch0 +TAPE=/dev/nsa0 +DRIVE=0 - list) - if [ "${SIMULATE_BARCODE}" = "true" ]; then - if [ -f "$BARCODE_FILE" ]; then - cat $BARCODE_FILE | grep -v -e "^#" -e "^$" - exit 0 - else - echo "Barcode file $BARCODE_FILE missing ... exiting!" - exit 1 - fi - else - ${MTX} -f ${CHANGER} status | grep "^slot .*: .*FULL>" | awk '{print $2}' | awk -F: '{print $1+1" "}' | tr -d "[\r\n]" - fi - ;; +CHIO=/bin/chio +MT=/usr/bin/mt - loaded) - # echo "Request loaded" - ${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$ - rtn=$? - # Try to get chio slot source from drive entry - SLOT=$(cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">") - if [ -z "$SLOT" ]; then - # This handles the case a source slot is not available (power on - # of the changer with a drive loaded) and all other slots are - # occupied with a tape! - SLOT=$(cat /tmp/mtx.$$ | grep "^slot .*: <ACCESS>" | awk '{print $2+1}') - if [ -z "$SLOT" ]; then - echo 0 - else - echo $SLOT - fi - else - echo $SLOT - fi - # All tapes are in the slots - #cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}" - rm -f /tmp/mtx.$$ - exit $rtn - ;; +if [ -n "${DEBUG}" ]; then + MSG=$0 + for PAR; do MSG="${MSG} \"${PAR}\""; done + echo `date +"%Y/%m/%d %H:%M:%S"` ${MSG} >> ${DEBUG} +fi - slots) - # echo "Request slots" - ${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":" - ;; +if [ -n "$1" ]; then + CHANGER=$1; +fi +COMMAND=$2 +SLOT=$3 +SLOTDST=$4 +if [ -n "$4" ]; then + TAPE=$4 +fi +if [ -n "$5" ]; then + DRIVE=$5 +fi - *) - usage - ;; +case ${COMMAND} in +unload) + if [ "${OFFLINE}" = yes ]; then + ${MT} -f ${TAPE} offline + if [ $? = 0 -a -n "${OFFLINE_SLEEP}" ]; then + sleep ${OFFLINE_SLEEP} + fi + fi + if [ -z "${SLOT}" ]; then + ${CHIO} -f ${CHANGER} return drive ${DRIVE} + else + ${CHIO} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT} - 1)) + fi + if [ $? -ne 0 ]; then + # In case of an error, try to unload the cartridge to the first free slot + FREE=`${CHIO} -f ${CHANGER} status slot | \ + sed -ne '/FULL/d;s/^slot *\([0-9]*\):.*/\1/p' | \ + awk 'BEGIN { n = 0 } { n = $1 + 1; exit } END { print n }'` + if [ ${FREE} -gt 0 ]; then + ${CHIO} -f ${CHANGER} move drive ${DRIVE} slot $((${FREE} - 1)) + else + exit 1 + fi + fi + ;; +load) + if [ -z "${SLOT}" ]; then + usage + fi + ${CHIO} -f ${CHANGER} move slot $((${SLOT} - 1)) drive ${DRIVE} + if [ $? -ne 0 ]; then + exit 1 + fi + if [ -n "${LOAD_SLEEP}" ]; then + sleep ${LOAD_SLEEP} + fi + ;; +transfer) + if [ -z "${SLOT}" -o -z "${SLOTDST}" ]; then + usage + fi + ${CHIO} -f ${CHANGER} move slot $((${SLOT} - 1)) slot $((${SLOTDST} - 1)) + if [ $? -ne 0 ]; then + exit 1 + fi + if [ -n "${MOVE_SLEEP}" ]; then + sleep ${MOVE_SLEEP} + fi + ;; +list) + if [ -z "${FAKE_BARCODES}" ]; then + ${CHIO} -f ${CHANGER} status -v slot | \ + sed -ne 's/^slot *\([0-9]*\):.*FULL.*voltag.*<\([^:]*\):.*/\1:\2/p' | \ + awk -F: '{ print $1 + 1 ":" $2 }' + else + if [ -f "${FAKE_BARCODES}" ]; then + grep -v -e "^#" -e "^$" < ${FAKE_BARCODES} + else + echo "${PROGNAME}: Barcode file ${FAKE_BARCODES} is missing" + exit 1 + fi + fi + ;; +listall) + if [ -z "${FAKE_BARCODES}" ]; then + ${CHIO} -f ${CHANGER} status -vS | \ + sed -ne ' + s/^slot *\([0-9]*\):.*ENAB.*FULL.*voltag.*<\([^:]*\):.*/I:\1:F:\2/p;t + s/^slot *\([0-9]*\):.*FULL.*voltag.*<\([^:]*\):.*/S:\1:F:\2/p;t + s/^drive *\([0-9]*\):.*FULL.*voltag.*<\([^:]*\):.*source.*<[^0-9]*\([0-9]*\)>.*/D:\1:F:\3:\2/p;t + s/^slot *\([0-9]*\):.*ENAB.*voltag.*<\([^:]*\):.*/I:\1:E/p;t + s/^slot *\([0-9]*\):.*voltag.*<\([^:]*\):.*/S:\1:E/p;t + s/^drive *\([0-9]*\):.*voltag.*<\([^:]*\):.*/D:\1:E/p' | \ + awk -F: '{ for (n = 1; n <= NF; n++) printf "%s%s", + (n == ($1 == "D" ? 4 : 2)) ? ($n == "" ? 0 : $n + 1) : $n, + (n == NF) ? "\n" : ":" }' + else + if [ -f "${FAKE_BARCODES}" ]; then + grep -v -e "^#" -e "^$" < ${FAKE_BARCODES} | \ + awk -F: '{ print "S:" $1 (match($2, "^ *$") ? ":E" : ":F:" $2) }' + else + echo "${PROGNAME}: Barcode file ${FAKE_BARCODES} is missing" + exit 1 + fi + fi + ;; +loaded) + # If a tape is loaded, but the source slot is unknown (for example, + # after library reboot), try to report the first free slot + FREE=`${CHIO} -f ${CHANGER} status slot | \ + sed -ne '/FULL/d;s/^slot *\([0-9]*\):.*/\1/p' | \ + awk 'BEGIN { n = 0 } { n = $1 + 1; exit } END { print n }'` + ${CHIO} -f ${CHANGER} status -S drive | \ + sed -ne 's/^drive *'${DRIVE}':.*FULL.*source.*<[^0-9]*\([0-9]*\)>.*/\1/p' \ + | awk 'BEGIN { n = 0 } { n = ($1 == "") ? '${FREE}' : $1 + 1 } \ + END { print n }' + ;; +slots) + ${CHIO} -f ${CHANGER} status | grep -c "^slot " + ;; +*) + usage + ;; esac diff --git a/sysutils/bareos-traymonitor/Makefile b/sysutils/bareos-traymonitor/Makefile index 3bf4432298f7..97c9fc5688a2 100644 --- a/sysutils/bareos-traymonitor/Makefile +++ b/sysutils/bareos-traymonitor/Makefile @@ -1,17 +1,16 @@ -# Created by: Alonso Cardenas Marquez <acm@FreeBSD.org> # $FreeBSD$ PORTNAME= bareos PKGNAMESUFFIX= -traymonitor -PORTREVISION= 0 +PORTREVISION= 1 COMMENT= Backup archiving recovery open sourced (traymonitor) LIB_DEPENDS+= libqwt.so:x11-toolkits/qwt5 \ libbareos.so:sysutils/bareos-client -CONFLICTS= bacula*-bat-* +CONFLICTS= bacula*-bat-* bareos16-traymonitor-* USES= pkgconfig gettext-runtime desktop-file-utils USE_QT4= qmake_build uic_build moc_build rcc_build gui corelib @@ -30,7 +29,4 @@ CONFIGURE_ARGS+= --enable-traymonitor=yes \ --with-jansson=${LOCALBASE} \ --enable-nls=yes -OPTIONS_DEFINE= OPENSSL -OPTIONS_DEFAULT=OPENSSL - .include "${MASTERDIR}/Makefile" diff --git a/sysutils/bareos16-bat/Makefile b/sysutils/bareos16-bat/Makefile index 6361027db7d5..0045294a31bf 100644 --- a/sysutils/bareos16-bat/Makefile +++ b/sysutils/bareos16-bat/Makefile @@ -2,14 +2,14 @@ PORTNAME= bareos16 PKGNAMESUFFIX= -bat -PORTREVISION= 0 +PORTREVISION= 1 COMMENT= Backup archiving recovery open sourced (GUI) LIB_DEPENDS+= libqwt.so:x11-toolkits/qwt5 \ libbareos.so:sysutils/bareos16-client -CONFLICTS= bacula*-bat-* bareos-bat-* +CONFLICTS= bacula*-bat-* USES= pkgconfig desktop-file-utils USE_QT4= qmake_build uic_build moc_build rcc_build @@ -26,7 +26,4 @@ CONFIGURE_ARGS+= --enable-bat \ --disable-build-stored \ --enable-client-only -OPTIONS_DEFINE= OPENSSL -OPTIONS_DEFAULT=OPENSSL - .include "${MASTERDIR}/Makefile" diff --git a/sysutils/bareos16-client-static/Makefile b/sysutils/bareos16-client-static/Makefile index 422efd07476d..55545ee5e942 100644 --- a/sysutils/bareos16-client-static/Makefile +++ b/sysutils/bareos16-client-static/Makefile @@ -1,11 +1,13 @@ # $FreeBSD$ PORTNAME= bareos16 -PORTREVISION= 0 +PORTREVISION= 1 PKGNAMESUFFIX= -client-static COMMENT= Backup archiving recovery open sourced (static client) +CONFLICTS= bareos-client-static-* + PLIST= ${.CURDIR}/pkg-plist MASTERDIR= ${.CURDIR}/../../sysutils/bareos16-server @@ -13,7 +15,6 @@ PLIST_FILES= sbin/bareos-fd-static \ sbin/bconsole-static OPTIONS_DEFINE= NLS LMDB -OPTIONS_DEFAULT=# LMDB_DESC= Enable build of LMDB support CONFIGURE_ARGS+= --enable-client-only \ diff --git a/sysutils/bareos16-client/Makefile b/sysutils/bareos16-client/Makefile index acf9105a5dd4..c19cc9b6b5e8 100644 --- a/sysutils/bareos16-client/Makefile +++ b/sysutils/bareos16-client/Makefile @@ -1,13 +1,15 @@ # $FreeBSD$ PORTNAME= bareos16 -PORTREVISION= 0 +PORTREVISION= 1 PKGNAMESUFFIX= -client COMMENT= Backup archiving recovery open sourced (client) BROKEN_aarch64= Fails to link: missing sbrk +CONFLICTS= bareos-client-* + WITH_CLIENT_ONLY=yes USE_RC_SUBR= bareos-fd @@ -15,7 +17,6 @@ PLIST= ${PKGDIR}/pkg-plist.client MASTERDIR= ${.CURDIR}/../../sysutils/bareos16-server OPTIONS_DEFINE= NLS PYTHON LMDB SCSICRYPTO -OPTIONS_DEFAULT=# LMDB_DESC= Enable build of LMDB support .include "${MASTERDIR}/Makefile" diff --git a/sysutils/bareos16-server/Makefile b/sysutils/bareos16-server/Makefile index 2a22d1e96424..6b1675ecb9cb 100644 --- a/sysutils/bareos16-server/Makefile +++ b/sysutils/bareos16-server/Makefile @@ -3,7 +3,7 @@ PORTNAME= bareos16 DISTVERSIONPREFIX= Release/ DISTVERSION= 16.2.7 -PORTREVISION?= 0 +PORTREVISION?= 1 CATEGORIES?= sysutils PKGNAMEPREFIX?= # PKGNAMESUFFIX?= -server @@ -20,7 +20,7 @@ GH_PROJECT= ${PORTNAME:S/16//} USES+= libtool:keepla pkgconfig readline:port shebangfix -CONFLICTS?= bacula*-server-* bareos-server* +CONFLICTS?= bacula*-server-* bareos-server-* LIB_DEPENDS+= liblzo2.so:archivers/lzo2 \ libjansson.so:devel/jansson @@ -40,22 +40,29 @@ LDFLAGS+= -L${LOCALBASE}/lib ETCDIR= ${PREFIX}/etc/${PORTNAME:S/16//} -OPTIONS_DEFINE?= MTX PYTHON NDMP NLS OPENSSL SCSICRYPTO -OPTIONS_DEFAULT?= OPENSSL PGSQL SCSICRYPTO +OPTIONS_DEFAULT= OPENSSL +OPTIONS_SINGLE= CRYPTO +OPTIONS_SINGLE_CRYPTO= OPENSSL GNUTLS OPTIONS_SUB= yes +CRYPTO_DESC= Cryptographic library MTX_DESC= Install mtx for control of autochanger devices NDMP_DESC= Enable build of NDMP support SCSICRYPTO_DESC= Build LTO AME crypto plugin .if ${PKGNAMESUFFIX} == "-server" +OPTIONS_DEFINE= MTX PYTHON NDMP NLS SCSICRYPTO +OPTIONS_DEFAULT+= PGSQL SCSICRYPTO OPTIONS_SINGLE_DATABASE= SQLITE3 MYSQL PGSQL -OPTIONS_SINGLE= DATABASE +OPTIONS_SINGLE+= DATABASE DATABASE_DESC= Database support NDMP_CONFIGURE_ON= --enable-ndmp=yes NDMP_CONFIGURE_OFF= --enable-ndmp=no .endif +GNUTLS_CONFIGURE_WITH= gnutls=${LOCALBASE} +GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls + OPENSSL_USES= ssl OPENSSL_CONFIGURE_ON= --with-openssl=${OPENSSLBASE} OPENSSL_CONFIGURE_OFF= --with-openssl="no" @@ -200,6 +207,7 @@ post-patch: @${REINPLACE_CMD} -e 's|../../lib/|$$(LOCALBASE)/lib/|g' ${WRKSRC}/src/plugins/dird/Makefile.in ${WRKSRC}/src/plugins/stored/Makefile.in @${REINPLACE_CMD} -e 's|fd_plugins.h|filed/fd_plugins.h|g' -e 's|dir_plugins.h|dird/dir_plugins.h|g' -e 's|stored.h|stored/stored.h|g' \ ${WRKSRC}/src/tools/bpluginfo.c + @${REINPLACE_CMD} -e 's|perl|$(LOCALBASE)/bin/perl|g' ${WRKSRC}/scripts/mtx-changer.in .endif post-extract: diff --git a/sysutils/bareos16-server/files/chio-bareos b/sysutils/bareos16-server/files/chio-bareos index 6650426857dc..f006ef78e6ce 100644 --- a/sysutils/bareos16-server/files/chio-bareos +++ b/sysutils/bareos16-server/files/chio-bareos @@ -1,200 +1,190 @@ #!/bin/sh # -# Bacula interface to FreeBSD chio autoloader command with -# multiple drive support -# (By Lars Köller, lars+bacula@koellers.net, 2004) +# BAREOS interface to tape libraries and autoloaders for FreeBSD +# (by Rudolf Cejka <cej...@fit.vutbr.cz>, v1.2, 2012/11/14) # -# If you set in your Device resource +# If you set in your Device resource +# Changer Command = "path-to-this-script/chio-changer %c %o %S %a %d" +# you will have the following input to this script: +# chio-changer "changer-device" "command" "slot" "tape-device" "drive-index" +# $1 $2 $3 $4 $5 +# for example (on a FreeBSD system): +# chio-changer /dev/ch0 load 1 /dev/nsa0 0 # -# Changer Command = "path-to-this-script/chio-bacula" %c %o %S %a -# you will have the following input to this script: +# If you change the script, take care to return either the chio exit +# code or a 0. If the script exits with a non-zero exit code, BAREOS +# will assume the request failed. # -# chio-bacula "changer-device" "command" "slot" "archive-device" "drive-index" -# $1 $2 $3 $4 $5 -# for example: -# -# chio-bacula /dev/sg0 load 1 /dev/nst0 0 (on a FreeBSD system) -# -# If you need to to an offline, refer to the drive as $4 -# e.g. mt -f $f offline -# -# Many changers need an offline after the unload. Also many -# changers need a sleep 60 after the mtx load. -# -# N.B. If you change the script, take care to return either -# the mtx exit code or a 0. If the script exits with a non-zero -# exit code, Bacula will assume the request failed. -# -me=$(basename $0) -# Debug output, take care this file is writeable for user bacula! -#LOG=/var/db/bacula/chio-bacula.log -#exec 2>>$LOG -#echo "------------------------- $(date) Start $(basename $0) -------------------------" >> $LOG -#set -x +PROGNAME=`basename $0` -# Debug -logger -p user.err "$me $@" +# Uncomment the following line, if you want to log debug output. +#DEBUG=/var/run/bareos/${PROGNAME}.log -# This simulates a barcode reader in the changer. -# The labes of the virtual barcode reader are located in the BARCODE_FILE -SIMULATE_BARCODE=true -BARCODE_FILE=/usr/local/etc/bacula/bacula-barcodes -MTX=/bin/chio -# Set default values (see case statement below for -# free mapping of drive index and tape device -# We have a double drive Qualstar where drive 1 is the default bacula drive -#TAPE=/dev/bacula-tape -TAPE=/dev/nrsa0 -DRIVE=0 -# Time to wait for (un)loading -SLEEP=20 +# Uncomment the following line, if you need to eject a tape before moving +# it from the drive. +#OFFLINE=yes + +# Uncomment one or more of the following lines, if you need to wait for +# some time (in seconds) after unloading, loading or transferring a tape. +#OFFLINE_SLEEP=10 +#LOAD_SLEEP=10 +#MOVE_SLEEP=10 + +# Uncomment the following line, if you do not have a changer with volume +# reader. +#FAKE_BARCODES=/usr/local/etc/bareos-barcodes usage() { - echo "" - echo "The $me script for bacula" - echo "--------------------------------------" - echo "" - echo "usage: $me <changer-device> <command> [slot] [devicename of tapedrive] [drive index]" - echo "" - echo "Valid commands:" - echo "" - echo "unload Unloads a tape into the slot" - echo " from where it was loaded." - echo "load <slot> Loads a tape from the slot <slot>" - echo " (slot-base is calculated to 1 as first slot)" - echo "list Lists full storage slots" - echo "loaded Gives slot from where the tape was loaded." - echo " 0 means the tape drive is empty." - echo "slots Gives Number of aviable slots." - echo "" - echo "Example:" - echo " $me /dev/changer load 1 loads a tape from slot 1" - echo "" - exit 2 -} + cat <<EOF +Usage: ${PROGNAME} <changer-device> <cmd> [slot] [tape-device] [drive-index] -# The changer device -if [ -z "$1" ] ; then - usage; -else - CHANGER=$1 -fi -# The command -if [ -z "$2" ] ; then - usage; -else - COMMAND=$2 -fi -# The slot number -if [ ! -z "$3" ]; then - SLOT=$3 - # btape fill says "... slot 1 drive 0" :-( - if [ "$SLOT" = "slot" ]; then - shift - SLOT=$3 - fi -fi -# Set tape device -if [ ! -z "$4" ]; then - TAPE=$4 -fi +Commands (<cmd>): + unload Unload a tape into the slot from where it was loaded + load <slot> Load a tape from the slot <slot> (1-based) + transfer <slot> <slotdst> Transfer a tape from the slot <slot> to + the slot <slotdst> (1-based) + list List full storage slots + listall List all storage slots and drives with source information + loaded Give slot from where the tape was loaded (0 = empty drive) + slots Give number of available slots -# Here you can map bacula drive number to any tape device -# DRIVE is the chio drive number used below by chio! -case $5 in - 0) - # First Drive in Changer is Bacula drive - DRIVE=0 - #TAPE=/dev/bacula-tape - TAPE=/dev/nrsa0 - ;; - 1) - DRIVE=1 - #TAPE=/dev/bacula-tape2 - TAPE=/dev/nrsa1 - ;; -esac +Example: + ${PROGNAME} /dev/ch0 load 1 Load a tape from the slot 1 -# -# Main -# -case ${COMMAND} in - unload) - # enable the following line if you need to eject the cartridge - mt -f ${TAPE} off - sleep 2 - # if we have a slot, try it - if [ ! -z "$SLOT" ]; then - ${MTX} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT}-1)) - exit $? - fi - # Try other way (works if source element information is valid for drive) - ${MTX} -f ${CHANGER} return drive ${DRIVE} - # If the changer is power cycled with a tape loaded in a drive - # we can compute the slot in case of a complete filled magazine, with - # one slot free. - if [ "$?" != "0" ]; then - free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'` - free_slot=${free_slot%:} - ${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot - fi - ;; +EOF + exit 1 +} - load) - ${MTX} -f ${CHANGER} move slot $((${SLOT}-1)) drive ${DRIVE} - rtn=$? - # Increase the sleep time if you have a slow device - sleep $SLEEP - exit $rtn - ;; +# Default settings +CHANGER=/dev/ch0 +TAPE=/dev/nsa0 +DRIVE=0 - list) - if [ "${SIMULATE_BARCODE}" = "true" ]; then - if [ -f "$BARCODE_FILE" ]; then - cat $BARCODE_FILE | grep -v -e "^#" -e "^$" - exit 0 - else - echo "Barcode file $BARCODE_FILE missing ... exiting!" - exit 1 - fi - else - ${MTX} -f ${CHANGER} status | grep "^slot .*: .*FULL>" | awk '{print $2}' | awk -F: '{print $1+1" "}' | tr -d "[\r\n]" - fi - ;; +CHIO=/bin/chio +MT=/usr/bin/mt - loaded) - # echo "Request loaded" - ${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$ - rtn=$? - # Try to get chio slot source from drive entry - SLOT=$(cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">") - if [ -z "$SLOT" ]; then - # This handles the case a source slot is not available (power on - # of the changer with a drive loaded) and all other slots are - # occupied with a tape! - SLOT=$(cat /tmp/mtx.$$ | grep "^slot .*: <ACCESS>" | awk '{print $2+1}') - if [ -z "$SLOT" ]; then - echo 0 - else - echo $SLOT - fi - else - echo $SLOT - fi - # All tapes are in the slots - #cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}" - rm -f /tmp/mtx.$$ - exit $rtn - ;; +if [ -n "${DEBUG}" ]; then + MSG=$0 + for PAR; do MSG="${MSG} \"${PAR}\""; done + echo `date +"%Y/%m/%d %H:%M:%S"` ${MSG} >> ${DEBUG} +fi - slots) - # echo "Request slots" - ${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":" - ;; +if [ -n "$1" ]; then + CHANGER=$1; +fi +COMMAND=$2 +SLOT=$3 +SLOTDST=$4 +if [ -n "$4" ]; then + TAPE=$4 +fi +if [ -n "$5" ]; then + DRIVE=$5 +fi - *) - usage - ;; +case ${COMMAND} in +unload) + if [ "${OFFLINE}" = yes ]; then + ${MT} -f ${TAPE} offline + if [ $? = 0 -a -n "${OFFLINE_SLEEP}" ]; then + sleep ${OFFLINE_SLEEP} + fi + fi + if [ -z "${SLOT}" ]; then + ${CHIO} -f ${CHANGER} return drive ${DRIVE} + else + ${CHIO} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT} - 1)) + fi + if [ $? -ne 0 ]; then + # In case of an error, try to unload the cartridge to the first free slot + FREE=`${CHIO} -f ${CHANGER} status slot | \ + sed -ne '/FULL/d;s/^slot *\([0-9]*\):.*/\1/p' | \ + awk 'BEGIN { n = 0 } { n = $1 + 1; exit } END { print n }'` + if [ ${FREE} -gt 0 ]; then + ${CHIO} -f ${CHANGER} move drive ${DRIVE} slot $((${FREE} - 1)) + else + exit 1 + fi + fi + ;; +load) + if [ -z "${SLOT}" ]; then + usage + fi + ${CHIO} -f ${CHANGER} move slot $((${SLOT} - 1)) drive ${DRIVE} + if [ $? -ne 0 ]; then + exit 1 + fi + if [ -n "${LOAD_SLEEP}" ]; then + sleep ${LOAD_SLEEP} + fi + ;; +transfer) + if [ -z "${SLOT}" -o -z "${SLOTDST}" ]; then + usage + fi + ${CHIO} -f ${CHANGER} move slot $((${SLOT} - 1)) slot $((${SLOTDST} - 1)) + if [ $? -ne 0 ]; then + exit 1 + fi + if [ -n "${MOVE_SLEEP}" ]; then + sleep ${MOVE_SLEEP} + fi + ;; +list) + if [ -z "${FAKE_BARCODES}" ]; then + ${CHIO} -f ${CHANGER} status -v slot | \ + sed -ne 's/^slot *\([0-9]*\):.*FULL.*voltag.*<\([^:]*\):.*/\1:\2/p' | \ + awk -F: '{ print $1 + 1 ":" $2 }' + else + if [ -f "${FAKE_BARCODES}" ]; then + grep -v -e "^#" -e "^$" < ${FAKE_BARCODES} + else + echo "${PROGNAME}: Barcode file ${FAKE_BARCODES} is missing" + exit 1 + fi + fi + ;; +listall) + if [ -z "${FAKE_BARCODES}" ]; then + ${CHIO} -f ${CHANGER} status -vS | \ + sed -ne ' + s/^slot *\([0-9]*\):.*ENAB.*FULL.*voltag.*<\([^:]*\):.*/I:\1:F:\2/p;t + s/^slot *\([0-9]*\):.*FULL.*voltag.*<\([^:]*\):.*/S:\1:F:\2/p;t + s/^drive *\([0-9]*\):.*FULL.*voltag.*<\([^:]*\):.*source.*<[^0-9]*\([0-9]*\)>.*/D:\1:F:\3:\2/p;t + s/^slot *\([0-9]*\):.*ENAB.*voltag.*<\([^:]*\):.*/I:\1:E/p;t + s/^slot *\([0-9]*\):.*voltag.*<\([^:]*\):.*/S:\1:E/p;t + s/^drive *\([0-9]*\):.*voltag.*<\([^:]*\):.*/D:\1:E/p' | \ + awk -F: '{ for (n = 1; n <= NF; n++) printf "%s%s", + (n == ($1 == "D" ? 4 : 2)) ? ($n == "" ? 0 : $n + 1) : $n, + (n == NF) ? "\n" : ":" }' + else + if [ -f "${FAKE_BARCODES}" ]; then + grep -v -e "^#" -e "^$" < ${FAKE_BARCODES} | \ + awk -F: '{ print "S:" $1 (match($2, "^ *$") ? ":E" : ":F:" $2) }' + else + echo "${PROGNAME}: Barcode file ${FAKE_BARCODES} is missing" + exit 1 + fi + fi + ;; +loaded) + # If a tape is loaded, but the source slot is unknown (for example, + # after library reboot), try to report the first free slot + FREE=`${CHIO} -f ${CHANGER} status slot | \ + sed -ne '/FULL/d;s/^slot *\([0-9]*\):.*/\1/p' | \ + awk 'BEGIN { n = 0 } { n = $1 + 1; exit } END { print n }'` + ${CHIO} -f ${CHANGER} status -S drive | \ + sed -ne 's/^drive *'${DRIVE}':.*FULL.*source.*<[^0-9]*\([0-9]*\)>.*/\1/p' \ + | awk 'BEGIN { n = 0 } { n = ($1 == "") ? '${FREE}' : $1 + 1 } \ + END { print n }' + ;; +slots) + ${CHIO} -f ${CHANGER} status | grep -c "^slot " + ;; +*) + usage + ;; esac diff --git a/sysutils/bareos16-traymonitor/Makefile b/sysutils/bareos16-traymonitor/Makefile index ef51e324eb65..f0356159ef31 100644 --- a/sysutils/bareos16-traymonitor/Makefile +++ b/sysutils/bareos16-traymonitor/Makefile @@ -3,14 +3,14 @@ PORTNAME= bareos16 PKGNAMESUFFIX= -traymonitor -PORTREVISION= 0 +PORTREVISION= 1 COMMENT= Backup archiving recovery open sourced (traymonitor) LIB_DEPENDS+= libqwt.so:x11-toolkits/qwt5 \ libbareos.so:sysutils/bareos16-client -CONFLICTS= bacula*-bat-* bareos-traymonitor +CONFLICTS= bacula*-bat-* bareos-traymonitor-* USES= pkgconfig gettext-runtime desktop-file-utils USE_QT4= qmake_build uic_build moc_build rcc_build gui corelib @@ -29,7 +29,4 @@ CONFIGURE_ARGS+= --enable-traymonitor=yes \ --with-jansson=${LOCALBASE} \ --enable-nls=yes -OPTIONS_DEFINE= OPENSSL -OPTIONS_DEFAULT=OPENSSL - .include "${MASTERDIR}/Makefile" |