[pkg-bacula-commits] [bacula] 01/01: Imported upstream version 7.4.0
Carsten Leonhardt
leo at moszumanska.debian.org
Sun Jan 24 10:54:17 UTC 2016
This is an automated email from the git hooks/post-receive script.
leo pushed a commit to annotated tag upstream/7.4.0+dfsg
in repository bacula.
commit d8aaab46b1c7958dac3c368cca3a18adfe531eaa
Author: Carsten Leonhardt <leo at debian.org>
Date: Sun Jan 24 11:50:53 2016 +0100
Imported upstream version 7.4.0
Changes from upstream:
src/lib/sha1.{h,c}: (#658326) remove, DFSG-nonfree, RFC 3174
---
AUTHORS | 1 +
ChangeLog | 314 ++++++++++++++++++++++++++-
ReleaseNotes | 171 ++++++++++++++-
configure | 45 +++-
src/cats/mysql.c | 2 +-
src/cats/sql_list.c | 10 +-
src/dird/backup.c | 25 ++-
src/dird/dird_conf.h | 3 +
src/dird/fd_cmds.c | 17 +-
src/dird/job.c | 12 +
src/dird/jobq.c | 2 +
src/dird/run_conf.c | 4 +
src/dird/scheduler.c | 4 +
src/dird/vbackup.c | 24 +-
src/jcr.h | 2 +
src/lib/bregex.c | 1 +
src/qt-console/tray-monitor/authenticate.cpp | 2 +-
src/stored/autochanger.c | 41 ++--
src/stored/label.c | 11 +-
src/version.h | 4 +-
20 files changed, 631 insertions(+), 64 deletions(-)
diff --git a/AUTHORS b/AUTHORS
index 27ff6c8..462cc81 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -114,6 +114,7 @@ Scott Bailey
Sergey Svishchev
Simone Caronni
Stefan Reddig
+Thomas Lohman
Thomas Glatthor
Thorsten Enge
Tim Oberfoell
diff --git a/ChangeLog b/ChangeLog
index 9029f06..e2b91d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,318 @@
- Changelog on version 7.2.0
+ Changelog on version 7.4.0
+Release Version 7.4.0
+
+
+
+14Jan16
+ - Put back missing line in copyright
+ - Update date
+ - Implement MaxVirtualFullInterval
+ - Update AUTHORS
+
+13Jan16
+ - Ensure relabel has latest vol info may fix bug #1412
+ - Update AUTHORS
+
+12Jan16
+ - Change license as per agreement with FSFE
+ - Apply Carsten's patch that fixes bug #2192 builds on kfreebsd
+ - Update AUTHORS file
+ - Add some additional tape slot debug code
+
+11Jan16
+ - baculum: Add Wanderlei Huttel to AUTHORS
+ - baculum: Enable Portuguese language on web interface
+ - baculum: Implement Portuguese language support
+ - baculum: Assign Baculum copyright to Kern Sibbald
+ - Add more debug to recycle-test
+ - More debug info when aborting
+
+10Jan16
+ - baculum: Fix sorting in restore by group most recent backups
+ - Change copyright as per agreement with FSFE
+ - Update po files
+ - Change copyright as per agreement with FSFE
+
+09Jan16
+ - baculum: Fix restore group most recent backups for MySQL
+
+06Jan16
+ - Fix FD DisableCommands
+
+05Jan16
+ - baculum: Fix to change user password
+
+04Jan16
+ - Add ExpiresIn field in list and llist media output
+ - Fix #1548 about Solaris SIGBUS with accurate mode backup
+
+02Jan16
+ - Change copyright as per agreement with FSFE + update copyright year
+ - Finish revert of patch
+ - Revert commit 1157f172ea1c3b3
+ - Update year to 2016
+ - Backport some Enterprise code to sql_list.c
+
+01Jan16
+ - Change copyright as per agreement with FSFE
+ - Add info message of #jobs consolidated in Virtual Full
+ - baculum: Unify user validation
+ - baculum: Fix showing bconsole test result in configuration wizard
+ - baculum: Fix auto-login after finishing wizard
+ - baculum: Check if auth data exists before log in try
+ - Add HasBase+Comment to llist Jobs
+ - Fix a few debug outputs that should be unsigned
+
+31Dec15
+ - baculum: Add php-xml to requirements
+ - Fix seg fault in btape fixes bug #2180
+ - Fix slight error in autoprune -- should fix bug #2151
+ - Change copyright as per agreement with FSFE
+ - baculum: Add first unit tests
+
+30Dec15
+ - Fix #1545 about fix in manual_prune.pl script with large number of volumes
+ - Fix false status output. Fixes bug #2103
+ - Integrate patch into latest version, which fixes bug #1882
+ - Fix bug #2090 correct detection of GCC
+ - baculum: Add support for terminated with warnings job status
+ - baculum: Hide users input on ESC key press
+ - baculum: Fix logout action on Apache web server
+ - baculum: Implement users management from web interface
+ - baculum: Prevent opening new sessions for each request
+
+27Dec15
+ - Fix CLANG warning messages -- fixes bug #2090
+ - Add new chio-changer-freebase from bug #2115
+ - Applied modified patch from bug#2117 to fix bpipe end of stream
+ - Apply patch from bug #2165 to fix the update sqlite3 script
+ - baculum: Rework access by restricted consoles
+
+26Dec15
+ - Fix update MD5 failure bug reported by Peter Keller
+
+25Dec15
+ - baculum: Add dashboard panel
+
+23Dec15
+ - Patch to add MySQL ssl access
+
+21Dec15
+ - Change copyright as per agreement with FSFE
+
+20Dec15
+ - Manually apply patch in bug #2156 to allow building on KFreeBSD
+ - Fix bug #2153 with patch submitted by Ana Arruda
+ - Prevent possible seg fault
+ - Fix possible seg fault if debug mode set
+ - baculum: Close console on press ESC key
+ - Change copyright as per agreement with FSFE
+ - baculum: Switch to started job status just after job start
+
+19Dec15
+ - baculum: Add possibility to open configuration windows from URL
+ - Fix restore when storage specified on command line
+ - baculum: Add jobbytes and media type to volumes list
+ - Set jcr in heartbeat thread of FD
+ - Remove not yet implemented from UA Verify Volume Data message
+
+18Dec15
+ - Fix restore of Windows streams to non-Windows machines
+ - Add new verify data test
+ - Implement level=Data to the Verify job
+ - baculum: Fix requirements path
+
+16Dec15
+ - Fix #1524 about bextract trace file location
+ - Partial modification of copyrights as per agreement with FSFE
+ - Fix truncate bug free_volume problem
+
+14Dec15
+ - baculum: Fix showing table header
+ - baculum: Search field works with all table cells
+
+13Dec15
+ - baculum: Do not refresh window lists if toolbar is open or elements are
+ checked
+ - baculum: Remember sort order for data grids
+ - baculum: Add example Nginx config
+ - baculum: Fix working with php-fpm
+ - baculum: Fix sorting formatted values in tables
+ - baculum: Improve size formatter precision
+ - baculum: Fix jobs count in job list
+ - baculum: Show jobid in job configuration window
+ - baculum: Add jobbytes and jobfiles columns in job list
+
+12Dec15
+ - baculum: Get system timezone for PHP if possible
+ - baculum: Fix restore when a lot of jobids given
+ - baculum: Remove temporary Bvfs table when restore starts
+ - baculum: Show copy job label in job list
+ - baculum: Set default job attributes (level, client, fileset, pool, storage,
+ priority) in Run job panel
+ - baculum: Get job show result by job name or jobid
+
+11Dec15
+ - baculum: Set half size window as default window size
+ - baculum: Not remember controls state in jobs window
+ - baculum: Add session cache
+ - Fix truncate race bug #1382
+ - Fix some low level messages to display correctly
+
+28Nov15
+ - baculum: Remove deprecated message in initial wizard
+ - baculum: Update SELinux policy module
+ - baculum: Fix update pool action when no volumes in pool
+ - baculum: Split configuration windows into two tabs: actions and console
+ - baculum: Change default elements limit to 500 elements
+ - baculum: Add drive parameter to bconsole release command execution
+ - baculum: Switch interface from performance mode to normal mode due to no
+ cache checking in performance mode
+
+27Nov15
+ - Fix #1470 Fix setdebug command when all components are selected
+ - baculum: Set default elements limit in window to 1000 elements
+
+25Nov15
+ - baculum: Fix expectation failed error during restore
+ - baculum: Switch to debug mode only when debug is enabled in config
+ - baculum: Switch interface to performance mode
+ - baculum: Add JSMin from framework for complete switch interface to performance
+ mode
+ - baculum: Add Ulrich Leodolter to AUTHORS
+ - baculum: Fix end-of-file warning in bconsole calls. Patch from Ulrich Leodolter
+
+22Nov15
+ - baculum: Fix remove users file during upgrade deb packages
+
+21Nov15
+ - Add new JOB_DBR field
+ - #ifdef out bpluginfo since it does not compile
+
+20Nov15
+ - Fix #1449 about a FileDaemon segfault with the fstype option
+
+17Nov15
+ - Remove vestiges of rechdr_queue hopefully fixes bug #2180
+ - Apply bconsole manpage patch from bug #2182
+ - Apply ppc64el configure detection patch from bug #2183
+
+12Nov15
+ - Fix #1414 When the FD is down, status dir now prints "is waiting for Client
+ xx-fd"
+
+11Nov15
+ - Ensure that JOB_DBR is properly initialized before a db_list_job_records()
+
+10Nov15
+ - Implement new options in list command
+ - Add @tall command to log both input/output in a log file
+
+31Oct15
+ - Fix #1360 about bextract -t not documented in the man page
+
+30Oct15
+ - Update spec file for latest OSX versions
+ - Fix compilation on MacOS
+
+28Oct15
+ - fix syntax error
+
+27Oct15
+ - Improve Jmsg in response(), display SIGNAL number when appropriate
+ - Avoid segfault in dump_block() when the block_len is invalid
+
+23Oct15
+ - Fix #1368 about xattr error not displayed correctly at restore time
+
+22Oct15
+ - If we swapped a Volume, clear in_use bit on Volume
+
+19Oct15
+ - Fix #1362 about libgcc dependency in sles12 bat package
+ - Remove installation of manpage for bplugininfo
+ - Fix bug 2171 cannot build tray-monitor
+
+18Oct15
+ - Enhance bvfs performance .bvfs_update for MySQL
+ - Do some sanity checks on user inputs
+ - Enhance bvfs performance .bvfs_update for MySQL
+ - Enhance bvfs performance .bvfs_update for MySQL
+ - Recompile configure.in
+ - Fix bug 2173 QT tray monitor can not be built due to missing files in configure
+
+16Oct15
+ - dedup fix bextract bug
+
+15Oct15
+ - Move plugin_free() in free_jcr()
+ - Fix bug #2083 -- Fix sockaddr_to_ascii for FreeBSD
+
+10Oct15
+ - Fix fadvise bug found by Robert Heinzmann
+
+22Sep15
+ - Fix compilation without zlib and lzo
+ - Fix compilation error with new fstype_cmp() function
+ - Fix compilation problem with AFS
+
+19Sep15
+ - Fix compilation on Solaris/FreeBSD
+
+18Sep15
+ - Fix segfault in open_bpipe() when the program is empty
+
+17Sep15
+ - Modify find_next_volume_for_append() to not send the same volume twice
+
+15Sep15
+ - Avoid <NULL> string displayed in restore menu
+ - Do not update state file after a bacula-xxx -t
+
+10Sep15
+ - Fix #804 about misleading message with the purge command
+ - Fix automount feature after a label command
+
+20Aug15
+ - rpms: Add Fedora22 and Systemd support for redhat rpms
+
+19Aug15
+ - Add missing required packages versions
+
+18Aug15
+ - Reinsert tabs in systemd Makefile.in
+
+17Aug15
+ - Remove old DVD.conf in examples
+
+16Aug15
+ - baculum: Fix default values in Makefile
+ - baculum: Split deb result package into baculum, baculum-lighttpd and baculum-apache2
+ packages
+ - baculum: Provide LICENSE-FOSS file content in Baculum deb packages (copyright
+ file)
+ - baculum: Add deb template files and deb configs examples
+ - baculum: Change Makefile to using also for deb packages template
+
+11Aug15
+ - Use Client Catalog resource in get_catalog_resource() if "client" is specified
+ in command line
+
+07Jul15
+ - Fix #1131 about Job::Next Pool resource precedence over the Pool::Next pool
+ directive
+
+11Feb15
+ - Fix #898 truncate volumes larger than 200 bytes
+
+Bugs fixed/closed since last release:
+1131 1360 1362 1368 1382 1412 1414 1449 1470 1524 1545 1548 1882 2083 2090
+2103 2115 2117 2151 2153 2156 2165 2180 2182 2183 2192 804 898
+
+==========================================================
+
Release Version 7.2.0
12Aug15
diff --git a/ReleaseNotes b/ReleaseNotes
index 3e03d15..eaba613 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -1,6 +1,174 @@
- Release Notes for Bacula 7.2.0
+ Release Notes for Bacula 7.4.0
+Release version 7.4.0
+
+The diff between Bacula 7.0.6 and Bacula 7.2.0 is 254,442
+which represents very large change, for the most part
+contributed to the Bacula project by Bacula Systems SA.
+
+This is a new release with a new version number. It has been
+very thourouly tested, but as always, the new features may not
+always work as expected.
+
+The Catalog database format has not changed since version the
+prior release (7.2.0).
+
+Compatibility:
+--------------
+As always, both the Community Director and Storage daemon(s) must be upgraded
+at the same time. Any File daemon running on the same machine as a Director
+or Storage daemon must be of the same version.
+
+Older File Daemons should be compatible with the 7.4.0 Director and Storage
+daemons. There should be no need to upgrade older File Daemons.
+
+New features and changes:
+Please see the New Features chapter of the manual for documentation on
+the new features. The new features are currently only in the New Features
+chapter and have not yet been integrated into the main chapters of the
+manual.
+
+New Features and changes summary:
+- Support for KFREEBSD OS
+- Improved support for Clang
+- Configure SSL connection to MySQL
+- New chio-changer-freebase in examples/autochangers
+ New directives in bacula-dir.conf in Catalog{} resource
+ for the MySQL backend (not currently implemented for
+ Postgresql or SQLite).
+ dbsslkey
+ dbsslcert
+ dbsslca
+ dbsslcapath
+ dbsslcipher
+- examples/autochangers/rc-chio-changer removed
+- examples/devices/DVD.conf removed
+- updated copyrights
+- Add "Expires in" to list and llist volumes
+- Implement a more efficient Volume selection algorithm between DIR and SD
+- Implement new list/llist command keywords:
+ order=asc|ascending
+ order=desc|decending
+ limit=nn
+ jobstatus=
+ Client=
+ JobErrors
+- Implement new bconsole @tall command that outputs input and
+ output to console and terminal. Note, this also outputs
+ bconsole input commands.
+- Implement MaxVirtualFullInterval
+- Implement VirtualFullPool override
+- Pool overrides work better
+- Automatic selection of catalog from client where possible.
+- Implement VerifyData level type for Verify jobs.
+
+
+More detailed changes:
+
+14Jan16
+ - Implement MaxVirtualFullInterval
+ - Update AUTHORS
+ - Ensure relabel has latest vol info may fix bug #1412
+ - Change license as per agreement with FSFE
+ - Apply Carsten's patch that fixes bug #2192 builds on kfreebsd
+ - baculum: Enable Portuguese language on web interface
+ - baculum: Implement Portuguese language support
+ - baculum: Assign Baculum copyright to Kern Sibbald
+ - baculum: Fix sorting in restore by group most recent backups
+ - baculum: Fix restore group most recent backups for MySQL
+ - Fix FD DisableCommands
+ - baculum: Fix to change user password
+ - Add ExpiresIn field in list and llist media output
+ - Fix #1548 about Solaris SIGBUS with accurate mode backup
+ - Backport more Enterprise code to sql_list.c
+ - Add info message of #jobs consolidated in Virtual Full
+ - baculum: Unify user validation
+ - Add HasBase+Comment to llist Jobs
+ - Fix seg fault in btape fixes bug #2180
+ - Fix slight error in autoprune -- should fix bug #2151
+ - baculum: Add first unit tests
+ - Fix #1545 about fix in manual_prune.pl script with large number of volumes
+ - Fix false status output. Fixes bug #2103
+ - Integrate patch into latest version, which fixes bug #1882
+ - Fix bug #2090 correct detection of GCC
+ - Fix CLANG warning messages -- fixes bug #2090
+ - Add new chio-changer-freebase from bug #2115
+ - Applied modified patch from bug#2117 to fix bpipe end of stream
+ - Apply patch from bug #2165 to fix the update sqlite3 script
+ - Fix update MD5 failure bug reported by Peter Keller
+ - baculum: Add dashboard panel
+ - Patch to add MySQL ssl access
+ - Manually apply patch in bug #2156 to allow building on KFreeBSD
+ - Fix bug #2153 with patch submitted by Ana Arruda
+ - baculum: Switch to started job status just after job start
+ - baculum: Add possibility to open configuration windows from URL
+ - Fix restore when storage specified on command line
+ - Fix restore of Windows streams to non-Windows machines
+ - Implement level=Data to the Verify job
+ - Fix #1524 about bextract trace file location
+ - Fix truncate bug free_volume problem
+ - baculum: Remember sort order for data grids
+ - baculum: Improve size formatter precision
+ - baculum: Fix jobs count in job list
+ - baculum: Add jobbytes and jobfiles columns in job list
+ - baculum: Get system timezone for PHP if possible
+ - baculum: Fix restore when a lot of jobids given
+ - baculum: Set default job attributes (level, client, fileset, pool, storage,
+ priority) in Run job panel
+ - Fix truncate race bug #1382
+ - baculum: Fix update pool action when no volumes in pool
+ - baculum: Split configuration windows into two tabs: actions and console
+ - baculum: Change default elements limit to 500 elements
+ - baculum: Add drive parameter to bconsole release command execution
+ - Fix #1470 Fix setdebug command when all components are selected
+ - baculum: Fix expectation failed error during restore
+ - Add new JOB_DBR field
+ - #ifdef out bpluginfo since it does not compile
+ - Fix #1449 about a FileDaemon segfault with the fstype option
+ - Remove vestiges of rechdr_queue hopefully fixes bug #2180
+ - Apply bconsole manpage patch from bug #2182
+ - Apply ppc64el configure detection patch from bug #2183
+ - Fix #1414 When the FD is down, status dir now prints "is waiting for Client
+ xx-fd"
+ - Implement new options in list command
+ - Add @tall command to log both input/output in a log file
+ - Fix #1360 about bextract -t not documented in the man page
+ - Update spec file for latest OSX versions
+ - Fix compilation on MacOS
+ - Improve Jmsg in response(), display SIGNAL number when appropriate
+ - Avoid segfault in dump_block() when the block_len is invalid
+ - Fix #1368 about xattr error not displayed correctly at restore time
+ - Fix bug 2173 QT tray monitor can not be built due to missing files in configure
+ - Move plugin_free() in free_jcr()
+ - Fix bug #2083 -- Fix sockaddr_to_ascii for FreeBSD
+ - Fix fadvise bug found by Robert Heinzmann
+ - Fix compilation without zlib and lzo
+ - Fix compilation error with new fstype_cmp() function
+ - Fix compilation problem with AFS
+ - Fix compilation on Solaris/FreeBSD
+ - Fix segfault in open_bpipe() when the program is empty
+ - Modify find_next_volume_for_append() to not send the same volume twice
+ - Avoid <NULL> string displayed in restore menu
+ - Do not update state file after a bacula-xxx -t
+ - Fix #804 about misleading message with the purge command
+ - Fix automount feature after a label command
+ - Reinsert tabs in systemd Makefile.in
+ - baculum: Provide LICENSE-FOSS file content in Baculum deb packages (copyright
+ file)
+ - Use Client Catalog resource in get_catalog_resource() if "client" is specified
+ in command line
+ - Fix #1131 about Job::Next Pool resource precedence over the Pool::Next pool
+ directive
+ - Fix #898 truncate volumes larger than 200 bytes
+
+Bugs fixed/closed since last release:
+1131 1360 1362 1368 1382 1412 1414 1449 1470 1524 1545 1548 1882 2083 2090
+2103 2115 2117 2151 2153 2156 2165 2180 2182 2183 2192 804 898
+
+
+
+================================================================
Release version 7.2.0
Bacula code: Total files = 733 Total lines = 303,426
@@ -674,4 +842,3 @@ Detailed changes:
- Improve SQL failure reporting
- First cut backport BEE to community
- Add copyright to mtx-changer.in
-
diff --git a/configure b/configure
index 3602d58..a59610f 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bacula 7.2.1.
+# Generated by GNU Autoconf 2.69 for bacula 7.4.0.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bacula'
PACKAGE_TARNAME='bacula'
-PACKAGE_VERSION='7.2.1'
-PACKAGE_STRING='bacula 7.2.1'
+PACKAGE_VERSION='7.4.0'
+PACKAGE_STRING='bacula 7.4.0'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -761,6 +761,8 @@ MSGFMT
USE_NLS
MKINSTALLDIRS
SET_MAKE
+HAVE_KFREEBSD_OS_FALSE
+HAVE_KFREEBSD_OS_TRUE
HAVE_DARWIN_OS_FALSE
HAVE_DARWIN_OS_TRUE
HAVE_IRIX_OS_FALSE
@@ -1564,7 +1566,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures bacula 7.2.1 to adapt to many kinds of systems.
+\`configure' configures bacula 7.4.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1633,7 +1635,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of bacula 7.2.1:";;
+ short | recursive ) echo "Configuration of bacula 7.4.0:";;
esac
cat <<\_ACEOF
@@ -1831,7 +1833,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-bacula configure 7.2.1
+bacula configure 7.4.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2766,7 +2768,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by bacula $as_me 7.2.1, which was
+It was created by bacula $as_me 7.4.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -17077,6 +17079,31 @@ else
fi
fi
+if test $HAVE_UNAME=yes -a x`uname -s` = xGNU/kFreeBSD
+then
+
+
+if $TRUEPRG; then
+ HAVE_KFREEBSD_OS_TRUE=
+ HAVE_KFREEBSD_OS_FALSE='#'
+else
+ HAVE_KFREEBSD_OS_TRUE='#'
+ HAVE_KFREEBSD_OS_FALSE=
+fi
+ $as_echo "#define HAVE_KFREEBSD_OS 1" >>confdefs.h
+
+else
+
+
+if $FALSEPRG; then
+ HAVE_KFREEBSD_OS_TRUE=
+ HAVE_KFREEBSD_OS_FALSE='#'
+else
+ HAVE_KFREEBSD_OS_TRUE='#'
+ HAVE_KFREEBSD_OS_FALSE=
+fi
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Operating System Distribution" >&5
$as_echo_n "checking for Operating System Distribution... " >&6; }
@@ -31410,7 +31437,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by bacula $as_me 7.2.1, which was
+This file was extended by bacula $as_me 7.4.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31476,7 +31503,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-bacula config.status 7.2.1
+bacula config.status 7.4.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/src/cats/mysql.c b/src/cats/mysql.c
index d722bf4..52546b7 100644
--- a/src/cats/mysql.c
+++ b/src/cats/mysql.c
@@ -37,7 +37,7 @@
#include "cats.h"
#include <mysql.h>
-#define __BDB_MYSQL_H_ 1
+#define BDB_MYSQL_H_ 1
#include "bdb_mysql.h"
/* -----------------------------------------------------------------------
diff --git a/src/cats/sql_list.c b/src/cats/sql_list.c
index 309e0db..55b6a85 100644
--- a/src/cats/sql_list.c
+++ b/src/cats/sql_list.c
@@ -579,17 +579,19 @@ void BDB::bdb_list_base_files_for_job(JCR *jcr, JobId_t jobid, DB_LIST_HANDLER *
* Stupid MySQL is NON-STANDARD !
*/
if (bdb_get_type_index() == SQL_TYPE_MYSQL) {
- Mmsg(cmd, "SELECT CONCAT(Path.Path,File.Filename) AS Filename "
- "FROM BaseFiles, File, Path "
+ Mmsg(cmd, "SELECT CONCAT(Path.Path,Filename.Name) AS Filename "
+ "FROM BaseFiles, File, Filename, Path "
"WHERE BaseFiles.JobId=%s AND BaseFiles.BaseJobId = File.JobId "
"AND BaseFiles.FileId = File.FileId "
+ "AND Filename.FilenameId=File.FilenameId "
"AND Path.PathId=File.PathId",
edit_int64(jobid, ed1));
} else {
- Mmsg(cmd, "SELECT Path.Path||File.Filename AS Filename "
- "FROM BaseFiles, File, Path "
+ Mmsg(cmd, "SELECT Path.Path||Filename.Name AS Filename "
+ "FROM BaseFiles, File, Filename, Path "
"WHERE BaseFiles.JobId=%s AND BaseFiles.BaseJobId = File.JobId "
"AND BaseFiles.FileId = File.FileId "
+ "AND Filename.FilenameId=File.FilenameId "
"AND Path.PathId=File.PathId",
edit_int64(jobid, ed1));
}
diff --git a/src/dird/backup.c b/src/dird/backup.c
index 932751b..6e4c7c8 100644
--- a/src/dird/backup.c
+++ b/src/dird/backup.c
@@ -64,19 +64,19 @@ bool do_backup_init(JCR *jcr)
/* Make local copy */
jcr->RescheduleIncompleteJobs = jcr->job->RescheduleIncompleteJobs;
- if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
- return do_vbackup_init(jcr);
- }
- free_rstorage(jcr); /* we don't read so release */
-
if (!get_or_create_fileset_record(jcr)) {
+ Dmsg1(100, "JobId=%d no FileSet\n", (int)jcr->JobId);
return false;
}
/*
* Get definitive Job level and since time
+ * unless it's a virtual full. In that case
+ * it is not needed.
*/
- get_level_since_time(jcr, jcr->since, sizeof(jcr->since));
+ if (!jcr->is_JobLevel(L_VIRTUAL_FULL)) {
+ get_level_since_time(jcr, jcr->since, sizeof(jcr->since));
+ }
apply_pool_overrides(jcr);
@@ -86,9 +86,22 @@ bool do_backup_init(JCR *jcr)
jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->name());
if (jcr->jr.PoolId == 0) {
+ Dmsg1(100, "JobId=%d no PoolId\n", (int)jcr->JobId);
+ Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
return false;
}
+ /*
+ * If we are a virtual full job or got upgraded to one
+ * then we divert at this point and call the virtual full
+ * backup init method
+ */
+ if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
+ return do_vbackup_init(jcr);
+ }
+
+ free_rstorage(jcr); /* we don't read so release */
+
/* If pool storage specified, use it instead of job storage */
copy_wstorage(jcr, jcr->pool->storage, _("Pool resource"));
diff --git a/src/dird/dird_conf.h b/src/dird/dird_conf.h
index b1101bd..aeced6c 100644
--- a/src/dird/dird_conf.h
+++ b/src/dird/dird_conf.h
@@ -403,6 +403,7 @@ public:
utime_t MaxRunSchedTime; /* max run time in seconds from Scheduled time*/
utime_t RescheduleInterval; /* Reschedule interval */
utime_t MaxFullInterval; /* Maximum time interval between Fulls */
+ utime_t MaxVirtualFullInterval; /* Maximum time interval between Virtual Fulls */
utime_t MaxDiffInterval; /* Maximum time interval between Diffs */
utime_t DuplicateJobProximity; /* Permitted time between duplicicates */
utime_t SnapRetention; /* Snapshot retention period in seconds */
@@ -420,6 +421,7 @@ public:
POOL *pool; /* Where is media -- Media Pool */
POOL *next_pool; /* Next Pool for Copy/Migrate/VirtualFull */
POOL *full_pool; /* Pool for Full backups */
+ POOL *vfull_pool; /* Pool for Virtual Full backups */
POOL *inc_pool; /* Pool for Incremental backups */
POOL *diff_pool; /* Pool for Differental backups */
char *selection_pattern;
@@ -676,6 +678,7 @@ public:
POOL *pool; /* Pool override */
POOL *next_pool; /* Next pool override */
POOL *full_pool; /* Pool override */
+ POOL *vfull_pool; /* Pool override */
POOL *inc_pool; /* Pool override */
POOL *diff_pool; /* Pool override */
STORE *storage; /* Storage override */
diff --git a/src/dird/fd_cmds.c b/src/dird/fd_cmds.c
index 84e198d..c1ebd57 100644
--- a/src/dird/fd_cmds.c
+++ b/src/dird/fd_cmds.c
@@ -171,6 +171,7 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
int JobLevel;
bool have_full;
bool do_full = false;
+ bool do_vfull = false;
bool do_diff = false;
utime_t now;
utime_t last_full_time = 0;
@@ -236,10 +237,15 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
do_diff = ((now - last_diff_time) >= jcr->job->MaxDiffInterval);
Dmsg2(50, "do_diff=%d diffInter=%lld\n", do_diff, jcr->job->MaxDiffInterval);
}
- /* Note, do_full takes precedence over do_diff */
+ /* Note, do_full takes precedence over do_vfull and do_diff */
if (have_full && jcr->job->MaxFullInterval > 0) {
do_full = ((now - last_full_time) >= jcr->job->MaxFullInterval);
}
+ else
+ if (have_full && jcr->job->MaxVirtualFullInterval > 0) {
+ do_vfull = ((now - last_full_time) >= jcr->job->MaxVirtualFullInterval);
+ }
+
free_pool_memory(stime);
if (do_full) {
@@ -249,7 +255,14 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
bsnprintf(since, since_len, _(" (upgraded from %s)"),
level_to_str(jcr->getJobLevel()));
jcr->setJobLevel(jcr->jr.JobLevel = L_FULL);
- } else if (do_diff) {
+ } else if (do_vfull) {
+ /* No recent Full job found, and MaxVirtualFull is set so upgrade this one to Virtual Full */
+ Jmsg(jcr, M_INFO, 0, "%s", db_strerror(jcr->db));
+ Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found in catalog. Doing Virtual FULL backup.\n"));
+ bsnprintf(since, since_len, _(" (upgraded from %s)"),
+ level_to_str(jcr->getJobLevel()));
+ jcr->setJobLevel(jcr->jr.JobLevel = L_VIRTUAL_FULL);
+ } else if (do_diff) {
/* No recent diff job found, so upgrade this one to Diff */
Jmsg(jcr, M_INFO, 0, _("No prior or suitable Differential backup found in catalog. Doing Differential backup.\n"));
bsnprintf(since, since_len, _(" (upgraded from %s)"),
diff --git a/src/dird/job.c b/src/dird/job.c
index 2290a2b..9ed9c27 100644
--- a/src/dird/job.c
+++ b/src/dird/job.c
@@ -1175,6 +1175,17 @@ void apply_pool_overrides(JCR *jcr)
}
}
break;
+ case L_VIRTUAL_FULL:
+ if (jcr->vfull_pool) {
+ jcr->pool = jcr->vfull_pool;
+ pool_override = true;
+ if (jcr->run_vfull_pool_override) {
+ pm_strcpy(jcr->pool_source, _("Run VFullPool override"));
+ } else {
+ pm_strcpy(jcr->pool_source, _("Job VFullPool override"));
+ }
+ }
+ break;
case L_INCREMENTAL:
if (jcr->inc_pool) {
jcr->pool = jcr->inc_pool;
@@ -1543,6 +1554,7 @@ void set_jcr_defaults(JCR *jcr, JOB *job)
pm_strcpy(jcr->next_pool_source, _("Job Pool's NextPool resource"));
}
jcr->full_pool = job->full_pool;
+ jcr->vfull_pool = job->vfull_pool;
jcr->inc_pool = job->inc_pool;
jcr->diff_pool = job->diff_pool;
if (job->pool->catalog) {
diff --git a/src/dird/jobq.c b/src/dird/jobq.c
index 11f586f..9516821 100644
--- a/src/dird/jobq.c
+++ b/src/dird/jobq.c
@@ -733,7 +733,9 @@ static bool reschedule_job(JCR *jcr, jobq_t *jq, jobq_item_t *je)
njcr->next_pool = jcr->next_pool;
njcr->run_next_pool_override = jcr->run_next_pool_override;
njcr->full_pool = jcr->full_pool;
+ njcr->vfull_pool = jcr->vfull_pool;
njcr->run_full_pool_override = jcr->run_full_pool_override;
+ njcr->run_vfull_pool_override = jcr->run_vfull_pool_override;
njcr->inc_pool = jcr->inc_pool;
njcr->run_inc_pool_override = jcr->run_inc_pool_override;
njcr->diff_pool = jcr->diff_pool;
diff --git a/src/dird/run_conf.c b/src/dird/run_conf.c
index 880e415..c4a4157 100644
--- a/src/dird/run_conf.c
+++ b/src/dird/run_conf.c
@@ -259,6 +259,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
case 'P': /* Pool */
case 'N': /* NextPool */
case 'f': /* FullPool */
+ case 'v': /* VFullPool */
case 'i': /* IncPool */
case 'd': /* DifPool */
token = lex_get_token(lc, T_NAME);
@@ -279,6 +280,9 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
case 'f':
lrun.full_pool = (POOL *)res;
break;
+ case 'v':
+ lrun.vfull_pool = (POOL *)res;
+ break;
case 'i':
lrun.inc_pool = (POOL *)res;
break;
diff --git a/src/dird/scheduler.c b/src/dird/scheduler.c
index 856fdf8..5108142 100644
--- a/src/dird/scheduler.c
+++ b/src/dird/scheduler.c
@@ -204,6 +204,10 @@ again:
jcr->full_pool = run->full_pool; /* override full pool */
jcr->run_full_pool_override = true;
}
+ if (run->vfull_pool) {
+ jcr->vfull_pool = run->vfull_pool; /* override virtual full pool */
+ jcr->run_vfull_pool_override = true;
+ }
if (run->inc_pool) {
jcr->inc_pool = run->inc_pool; /* override inc pool */
jcr->run_inc_pool_override = true;
diff --git a/src/dird/vbackup.c b/src/dird/vbackup.c
index 07ec06c..09ab291 100644
--- a/src/dird/vbackup.c
+++ b/src/dird/vbackup.c
@@ -50,23 +50,13 @@ void vbackup_cleanup(JCR *jcr, int TermCode);
bool do_vbackup_init(JCR *jcr)
{
- if (!get_or_create_fileset_record(jcr)) {
- Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
- return false;
- }
-
- apply_pool_overrides(jcr);
-
- if (!allow_duplicate_job(jcr)) {
- return false;
- }
+ /*
+ * if the read pool has not been allocated yet due to the job
+ * being upgraded to a virtual full then allocate it now
+ */
+ if (!jcr->rpool_source)
+ jcr->rpool_source = get_pool_memory(PM_MESSAGE);
- jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->name());
- if (jcr->jr.PoolId == 0) {
- Dmsg1(dbglevel, "JobId=%d no PoolId\n", (int)jcr->JobId);
- Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
- return false;
- }
/*
* Note, at this point, pool is the pool for this job. We
* transfer it to rpool (read pool), and a bit later,
@@ -76,7 +66,7 @@ bool do_vbackup_init(JCR *jcr)
jcr->rpool = jcr->pool; /* save read pool */
pm_strcpy(jcr->rpool_source, jcr->pool_source);
- /* If pool storage specified, use it for restore */
+ /* If pool storage specified, use it for virtual full */
copy_rstorage(jcr, jcr->pool->storage, _("Pool resource"));
Dmsg2(dbglevel, "Read pool=%s (From %s)\n", jcr->rpool->name(), jcr->rpool_source);
diff --git a/src/jcr.h b/src/jcr.h
index 154b62c..f8bf739 100644
--- a/src/jcr.h
+++ b/src/jcr.h
@@ -331,6 +331,7 @@ public:
POOL *next_pool; /* Next pool override */
POOL *rpool; /* Read pool. Used only in migration */
POOL *full_pool; /* Full backup pool resource */
+ POOL *vfull_pool; /* Virtual Full backup pool resource */
POOL *inc_pool; /* Incremental backup pool resource */
POOL *diff_pool; /* Differential backup pool resource */
FILESET *fileset; /* FileSet resource */
@@ -395,6 +396,7 @@ public:
bool cmdline_next_pool_override; /* Next pool is overridden */
bool run_next_pool_override; /* Next pool is overridden */
bool run_full_pool_override;
+ bool run_vfull_pool_override;
bool run_inc_pool_override;
bool run_diff_pool_override;
bool sd_canceled; /* set if SD canceled */
diff --git a/src/lib/bregex.c b/src/lib/bregex.c
index 994b015..9b9a7b5 100644
--- a/src/lib/bregex.c
+++ b/src/lib/bregex.c
@@ -16,6 +16,7 @@
*
* This code draws many ideas from the regular expression packages by
* Henry Spencer of the University of Toronto and Richard Stallman of
+ * the Free Software Foundation.
*
* Emacs-specific code and syntax table code is almost directly borrowed
* from GNU regexp.
diff --git a/src/qt-console/tray-monitor/authenticate.cpp b/src/qt-console/tray-monitor/authenticate.cpp
index f78861a..522c323 100644
--- a/src/qt-console/tray-monitor/authenticate.cpp
+++ b/src/qt-console/tray-monitor/authenticate.cpp
@@ -55,7 +55,7 @@ static char FDOKhello[] = "2000 OK Hello";
/*
* Authenticate Director
*/
-int authenticate_director(JCR *jcr, MONITOR *mon, DIRRES *director)
+int authenticate_director(JCR *jcr, MONITOR *mon, DIRRES */*director*/)
{
BSOCK *dir = jcr->dir_bsock;
int tls_local_need = BNET_TLS_NONE;
diff --git a/src/stored/autochanger.c b/src/stored/autochanger.c
index cac14b7..8c86d09 100644
--- a/src/stored/autochanger.c
+++ b/src/stored/autochanger.c
@@ -96,6 +96,7 @@ int autoload_device(DCR *dcr, bool writing, BSOCK *dir)
{
JCR *jcr = dcr->jcr;
DEVICE * volatile dev = dcr->dev;
+ char *vol_name = dcr->VolumeName;
int slot;
int drive = dev->drive_index;
int rtn_stat = -1; /* error status */
@@ -186,17 +187,17 @@ int autoload_device(DCR *dcr, bool writing, BSOCK *dir)
lock_changer(dcr);
Dmsg2(dbglvl, "Doing changer load slot %d %s\n", slot, dev->print_name());
Jmsg(jcr, M_INFO, 0,
- _("3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"),
- slot, drive);
+ _("3304 Issuing autochanger \"load slot %d, drive %d\" command for vol %s.\n"),
+ slot, drive, vol_name);
dcr->VolCatInfo.Slot = slot; /* slot to be loaded */
changer = edit_device_codes(dcr, changer, dcr->device->changer_command, "load");
dev->close();
Dmsg1(dbglvl, "Run program=%s\n", changer);
status = run_program_full_output(changer, timeout, results.addr());
if (status == 0) {
- Jmsg(jcr, M_INFO, 0, _("3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"),
- slot, drive);
- Dmsg2(dbglvl, "OK: load slot %d, drive %d.\n", slot, drive);
+ Jmsg(jcr, M_INFO, 0, _("3305 Autochanger \"load slot %d, drive %d\", status is OK for vol %s.\n"),
+ slot, drive, vol_name);
+ Dmsg3(dbglvl, "OK: load slot %d, drive %d vol %s.\n", slot, drive, vol_name);
dev->set_slot(slot); /* set currently loaded slot */
if (dev->vol) {
/* We just swapped this Volume so it cannot be swapping any more */
@@ -351,6 +352,7 @@ bool unload_autochanger(DCR *dcr, int loaded)
{
DEVICE *dev = dcr->dev;
JCR *jcr = dcr->jcr;
+ const char *vol_name = dcr->VolumeName;
int slot;
uint32_t timeout = dcr->device->max_changer_wait;
bool ok = true;
@@ -371,6 +373,9 @@ bool unload_autochanger(DCR *dcr, int loaded)
}
lock_changer(dcr);
+ if (!vol_name || !vol_name[0]) {
+ vol_name = "unknown";
+ }
if (loaded < 0) {
loaded = get_autochanger_loaded_slot(dcr);
if (loaded < 0) { /* try again, maybe autochanger error */
@@ -382,8 +387,8 @@ bool unload_autochanger(DCR *dcr, int loaded)
POOL_MEM results(PM_MESSAGE);
POOLMEM *changer = get_pool_memory(PM_FNAME);
Jmsg(jcr, M_INFO, 0,
- _("3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"),
- loaded, dev->drive_index);
+ _("3307 Issuing autochanger \"unload slot %d, drive %d\" command for vol %s.\n"),
+ loaded, dev->drive_index, vol_name);
slot = dcr->VolCatInfo.Slot;
dcr->VolCatInfo.Slot = loaded;
changer = edit_device_codes(dcr, changer,
@@ -518,6 +523,7 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
bool ok = true;
uint32_t timeout = dcr->device->max_changer_wait;
AUTOCHANGER *changer = dcr->dev->device->changer_res;
+ const char *vol_name = dcr->VolumeName;
DEVICE *save_dev;
int save_slot;
@@ -547,12 +553,15 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
POOLMEM *changer_cmd = get_pool_memory(PM_FNAME);
POOL_MEM results(PM_MESSAGE);
lock_changer(dcr);
+ if (!vol_name || !vol_name[0]) {
+ vol_name = "unknown";
+ }
Jmsg(jcr, M_INFO, 0,
- _("3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"),
- dev->get_slot(), dev->drive_index);
+ _("3307 Issuing autochanger \"unload slot %d, drive %d\" command for vol %s.\n"),
+ dev->get_slot(), dev->drive_index, vol_name);
- Dmsg2(dbglvl, "Issuing autochanger \"unload slot %d, drive %d\" command.\n",
- dev->get_slot(), dev->drive_index);
+ Dmsg3(dbglvl, "Issuing autochanger \"unload slot %d, drive %d\" command for vol %.\n",
+ dev->get_slot(), dev->drive_index, vol_name);
changer_cmd = edit_device_codes(dcr, changer_cmd,
dcr->device->changer_command, "unload");
@@ -565,15 +574,15 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
if (stat != 0) {
berrno be;
be.set_errno(stat);
- Jmsg(jcr, M_INFO, 0, _("3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"),
- dev->get_slot(), dev->drive_index, be.bstrerror());
- Dmsg4(dbglvl, "Error: load slot %d, drive %d, bad stats=%s.\nResults=%s\n",
- dev->get_slot(), dev->drive_index,
+ Jmsg(jcr, M_INFO, 0, _("3997 Bad autochanger \"unload slot %d, drive %d\" for vol %s: ERR=%s.\n"),
+ dev->get_slot(), dev->drive_index, vol_name, be.bstrerror());
+ Dmsg5(dbglvl, "Error: load slot %d, drive %d, vol %s bad stats=%s.\nResults=%s\n",
+ dev->get_slot(), dev->drive_index, vol_name,
be.bstrerror(), results.c_str());
ok = false;
dev->clear_slot(); /* unknown */
} else {
- Dmsg2(dbglvl, "Slot %d unloaded %s\n", dev->get_slot(), dev->print_name());
+ Dmsg3(dbglvl, "Slot %d vol %s unloaded %s\n", dev->get_slot(), vol_name, dev->print_name());
dev->set_slot(0); /* unload OK, mark nothing loaded */
dev->clear_unload();
}
diff --git a/src/stored/label.c b/src/stored/label.c
index 1c2e74a..3317c7f 100644
--- a/src/stored/label.c
+++ b/src/stored/label.c
@@ -570,6 +570,12 @@ bool DCR::rewrite_volume_label(bool recycle)
return false;
}
}
+ ASSERT2(dcr->VolumeName[0], "Empty Volume name");
+ dev->setVolCatName(dcr->VolumeName);
+ if (!dir_get_volume_info(dcr, GET_VOL_INFO_FOR_WRITE)) {
+ Leave(100);
+ return false;
+ }
dev->set_labeled();
/* Set or reset Volume statistics */
dev->VolCatInfo.VolCatJobs = 0;
@@ -590,8 +596,6 @@ bool DCR::rewrite_volume_label(bool recycle)
Dmsg1(100, "dir_update_vol_info. Set Append vol=%s\n", dcr->VolumeName);
dev->VolCatInfo.VolFirstWritten = time(NULL);
dev->setVolCatStatus("Append");
- ASSERT2(dcr->VolumeName[0], "Empty Volume name");
- dev->setVolCatName(dcr->VolumeName);
if (!dir_update_volume_info(dcr, true, true)) { /* indicate relabel */
Leave(100);
return false;
@@ -607,7 +611,8 @@ bool DCR::rewrite_volume_label(bool recycle)
* End writing real Volume label (from pre-labeled tape), or recycling
* the volume.
*/
- Dmsg1(100, "OK from rewrite vol label. Vol=%s\n", dcr->VolumeName);
+ Dmsg3(100, "OK from rewrite vol label. adata=%d slot=%d Vol=%s\n",
+ dcr->block->adata, dev->VolCatInfo.Slot, dcr->VolumeName);
Leave(100);
return true;
}
diff --git a/src/version.h b/src/version.h
index 60df9e0..38f93fb 100644
--- a/src/version.h
+++ b/src/version.h
@@ -6,8 +6,8 @@
/* Note: there can be only *one* VERSION in this file */
#define VERSION "7.4.0"
-#define BDATE "10 January 2016"
-#define LSMDATE "10Jan16"
+#define BDATE "16 January 2016"
+#define LSMDATE "16Jan16"
#define RELEASE 1 /* Use ONLY in rpms */
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-bacula/bacula.git
More information about the pkg-bacula-commits
mailing list