aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Langille <dvl@FreeBSD.org>2024-03-28 19:48:01 +0000
committerDan Langille <dvl@FreeBSD.org>2024-03-28 20:04:04 +0000
commit2b7cf900fb6bc05a22bfce9e72934be0cb6a8154 (patch)
tree3d1c1df2cd70a02ee3bf2190c0428522d15408a2
parent2b27e3b6cca723d745667c051e60cb5ef24723c4 (diff)
downloadports-2b7cf900fb6bc05a22bfce9e72934be0cb6a8154.tar.gz
ports-2b7cf900fb6bc05a22bfce9e72934be0cb6a8154.zip
sysutils/bacula15-server: Add Bacula 15
Coming in with Bacula 15.0.2 server are client, docs, nagios check, and the static client. re: https://www.bacula.org/bacula-15-0-2/
-rw-r--r--net-mgmt/Makefile1
-rw-r--r--net-mgmt/nagios-check_bacula15/Makefile27
-rw-r--r--net-mgmt/nagios-check_bacula15/pkg-descr2
-rw-r--r--sysutils/Makefile4
-rw-r--r--sysutils/bacula15-client-static/Makefile31
-rw-r--r--sysutils/bacula15-client/Makefile17
-rw-r--r--sysutils/bacula15-docs/Makefile27
-rw-r--r--sysutils/bacula15-docs/distinfo3
-rw-r--r--sysutils/bacula15-docs/pkg-descr11
-rw-r--r--sysutils/bacula15-server/Makefile205
-rw-r--r--sysutils/bacula15-server/Makefile.common13
-rw-r--r--sysutils/bacula15-server/distinfo3
-rw-r--r--sysutils/bacula15-server/files/bacula-barcodes51
-rw-r--r--sysutils/bacula15-server/files/bacula-dir.in29
-rw-r--r--sysutils/bacula15-server/files/bacula-fd.in29
-rw-r--r--sysutils/bacula15-server/files/bacula-sd.in29
-rw-r--r--sysutils/bacula15-server/files/chio-bacula200
-rw-r--r--sysutils/bacula15-server/files/patch-src_baconfig.h13
-rw-r--r--sysutils/bacula15-server/files/patch-src_console_Makefile.in11
-rw-r--r--sysutils/bacula15-server/files/patch-src_dird_Makefile.in11
-rw-r--r--sysutils/bacula15-server/files/patch-src_filed_Makefile.in12
-rw-r--r--sysutils/bacula15-server/files/patch-src_qt-console_bat.pro.in11
-rw-r--r--sysutils/bacula15-server/files/pkg-deinstall.client.in30
-rw-r--r--sysutils/bacula15-server/files/pkg-install.client.in13
-rw-r--r--sysutils/bacula15-server/files/pkg-message.client.in10
-rw-r--r--sysutils/bacula15-server/files/pkg-message.server.in59
-rw-r--r--sysutils/bacula15-server/pkg-descr9
-rw-r--r--sysutils/bacula15-server/pkg-plist100
-rw-r--r--sysutils/bacula15-server/pkg-plist.client20
29 files changed, 981 insertions, 0 deletions
diff --git a/net-mgmt/Makefile b/net-mgmt/Makefile
index f9fb4db6ba4b..6fda538a2679 100644
--- a/net-mgmt/Makefile
+++ b/net-mgmt/Makefile
@@ -148,6 +148,7 @@
SUBDIR += nagios-certexp-plugin
SUBDIR += nagios-check_bacula11
SUBDIR += nagios-check_bacula13
+ SUBDIR += nagios-check_bacula15
SUBDIR += nagios-check_bacula9
SUBDIR += nagios-check_clamav
SUBDIR += nagios-check_cpu_usage
diff --git a/net-mgmt/nagios-check_bacula15/Makefile b/net-mgmt/nagios-check_bacula15/Makefile
new file mode 100644
index 000000000000..3296a3e2e93d
--- /dev/null
+++ b/net-mgmt/nagios-check_bacula15/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= bacula
+CATEGORIES= net-mgmt
+PKGNAMEPREFIX= nagios-check_
+PKGNAMESUFFIX= 15
+
+MAINTAINER= dvl@FreeBSD.org
+COMMENT= Nagios plugin for Bacula
+
+LIB_DEPENDS+= libbac.so:sysutils/bacula15-client
+
+PLIST= ${.CURDIR}/pkg-plist
+PLIST_FILES= libexec/nagios/check_bacula
+WITH_NAGIOS_CHECK_ONLY= yes
+MASTERDIR= ${.CURDIR}/../../sysutils/bacula15-server
+
+CONFIGURE_ARGS= --enable-client-only \
+ --disable-build-dird \
+ --disable-build-stored \
+ --disable-nls \
+ --disable-xatt
+
+OPTIONS_DEFINE= #
+OPTIONS_DEFAULT=#
+
+NO_CCACHE= yes
+
+.include "${MASTERDIR}/Makefile"
diff --git a/net-mgmt/nagios-check_bacula15/pkg-descr b/net-mgmt/nagios-check_bacula15/pkg-descr
new file mode 100644
index 000000000000..4b25ba83385c
--- /dev/null
+++ b/net-mgmt/nagios-check_bacula15/pkg-descr
@@ -0,0 +1,2 @@
+check_bacula is a plugin intended for use with the
+Nagios network monitoring system to monitor Bacula.
diff --git a/sysutils/Makefile b/sysutils/Makefile
index 4d69a0d3d2f4..492328797c48 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -98,6 +98,10 @@
SUBDIR += bacula13-client-static
SUBDIR += bacula13-docs
SUBDIR += bacula13-server
+ SUBDIR += bacula15-client
+ SUBDIR += bacula15-client-static
+ SUBDIR += bacula15-docs
+ SUBDIR += bacula15-server
SUBDIR += bacula9-client
SUBDIR += bacula9-client-static
SUBDIR += bacula9-docs
diff --git a/sysutils/bacula15-client-static/Makefile b/sysutils/bacula15-client-static/Makefile
new file mode 100644
index 000000000000..e0dd87a72b87
--- /dev/null
+++ b/sysutils/bacula15-client-static/Makefile
@@ -0,0 +1,31 @@
+PORTNAME= bacula
+PKGNAMESUFFIX= 15-client-static
+
+COMMENT= Network backup solution (static client)
+
+BROKEN_aarch64= Fails to link: missing sbrk
+BROKEN_riscv64= Fails to link: missing sbrk
+BROKEN_SSL= libressl
+
+WITH_CLIENT_ONLY= yes
+PLIST= ${.CURDIR}/pkg-plist
+MASTERDIR= ${.CURDIR}/../../sysutils/bacula15-server
+
+PLIST_FILES= sbin/bacula-fd-static \
+ sbin/bconsole-static
+
+OPTIONS_DEFINE= NLS OPENSSL
+OPTIONS_DEFAULT= OPENSSL
+
+CONFIGURE_ARGS+= --disable-build-dird \
+ --disable-build-stored \
+ --disable-libtool \
+ --enable-client-only \
+ --enable-static-cons \
+ --enable-static-fd
+
+.include "${MASTERDIR}/Makefile"
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/src/filed/static-bacula-fd ${STAGEDIR}${PREFIX}/sbin/bacula-fd-static
+ ${INSTALL_PROGRAM} ${WRKSRC}/src/console/static-bconsole ${STAGEDIR}${PREFIX}/sbin/bconsole-static
diff --git a/sysutils/bacula15-client/Makefile b/sysutils/bacula15-client/Makefile
new file mode 100644
index 000000000000..8805264752b5
--- /dev/null
+++ b/sysutils/bacula15-client/Makefile
@@ -0,0 +1,17 @@
+PORTNAME= bacula
+PKGNAMESUFFIX= 15-client
+
+COMMENT= Network backup solution (client)
+
+BROKEN_aarch64= Fails to link: missing sbrk
+BROKEN_riscv64= Fails to link: missing sbrk
+
+WITH_CLIENT_ONLY=yes
+USE_RC_SUBR= bacula-fd
+
+PLIST= ${PKGDIR}/pkg-plist.client
+MASTERDIR= ${.CURDIR}/../../sysutils/bacula15-server
+
+OPTIONS_DEFINE= NLS PYTHON IPV6
+
+.include "${MASTERDIR}/Makefile"
diff --git a/sysutils/bacula15-docs/Makefile b/sysutils/bacula15-docs/Makefile
new file mode 100644
index 000000000000..7ec0591db3e0
--- /dev/null
+++ b/sysutils/bacula15-docs/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= bacula
+PORTVERSION= 15.0.2
+CATEGORIES= sysutils
+MASTER_SITES= SF
+PKGNAMESUFFIX= 15-docs
+DISTNAME= ${PORTNAME}-docs-${PORTVERSION}
+
+CONFLICTS= bacula9
+
+MAINTAINER= dvl@FreeBSD.org
+COMMENT= Bacula document set
+WWW= https://www.bacula.org/
+
+USES= tar:bz2
+NO_BUILD= yes
+NO_ARCH= yes
+
+PORTDOCS= *.pdf
+
+OPTIONS_DEFINE= DOCS
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${FIND} ${WRKSRC}/manuals/en \
+ -name "*.pdf" -exec ${INSTALL_DATA} {} ${STAGEDIR}${DOCSDIR}/ \;
+
+.include <bsd.port.mk>
diff --git a/sysutils/bacula15-docs/distinfo b/sysutils/bacula15-docs/distinfo
new file mode 100644
index 000000000000..5fedefb67491
--- /dev/null
+++ b/sysutils/bacula15-docs/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1711654632
+SHA256 (bacula-docs-15.0.2.tar.bz2) = 37834bc602ca25729b39c06f941abdf999a571cae6a2ad1b1d2ad4aa4dc04228
+SIZE (bacula-docs-15.0.2.tar.bz2) = 51317810
diff --git a/sysutils/bacula15-docs/pkg-descr b/sysutils/bacula15-docs/pkg-descr
new file mode 100644
index 000000000000..256c7af3df2e
--- /dev/null
+++ b/sysutils/bacula15-docs/pkg-descr
@@ -0,0 +1,11 @@
+Bacula is a set of computer programs that permit you (or the system
+administrator) to manage backup, recovery, and verification of
+computer data across a network of computers of different kinds.
+In technical terms, it is a network Client/Server based backup program.
+Bacula is relatively easy to use and efficient, while offering many
+advanced storage management features that make it easy to find and
+recover lost or damaged files. Due to its modular design, Bacula is
+scalable from small single computer systems to systems consisting of
+hundreds of computers located over a large network.
+
+This port installs the latest documentation for Bacula.
diff --git a/sysutils/bacula15-server/Makefile b/sysutils/bacula15-server/Makefile
new file mode 100644
index 000000000000..3498fab039a5
--- /dev/null
+++ b/sysutils/bacula15-server/Makefile
@@ -0,0 +1,205 @@
+PORTNAME= bacula
+DISTVERSION= 15.0.2
+CATEGORIES?= sysutils
+MASTER_SITES= SF/bacula/bacula/${DISTVERSION}
+PKGNAMEPREFIX?= #
+PKGNAMESUFFIX?= 15-server
+
+MAINTAINER= dvl@FreeBSD.org
+COMMENT?= Network backup solution (server)
+WWW= https://www.bacula.org/
+
+LICENSE= AGPLv3
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES+= cpe libtool localbase python:env readline shebangfix ssl
+
+SHEBANG_FILES= scripts/get_malware_abuse.ch scripts/key-manager.py.in \
+ scripts/md5tobase64.py src/cats/make_catalog_backup.pl.in
+#scripts/baculabackupreport.in
+
+CONFLICTS?= bacula-server bacula13-server bacula11-server bacula9-server
+
+LIB_DEPENDS+= liblzo2.so:archivers/lzo2
+
+USERS= bacula
+GROUPS= ${USERS}
+
+LIB_VERSION= ${PKGVERSION}
+
+PLIST_SUB+= LIB_VERSION=${LIB_VERSION}
+
+GNU_CONFIGURE= yes
+USE_LDCONFIG= yes
+
+OPTIONS_DEFINE?= IPV6 MTX NLS S3
+MTX_DESC= Install mtx for control of autochanger devices
+S3_DESC= Install S3 plugin
+
+.if ${PKGNAMESUFFIX} == "15-server"
+OPTIONS_MULTI= BACKEND
+OPTIONS_MULTI_BACKEND= MYSQL PGSQL SQLITE3
+OPTIONS_DEFAULT+= PGSQL
+.endif
+
+OPTIONS_SUB= yes
+
+.if ${PKGNAMESUFFIX} == "15-client" || ${PKGNAMESUFFIX} == "15-server" #Till end of the file
+
+.if !defined(WITH_CLIENT_ONLY)
+LIB_DEPENDS+= libbac-${LIB_VERSION}.so:sysutils/bacula15-client
+USE_RC_SUBR?= bacula-dir bacula-sd
+.endif
+
+.if defined(WITH_CLIENT_ONLY)
+SUB_FILES+= pkg-deinstall.client pkg-install.client pkg-message.client
+.else
+SUB_FILES+= pkg-message.server
+.endif
+
+CONFIGURE_ARGS+= --disable-conio \
+ --enable-batch-insert \
+ --enable-smartalloc \
+ --sysconfdir=${ETCDIR} \
+ --with-baseport=9101 \
+ --with-db-name=bacula \
+ --with-db-user=bacula \
+ --with-dump-email=root@localhost \
+ --with-job-email=root@localhost \
+ --with-logdir=/var/log \
+ --with-plugindir=${PREFIX}/lib \
+ --with-readline=${LOCALBASE} \
+ --with-sbin-perm=755 \
+ --with-scriptdir=${PREFIX}/share/${PORTNAME} \
+ --with-tcp-wrappers=/usr/lib \
+ --with-working-dir=${BACULA_DIR}
+
+.if defined(WITH_CLIENT_ONLY)
+CONFIGURE_ARGS+= --with-fd-group=wheel \
+ --with-fd-user=root
+.else
+CONFIGURE_ARGS+= --with-dir-group=${BACULA_GROUP} \
+ --with-dir-user=${BACULA_USER} \
+ --with-sd-group=operator \
+ --with-sd-user=${BACULA_USER}
+.endif
+
+# The user/group IDs below are registered, see
+# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#users-and-groups
+#
+BACULA_USER?= bacula
+BACULA_GROUP?= ${BACULA_USER}
+BACULA_UID?= bacula
+BACULA_GID?= ${BACULA_UID}
+BACULA_DIR?= /var/db/bacula
+
+PLIST_SUB+= BACULA_DIR=${BACULA_DIR}
+
+SUB_LIST+= BACULA_DIR=${BACULA_DIR} \
+ BACULA_GID=${BACULA_GID} \
+ BACULA_GROUP=${BACULA_GROUP} \
+ BACULA_UID=${BACULA_UID} \
+ BACULA_USER=${BACULA_USER}
+
+NLS_USES= gettext
+NLS_CONFIGURE_ENABLE= nls
+
+# Client only or full server version
+.if defined(WITH_CLIENT_ONLY)
+CONFFILES= fd
+CONFIGURE_ARGS+= --enable-client-only
+
+PKGDEINSTALL= ${FILESDIR}/pkg-deinstall.client
+PKGINSTALL= ${FILESDIR}/pkg-install.client
+.else
+# Server only Options
+CONFFILES= sd dir
+# Server default database
+
+MYSQL_CONFIGURE_ON= --with-mysql=yes
+MYSQL_USES= mysql
+MYSQL_SUB_LIST= REQ_MYSQL=mysql
+MYSQL_SUB_LIST_OFF= REQ_MYSQL=""
+SQLITE3_CONFIGURE_ON= --with-sqlite3=yes
+SQLITE3_USES= sqlite:3
+PGSQL_CONFIGURE_ON= --with-postgresql=yes
+PGSQL_USES= pgsql
+PGSQL_SUB_LIST= REQ_PGSQL=postgresql
+PGSQL_SUB_LIST_OFF= REQ_PGSQL=""
+
+MTX_RUN_DEPENDS= ${LOCALBASE}/sbin/mtx:misc/mtx
+
+.endif
+
+.include <bsd.port.pre.mk>
+
+MS3_CONFIGURE_ARGS= --enable-s3
+MS3_LIB_DEPENDS= libs3.so:sysutils/bacula-libs3
+
+.if defined(WITH_CLIENT_ONLY)
+MP8+= bacula.8 bacula-fd.8 bconsole.8
+.else
+MP8+= bacula-dir.8 bacula-sd.8 bcopy.8 bextract.8 bls.8 bscan.8 \
+ btape.8 btraceback.8 dbcheck.8 bwild.8 bregex.8
+MP1+= bsmtp.1 bacula-tray-monitor.1
+.endif
+
+MAKE_ENV+= MAN1="${MP1}" \
+ MAN8="${MP8}"
+
+post-patch:
+# This port does not install docs. See bacula-docs for that
+ @${REINPLACE_CMD} -e '/docdir/d' ${WRKSRC}/Makefile.in
+# Change $(ECHO) to echo in some Makefile.in files
+ @${REINPLACE_CMD} -e 's|$$(ECHO)|echo|g' \
+ ${WRKSRC}/src/filed/Makefile.in \
+ ${WRKSRC}/src/console/Makefile.in \
+ ${WRKSRC}/src/cats/Makefile.in \
+ ${WRKSRC}/src/dird/Makefile.in \
+ ${WRKSRC}/src/stored/Makefile.in \
+ ${WRKSRC}/src/tools/Makefile.in
+
+# Default bconsole.conf is in ${ETCDIR}
+ @${REINPLACE_CMD} -e 's|./bconsole.conf|${ETCDIR}/bconsole.conf|g' ${WRKSRC}/src/console/console.c
+ @${REINPLACE_CMD} -e 's|^MAN8 =|MAN8 ?=|g' -e 's|^MAN1 =|MAN1 ?=|g' ${WRKSRC}/manpages/Makefile.in
+.if defined(WITH_CLIENT_ONLY)
+# In client port only install startup script out of script dir (see below post-install)
+# Dont mkdir ${PREFIX}/share/bacula cause it's empty
+ @${REINPLACE_CMD} -e 's|^\(fd_subdirs = .*\)scripts\(.*\)|\1\2|g' ${WRKSRC}/Makefile.in
+ @${REINPLACE_CMD} -e 's|\(.*$${MKDIR} $${DESTDIR}$${scriptdir}\)|#\1|g' ${WRKSRC}/Makefile.in
+.else
+# In server port don't install filed
+ @${REINPLACE_CMD} -e '/^fd_subdirs = /s|src/filed||' -e 's|src/console||' \
+ ${WRKSRC}/Makefile.in
+.endif
+
+.if !target(post-install)
+post-install:
+.if defined(WITH_CLIENT_ONLY)
+ ${MV} ${STAGEDIR}${ETCDIR}/bconsole.conf ${STAGEDIR}${ETCDIR}/bconsole.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/examples/sample-query.sql ${STAGEDIR}${LOCALBASE}/share/bacula/query.sql.sample
+.else
+ ${INSTALL_SCRIPT} ${FILESDIR}/chio-bacula ${STAGEDIR}${PREFIX}/sbin
+ ${INSTALL_DATA} ${FILESDIR}/bacula-barcodes ${STAGEDIR}${ETCDIR}/bacula-barcodes.sample
+# bacula-dir attempts to install query.sql as bpart of bacula-server, but that should only installed by bacula-client.
+ ${RM} ${STAGEDIR}${LOCALBASE}/share/bacula/query.sql
+
+#the following are installed by the -CLIENT port, and I (ler@lerctr.org)
+#don't know how to remove them from being built for the -SERVER port.
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/bpipe-fd.so
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/libbac-${LIB_VERSION}.so
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/libbac.so
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/libbaccfg-${LIB_VERSION}.so
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/libbaccfg.so
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/libbacfind-${LIB_VERSION}.so
+ ${RM} ${STAGEDIR}${LOCALBASE}/lib/libbacfind.so
+.endif
+ for na in ${CONFFILES}; do \
+ ${MV} ${STAGEDIR}${ETCDIR}/bacula-$$na.conf ${STAGEDIR}${ETCDIR}/bacula-$$na.conf.sample; \
+ done
+.endif
+.else
+.include "${MASTERDIR}/Makefile.common"
+.endif # 15-client and 15-server are defined
+
+.include <bsd.port.post.mk>
diff --git a/sysutils/bacula15-server/Makefile.common b/sysutils/bacula15-server/Makefile.common
new file mode 100644
index 000000000000..f2e00fcf6478
--- /dev/null
+++ b/sysutils/bacula15-server/Makefile.common
@@ -0,0 +1,13 @@
+.include <bsd.port.pre.mk>
+
+post-build:
+.if ${PKGNAMEPREFIX} == "nagios-check_"
+ ${MAKE_CMD} -C ${WRKSRC}/examples/nagios/check_bacula
+.endif
+
+do-install:
+.if ${PKGNAMEPREFIX} == "nagios-check_"
+ @${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios
+ ${INSTALL_PROGRAM} ${WRKSRC}/examples/nagios/check_bacula/check_bacula \
+ ${STAGEDIR}${PREFIX}/libexec/nagios
+.endif
diff --git a/sysutils/bacula15-server/distinfo b/sysutils/bacula15-server/distinfo
new file mode 100644
index 000000000000..b82402b1220e
--- /dev/null
+++ b/sysutils/bacula15-server/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1711652567
+SHA256 (bacula-15.0.2.tar.gz) = 55515c2a66af9a86b955daea4089378b864d051b2e6e30383bef36e693acea7a
+SIZE (bacula-15.0.2.tar.gz) = 6524812
diff --git a/sysutils/bacula15-server/files/bacula-barcodes b/sysutils/bacula15-server/files/bacula-barcodes
new file mode 100644
index 000000000000..0a0b2dc28f24
--- /dev/null
+++ b/sysutils/bacula15-server/files/bacula-barcodes
@@ -0,0 +1,51 @@
+#
+# Bacula barcode simulation file
+# used by ${PREFIX}/sbin/chio-bacula (FreeBSD)
+#
+# The volumenames are returned by the "changer list" command
+# labeling in the console is done by "label barcodes"
+# (then all volumes belog to the default pool).
+# All Lines with an "#" at the bedinning are ignored
+#
+# !!!! If you export an tape and reinsert another one,
+# !!!! don't forget to change the volume name in this file!
+#
+1:Volume1-100
+2:Volume1-101
+3:Volume1-102
+4:Volume1-103
+5:Volume1-104
+6:Volume1-105
+7:Volume1-106
+8:Volume1-107
+9:Volume1-108
+10:Volume1-109
+11:Volume1-110
+12:Volume1-111
+#
+# Further volumes exported from the changer
+#
+# 36GB AIT2 tapes
+#Volume1-100
+#Volume1-101
+#Volume1-102
+#Volume1-103
+#Volume1-104
+#Volume1-105
+#Volume1-106
+#Volume1-107
+#Volume1-108
+#Volume1-109
+#Volume1-110
+#Volume1-111
+#Volume1-112
+#Volume1-113
+#Volume1-114
+#Volume1-115
+#
+# 50GB AIT2 tapes
+#Volume2-200
+#Volume2-201
+#Volume2-202
+#Volume2-203
+#Volume2-204
diff --git a/sysutils/bacula15-server/files/bacula-dir.in b/sysutils/bacula15-server/files/bacula-dir.in
new file mode 100644
index 000000000000..1825c924306e
--- /dev/null
+++ b/sysutils/bacula15-server/files/bacula-dir.in
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# PROVIDE: bacula_dir
+# REQUIRE: DAEMON %%REQ_MYSQL%% %%REQ_PGSQL%%
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# bacula_dir_enable (bool): Set to NO by default.
+# Set it to YES to enable bacula_dir.
+# bacula_dir_flags (params): Set params used to start bacula_dir.
+#
+
+. /etc/rc.subr
+
+name="bacula_dir"
+rcvar=${name}_enable
+command=%%PREFIX%%/sbin/bacula-dir
+
+load_rc_config $name
+
+: ${bacula_dir_enable="NO"}
+: ${bacula_dir_flags=" -u bacula -g bacula -v -c %%PREFIX%%/etc/bacula/bacula-dir.conf"}
+: ${bacula_dir_pidfile="/var/run/bacula-dir.9101.pid"}
+
+pidfile="${bacula_dir_pidfile}"
+
+run_rc_command "$1"
diff --git a/sysutils/bacula15-server/files/bacula-fd.in b/sysutils/bacula15-server/files/bacula-fd.in
new file mode 100644
index 000000000000..d011131d8790
--- /dev/null
+++ b/sysutils/bacula15-server/files/bacula-fd.in
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# PROVIDE: bacula_fd
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# bacula_fd_enable (bool): Set to NO by default.
+# Set it to YES to enable bacula_fd.
+# bacula_fd_flags (params): Set params used to start bacula_fd.
+#
+
+. /etc/rc.subr
+
+name="bacula_fd"
+rcvar=${name}_enable
+command=%%PREFIX%%/sbin/bacula-fd
+
+load_rc_config $name
+
+: ${bacula_fd_enable="NO"}
+: ${bacula_fd_flags=" -u root -g wheel -v -c %%PREFIX%%/etc/bacula/bacula-fd.conf"}
+: ${bacula_fd_pidfile="/var/run/bacula-fd.9102.pid"}
+
+pidfile="${bacula_fd_pidfile}"
+
+run_rc_command "$1"
diff --git a/sysutils/bacula15-server/files/bacula-sd.in b/sysutils/bacula15-server/files/bacula-sd.in
new file mode 100644
index 000000000000..2020f846f1c7
--- /dev/null
+++ b/sysutils/bacula15-server/files/bacula-sd.in
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# PROVIDE: bacula_sd
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# bacula_sd_enable (bool): Set to NO by default.
+# Set it to YES to enable bacula_sd.
+# bacula_sd_flags (params): Set params used to start bacula_sd.
+#
+
+. /etc/rc.subr
+
+name="bacula_sd"
+rcvar=${name}_enable
+command=%%PREFIX%%/sbin/bacula-sd
+
+load_rc_config $name
+
+: ${bacula_sd_enable="NO"}
+: ${bacula_sd_flags=" -u bacula -g bacula -v -c %%PREFIX%%/etc/bacula/bacula-sd.conf"}
+: ${bacula_sd_pidfile="/var/run/bacula-sd.9103.pid"}
+
+pidfile="${bacula_sd_pidfile}"
+
+run_rc_command "$1"
diff --git a/sysutils/bacula15-server/files/chio-bacula b/sysutils/bacula15-server/files/chio-bacula
new file mode 100644
index 000000000000..30f6dba8f75f
--- /dev/null
+++ b/sysutils/bacula15-server/files/chio-bacula
@@ -0,0 +1,200 @@
+#!/bin/sh
+#
+# Bacula interface to FreeBSD chio autoloader command with
+# multiple drive support
+# (By Lars Köller, lars+bacula@koellers.net, 2004)
+#
+# If you set in your Device resource
+#
+# Changer Command = "path-to-this-script/chio-bacula" %c %o %S %a
+# you will have the following input to this script:
+#
+# 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 writable by user bacula!
+#LOG=/var/db/bacula/chio-bacula.log
+#exec 2>>$LOG
+#echo "------------------------- $(date) Start $(basename $0) -------------------------" >> $LOG
+#set -x
+
+# Debug
+logger -p user.err "$me $@"
+
+# This simulates a barcode reader in the changer.
+# The labels 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
+
+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 available slots."
+ echo ""
+ echo "Example:"
+ echo " $me /dev/changer load 1 loads a tape from slot 1"
+ echo ""
+ exit 2
+}
+
+# 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
+
+# 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
+
+#
+# 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
+ ;;
+esac
diff --git a/sysutils/bacula15-server/files/patch-src_baconfig.h b/sysutils/bacula15-server/files/patch-src_baconfig.h
new file mode 100644
index 000000000000..4cb8939db35c
--- /dev/null
+++ b/sysutils/bacula15-server/files/patch-src_baconfig.h
@@ -0,0 +1,13 @@
+--- src/baconfig.h.orig 2021-02-05 21:23:44 UTC
++++ src/baconfig.h
+@@ -45,6 +45,10 @@
+ #define tls_psk_default 0
+ #endif
+
++#ifndef ENODATA
++#define ENODATA EPIPE
++#endif
++
+ #ifndef ETIME
+ #define ETIME ETIMEDOUT
+ #endif
diff --git a/sysutils/bacula15-server/files/patch-src_console_Makefile.in b/sysutils/bacula15-server/files/patch-src_console_Makefile.in
new file mode 100644
index 000000000000..156449eedfef
--- /dev/null
+++ b/sysutils/bacula15-server/files/patch-src_console_Makefile.in
@@ -0,0 +1,11 @@
+--- src/console/Makefile.in.orig 2021-02-05 21:23:44 UTC
++++ src/console/Makefile.in
+@@ -128,7 +128,7 @@ uninstall:
+ depend:
+ @$(MV) Makefile Makefile.bak
+ @$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
+- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
++ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
+ @$(CXX) -S -M $(CPPFLAGS) $(CONS_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
+ @if test -f Makefile ; then \
+ $(RMF) Makefile.bak; \
diff --git a/sysutils/bacula15-server/files/patch-src_dird_Makefile.in b/sysutils/bacula15-server/files/patch-src_dird_Makefile.in
new file mode 100644
index 000000000000..6bc7b8f72f22
--- /dev/null
+++ b/sysutils/bacula15-server/files/patch-src_dird_Makefile.in
@@ -0,0 +1,11 @@
+--- src/dird/Makefile.in.orig 2021-02-05 21:23:44 UTC
++++ src/dird/Makefile.in
+@@ -150,7 +150,7 @@ uninstall:
+ depend:
+ @$(MV) Makefile Makefile.bak
+ @$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
+- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
++ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
+ @$(CXX) -S -M $(CPPFLAGS) $(XINC) -I$(srcdir) -I$(basedir) *.c >> Makefile
+ @if test -f Makefile ; then \
+ $(RMF) Makefile.bak; \
diff --git a/sysutils/bacula15-server/files/patch-src_filed_Makefile.in b/sysutils/bacula15-server/files/patch-src_filed_Makefile.in
new file mode 100644
index 000000000000..287db9262f1c
--- /dev/null
+++ b/sysutils/bacula15-server/files/patch-src_filed_Makefile.in
@@ -0,0 +1,12 @@
+--- src/filed/Makefile.in.orig 2023-11-24 14:41:20 UTC
++++ src/filed/Makefile.in
+@@ -196,7 +196,8 @@ uninstall:
+ depend:
+ @$(MV) Makefile Makefile.bak
+ @$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
+- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
++ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
++
+ @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(LZO_INC) $(ZSTD_INC) $(AFS_CFLAGS) $(GPFS_CFLAGS) -I$(srcdir) -I$(basedir) *.c >> Makefile
+ @if test -f Makefile ; then \
+ $(RMF) Makefile.bak; \
diff --git a/sysutils/bacula15-server/files/patch-src_qt-console_bat.pro.in b/sysutils/bacula15-server/files/patch-src_qt-console_bat.pro.in
new file mode 100644
index 000000000000..1bca6f6d819b
--- /dev/null
+++ b/sysutils/bacula15-server/files/patch-src_qt-console_bat.pro.in
@@ -0,0 +1,11 @@
+--- src/qt-console/bat.pro.in.orig 2015-08-13 13:52:24 UTC
++++ src/qt-console/bat.pro.in
+@@ -19,7 +19,7 @@ TEMPLATE = app
+ TARGET = bat
+ DEPENDPATH += .
+ INCLUDEPATH += .. . ./console ./restore ./select
+-LIBS += -L../lib -lbaccfg -lbac -L../findlib -lbacfind @OPENSSL_LIBS@
++LIBS += -L../lib -lbaccfg -lbac -L../findlib -lbacfind @OPENSSL_LIBS@ -lintl
+ LIBTOOL_LINK = @QMAKE_LIBTOOL@ --silent --tag=CXX --mode=link
+ LIBTOOL_INSTALL = @QMAKE_LIBTOOL@ --silent --mode=install
+ QMAKE_LINK = $${LIBTOOL_LINK} $(CXX)
diff --git a/sysutils/bacula15-server/files/pkg-deinstall.client.in b/sysutils/bacula15-server/files/pkg-deinstall.client.in
new file mode 100644
index 000000000000..27590d301e06
--- /dev/null
+++ b/sysutils/bacula15-server/files/pkg-deinstall.client.in
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+PATH=/bin:/usr/bin:/usr/sbin
+
+# Note how to delete UID/GID
+USER=%%BACULA_USER%%
+GROUP=%%BACULA_GROUP%%
+UID=%%BACULA_UID%%
+GID=%%BACULA_UID%%
+BACULA_DIR=%%BACULA_DIR%%
+
+TMPFILE=/tmp/services-$RANDOM-$$
+
+case "$2" in
+"DEINSTALL")
+ # Delete entries in /etc/services
+ sed -e '/# Bacula port start/,/# Bacula port end/{' \
+ -e 'd' \
+ -e '}' /etc/services > $TMPFILE
+ mv -f $TMPFILE /etc/services
+
+ if [ -d ${BACULA_DIR} ]; then
+ echo "Check if ${BACULA_DIR} is empty and delete it to permanently remove the bacula port."
+ fi
+
+ if pw groupshow "${USER}" 2>/dev/null 1>&2; then
+ echo "To delete Bacula group permanently, use 'pw groupdel ${GROUP}'"
+ fi
+ ;;
+esac
diff --git a/sysutils/bacula15-server/files/pkg-install.client.in b/sysutils/bacula15-server/files/pkg-install.client.in
new file mode 100644
index 000000000000..12e044538074
--- /dev/null
+++ b/sysutils/bacula15-server/files/pkg-install.client.in
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+PATH=/bin:/usr/bin:/usr/sbin
+
+# Always add lines in /etc/services
+grep -q "bacula-dir" /etc/services
+if [ "$?" != "0" ]; then
+ echo "# Bacula port start
+bacula-dir 9101/tcp #Bacula director daemon
+bacula-fd 9102/tcp #Bacula file daemon
+bacula-sd 9103/tcp #Bacula storage daemon
+# Bacula port end" >> /etc/services
+fi
diff --git a/sysutils/bacula15-server/files/pkg-message.client.in b/sysutils/bacula15-server/files/pkg-message.client.in
new file mode 100644
index 000000000000..cf425148025f
--- /dev/null
+++ b/sysutils/bacula15-server/files/pkg-message.client.in
@@ -0,0 +1,10 @@
+[
+{ type: install
+ message: <<EOM
+NOTE:
+Sample files are installed in %%PREFIX%%/etc/bacula:
+
+ bconsole.conf.sample, bacula-fd.conf.sample
+EOM
+}
+]
diff --git a/sysutils/bacula15-server/files/pkg-message.server.in b/sysutils/bacula15-server/files/pkg-message.server.in
new file mode 100644
index 000000000000..fe6259186583
--- /dev/null
+++ b/sysutils/bacula15-server/files/pkg-message.server.in
@@ -0,0 +1,59 @@
+[
+{ type: install
+ message: <<EOM
+bacula server was installed
+
+A database upgrade is required if upgrading from Bacula < 9.0.
+See %%DATADIR%%/update_bacula_tables
+
+An auto-changer manipulation script based on FreeBSDs
+chio command is included and installed at
+
+ %%PREFIX%%/sbin/chio-bacula
+
+Please have a look at it if you want to use an
+autochanger. You have to configure the usage in
+
+ %%PREFIX%%/etc/bacula/bacula-dir.conf
+
+Take care of correct permissions for changer and
+tape device (e.g. /dev/ch0 and /dev/n[r]sa0) i.e.
+they must be accessible by user bacula.
+
+Due to lack of some features in the FreeBSD tape driver
+implementation you MUST add some OS dependent options to
+the bacula-sd.conf file:
+
+ Hardware End of Medium = no;
+ Backward Space Record = no;
+ Backward Space File = no;
+
+With 2 filemarks at EOT (see man mt):
+ Fast Forward Space File = no;
+ BSF at EOM = yes;
+ TWO EOF = yes;
+
+With 1 filemarks at EOT (see man mt):
+ Fast Forward Space File = yes;
+ BSF at EOM = no;
+ TWO EOF = no;
+
+NOTE: YOU CAN SWITCH EOT model ONLY when starting
+ from scratch with EMPTY tapes.
+
+It is also important that all the scripts accessed
+by RunBeforeJob and RunAfterJob will be executed by
+the user bacula. Check your permissions.
+
+For USB support read the bacula manual. It could be necessary
+to configure/compile a new kernel.
+
+Look at %%PREFIX%%/share/bacula/update_bacula_tables for
+database update procedure. Details can be found in the
+ReleaseNotes
+
+If you are using sqlite you need to run the make_sqlite_tables script as
+the bacula user. Do this using 'sudo su -m bacula'.
+EOM
+}
+]
diff --git a/sysutils/bacula15-server/pkg-descr b/sysutils/bacula15-server/pkg-descr
new file mode 100644
index 000000000000..120a92f0a64f
--- /dev/null
+++ b/sysutils/bacula15-server/pkg-descr
@@ -0,0 +1,9 @@
+Bacula is a set of computer programs that permit you (or the system
+administrator) to manage backup, recovery, and verification of
+computer data across a network of computers of different kinds.
+In technical terms, it is a network Client/Server based backup program.
+Bacula is relatively easy to use and efficient, while offering many
+advanced storage management features that make it easy to find and
+recover lost or damaged files. Due to its modular design, Bacula is
+scalable from small single computer systems to systems consisting of
+hundreds of computers located over a large network.
diff --git a/sysutils/bacula15-server/pkg-plist b/sysutils/bacula15-server/pkg-plist
new file mode 100644
index 000000000000..fab74ad77289
--- /dev/null
+++ b/sysutils/bacula15-server/pkg-plist
@@ -0,0 +1,100 @@
+@sample(,bacula,640) %%ETCDIR%%/bacula-barcodes.sample
+@sample(,bacula,) %%ETCDIR%%/bacula-dir.conf.sample
+@sample(,bacula,) %%ETCDIR%%/bacula-sd.conf.sample
+lib/libbaccats-%%LIB_VERSION%%.so
+lib/libbaccats.so
+%%MYSQL%%lib/libbaccats-mysql-%%LIB_VERSION%%.so
+%%PGSQL%%lib/libbaccats-postgresql-%%LIB_VERSION%%.so
+%%SQLITE3%%lib/libbaccats-sqlite3-%%LIB_VERSION%%.so
+%%MYSQL%%lib/libbaccats-mysql.so
+%%PGSQL%%lib/libbaccats-postgresql.so
+%%SQLITE3%%lib/libbaccats-sqlite3.so
+lib/libbacsd-%%LIB_VERSION%%.so
+lib/libbacsd.so
+lib/libbacsql-%%LIB_VERSION%%.so
+lib/libbacsql.so
+%%S3%%lib/bacula-sd-cloud-driver-%%LIB_VERSION%%.so
+%%S3%%lib/bacula-sd-cloud-driver.so
+%%S3%%lib/bacula-sd-cloud-s3-driver-%%LIB_VERSION%%.so
+%%S3%%lib/bacula-sd-cloud-s3-driver.so
+sbin/bacula
+sbin/bacula-dir
+sbin/bacula-sd
+sbin/bcopy
+sbin/bdirjson
+sbin/bsdjson
+sbin/bextract
+sbin/bls
+sbin/bregex
+sbin/bscan
+sbin/bsmtp
+sbin/btape
+sbin/btraceback
+sbin/bwild
+sbin/chio-bacula
+sbin/dbcheck
+sbin/get_malware_abuse.ch
+sbin/md5tobase64.py
+@owner bacula
+@group bacula
+%%DATADIR%%/bacula
+%%DATADIR%%/bacula-ctl-dir
+%%DATADIR%%/bacula-ctl-fd
+%%DATADIR%%/bacula-ctl-sd
+%%DATADIR%%/bacula-tray-monitor.desktop
+%%DATADIR%%/baculabackupreport
+%%DATADIR%%/bacula_config
+%%DATADIR%%/bconsole
+%%DATADIR%%/btraceback.dbx
+%%DATADIR%%/btraceback.gdb
+%%DATADIR%%/btraceback.mdb
+%%DATADIR%%/create_bacula_database
+%%DATADIR%%/install-key-manager.sh
+%%DATADIR%%/isworm
+%%DATADIR%%/key-manager.py
+%%DATADIR%%/tapealert
+%%MYSQL%%%%DATADIR%%/create_mysql_database
+%%PGSQL%%%%DATADIR%%/create_postgresql_database
+%%SQLITE3%%%%DATADIR%%/create_sqlite3_database
+%%DATADIR%%/delete_catalog_backup
+%%DATADIR%%/disk-changer
+%%DATADIR%%/drop_bacula_database
+%%DATADIR%%/drop_bacula_tables
+%%MYSQL%%%%DATADIR%%/drop_mysql_database
+%%PGSQL%%%%DATADIR%%/drop_postgresql_database
+%%SQLITE3%%%%DATADIR%%/drop_sqlite3_database
+%%MYSQL%%%%DATADIR%%/drop_mysql_tables
+%%PGSQL%%%%DATADIR%%/drop_postgresql_tables
+%%SQLITE3%%%%DATADIR%%/drop_sqlite3_tables
+%%DATADIR%%/grant_bacula_privileges
+%%MYSQL%%%%DATADIR%%/grant_mysql_privileges
+%%PGSQL%%%%DATADIR%%/grant_postgresql_privileges
+%%SQLITE3%%%%DATADIR%%/grant_sqlite3_privileges
+%%DATADIR%%/make_bacula_tables
+%%DATADIR%%/make_catalog_backup
+%%DATADIR%%/make_catalog_backup.pl
+%%MYSQL%%%%DATADIR%%/make_mysql_tables
+%%PGSQL%%%%DATADIR%%/make_postgresql_tables
+%%SQLITE3%%%%DATADIR%%/make_sqlite3_tables
+%%DATADIR%%/mtx-changer
+%%DATADIR%%/mtx-changer.conf
+%%DATADIR%%/update_bacula_tables
+%%MYSQL%%%%DATADIR%%/update_mysql_tables
+%%PGSQL%%%%DATADIR%%/update_postgresql_tables
+%%SQLITE3%%%%DATADIR%%/update_sqlite3_tables
+@owner
+@group
+man/man1/bsmtp.1.gz
+man/man1/bacula-tray-monitor.1.gz
+man/man8/bacula-dir.8.gz
+man/man8/bacula-sd.8.gz
+man/man8/bcopy.8.gz
+man/man8/bextract.8.gz
+man/man8/bls.8.gz
+man/man8/bregex.8.gz
+man/man8/bscan.8.gz
+man/man8/btape.8.gz
+man/man8/btraceback.8.gz
+man/man8/bwild.8.gz
+man/man8/dbcheck.8.gz
+@dir(bacula,bacula,) %%BACULA_DIR%%
diff --git a/sysutils/bacula15-server/pkg-plist.client b/sysutils/bacula15-server/pkg-plist.client
new file mode 100644
index 000000000000..e32392a52f5c
--- /dev/null
+++ b/sysutils/bacula15-server/pkg-plist.client
@@ -0,0 +1,20 @@
+@sample(,bacula,640) %%ETCDIR%%/bacula-fd.conf.sample
+@sample(,bacula,640) %%ETCDIR%%/bconsole.conf.sample
+lib/libbac-%%LIB_VERSION%%.so
+lib/libbac.so
+lib/libbaccfg-%%LIB_VERSION%%.so
+lib/libbaccfg.so
+lib/libbacfind-%%LIB_VERSION%%.so
+lib/libbacfind.so
+lib/bpipe-fd.so
+man/man8/bacula.8.gz
+man/man8/bacula-fd.8.gz
+man/man8/bconsole.8.gz
+sbin/bacula-fd
+sbin/bbconsjson
+sbin/bfdjson
+@(,bacula,750) sbin/bconsole
+@dir(bacula,bacula,) %%BACULA_DIR%%
+@dir share/bacula
+@dir(,bacula,) %%ETCDIR%%
+@sample(,bacula,644) share/bacula/query.sql.sample