aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sysutils/bareos-client-static/Makefile6
-rw-r--r--sysutils/bareos-client/Makefile6
-rw-r--r--sysutils/bareos-docs/Makefile1
-rw-r--r--sysutils/bareos-server/Makefile19
-rw-r--r--sysutils/bareos-server/files/chio-bareos350
-rw-r--r--sysutils/bareos-traymonitor/Makefile8
-rw-r--r--sysutils/bareos16-bat/Makefile7
-rw-r--r--sysutils/bareos16-client-static/Makefile5
-rw-r--r--sysutils/bareos16-client/Makefile5
-rw-r--r--sysutils/bareos16-server/Makefile18
-rw-r--r--sysutils/bareos16-server/files/chio-bareos350
-rw-r--r--sysutils/bareos16-traymonitor/Makefile7
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"