rpms/bacula/F-7 2.0.3-ampm.patch, NONE, 1.1 2.0.3-maxbyteslist.patch, NONE, 1.1 2.0.3-maxwaittime.patch, NONE, 1.1 2.0.3-scheduler-next-hour.patch, NONE, 1.1 2.0.3-tls-disconnect.patch, NONE, 1.1 2.0.3-verify.patch, NONE, 1.1 bacula-config.patch, NONE, 1.1 bacula-dir.init, NONE, 1.1 bacula-director-configuration.patch, NONE, 1.1 bacula-fd.init, NONE, 1.1 bacula-gconsole.desktop, NONE, 1.1 bacula-pamd.patch, NONE, 1.1 bacula-sd.init, NONE, 1.1 bacula-traymonitor.desktop, NONE, 1.1 bacula-wxconsole.desktop, NONE, 1.1 bacula-wxconsole.patch, NONE, 1.1 bacula.logrotate, NONE, 1.1 bacula.spec, NONE, 1.1 sources, 1.1, 1.2

Andreas Thienemann (ixs) fedora-extras-commits at redhat.com
Tue Jul 24 20:22:52 UTC 2007


Author: ixs

Update of /cvs/pkgs/rpms/bacula/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv30499

Modified Files:
	sources 
Added Files:
	2.0.3-ampm.patch 2.0.3-maxbyteslist.patch 
	2.0.3-maxwaittime.patch 2.0.3-scheduler-next-hour.patch 
	2.0.3-tls-disconnect.patch 2.0.3-verify.patch 
	bacula-config.patch bacula-dir.init 
	bacula-director-configuration.patch bacula-fd.init 
	bacula-gconsole.desktop bacula-pamd.patch bacula-sd.init 
	bacula-traymonitor.desktop bacula-wxconsole.desktop 
	bacula-wxconsole.patch bacula.logrotate bacula.spec 
Log Message:
Initial import

2.0.3-ampm.patch:

--- NEW FILE 2.0.3-ampm.patch ---
This patch should resolve some problems with handling of am/pm
in schedules as reported by bug #808.

According to the NIST (US National Institute of Standards and Technology),
12am and 12pm are ambiguous and can be defined to anything.  However,
12:01am is the same as 00:01 and 12:01pm is the same as 12:01, so Bacula
defines 12am as 00:00 (midnight) and 12pm as 12:00 (noon).  You can avoid
this abiguity (confusion) by using 24 hour time specifications (i.e.  no
am/pm). This is the definition in Bacula version 2.0.3 and later.

Apply it to version 2.0.3 with:

  cd <bacula-source>
  patch -p0 <2.0.3-ampm.patch
  make
  ...
  make install

Index: src/dird/run_conf.c
===================================================================
--- src/dird/run_conf.c	(revision 4349)
+++ src/dird/run_conf.c	(working copy)
@@ -339,6 +339,7 @@
    for ( ; token != T_EOL; (token = lex_get_token(lc, T_ALL))) {
       int len; 
       bool pm = false;
+      bool am = false;
       switch (token) {
       case T_NUMBER:
          state = s_mday;
@@ -434,6 +435,7 @@
          if (!have_hour) {
             clear_bits(0, 23, lrun.hour);
          }
+//       Dmsg1(000, "s_time=%s\n", lc->str);
          p = strchr(lc->str, ':');
          if (!p)  {
             scan_err0(lc, _("Time logic error.\n"));
@@ -441,20 +443,19 @@
          }
          *p++ = 0;                 /* separate two halves */
          code = atoi(lc->str);     /* pick up hour */
+         code2 = atoi(p);          /* pick up minutes */
          len = strlen(p);
-         if (len > 2 && p[len-1] == 'm') {
-            if (p[len-2] == 'a') {
-               pm = false;
-            } else if (p[len-2] == 'p') {
-               pm = true;
-            } else {
-               scan_err0(lc, _("Bad time specification."));
-               /* NOT REACHED */
-            }
-         } else {
-            pm = false;
+         if (len >= 2) {
+            p += 2;
          }
-         code2 = atoi(p);             /* pick up minutes */
+         if (strcasecmp(p, "pm") == 0) {
+            pm = true;
+         } else if (strcasecmp(p, "am") == 0) {
+            am = true;
+         } else if (len != 2) {
+            scan_err0(lc, _("Bad time specification."));
+            /* NOT REACHED */
+         }   
          /* 
           * Note, according to NIST, 12am and 12pm are ambiguous and
           *  can be defined to anything.  However, 12:01am is the same
@@ -467,13 +468,14 @@
                code += 12;
             }
          /* am */
-         } else if (code == 12) {
+         } else if (am && code == 12) {
             code -= 12;
          }
          if (code < 0 || code > 23 || code2 < 0 || code2 > 59) {
             scan_err0(lc, _("Bad time specification."));
             /* NOT REACHED */
          }
+//       Dmsg2(000, "hour=%d min=%d\n", code, code2);
          set_bit(code, lrun.hour);
          lrun.minute = code2;
          have_hour = true;

2.0.3-maxbyteslist.patch:

--- NEW FILE 2.0.3-maxbyteslist.patch ---

 This patch adds the MaxVolBytes to the output of a "show pools" command.
 It fixes bug #814.  Apply it to Bacula version 2.0.3 with:

   cd <bacula-source>
   patch -p0 <2.0.3-maxbyteslist.patch
   make
   ...
   make install


Index: src/dird/dird_conf.c
===================================================================
--- src/dird/dird_conf.c	(revision 4349)
+++ src/dird/dird_conf.c	(working copy)
@@ -844,10 +844,13 @@
               NPRT(res->res_pool.label_format));
       sendit(sock, _("      CleaningPrefix=%s LabelType=%d\n"),
               NPRT(res->res_pool.cleaning_prefix), res->res_pool.LabelType);
-      sendit(sock, _("      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"),
+      sendit(sock, _("      RecyleOldest=%d PurgeOldest=%d\n"), 
               res->res_pool.recycle_oldest_volume,
-              res->res_pool.purge_oldest_volume,
-              res->res_pool.MaxVolJobs, res->res_pool.MaxVolFiles);
+              res->res_pool.purge_oldest_volume);
+      sendit(sock, _("      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"),
+              res->res_pool.MaxVolJobs, 
+              res->res_pool.MaxVolFiles,
+              edit_uint64(res->res_pool.MaxVolFiles, ed1));
       sendit(sock, _("      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"),
               edit_utime(res->res_pool.MigrationTime, ed1, sizeof(ed1)),
               edit_uint64(res->res_pool.MigrationHighBytes, ed2),

2.0.3-maxwaittime.patch:

--- NEW FILE 2.0.3-maxwaittime.patch ---

This patch should fix the logic error in checking for the MaxWaitTime of
a job in src/dird/job.c.  It fixes bug #802.

Apply it to Bacula version 2.0.3 with:

  cd <bacula-source>
  patch -p0 <2.0.3-maxwaittime.patch
  make
  ...
  make install



Index: src/dird/job.c
===================================================================
--- src/dird/job.c	(revision 4349)
+++ src/dird/job.c	(working copy)
@@ -481,7 +481,6 @@
 static bool job_check_maxwaittime(JCR *control_jcr, JCR *jcr)
 {
    bool cancel = false;
-   bool ok_to_cancel = false;
    JOB *job = jcr->job;
 
    if (job_canceled(jcr)) {
@@ -493,69 +492,18 @@
    } 
    if (jcr->JobLevel == L_FULL && job->FullMaxWaitTime != 0 &&
          (watchdog_time - jcr->start_time) >= job->FullMaxWaitTime) {
-      ok_to_cancel = true;
+      cancel = true;
    } else if (jcr->JobLevel == L_DIFFERENTIAL && job->DiffMaxWaitTime != 0 &&
          (watchdog_time - jcr->start_time) >= job->DiffMaxWaitTime) {
-      ok_to_cancel = true;
+      cancel = true;
    } else if (jcr->JobLevel == L_INCREMENTAL && job->IncMaxWaitTime != 0 &&
          (watchdog_time - jcr->start_time) >= job->IncMaxWaitTime) {
-      ok_to_cancel = true;
+      cancel = true;
    } else if (job->MaxWaitTime != 0 &&
          (watchdog_time - jcr->start_time) >= job->MaxWaitTime) {
-      ok_to_cancel = true;
-   }
-   if (!ok_to_cancel) {
-      return false;
-   }
-
-/*
- * I don't see the need for all this -- kes 17Dec06
- */
-#ifdef xxx
-   Dmsg3(800, "Job %d (%s): MaxWaitTime of %d seconds exceeded, "
-         "checking status\n",
-         jcr->JobId, jcr->Job, job->MaxWaitTime);
-   switch (jcr->JobStatus) {
-   case JS_Created:
-   case JS_Blocked:
-   case JS_WaitFD:
-   case JS_WaitSD:
-   case JS_WaitStoreRes:
-   case JS_WaitClientRes:
-   case JS_WaitJobRes:
-   case JS_WaitPriority:
-   case JS_WaitMaxJobs:
-   case JS_WaitStartTime:
       cancel = true;
-      Dmsg0(200, "JCR blocked in #1\n");
-      break;
-   case JS_Running:
-      Dmsg0(800, "JCR running, checking SD status\n");
-      switch (jcr->SDJobStatus) {
-      case JS_WaitMount:
-      case JS_WaitMedia:
-      case JS_WaitFD:
-         cancel = true;
-         Dmsg0(800, "JCR blocked in #2\n");
-         break;
-      default:
-         Dmsg0(800, "JCR not blocked in #2\n");
-         break;
-      }
-      break;
-   case JS_Terminated:
-   case JS_ErrorTerminated:
-   case JS_Canceled:
-   case JS_FatalError:
-      Dmsg0(800, "JCR already dead in #3\n");
-      break;
-   default:
-      Jmsg1(jcr, M_ERROR, 0, _("Unhandled job status code %d\n"),
-            jcr->JobStatus);
    }
-   Dmsg3(800, "MaxWaitTime result: %scancel JCR %p (%s)\n",
-         cancel ? "" : "do not ", jcr, jcr->Job);
-#endif
+
    return cancel;
 }
 
@@ -574,36 +522,6 @@
       return false;
    }
 
-#ifdef xxx
-   switch (jcr->JobStatus) {
-   case JS_Created:
-   case JS_Running:
-   case JS_Blocked:
-   case JS_WaitFD:
-   case JS_WaitSD:
-   case JS_WaitStoreRes:
-   case JS_WaitClientRes:
-   case JS_WaitJobRes:
-   case JS_WaitPriority:
-   case JS_WaitMaxJobs:
-   case JS_WaitStartTime:
-   case JS_Differences:
-      cancel = true;
-      break;
-   case JS_Terminated:
-   case JS_ErrorTerminated:
-   case JS_Canceled:
-   case JS_FatalError:
-      cancel = false;
-      break;
-   default:
-      Jmsg1(jcr, M_ERROR, 0, _("Unhandled job status code %d\n"),
-            jcr->JobStatus);
-   }
-
-   Dmsg3(200, "MaxRunTime result: %scancel JCR %p (%s)\n",
-         cancel ? "" : "do not ", jcr, jcr->Job);
-#endif
    return true;
 }
 

2.0.3-scheduler-next-hour.patch:

--- NEW FILE 2.0.3-scheduler-next-hour.patch ---

 This patch should fix bug #812 where the DST time shift was 
 incorrectly handled. This patch was submitted by Martin Simmons.
 Apply it to Bacula version 2.0.3 with:

  cd <bacula-source>
  patch -p0 <2.0.3-scheduler-next-hour.patch
  make
  ...
  make install

Index: src/dird/scheduler.c
===================================================================
--- src/dird/scheduler.c	(revision 4445)
+++ src/dird/scheduler.c	(working copy)
@@ -175,11 +175,11 @@
       }
       /* Recheck at least once per minute */
       bmicrosleep((next_check_secs < twait)?next_check_secs:twait, 0);
-      /* Attempt to handle clock shift from/to daylight savings time
+      /* Attempt to handle clock shift (but not daylight savings time changes)
        * we allow a skew of 10 seconds before invalidating everything.
        */
       now = time(NULL);
-      if (now < prev+10 || now > (prev+next_check_secs+10)) {
+      if (now < prev-10 || now > (prev+next_check_secs+10)) {
          schedules_invalidated = true;
       }
    }
@@ -284,6 +284,9 @@
    wom = mday / 7;
    woy = tm_woy(now);                     /* get week of year */
 
+   Dmsg7(dbglvl, "now = %x: h=%d m=%d md=%d wd=%d wom=%d woy=%d\n",
+	 now, hour, month, mday, wday, wom, woy);
+
    /*
     * Compute values for next hour from now.
     * We do this to be sure we don't miss a job while
@@ -299,6 +302,9 @@
    nh_wom = nh_mday / 7;
    nh_woy = tm_woy(now);                     /* get week of year */
 
+   Dmsg7(dbglvl, "nh = %x: h=%d m=%d md=%d wd=%d wom=%d woy=%d\n",
+	 next_hour, nh_hour, nh_month, nh_mday, nh_wday, nh_wom, nh_woy);
+
    /* Loop through all jobs */
    LockRes();
    foreach_res(job, R_JOB) {
@@ -351,24 +357,20 @@
 
          Dmsg3(dbglvl, "run@%p: run_now=%d run_nh=%d\n", run, run_now, run_nh);
 
-         /* find time (time_t) job is to be run */
-         (void)localtime_r(&now, &tm);      /* reset tm structure */
-         tm.tm_min = run->minute;     /* set run minute */
-         tm.tm_sec = 0;               /* zero secs */
-         if (run_now) {
-            runtime = mktime(&tm);
-            add_job(job, run, now, runtime);
-         }
-         /* If job is to be run in the next hour schedule it */
-         if (run_nh) {
-            /* Set correct values */
-            tm.tm_hour = nh_hour;
-            tm.tm_mday = nh_mday + 1; /* fixup because we biased for tests above */
-            tm.tm_mon = nh_month;
-            tm.tm_year = nh_year;
-            runtime = mktime(&tm);
-            add_job(job, run, now, runtime);
-         }
+	 if (run_now || run_nh) {
+	   /* find time (time_t) job is to be run */
+	   (void)localtime_r(&now, &tm);      /* reset tm structure */
+	   tm.tm_min = run->minute;     /* set run minute */
+	   tm.tm_sec = 0;               /* zero secs */
+	   runtime = mktime(&tm);
+	   if (run_now) {
+	     add_job(job, run, now, runtime);
+	   }
+	   /* If job is to be run in the next hour schedule it */
+	   if (run_nh) {
+	     add_job(job, run, now, runtime + 3600);
+	   }
+	 }
       }
    }
    UnlockRes();

2.0.3-tls-disconnect.patch:

--- NEW FILE 2.0.3-tls-disconnect.patch ---

This patch should fix the spurious connection drops that fail jobs
as reported in bug #888.
Apply it to version 2.0.3 (possibly earlier versions of 2.0) with:

  cd <bacula-source>
  patch -p0 <2.0.3-tls-disconnect.patch
  make
  ...
  make install

Index: src/lib/tls.c
===================================================================
--- src/lib/tls.c	(revision 4668)
+++ src/lib/tls.c	(working copy)
@@ -540,14 +540,6 @@
     * The first time to initiate the shutdown handshake, and the second to
     * receive the peer's reply.
     *
-    * However, it is valid to close the SSL connection after the initial
-    * shutdown notification is sent to the peer, without waiting for the
-    * peer's reply, as long as you do not plan to re-use that particular
-    * SSL connection object.
-    *
-    * Because we do not re-use SSL connection objects, I do not bother
-    * calling SSL_shutdown a second time.
-    *
     * In addition, if the underlying socket is blocking, SSL_shutdown()
     * will not return until the current stage of the shutdown process has
     * completed or an error has occured. By setting the socket blocking
@@ -560,6 +552,10 @@
    flags = bnet_set_blocking(bsock);
 
    err = SSL_shutdown(bsock->tls->openssl);
+   if (err == 0) {
+      /* Finish up the closing */
+      err = SSL_shutdown(bsock->tls->openssl);
+   }
 
    switch (SSL_get_error(bsock->tls->openssl, err)) {
       case SSL_ERROR_NONE:
@@ -574,8 +570,6 @@
          break;
    }
 
-   /* Restore saved flags */
-   bnet_restore_blocking(bsock, flags);
 }
 
 /* Does all the manual labor for tls_bsock_readn() and tls_bsock_writen() */

2.0.3-verify.patch:

--- NEW FILE 2.0.3-verify.patch ---
This patch should fix the problem reported in bug #803 where a Verify 
job select the JobId to verified at schedule time rather than at runtime.
This makes it difficult or impossible to schedule a verify just after
a backup.

Apply this patch to Bacula version 2.0.3 (probably 2.0.2 as well) with:

  cd <bacula-source>
  patch -p0 <2.0.3-verify.patch
  make
  ...
  make install

Index: src/dird/verify.c
===================================================================
--- src/dird/verify.c	(revision 4353)
+++ src/dird/verify.c	(working copy)
@@ -40,6 +25,21 @@
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf at fsfeurope.org.
 */
+/*
+ *
+ *   Bacula Director -- verify.c -- responsible for running file verification
+ *
+ *     Kern Sibbald, October MM
+ *
+ *  Basic tasks done here:
+ *     Open DB
+ *     Open connection with File daemon and pass him commands
+ *       to do the verify.
+ *     When the File daemon sends the attributes, compare them to
+ *       what is in the DB.
+ *
+ *   Version $Id$
+ */
 
 
 #include "bacula.h"
@@ -66,6 +66,22 @@
  */
 bool do_verify_init(JCR *jcr) 
 {
+   return true;
+}
+
+
+/*
+ * Do a verification of the specified files against the Catlaog
+ *
+ *  Returns:  false on failure
+ *            true  on success
+ */
+bool do_verify(JCR *jcr)
+{
+   const char *level;
+   BSOCK   *fd;
+   int stat;
+   char ed1[100];
    JOB_DBR jr;
    JobId_t verify_jobid = 0;
    const char *Name;
@@ -74,12 +90,16 @@
 
    memset(&jcr->previous_jr, 0, sizeof(jcr->previous_jr));
 
-   Dmsg1(9, "bdird: created client %s record\n", jcr->client->hdr.name);
-
    /*
-    * Find JobId of last job that ran.  E.g.
-    *   for VERIFY_CATALOG we want the JobId of the last INIT.
-    *   for VERIFY_VOLUME_TO_CATALOG, we want the JobId of the
+    * Find JobId of last job that ran. Note, we do this when
+    *   the job actually starts running, not at schedule time,
+    *   so that we find the last job that terminated before
+    *   this job runs rather than before it is scheduled. This
+    *   permits scheduling a Backup and Verify at the same time,
+    *   but with the Verify at a lower priority.
+    *
+    *   For VERIFY_CATALOG we want the JobId of the last INIT.
+    *   For VERIFY_VOLUME_TO_CATALOG, we want the JobId of the
     *       last backup Job.
     */
    if (jcr->JobLevel == L_VERIFY_CATALOG ||
@@ -89,7 +109,7 @@
       if (jcr->verify_job &&
           (jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ||
            jcr->JobLevel == L_VERIFY_DISK_TO_CATALOG)) {
-         Name = jcr->verify_job->hdr.name;
+         Name = jcr->verify_job->name();  
       } else {
          Name = NULL;
       }
@@ -149,23 +169,7 @@
       jcr->fileset = jcr->verify_job->fileset;
    }
    Dmsg2(100, "ClientId=%u JobLevel=%c\n", jcr->previous_jr.ClientId, jcr->JobLevel);
-   return true;
-}
 
-
-/*
- * Do a verification of the specified files against the Catlaog
- *
- *  Returns:  false on failure
- *            true  on success
- */
-bool do_verify(JCR *jcr)
-{
-   const char *level;
-   BSOCK   *fd;
-   int stat;
-   char ed1[100];
-
    if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
       return false;

bacula-config.patch:

--- NEW FILE bacula-config.patch ---
--- bacula-2.0.2/src/gnome2-console/gnome-console.conf.in.orig	2007-02-06 13:35:12.000000000 +0100
+++ bacula-2.0.2/src/gnome2-console/gnome-console.conf.in	2007-02-06 13:35:25.000000000 +0100
@@ -3,9 +3,9 @@
 #
 
 Director {
-  Name = @hostname at -dir
+  Name = bacula-dir
   DIRport = @dir_port@
-  address = @hostname@
+  address = server.example.com
   Password = "@dir_password@"
 }
 
--- bacula-2.0.2/src/dird/bacula-dir.conf.in.orig	2007-02-06 13:33:19.000000000 +0100
+++ bacula-2.0.2/src/dird/bacula-dir.conf.in	2007-02-06 13:34:49.000000000 +0100
@@ -13,7 +13,7 @@
 #
 
 Director {                            # define myself
-  Name = @hostname at -dir
+  Name = bacula-dir
   DIRport = @dir_port@                # where we listen for UA connections
   QueryFile = "@scriptdir@/query.sql"
   WorkingDirectory = "@working_dir@"
@@ -27,7 +27,7 @@
   Name = "DefaultJob"
   Type = Backup
   Level = Incremental
-  Client = @hostname at -fd 
+  Client = bacula-fd 
   FileSet = "Full Set"
   Schedule = "WeeklyCycle"
   Storage = File
@@ -48,7 +48,7 @@
 
 #Job {
 #  Name = "Client2"
-#  Client = @hostname at 2-fd
+#  Client = bacula2-fd
 #  JobDefs = "DefaultJob"
 #  Write Bootstrap = "@working_dir@/Client2.bsr"
 #}
@@ -75,7 +75,7 @@
 Job {
   Name = "RestoreFiles"
   Type = Restore
-  Client=@hostname at -fd                 
+  Client=bacula-fd                 
   FileSet="Full Set"                  
   Storage = File                      
   Pool = Default
@@ -149,8 +149,8 @@
 
 # Client (File Services) to backup
 Client {
-  Name = @hostname at -fd
-  Address = @hostname@
+  Name = bacula-fd
+  Address = client.example.com
   FDPort = @fd_port@
   Catalog = MyCatalog
   Password = "@fd_password@"          # password for FileDaemon
@@ -164,8 +164,8 @@
 #  You should change Name, Address, and Password before using
 #
 #Client {
-#  Name = @hostname at 2-fd                
-#  Address = @hostname at 2
+#  Name = bacula2-fd                
+#  Address = client2.example.com
 #  FDPort = @fd_port@
 #  Catalog = MyCatalog
 #  Password = "@fd_password at 2"         # password for FileDaemon 2
@@ -179,7 +179,7 @@
 Storage {
   Name = File
 # Do not use "localhost" here    
-  Address = @hostname@                # N.B. Use a fully qualified name here
+  Address = storage.example.com        # N.B. Use a fully qualified name here
   SDPort = @sd_port@
   Password = "@sd_password@"
   Device = FileStorage
@@ -192,7 +192,7 @@
 #Storage {
 #  Name = DDS-4    
 #  Do not use "localhost" here
-#  Address = @hostname@                # N.B. Use a fully qualified name here
+#  Address = storage.example.com       # N.B. Use a fully qualified name here
 #  SDPort = @sd_port@
 #  Password = "@sd_password@"          # password for Storage daemon
 #  Device = DDS-4                      # must be same as Device in Storage daemon
@@ -204,7 +204,7 @@
 #Storage {
 #  Name = "8mmDrive"
 #  Do not use "localhost" here
-#  Address = @hostname@                # N.B. Use a fully qualified name here
+#  Address = storage.example.com       # N.B. Use a fully qualified name here
 #  SDPort = @sd_port@
 #  Password = "@sd_password@"
 #  Device = "Exabyte 8mm"
@@ -215,7 +215,7 @@
 #Storage {
 #  Name = "DVD"
 #  Do not use "localhost" here
-#  Address = @hostname@                # N.B. Use a fully qualified name here
+#  Address = storage.example.com       # N.B. Use a fully qualified name here
 #  SDPort = @sd_port@
 #  Password = "@sd_password@"
 #  Device = "DVD Writer"
@@ -285,7 +285,7 @@
 # Restricted console used by tray-monitor to get the status of the director
 #
 Console {
-  Name = @hostname at -mon
+  Name = bacula-mon
   Password = "@mon_dir_password@"
   CommandACL = status, .status
 }
--- bacula-2.0.2/src/filed/bacula-fd.conf.in.orig	2007-02-06 13:30:59.000000000 +0100
+++ bacula-2.0.2/src/filed/bacula-fd.conf.in	2007-02-06 13:31:25.000000000 +0100
@@ -11,7 +11,7 @@
 # List Directors who are permitted to contact this File daemon
 #
 Director {
-  Name = @hostname at -dir
+  Name = bacula-dir
   Password = "@fd_password@"
 }
 
@@ -20,7 +20,7 @@
 #   status of the file daemon
 #
 Director {
-  Name = @hostname at -mon
+  Name = bacula-mon
   Password = "@mon_fd_password@"
   Monitor = yes
 }
@@ -29,7 +29,7 @@
 # "Global" File daemon configuration specifications
 #
 FileDaemon {                          # this is me
-  Name = @hostname at -fd
+  Name = bacula-fd
   FDport = @fd_port@                  # where we listen for the director
   WorkingDirectory = @working_dir@
   Pid Directory = @piddir@
@@ -39,5 +39,5 @@
 # Send all messages except skipped files back to Director
 Messages {
   Name = Standard
-  director = @hostname at -dir = all, !skipped, !restored
+  director = bacula-dir = all, !skipped, !restored
 }
--- bacula-2.0.2/src/console/bconsole.conf.in.orig	2007-02-06 13:32:30.000000000 +0100
+++ bacula-2.0.2/src/console/bconsole.conf.in	2007-02-06 13:33:06.000000000 +0100
@@ -3,8 +3,8 @@
 #
 
 Director {
-  Name = @hostname at -dir
+  Name = bacula-dir
   DIRport = @dir_port@
-  address = @hostname@
+  address = server.example.com
   Password = "@dir_password@"
 }
--- bacula-2.0.2/src/stored/bacula-sd.conf.in.orig	2007-02-06 13:31:56.000000000 +0100
+++ bacula-2.0.2/src/stored/bacula-sd.conf.in	2007-02-06 13:32:15.000000000 +0100
@@ -11,7 +11,7 @@
 #
 
 Storage {                             # definition of myself
-  Name = @hostname at -sd
+  Name = bacula-sd
   SDPort = @sd_port@                  # Director's port      
   WorkingDirectory = "@working_dir@"
   Pid Directory = "@piddir@"
@@ -22,7 +22,7 @@
 # List Directors who are permitted to contact Storage daemon
 #
 Director {
-  Name = @hostname at -dir
+  Name = bacula-dir
   Password = "@sd_password@"
 }
 
@@ -31,7 +31,7 @@
 #   status of the storage daemon
 #
 Director {
-  Name = @hostname at -mon
+  Name = bacula-mon
   Password = "@mon_sd_password@"
   Monitor = yes
 }
@@ -204,5 +204,5 @@
 #
 Messages {
   Name = Standard
-  director = @hostname at -dir = all
+  director = bacula-dir = all
 }
--- bacula-2.0.2/src/wx-console/wx-console.conf.in.orig	2007-02-06 13:37:12.000000000 +0100
+++ bacula-2.0.2/src/wx-console/wx-console.conf.in	2007-02-06 13:47:02.000000000 +0100
@@ -3,8 +3,8 @@
 #
 
 Director {
-  Name = @hostname at -dir
+  Name = bacula-dir
   DIRport = @dir_port@
-  address = @hostname@
+  address = server.example.com
   Password = "@dir_password@"
 }
--- bacula-2.0.2/src/tray-monitor/tray-monitor.conf.in.orig	2007-02-06 13:47:13.000000000 +0100
+++ bacula-2.0.2/src/tray-monitor/tray-monitor.conf.in	2007-02-06 13:47:55.000000000 +0100
@@ -3,27 +3,27 @@
 #
 
 Monitor {
-  Name = @hostname at -mon
+  Name = bacula-mon
   Password = "@mon_dir_password@"         # password for the Directors   
   RefreshInterval = 5 seconds
 }
    
 Client {
-  Name = @hostname at -fd
-  Address = @hostname@
+  Name = bacula-fd
+  Address = client.example.com
   FDPort = @fd_port@
   Password = "@mon_fd_password@"          # password for FileDaemon
 }
 
 Storage {
-  Name = @hostname at -sd
-  Address = @hostname@
+  Name = bacula-sd
+  Address = storage.example.com
   SDPort = @sd_port@
   Password = "@mon_sd_password@"          # password for StorageDaemon
 }
 
 Director {
-  Name = @hostname at -dir
+  Name = bacula-dir
   DIRport = @dir_port@
-  address = @hostname@
-}
\ No newline at end of file
+  address = server.example.com
+}


--- NEW FILE bacula-dir.init ---
#!/bin/bash
#
# bacula-dir    This shell script takes care of starting and stopping
#               the bacula-dir daemon, the backup director controling
#               the backup jobs.
#
# chkconfig: - 80 20
# description: Bacula-dir is the Backup-server, which is the program \
#              that schedules backups and controls the bacula-client and \
#              the bacula-storage daemons.
# processname: bacula-dir
# config: /etc/bacula/bacula-dir.conf
# pidfile: /var/run/bacula-dir.9101.pid

# Source function library.
. /etc/init.d/functions

# Source configuration.
if [ -f /etc/sysconfig/bacula-dir ] ; then
        . /etc/sysconfig/bacula-dir
fi

RETVAL=0
prog="bacula-dir"
CONFIG="/etc/bacula/bacula-dir.conf"
OPTS="-c $CONFIG"

checkconf() {
	# Check if we still have our @@PLACEHOLDERS@@ in the config.
	# If yes, refuse to start, the user has never touched the config.
	grep -q '^[^#].*_PASSWORD@@' $CONFIG
	if [ $? -eq 0 ]; then
		echo -n "Error: Not been configured"
		echo_failure
		echo
		exit 1
	fi
}


checkdatabase() {
	# First, get the currently selected database backend from the
	# alternatives system.
	DB=$(LANG=C alternatives --display bacula-dir | grep 'link currently points to' | awk -F. '{ print $2 }')
	case "$DB" in
		sqlite)
			# No check needed to see if the Database is running
			;;
		mysql)
			# Check if mysqld is running
			service mysqld status > /dev/null 2>&1
			if [ $? -ne 0 ]; then
				echo -n "Error: MySQL not running"
				echo_failure
				echo
				exit 1
			fi
			;;
		postgresql)
			# Check if postgresql is running
			service postgresql status > /dev/null 2>&1
			if [ $? -ne 0 ]; then
				echo -n "Error: PostgreSQL not running"
				echo_failure
				echo
				exit 1
			fi
			;;
		*)
			echo -n "Error: Unknown database backend"
			echo_failure
			echo
			exit 1
			;;
	esac
}

start() {
	echo -n "Starting $prog: "
	checkconf
#	Removed for now, as the db might not be on localhost
#	checkdatabase
	daemon $prog $OPTS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
	return $RETVAL
}	

stop() {
	echo -n "Shutting down $prog: "
	killproc $prog
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
	return $RETVAL
}

case "$1" in
    start)
		start
		;;
    stop)
		stop
		;;
    status)
		status $prog
		;;
    restart)
    	stop
		start
		RETVAL=$?
		;;
    reload)
		;;
    condrestart)
		if [ -f /var/lock/subsys/$prog ]; then
			stop
			start
			RETVAL=$?
		fi
		;;
    *)
	echo "Usage: $prog {start|stop|status|reload|restart}"
	exit 1
	;;
esac
exit $?

bacula-director-configuration.patch:

--- NEW FILE bacula-director-configuration.patch ---
--- bacula-1.38.11/src/dird/bacula-dir.conf.in.orig	2006-09-03 03:13:26.000000000 +0200
+++ bacula-1.38.11/src/dird/bacula-dir.conf.in	2006-09-03 03:14:46.000000000 +0200
@@ -15,7 +15,7 @@
 Director {                            # define myself
   Name = @hostname at -dir
   DIRport = @dir_port@                # where we listen for UA connections
-  QueryFile = "@scriptdir@/query.sql"
+  QueryFile = "/etc/bacula/query.sql"
   WorkingDirectory = "@working_dir@"
   PidDirectory = "@piddir@"
   Maximum Concurrent Jobs = 1
@@ -101,11 +101,10 @@
 #    if you have other partitons such as /usr or /home
 #    you will probably want to add them too.
 #
-#  By default this is defined to point to the Bacula build
-#    directory to give a reasonable FileSet to backup to
-#    disk storage during initial testing.
+#  This File-directive would backup your whole filesystem.
+#    It is disabled by default
 #
-    File = @BUILD_DIR@
+#    File = /
   }
 
 #
@@ -266,7 +266,7 @@
   mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r"
   mail = @job_email@ = all, !skipped
   console = all, !skipped, !saved
-  append = "@working_dir@/log" = all, !skipped
+  append = "/var/log/bacula.log" = all, !skipped
 }



--- NEW FILE bacula-fd.init ---
#!/bin/bash
#
# bacula-fd     This shell script takes care of starting and stopping
#               the bacula-fd daemon, the backup client enabling bacula
#               to backup the local machine.
#
# chkconfig: - 80 20
# description: Bacula-fd is a Backup-client, which is the program \
#              that enables the bacula-server to backup the local \
#              machine.
# processname: bacula-fd
# config: /etc/bacula/bacula-fd.conf
# pidfile: /var/run/bacula-fd.9102.pid

# Source function library.
. /etc/init.d/functions

# Source configuration.
if [ -f /etc/sysconfig/bacula-fd ] ; then
        . /etc/sysconfig/bacula-fd
fi

RETVAL=0
prog="bacula-fd"
CONFIG="/etc/bacula/bacula-fd.conf"
OPTS="-c $CONFIG"

checkconf() {
	# Check if we still have our @@PLACEHOLDERS@@ in the config.
	# If yes, refuse to start, the user has never touched the config.
	grep -q '_PASSWORD@@' $CONFIG
	if [ $? -eq 0 ]; then
		echo -n "Error: Not been configured"
		echo_failure
		echo
		exit 1
	fi
}


start() {
	echo -n "Starting $prog: "
	checkconf
	daemon $prog $OPTS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
	return $RETVAL
}	

stop() {
	echo -n "Shutting down $prog: "
	killproc $prog
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
	return $RETVAL
}

case "$1" in
    start)
		start
		;;
    stop)
		stop
		;;
    status)
		status $prog
		;;
    restart)
    	stop
		start
		RETVAL=$?
		;;
    reload)
		;;
    condrestart)
		if [ -f /var/lock/subsys/$prog ]; then
			stop
			start
			RETVAL=$?
		fi
		;;
    *)
	echo "Usage: $prog {start|stop|status|reload|restart}"
	exit 1
	;;
esac
exit $?


--- NEW FILE bacula-gconsole.desktop ---
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Bacula Console
GenericName=Backup Management Console
Comment=Control your Bacula Server
Exec=gnome-console -c /etc/bacula/wxconsole.conf
Icon=bacula.png
Terminal=false
Type=Application
Categories=System;Application;Utility


bacula-pamd.patch:

--- NEW FILE bacula-pamd.patch ---
--- bacula-2.0.3/scripts/wxconsole.pamd.orig    2007-07-11 18:43:10.000000000 +0200
+++ bacula-2.0.3/scripts/wxconsole.pamd 2007-07-11 18:43:23.000000000 +0200
@@ -1,7 +1,7 @@
 #%PAM-1.0
 auth       sufficient   pam_rootok.so
 auth       sufficient   pam_timestamp.so
-auth       required     pam_stack.so service=system-auth
+auth       include      system-auth
 session    optional     pam_xauth.so
 session    optional     pam_timestamp.so
 account    required     pam_permit.so
--- bacula-2.0.3/scripts/gnome-console.pamd.orig        2007-07-11 18:42:33.000000000 +0200
+++ bacula-2.0.3/scripts/gnome-console.pamd     2007-07-11 18:42:57.000000000 +0200
@@ -1,7 +1,7 @@
 #%PAM-1.0
 auth       sufficient   pam_rootok.so
 auth       sufficient   pam_timestamp.so
-auth       required     pam_stack.so service=system-auth
+auth       include      system-auth
 session    optional     pam_xauth.so
 session    optional     pam_timestamp.so
 account    required     pam_permit.so



--- NEW FILE bacula-sd.init ---
#!/bin/bash
#
# bacula-sd     This shell script takes care of starting and stopping
#               the bacula-sd daemon, the storage daemon responsible
#               for accessing the backup storage device.
#
# chkconfig: - 80 20
# description: Bacula-sd is the storage-server, which is the program \
#              that accesses the storage device.
# processname: bacula-sd
# config: /etc/bacula/bacula-sd.conf
# pidfile: /var/run/bacula-dir.9103.pid

# Source function library.
. /etc/init.d/functions

# Source configuration.
if [ -f /etc/sysconfig/bacula-sd ] ; then
        . /etc/sysconfig/bacula-sd
fi

RETVAL=0
prog="bacula-sd"
CONFIG="/etc/bacula/bacula-sd.conf"
OPTS="-c $CONFIG"

checkconf() {
	# Check if we still have our @@PLACEHOLDERS@@ in the config.
	# If yes, refuse to start, the user has never touched the config.
	grep -q '^[^#].*_PASSWORD@@' $CONFIG
	if [ $? -eq 0 ]; then
		echo -n "Error: Not been configured"
		echo_failure
		echo
		exit 1
	fi
}


checkdatabase() {
	# First, get the currently selected database backend from the
	# alternatives system.
	DB=$(LANG=C alternatives --display bacula-sd | grep 'link currently points to' | awk -F. '{ print $2 }')
	case "$DB" in
		sqlite)
			# No check needed to see if the Database is running
			;;
		mysql)
			# Check if mysqld is running
			service mysqld status > /dev/null 2>&1
			if [ $? -ne 0 ]; then
				echo -n "Error: MySQL not running"
				echo_failure
				echo
				exit 1
			fi
			;;
		postgresql)
			# Check if postgresql is running
			service postgresql status > /dev/null 2>&1
			if [ $? -ne 0 ]; then
				echo -n "Error: PostgreSQL not running"
				echo_failure
				echo
				exit 1
			fi
			;;
		*)
			echo -n "Error: Unknown database backend"
			echo_failure
			echo
			exit 1
			;;
	esac
}

start() {
	echo -n "Starting $prog: "
	checkconf
# Disabled, the DB does not necessarily run on the same machine
#	checkdatabase
	daemon $prog $OPTS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
	return $RETVAL
}	

stop() {
	echo -n "Shutting down $prog: "
	killproc $prog
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
	return $RETVAL
}

case "$1" in
    start)
		start
		;;
    stop)
		stop
		;;
    status)
		status $prog
		;;
    restart)
    	stop
		start
		RETVAL=$?
		;;
    reload)
		;;
    condrestart)
		if [ -f /var/lock/subsys/$prog ]; then
			stop
			start
			RETVAL=$?
		fi
		;;
    *)
	echo "Usage: $prog {start|stop|status|reload|restart}"
	exit 1
	;;
esac
exit $?


--- NEW FILE bacula-traymonitor.desktop ---
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Bacula Monitor
GenericName=Bacula Tray Monitor
Comment=Monitor your Bacula Backup server
Exec=bacula-tray-monitor -c /etc/bacula/tray-monitor.conf
Icon=bacula-tray-monitor.xpm
Terminal=false
Type=Application
Categories=System;Application;Utility


--- NEW FILE bacula-wxconsole.desktop ---
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Bacula WX Console
GenericName=Backup Management Console
Comment=Control your Bacula Server
Exec=wxconsole -c /etc/bacula/wxconsole.conf
Icon=wxwin16x16.xpm
Terminal=false
Type=Application
Categories=System;Application;Utility

bacula-wxconsole.patch:

--- NEW FILE bacula-wxconsole.patch ---
--- bacula-2.0.2/src/wx-console/wxbrestorepanel.cpp.orig	2007-02-06 21:32:02.000000000 +0100
+++ bacula-2.0.2/src/wx-console/wxbrestorepanel.cpp	2007-02-06 21:32:20.000000000 +0100
@@ -80,6 +80,7 @@
 #include "unmarked.xpm"
 #include "marked.xpm"
 #include "partmarked.xpm"
+#include <wx/imaglist.h>
 #include <wx/listimpl.cpp>
 
 /* A macro named Yield is defined under MinGW */


--- NEW FILE bacula.logrotate ---
# Bacula logrotate script

/var/log/bacula/*.log {
    monthly
    rotate 4
    notifempty
    missingok
}



--- NEW FILE bacula.spec ---
%define working_dir	/var/spool/bacula
%define script_dir	/usr/libexec/bacula
#%define rescue_version	2.0.0
%define docs_version	%{version}
%define gui_version	%{version}
%define config_dir	%{_sysconfdir}/bacula

Summary: Cross platform network backup for Linux, Unix, Mac and Windows
Name: bacula
Version: 2.0.3
Release: 8%{?dist}
License: GPL
Group: System Environment/Daemons
Source0: http://download.sourceforge.net/bacula/bacula-%{version}.tar.gz
Source1: http://download.sourceforge.net/bacula/bacula-docs-%{docs_version}.tar.gz
#Source2: http://download.sourceforge.net/bacula/bacula-rescue-%{rescue_version}.tar.gz
Source3: bacula-gconsole.desktop
Source4: bacula-wxconsole.desktop
Source5: bacula-traymonitor.desktop
Source6: bacula.logrotate
Source7: bacula-fd.init
Source8: bacula-dir.init
Source9: bacula-sd.init
#Source10: http://download.sourceforge.net/bacula/bacula-gui-%{gui_version}.tar.gz
#Source11: bacula-web.apache
Patch0: bacula-director-configuration.patch
Patch1: bacula-config.patch
Patch2: bacula-wxconsole.patch
Patch3: bacula-pamd.patch
Patch4: 2.0.3-ampm.patch
Patch5: 2.0.3-maxbyteslist.patch
Patch6: 2.0.3-maxwaittime.patch
Patch7: 2.0.3-scheduler-next-hour.patch
Patch8: 2.0.3-verify.patch
Patch9: 2.0.3-tls-disconnect.patch
#Patch10: bacula-web-smarty.patch
URL: http://www.bacula.org
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: openssl-devel, atk-devel, ncurses-devel, pango-devel, perl
BuildRequires: libstdc++-devel, libxml2-devel, zlib-devel, pkgconfig
BuildRequires: libtermcap-devel, gtk2-devel, libgnomeui-devel, GConf2-devel
BuildRequires: glibc-devel, ORBit2-devel, libart_lgpl-devel, freetype-devel
BuildRequires: libbonobo-devel, libbonoboui-devel, bonobo-activation-devel
BuildRequires: mysql-devel, cdrecord, postgresql-devel, wxGTK-devel
BuildRequires: desktop-file-utils, python-devel, sqlite-devel, sed,
BuildRequires: libacl-devel, latex2html, tetex-latex, tetex, ghostscript

%if "%{fedora}" >= "7"
BuildRequires: tcp_wrappers-devel
%else
BuildRequires: tcp_wrappers
%endif

%description
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture and is
efficient and relatively easy to use, while offering many advanced
storage management features that make it easy to find and recover lost
or damaged files.


%package director-mysql
Summary: Bacula Director with MySQL database support
Group: System Environment/Daemons
Provides: bacula-director = %{version}-%{release}
Requires: bacula-director-common = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}
Requires: mysql-server

%description director-mysql
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the bacula director, the server which controls 
your backup run.
This director has support for the MySQL database.


%package director-sqlite
Summary: Bacula Director with sqlite database support
Group: System Environment/Daemons
Provides: bacula-director = %{version}-%{release}
Requires: bacula-director-common = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}

%description director-sqlite
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the bacula director, the server which controls 
your backup run.
This director has support for the sqlite database.


%package director-postgresql
Summary: Bacula Director with PostgresSQL database support
Group: System Environment/Daemons
Provides: bacula-director = %{version}-%{release}
Requires: bacula-director-common = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}
Requires: postgresql-server

%description director-postgresql
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the bacula director, the server which controls 
your backup run.
This director has support for the PostgresSQL database.


%package director-common
Summary: Common Bacula Director files
Group: System Environment/Daemons
Requires: bacula-director = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}
Requires(pre): fedora-usermgmt
Requires(postun): fedora-usermgmt

%description director-common
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the common director files, which are shared 
between all database backends. You have to select a possible
database backend though, which provides the needed bacula-director
dependency. Please choose from bacula-director-mysql,
bacula-director-sqlite or bacula-director-postgresql.


%package client
Summary: Bacula backup client
Group: System Environment/Daemons
Requires: bacula-common = %{version}-%{release}
Requires(post): /sbin/chkconfig
Requires(preun): /sbin/chkconfig
Requires(preun): /sbin/service
Requires(postun): /sbin/service

%description client
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the bacula client, the daemon running on the 
system to be backed up.


%package storage-common
Summary: Common Bacula storage daemon files
Group: System Environment/Daemons
Requires: bacula-storage = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}

%description storage-common
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the storage daemon, the daemon responsible for 
writing the data received from the clients onto tape drives or other 
mass storage devices.


%package storage-mysql
Summary: MySQL Bacula storage daemon files
Group: System Environment/Daemons
Provides: bacula-storage = %{version}-%{release}
Requires: bacula-storage-common = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}
Requires: mysql-server

%description storage-mysql
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the storage daemon, the daemon responsible for 
writing the data received from the clients onto tape drives or other 
mass storage devices.


%package storage-sqlite
Summary: SQLite Bacula storage daemon files
Group: System Environment/Daemons
Provides: bacula-storage = %{version}-%{release}
Requires: bacula-storage-common = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}

%description storage-sqlite
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the storage daemon, the daemon responsible for 
writing the data received from the clients onto tape drives or other 
mass storage devices.


%package storage-postgresql
Summary: Common Bacula storage daemon files
Group: System Environment/Daemons
Provides: bacula-storage = %{version}-%{release}
Requires: bacula-storage-common = %{version}-%{release}
Requires: bacula-common = %{version}-%{release}
Requires: postgresql-server

%description storage-postgresql
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the storage daemon, the daemon responsible for 
writing the data received from the clients onto tape drives or other 
mass storage devices.


%package common
Summary: Common Bacula utilities
Group: System Environment/Daemons
Requires(pre): fedora-usermgmt
Requires(postun): fedora-usermgmt

%description common
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.


%package console
Summary: Bacula management console
Group: System Environment/Daemons

%description console
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the command-line management console for the bacula 
backup system.


%package console-gnome
Summary: Bacula console for the Gnome desktop environment
Group: System Environment/Daemons
Requires: usermode

%description console-gnome
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the gnome version of the bacula management console


%package console-wxwidgets
Summary: Bacula console using the wx widgets toolkit
Group: System Environment/Daemons
Requires: usermode

%description console-wxwidgets
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the wxWidgets version of the bacula management 
console.


%package traymonitor
Summary: Bacula monitor for the Gnome and KDE system tray
Group: System Environment/Daemons

%description traymonitor
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the Gnome- and KDE-compatible tray monitor to 
monitor your bacula server.


#%package web
#Summary: Bacula Web Interface for monitoring the Backup status
#Group: System Environment/Daemons
#Conflicts: bacula-storage-sqlite
#Requires: php, webserver, php-pear-DB, php-gd, php-Smarty

#%description web
#Bacula is a set of programs that allow you to manage the backup,
#recovery, and verification of computer data across a network of
#different computers. It is based on a client/server architecture.

#This package contains the bacula-web PHP application, which is
#a management level tool for reporting Backup job status.


%package docs
Summary: Bacula documentation
Group: Documentation

%description docs
Bacula is a set of programs that allow you to manage the backup,
recovery, and verification of computer data across a network of
different computers. It is based on a client/server architecture.

This package contains the documentation for most of the bacula-packages.


%prep
%setup -q -c -n bacula-%{version}
%setup -q -a 1 -D -T
#%setup -q -a 2 -D -T
#%setup -q -a 10 -D -T

# Patching and other source preparation
pushd bacula-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p0
%patch5 -p0
%patch6 -p0
%patch7 -p0
%patch8 -p0
%patch9 -p0

# Remove execution permissions from files we're packaging as docs later on
find examples -type f | xargs chmod -x
find updatedb -type f | xargs chmod -x
popd

# Remove cvs left-overs
find -name '.cvsignore' | xargs rm -f 

# Fix perms of c files to silent rpmlint
find -type f -name '*.c' | xargs chmod -x 
find -type f -name '*.h' | xargs chmod -x 

# GUI Stuff is postponed for later
#pushd bacula-gui-%{gui_version}
#%patch10 -p0
#popd

# We are building the source several times, each with a different storage backend
mkdir bacula-mysql bacula-postgresql bacula-sqlite

%build
# Shell function to configure and build a Bacula tree
build() {
cp -rl ../bacula-%{version}/* .
%configure \
	--sysconfdir=%{_sysconfdir}/bacula \
	--with-dir-user=bacula \
	--with-dir-group=bacula \
	--with-sd-user=bacula \
	--with-sd-group=bacula \
	--with-fd-user=root \
	--with-fd-group=root \
	--with-dir-password=@@DIR_PASSWORD@@ \
	--with-fd-password=@@FD_PASSWORD@@ \
	--with-sd-password=@@SD_PASSWORD@@ \
	--with-mon-dir-password=@@MON_DIR_PASSWORD@@ \
	--with-mon-fd-password=@@MON_FD_PASSWORD@@ \
	--with-mon-sd-password=@@MON_SD_PASSWORD@@ \
	--with-working-dir=%{working_dir} \
	--with-scriptdir=%{script_dir} \
	--with-smtp-host=localhost \
	--with-subsys-dir=%{_localstatedir}/lock/subsys \
	--with-pid-dir=%{_localstatedir}/run \
	--enable-conio \
	--enable-largefile \
	--enable-gnome \
	--enable-wx-console \
	--enable-tray-monitor \
	--enable-build-dird \
	--enable-build-stored \
	--with-openssl \
	--with-tcp-wrappers \
	--with-python \
	--enable-smartalloc \
	--with-x \
	$*
# Scratch this, it is trouble
#	--with-readline \

if test $? != 0; then 
  tail -500 config.log
  : configure failed
  exit 1
fi

%{__make} %{?_smp_mflags}

}				

# Build sqlite director
pushd bacula-sqlite
%if 0%{?fedora}%{?rhel}
	%if 0%{?fedora}
		%if "%{fedora}" >= "5"
			%define	sqlite_suffix 3
			build --with-sqlite3
		%else
			build --with-sqlite
		%endif
	%endif
	%if 0%{?rhel}
		%if "%{rhel}" >=  "5"
			%define	sqlite_suffix 3
			build --with-sqlite3
		%else
			build --with-sqlite
		%endif
	%endif
%else
	echo 'Neither %%{fedora} nor %%{rhel} are defined.'
	echo 'Please call rpmbuild with at least --define "fedora 7" or --define "rhel 5"'
	echo 'depending on your release version you are building on.'
	exit 1
%endif
popd

# Build MySQL director
pushd bacula-mysql
	build --with-mysql
popd

# Build PostgreSQL director
pushd bacula-postgresql
	build --with-postgresql
popd

# Build the docs
pushd bacula-docs-%{docs_version}
 %configure --with-bacula=%{_builddir}/bacula-%{version}/bacula-%{version}
 make
popd

%install
rm -rf %{buildroot}

pushd bacula-sqlite
	make install DESTDIR=%{buildroot}
	mv %{buildroot}%{_sbindir}/bacula-dir  %{buildroot}%{_sbindir}/bacula-dir.sqlite
	mv %{buildroot}%{_sbindir}/dbcheck  %{buildroot}%{_sbindir}/dbcheck.sqlite
	mv %{buildroot}%{_sbindir}/bcopy  %{buildroot}%{_sbindir}/bcopy.sqlite
	mv %{buildroot}%{_sbindir}/bscan  %{buildroot}%{_sbindir}/bscan.sqlite

	for script in create_bacula_database drop_bacula_database drop_bacula_tables \
			grant_bacula_privileges make_bacula_tables make_catalog_backup \
			update_bacula_tables; do
		mv %{buildroot}%{_libexecdir}/bacula/${script} %{buildroot}%{_libexecdir}/bacula/${script}.sqlite
	done
popd

pushd bacula-mysql
	make install DESTDIR=%{buildroot}
	mv %{buildroot}%{_sbindir}/bacula-dir  %{buildroot}%{_sbindir}/bacula-dir.mysql
	mv %{buildroot}%{_sbindir}/dbcheck  %{buildroot}%{_sbindir}/dbcheck.mysql
	mv %{buildroot}%{_sbindir}/bcopy  %{buildroot}%{_sbindir}/bcopy.mysql
	mv %{buildroot}%{_sbindir}/bscan  %{buildroot}%{_sbindir}/bscan.mysql

	for script in create_bacula_database drop_bacula_database drop_bacula_tables \
			grant_bacula_privileges make_bacula_tables make_catalog_backup \
			update_bacula_tables; do
		mv %{buildroot}%{_libexecdir}/bacula/${script} %{buildroot}%{_libexecdir}/bacula/${script}.mysql
	done
popd

pushd bacula-postgresql
	make install DESTDIR=%{buildroot}
	mv %{buildroot}%{_sbindir}/bacula-dir  %{buildroot}%{_sbindir}/bacula-dir.postgresql
	mv %{buildroot}%{_sbindir}/dbcheck  %{buildroot}%{_sbindir}/dbcheck.postgresql
	mv %{buildroot}%{_sbindir}/bcopy  %{buildroot}%{_sbindir}/bcopy.postgresql
	mv %{buildroot}%{_sbindir}/bscan  %{buildroot}%{_sbindir}/bscan.postgresql

	for script in create_bacula_database drop_bacula_database drop_bacula_tables \
			grant_bacula_privileges make_bacula_tables make_catalog_backup \
			update_bacula_tables; do
		mv %{buildroot}%{_libexecdir}/bacula/${script} %{buildroot}%{_libexecdir}/bacula/${script}.postgresql
	done
popd

pushd bacula-docs-%{docs_version}
 # No install target anymore, we'll include the stuff directly in the %%files section
 #	make install DESTDIR=%{buildroot}
popd

# GUI is not being packaged yet
#pushd bacula-gui-%{gui_version}/bacula-web
#	mkdir -p %{buildroot}%{_datadir}/bacula-web
#	cp -r -p * %{buildroot}%{_datadir}/bacula-web
#	for f in ChangeLog CONTACT COPYING README TODO; do
#		rm -f %{buildroot}%{_datadir}/bacula-web/$f
#	done
#	rm -f %{buildroot}%{_datadir}/bacula-web/tsmarty2c.php
#	rm -rf %{buildroot}%{_datadir}/bacula-web/external_packages/smarty
#	mv %{buildroot}%{_datadir}/bacula-web/configs/bacula.conf %{buildroot}%{_sysconfdir}/bacula/bacula-web.conf
#	ln -sf /etc/bacula/bacula-web.conf %{buildroot}%{_datadir}/bacula-web/configs/bacula.conf
#	install -D -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/httpd/conf.d/bacula-web.conf
#	mkdir -p %{buildroot}%{_localstatedir}/cache/bacula
#popd


# Rename some manpages
# Not needed right-now
#mv %{buildroot}%{_mandir}/man1/bacula-tray-monitor.1 %{buildroot}%{_mandir}/man1/tray-monitor.1


# Fix some wrapper braindeadness
rm -f %{buildroot}%{_libexecdir}/bacula/bconsole
rm -f %{buildroot}%{_libexecdir}/bacula/gconsole
mv %{buildroot}%{_sbindir}/wx-console %{buildroot}%{_sbindir}/wxconsole
mv %{buildroot}%{_sysconfdir}/bacula/wx-console.conf %{buildroot}%{_sysconfdir}/bacula/wxconsole.conf


# Desktop Integration for the console apps and the traymonitor
mkdir -p %{buildroot}%{_bindir}
install -m 644 -D bacula-sqlite/scripts/bacula.png %{buildroot}%{_datadir}/pixmaps/bacula.png
install -m 644 -D bacula-sqlite/scripts/gnome-console.pamd %{buildroot}%{_sysconfdir}/pam.d/gnome-console
install -m 644 -D bacula-sqlite/scripts/gnome-console.console_apps %{buildroot}%{_sysconfdir}/security/console.apps/gnome-console
install -m 644 -D bacula-sqlite/src/wx-console/wxwin16x16.xpm %{buildroot}%{_datadir}/pixmaps/wxwin16x16.xpm
install -m 644 -D bacula-sqlite/scripts/wxconsole.pamd %{buildroot}%{_sysconfdir}/pam.d/wxconsole
install -m 644 -D bacula-sqlite/scripts/wxconsole.desktop.consolehelper %{buildroot}%{_sysconfdir}/security/console.apps/wxconsole
install -m 644 -D bacula-sqlite/src/tray-monitor/generic.xpm %{buildroot}%{_datadir}/pixmaps/bacula-tray-monitor.xpm

ln -sf consolehelper %{buildroot}%{_bindir}/gnome-console
ln -sf consolehelper %{buildroot}%{_bindir}/wxconsole

desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE3}
desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE4}
desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE5}


# logrotate
mkdir -p %{buildroot}%{_localstatedir}/log/bacula
install -m 644 -D %{SOURCE6} %{buildroot}%{_sysconfdir}/logrotate.d/bacula


# And logwatch
install -m 755 -D bacula-sqlite/scripts/logwatch/bacula %{buildroot}%{_sysconfdir}/logwatch/scripts/services/bacula
install -m 644 -D bacula-sqlite/scripts/logwatch/logfile.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/logfiles/bacula.conf
install -m 644 -D bacula-sqlite/scripts/logwatch/services.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/services/bacula.conf


# Initscripts
install -m 755 -D %{SOURCE7}  %{buildroot}%{_initrddir}/bacula-fd
install -m 755 -D %{SOURCE8}  %{buildroot}%{_initrddir}/bacula-dir
install -m 755 -D %{SOURCE9}  %{buildroot}%{_initrddir}/bacula-sd


# Wipe backup files from the multiple make install calls
rm -vf %{buildroot}%{_sysconfdir}/bacula/*.{new,old}
rm -vf %{buildroot}%{_libexecdir}/bacula/*.{new,old}


# Create the spooling
mkdir -p %{buildroot}%{_localstatedir}/spool/bacula


# Move some files around
mv %{buildroot}%{_libexecdir}/bacula/query.sql %{buildroot}%{_sysconfdir}/bacula/query.sql


# Nuke the scripts we do not need
rm -vf %{buildroot}%{_libexecdir}/bacula/{bacula,bacula-ctl-*,startmysql,stopmysql} 


# Fix up some perms so rpmlint does not complain too much
chmod 755 %{buildroot}%{_sbindir}/*
chmod 755 %{buildroot}%{_libexecdir}/bacula/*
chmod 644 %{buildroot}%{_libexecdir}/bacula/btraceback.*

%clean
rm -rf %{buildroot}


%post director-mysql
/usr/sbin/alternatives --install /usr/sbin/bacula-dir bacula-dir /usr/sbin/bacula-dir.mysql 50 \
	--slave /usr/sbin/dbcheck bacula-dbcheck /usr/sbin/dbcheck.mysql \
	--slave /usr/libexec/bacula/create_bacula_database /usr/libexec/bacula/create_bacula_database.mysql \
	--slave /usr/libexec/bacula/drop_bacula_database /usr/libexec/bacula/drop_bacula_database.mysql \
	--slave /usr/libexec/bacula/drop_bacula_tables /usr/libexec/bacula/drop_bacula_tables.mysql \
	--slave /usr/libexec/bacula/grant_bacula_privileges /usr/libexec/bacula/grant_bacula_privileges.mysql \
	--slave /usr/libexec/bacula/make_bacula_tables /usr/libexec/bacula/make_bacula_tables.mysql \
	--slave /usr/libexec/bacula/make_catalog_backup /usr/libexec/bacula/make_catalog_backup.mysql \
	--slave /usr/libexec/bacula/update_bacula_tables /usr/libexec/bacula/update_bacula_tables.mysql


%post director-sqlite
/usr/sbin/alternatives --install /usr/sbin/bacula-dir bacula-dir /usr/sbin/bacula-dir.sqlite 40 \
	--slave /usr/sbin/dbcheck bacula-dbcheck /usr/sbin/dbcheck.sqlite \
	--slave /usr/libexec/bacula/create_bacula_database /usr/libexec/bacula/create_bacula_database.sqlite \
	--slave /usr/libexec/bacula/drop_bacula_database /usr/libexec/bacula/drop_bacula_database.sqlite \
	--slave /usr/libexec/bacula/drop_bacula_tables /usr/libexec/bacula/drop_bacula_tables.sqlite \
	--slave /usr/libexec/bacula/grant_bacula_privileges /usr/libexec/bacula/grant_bacula_privileges.sqlite \
	--slave /usr/libexec/bacula/make_bacula_tables /usr/libexec/bacula/make_bacula_tables.sqlite \
	--slave /usr/libexec/bacula/make_catalog_backup /usr/libexec/bacula/make_catalog_backup.sqlite \
	--slave /usr/libexec/bacula/update_bacula_tables /usr/libexec/bacula/update_bacula_tables.sqlite


%post director-postgresql
/usr/sbin/alternatives --install /usr/sbin/bacula-dir bacula-dir /usr/sbin/bacula-dir.postgresql 60 \
	--slave /usr/sbin/dbcheck bacula-dbcheck /usr/sbin/dbcheck.postgresql \
	--slave /usr/libexec/bacula/create_bacula_database /usr/libexec/bacula/create_bacula_database.postgresql \
	--slave /usr/libexec/bacula/drop_bacula_database /usr/libexec/bacula/drop_bacula_database.postgresql \
	--slave /usr/libexec/bacula/drop_bacula_tables /usr/libexec/bacula/drop_bacula_tables.postgresql \
	--slave /usr/libexec/bacula/grant_bacula_privileges /usr/libexec/bacula/grant_bacula_privileges.postgresql \
	--slave /usr/libexec/bacula/make_bacula_tables /usr/libexec/bacula/make_bacula_tables.postgresql \
	--slave /usr/libexec/bacula/make_catalog_backup /usr/libexec/bacula/make_catalog_backup.postgresql \
	--slave /usr/libexec/bacula/update_bacula_tables /usr/libexec/bacula/update_bacula_tables.postgresql


%preun director-mysql
/usr/sbin/alternatives --remove bacula-dir /usr/sbin/bacula-dir.mysql


%preun director-sqlite
/usr/sbin/alternatives --remove bacula-dir /usr/sbin/bacula-dir.sqlite


%preun director-postgresql
/usr/sbin/alternatives --remove bacula-dir /usr/sbin/bacula-dir.postgresql


%pre common
/usr/sbin/fedora-groupadd 33 -r bacula &>/dev/null || :
/usr/sbin/fedora-useradd  33 -r -s /sbin/nologin -d /var/spool/bacula -M \
	-c 'Bacula Backup System' -g bacula bacula &>/dev/null || :


%postun common
test "$1" != 0 || /usr/sbin/fedora-userdel  bacula &>/dev/null || :
test "$1" != 0 || /usr/sbin/fedora-groupdel bacula &>/dev/null || :


%post storage-mysql
/usr/sbin/alternatives --install /usr/sbin/bcopy bacula-sd /usr/sbin/bcopy.mysql 50 \
	--slave /usr/sbin/dbcheck bacula-bscan /usr/sbin/bscan.mysql 


%post storage-sqlite
/usr/sbin/alternatives --install /usr/sbin/bcopy bacula-sd /usr/sbin/bcopy.sqlite 40 \
	--slave /usr/sbin/dbcheck bacula-bscan /usr/sbin/bscan.sqlite


%post storage-postgresql
/usr/sbin/alternatives --install /usr/sbin/bcopy bacula-sd /usr/sbin/bcopy.postgresql 60 \
	--slave /usr/sbin/dbcheck bacula-bscan /usr/sbin/bscan.postgresql


%preun storage-mysql
/usr/sbin/alternatives --remove bacula-sd /usr/sbin/bcopy.mysql


%preun storage-sqlite
/usr/sbin/alternatives --remove bacula-sd /usr/sbin/bcopy.sqlite


%preun storage-postgresql
/usr/sbin/alternatives --remove bacula-sd /usr/sbin/bcopy.postgresql


%post client
/sbin/chkconfig --add bacula-fd


%preun client
if [ $1 = 0 ]; then
	/sbin/service bacula-fd stop >/dev/null 2>&1 || :
	/sbin/chkconfig --del bacula-fd
fi


%postun client
if [ "$1" -ge "1" ]; then
	/sbin/service bacula-fd condrestart >/dev/null 2>&1 || :
fi


%post director-common
/sbin/chkconfig --add bacula-dir


%preun director-common
if [ $1 = 0 ]; then
	/sbin/service bacula-dir stop >/dev/null 2>&1 || :
	/sbin/chkconfig --del bacula-dir
fi


%postun director-common
if [ "$1" -ge "1" ]; then
	/sbin/service bacula-dir condrestart >/dev/null 2>&1 || :
fi


%post storage-common
/sbin/chkconfig --add bacula-sd


%preun storage-common
if [ $1 = 0 ]; then
	/sbin/service bacula-sd stop >/dev/null 2>&1 || :
	/sbin/chkconfig --del bacula-sd
fi


%postun storage-common
if [ "$1" -ge "1" ]; then
	/sbin/service bacula-sd condrestart >/dev/null 2>&1 || :
fi


%files common
%doc bacula-%{version}/AUTHORS bacula-%{version}/ChangeLog bacula-%{version}/COPYING bacula-%{version}/LICENSE
%doc bacula-%{version}/README bacula-%{version}/SUPPORT bacula-%{version}/VERIFYING
%doc bacula-%{version}/examples/
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/logrotate.d/bacula
%dir %{_sysconfdir}/bacula
%dir %{_libexecdir}/bacula
%{_sbindir}/bsmtp
%{_sbindir}/btraceback
%{_libexecdir}/bacula/btraceback.dbx
%{_libexecdir}/bacula/btraceback.gdb
%{_mandir}/man1/bsmtp.1*
%{_mandir}/man8/bacula.8*
%{_mandir}/man8/btraceback.8*
%dir %attr(750, bacula, bacula) %{_localstatedir}/log/bacula
%dir %attr(750, bacula, bacula) %{_localstatedir}/spool/bacula


%files client
%defattr(-,root,root,-)
%{_sbindir}/bacula-fd
%{_initrddir}/bacula-fd
%config(noreplace) %{_sysconfdir}/bacula/bacula-fd.conf
%dir %{_localstatedir}/spool/bacula
%{_mandir}/man8/bacula-fd.8*


%files console
%defattr(-,root,root,-)
%{_sbindir}/bconsole
%config(noreplace) %{_sysconfdir}/bacula/bconsole.conf
%{_mandir}/man8/bconsole.8*


%files console-gnome
%defattr(-,root,root,-)
%config %{_sysconfdir}/security/console.apps/gnome-console
%config %{_sysconfdir}/pam.d/gnome-console
%config(noreplace) %{_sysconfdir}/bacula/gnome-console.conf
%{_bindir}/gnome-console
%{_sbindir}/gnome-console
%{_mandir}/man1/bacula-console-gnome.1*
%{_datadir}/applications/fedora-bacula-gconsole.desktop
%{_datadir}/pixmaps/bacula.png


%files console-wxwidgets
%defattr(-,root,root,-)
%config %{_sysconfdir}/security/console.apps/wxconsole
%config %{_sysconfdir}/pam.d/wxconsole
%config(noreplace) %{_sysconfdir}/bacula/wxconsole.conf
%{_bindir}/wxconsole
%{_sbindir}/wxconsole
%{_mandir}/man1/bacula-wxconsole.1*
%{_datadir}/applications/fedora-bacula-wxconsole.desktop
%{_datadir}/pixmaps/wxwin16x16.xpm


%files director-common
%doc bacula-%{version}/updatedb/
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/bacula/bacula-dir.conf
%config(noreplace) %{_sysconfdir}/bacula/query.sql
%config %{_sysconfdir}/logwatch/conf/logfiles/bacula.conf
%config %{_sysconfdir}/logwatch/conf/services/bacula.conf
%{_sysconfdir}/logwatch/scripts/services/bacula
%{_initrddir}/bacula-dir
%{_sbindir}/bregex
%{_sbindir}/bwild
%{_mandir}/man8/dbcheck.8*
%{_mandir}/man8/bacula-dir.8*
%{_libexecdir}/bacula/delete_catalog_backup


%files director-mysql
%defattr(-,root,root,-)
%{_sbindir}/bacula-dir.mysql
%{_sbindir}/dbcheck.mysql
%{_libexecdir}/bacula/create_mysql_database
%{_libexecdir}/bacula/drop_mysql_database
%{_libexecdir}/bacula/drop_mysql_tables
%{_libexecdir}/bacula/grant_mysql_privileges
%{_libexecdir}/bacula/make_mysql_tables
%{_libexecdir}/bacula/update_mysql_tables
%{_libexecdir}/bacula/create_bacula_database.mysql
%{_libexecdir}/bacula/drop_bacula_database.mysql
%{_libexecdir}/bacula/drop_bacula_tables.mysql
%{_libexecdir}/bacula/grant_bacula_privileges.mysql
%{_libexecdir}/bacula/make_bacula_tables.mysql
%{_libexecdir}/bacula/make_catalog_backup.mysql
%{_libexecdir}/bacula/update_bacula_tables.mysql



%files director-sqlite
%defattr(-,root,root,-)
%{_sbindir}/bacula-dir.sqlite
%{_sbindir}/dbcheck.sqlite
# DANGER Will Robinson. Bacula has versioned sqlite filenames
%{_libexecdir}/bacula/create_sqlite%{?sqlite_suffix}_database
%{_libexecdir}/bacula/drop_sqlite%{?sqlite_suffix}_database
%{_libexecdir}/bacula/drop_sqlite%{?sqlite_suffix}_tables
%{_libexecdir}/bacula/grant_sqlite%{?sqlite_suffix}_privileges
%{_libexecdir}/bacula/make_sqlite%{?sqlite_suffix}_tables
%{_libexecdir}/bacula/update_sqlite%{?sqlite_suffix}_tables
%{_libexecdir}/bacula/create_bacula_database.sqlite
%{_libexecdir}/bacula/drop_bacula_database.sqlite
%{_libexecdir}/bacula/drop_bacula_tables.sqlite
%{_libexecdir}/bacula/grant_bacula_privileges.sqlite
%{_libexecdir}/bacula/make_bacula_tables.sqlite
%{_libexecdir}/bacula/make_catalog_backup.sqlite
%{_libexecdir}/bacula/update_bacula_tables.sqlite


%files director-postgresql
%defattr(-,root,root,-)
%{_sbindir}/bacula-dir.postgresql
%{_sbindir}/dbcheck.postgresql
%{_libexecdir}/bacula/create_postgresql_database
%{_libexecdir}/bacula/drop_postgresql_database
%{_libexecdir}/bacula/drop_postgresql_tables
%{_libexecdir}/bacula/grant_postgresql_privileges
%{_libexecdir}/bacula/make_postgresql_tables
%{_libexecdir}/bacula/update_postgresql_tables
%{_libexecdir}/bacula/create_bacula_database.postgresql
%{_libexecdir}/bacula/drop_bacula_database.postgresql
%{_libexecdir}/bacula/drop_bacula_tables.postgresql
%{_libexecdir}/bacula/grant_bacula_privileges.postgresql
%{_libexecdir}/bacula/make_bacula_tables.postgresql
%{_libexecdir}/bacula/make_catalog_backup.postgresql
%{_libexecdir}/bacula/update_bacula_tables.postgresql


%files storage-common
%defattr(-,root,root,-)
%{_sbindir}/bacula-sd
%{_sbindir}/bextract
%{_sbindir}/bls
%{_sbindir}/btape
%config(noreplace) %{_sysconfdir}/bacula/bacula-sd.conf
%{_initrddir}/bacula-sd
%{_libexecdir}/bacula/disk-changer
%{_libexecdir}/bacula/dvd-handler
%{_libexecdir}/bacula/mtx-changer
%{_mandir}/man8/bcopy.8*
%{_mandir}/man8/bextract.8*
%{_mandir}/man8/bls.8*
%{_mandir}/man8/bscan.8*
%{_mandir}/man8/btape.8*
%{_mandir}/man8/bacula-sd.8*


%files storage-mysql
%defattr(-,root,root,-)
%{_sbindir}/bcopy.mysql
%{_sbindir}/bscan.mysql


%files storage-sqlite
%defattr(-,root,root,-)
%{_sbindir}/bcopy.sqlite
%{_sbindir}/bscan.sqlite


%files storage-postgresql
%defattr(-,root,root,-)
%{_sbindir}/bcopy.postgresql
%{_sbindir}/bscan.postgresql


%files traymonitor
%defattr(-,root,root,-)
%{_sbindir}/bacula-tray-monitor
%config(noreplace) %{_sysconfdir}/bacula/tray-monitor.conf
%{_mandir}/man1/bacula-tray-monitor.1*
%{_datadir}/applications/fedora-bacula-traymonitor.desktop
%{_datadir}/pixmaps/bacula-tray-monitor.xpm


%files docs
%doc bacula-docs-%{docs_version}/bacula-web/bacula-web.pdf
%doc bacula-docs-%{docs_version}/bacula-web/bacula-web/
%doc bacula-docs-%{docs_version}/developers/developers.pdf
%doc bacula-docs-%{docs_version}/developers/developers/
%doc bacula-docs-%{docs_version}/manual/bacula.pdf
%doc bacula-docs-%{docs_version}/manual/bacula/


#%files web
#%defattr(-,root,root,-)
#%doc bacula-gui-%{gui_version}/bacula-web/CONTACT bacula-gui-%{gui_version}/bacula-web/COPYING
#%doc bacula-gui-%{gui_version}/bacula-web/README bacula-gui-%{gui_version}/bacula-web/TODO
#%{_datadir}/bacula-web/
#%config(noreplace) %{_sysconfdir}/bacula/bacula-web.conf
#%config(noreplace) %{_sysconfdir}/httpd/conf.d/bacula-web.conf
#%dir %attr(755, apache, apache) %{_localstatedir}/cache/bacula-web


%changelog
* Wed Jul 19 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-8
- Moved some files around in the %%files section and refactored
  spec parts a bit
- Fixed up the catalog-backup scripts by including them in the
  alternatives system
- Applied tls patch fixing some tls disconnection issues.

* Thu Jul 18 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-7
- Minor specchanges, mostly typos in the comments
- Incorporated minor changes from dgilmore's review.

* Fri Jul 13 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-6
- Fixing %%preun scripts. Thx to Dan for spotting this

* Fri Jul 13 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-5
- Fixed provides and requires

* Wed Jul 11 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-4
- Fixed many rpmlint issues

* Thu Apr 26 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-3
- Final cleanups for fedora
- Removed webgui for now. It will be back in a future release
- Added LANG=C calls to the initscripts

* Thu Apr 26 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-2
- Added logdir
- Fixed up doc-creation to actually work
- Fixed up web interface
- Included docs sub-package
- Included README et al as docs where appropriate

* Sat Mar 10 2007 Andreas Thienemann <andreas at bawue.net> 2.0.3-1
- Updated to 2.0.3
- Reverted the database-check as we're not sure the db is running on the
  local machine. A later revision might parse the bacula-dir.conf file
  and just connect to the db to see if it's running.

* Sat Feb 28 2007 Andreas Thienemann <andreas at bawue.net> 2.0.2-1
- Further updates on the spec

* Sat Feb 18 2007 Andreas Thienemann <andreas at bawue.net> 2.0.2-1
- Much work on the spec
- Updated to 2.0.2

* Sat Feb 18 2006 Andreas Thienemann <andreas at bawue.net> 1.38.11-1
- Initial spec.


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/bacula/F-7/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	24 Jul 2007 19:59:00 -0000	1.1
+++ sources	24 Jul 2007 20:22:20 -0000	1.2
@@ -0,0 +1,2 @@
+443d2560ace95173a0d8ba465de493ef  bacula-2.0.3.tar.gz
+dce3aed621b9e4abee51cc89aebf4a58  bacula-docs-2.0.3.tar.gz




More information about the scm-commits mailing list