Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Mar 2024 20:04:26 GMT
From:      Dan Langille <dvl@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 2b7cf900fb6b - main - sysutils/bacula15-server: Add Bacula 15
Message-ID:  <202403282004.42SK4Qos024589@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dvl:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2b7cf900fb6bc05a22bfce9e72934be0cb6a8154

commit 2b7cf900fb6bc05a22bfce9e72934be0cb6a8154
Author:     Dan Langille <dvl@FreeBSD.org>
AuthorDate: 2024-03-28 19:48:01 +0000
Commit:     Dan Langille <dvl@FreeBSD.org>
CommitDate: 2024-03-28 20:04:04 +0000

    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/
---
 net-mgmt/Makefile                                  |   1 +
 net-mgmt/nagios-check_bacula15/Makefile            |  27 +++
 net-mgmt/nagios-check_bacula15/pkg-descr           |   2 +
 sysutils/Makefile                                  |   4 +
 sysutils/bacula15-client-static/Makefile           |  31 ++++
 sysutils/bacula15-client/Makefile                  |  17 ++
 sysutils/bacula15-docs/Makefile                    |  27 +++
 sysutils/bacula15-docs/distinfo                    |   3 +
 sysutils/bacula15-docs/pkg-descr                   |  11 ++
 sysutils/bacula15-server/Makefile                  | 205 +++++++++++++++++++++
 sysutils/bacula15-server/Makefile.common           |  13 ++
 sysutils/bacula15-server/distinfo                  |   3 +
 sysutils/bacula15-server/files/bacula-barcodes     |  51 +++++
 sysutils/bacula15-server/files/bacula-dir.in       |  29 +++
 sysutils/bacula15-server/files/bacula-fd.in        |  29 +++
 sysutils/bacula15-server/files/bacula-sd.in        |  29 +++
 sysutils/bacula15-server/files/chio-bacula         | 200 ++++++++++++++++++++
 .../bacula15-server/files/patch-src_baconfig.h     |  13 ++
 .../files/patch-src_console_Makefile.in            |  11 ++
 .../files/patch-src_dird_Makefile.in               |  11 ++
 .../files/patch-src_filed_Makefile.in              |  12 ++
 .../files/patch-src_qt-console_bat.pro.in          |  11 ++
 .../bacula15-server/files/pkg-deinstall.client.in  |  30 +++
 .../bacula15-server/files/pkg-install.client.in    |  13 ++
 .../bacula15-server/files/pkg-message.client.in    |  10 +
 .../bacula15-server/files/pkg-message.server.in    |  59 ++++++
 sysutils/bacula15-server/pkg-descr                 |   9 +
 sysutils/bacula15-server/pkg-plist                 | 100 ++++++++++
 sysutils/bacula15-server/pkg-plist.client          |  20 ++
 29 files changed, 981 insertions(+)

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
*** 227 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202403282004.42SK4Qos024589>