mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-02 01:20:54 +00:00
- Import chio-bareos
- Fix perl path into mtx-changer - Add/modify CONFLICTS - Add GNUTLS option - Few other modifications PR: 225119 225908 227318
This commit is contained in:
parent
7e22f5252a
commit
af6fbfb952
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=470319
@ -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 \
|
||||
|
@ -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"
|
||||
|
@ -1,4 +1,3 @@
|
||||
# Created by: Alonso CArdenas <acm@FreeBSD.org>
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= bareos
|
||||
|
@ -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:
|
||||
|
@ -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]
|
||||
|
||||
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
|
||||
|
||||
Example:
|
||||
${PROGNAME} /dev/ch0 load 1 Load a tape from the slot 1
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 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
|
||||
# Default settings
|
||||
CHANGER=/dev/ch0
|
||||
TAPE=/dev/nsa0
|
||||
DRIVE=0
|
||||
|
||||
CHIO=/bin/chio
|
||||
MT=/usr/bin/mt
|
||||
|
||||
if [ -n "${DEBUG}" ]; then
|
||||
MSG=$0
|
||||
for PAR; do MSG="${MSG} \"${PAR}\""; done
|
||||
echo `date +"%Y/%m/%d %H:%M:%S"` ${MSG} >> ${DEBUG}
|
||||
fi
|
||||
|
||||
# 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
|
||||
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
|
||||
|
||||
#
|
||||
# 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
|
||||
;;
|
||||
|
||||
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
|
||||
;;
|
||||
|
||||
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
|
||||
;;
|
||||
|
||||
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
|
||||
;;
|
||||
|
||||
slots)
|
||||
# echo "Request slots"
|
||||
${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":"
|
||||
;;
|
||||
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
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
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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 \
|
||||
|
@ -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"
|
||||
|
@ -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:
|
||||
|
@ -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]
|
||||
|
||||
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
|
||||
|
||||
Example:
|
||||
${PROGNAME} /dev/ch0 load 1 Load a tape from the slot 1
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 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
|
||||
# Default settings
|
||||
CHANGER=/dev/ch0
|
||||
TAPE=/dev/nsa0
|
||||
DRIVE=0
|
||||
|
||||
CHIO=/bin/chio
|
||||
MT=/usr/bin/mt
|
||||
|
||||
if [ -n "${DEBUG}" ]; then
|
||||
MSG=$0
|
||||
for PAR; do MSG="${MSG} \"${PAR}\""; done
|
||||
echo `date +"%Y/%m/%d %H:%M:%S"` ${MSG} >> ${DEBUG}
|
||||
fi
|
||||
|
||||
# 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
|
||||
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
|
||||
|
||||
#
|
||||
# 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
|
||||
;;
|
||||
|
||||
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
|
||||
;;
|
||||
|
||||
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
|
||||
;;
|
||||
|
||||
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
|
||||
;;
|
||||
|
||||
slots)
|
||||
# echo "Request slots"
|
||||
${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":"
|
||||
;;
|
||||
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
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
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user