pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

sysutils/dvd+rw-tools and sysutils/bacula



Bacula needs a patched dvd+rw-tools so that you can use DVDs with it. I made a 
patch that lets you get that patched dvd+rw-tools. It uses PKG_OPTIONS so 
that only people who actually want to use DVDs with bacula will have the 
necessary patch applied.

The dvd+rw-tools-6.1.bacula.patch was copied straight from bacula's tarball 
and changed so that it applies cleanly.

Hopefully the attached patch is good enough to be commited.

To apply, just do the following:
cd /usr/pkgsrc/sysutils/dvd+rw-tools
patch -p0 < /path/to/dvd+rw-tools.patch
--- Makefile.orig       2007-02-11 22:47:52.000000000 +0100
+++ Makefile    2007-02-11 23:04:53.000000000 +0100
@@ -24,6 +24,8 @@
 
 LDFLAGS.NetBSD+=       -lrt # sem_* functions
 
+.include "options.mk"
+
 do-install:
        ${INSTALL_PROGRAM} ${WRKSRC}/growisofs ${PREFIX}/bin
        ${INSTALL_MAN} ${WRKSRC}/growisofs.1 ${PREFIX}/${PKGMANDIR}/man1
--- /dev/null   1970-01-01 01:00:00.000000000 +0100
+++ files/dvd+rw-tools-6.1.bacula.patch 2007-02-11 23:05:30.000000000 +0100
@@ -0,0 +1,85 @@
+--- growisofs.c.orig   2006-01-26 22:16:54.000000000 +0100
++++ growisofs.c        2006-02-15 00:00:44.000000000 +0100
+@@ -355,12 +355,17 @@
+  * - Treat only x73xx OPC errors as fatal;
+  * - Fix typo in -speed scaling code;
+  * - permit tracksize to be not divisible by 32KB in DAO mode;
++ * 6.1.1: (by Nicolas Boichat, Bacula project)
++ * - Allow session to cross 4GB boundary regardless of medium type
++ *   (don't need to have a DL media)
++ * - Add a -F option (used instead of -M or -Z), which displays next_session
++ *   offset and capacity (free space = next_session - capacity).
+  */
+ #define PRINT_VERSION(cmd)    do {                    \
+     char *s=strrchr((cmd),'/');                               \
+     s ? s++ : (s=(cmd));                              \
+     printf ("* %.*sgrowisofs by <appro%fy.chalmers.se@localhost>,"\
+-          " version 6.1,\n",(int)(s-(cmd)),(cmd));    \
++          " version 6.1.1,\n",(int)(s-(cmd)),(cmd));  \
+ } while (0)
+ 
+ #define _LARGEFILE_SOURCE 
+@@ -2329,6 +2334,18 @@
+               else          in_device = argv[++i];
+               dev_found = 'Z';
+           }
++          else if (argv[i][1] == 'F')
++          {   if (len > 2) in_device = argv[i]+2;
++              else         in_device = argv[++i];
++              dev_found = 'F';
++              dry_run = 1; /* NEVER write anything with -F */
++          }
++          else if (!strncmp(opt,"-free-space",11))
++          {   if (len > 11) in_device = opt+11;
++              else          in_device = argv[++i];
++              dev_found = 'F';
++              dry_run = 1; /* NEVER write anything with -F */
++          }
+           else if (!strcmp(opt,"-poor-man"))
+           {   if (poor_man<0) poor_man = 1;
+               continue;
+@@ -2542,7 +2559,9 @@
+               fprintf (stderr,"    you most likely want to use -Z 
option.\n"), 
+               exit (FATAL_START(errno));
+ 
+-          if (dev_found == 'M')
++              if ((dev_found == 'M') || 
++                      ((dev_found == 'F') && !(mmc_profile&0x10000)) && 
(saved_descriptors[0].type[0] || saved_descriptors[0].type[1] || 
saved_descriptors[0].type[2]))
++                              /* -F : The medium is not blank, there is a fs 
on it (the_buffer[0,1 or 2] != 0), so compute next_session. */
+           {   if (memcmp (saved_descriptors[0].type,"\1CD001",6))
+                   fprintf (stderr,":-( %s doesn't look like isofs...\n",
+                               in_device), exit(FATAL_START(EMEDIUMTYPE));
+@@ -2565,7 +2584,7 @@
+                       exit(FATAL_START(EINVAL));
+               }
+               else if (next_session > (0x200000-0x5000)) /* 4GB/2K-40MB/2K */
+-                  if ((mmc_profile&0xFFFF)!=0x2B || !no_4gb_check)
++                  if (!no_4gb_check)
+                       fprintf (stderr,":-( next session would cross 4GB "
+                                       "boundary, aborting...\n"),
+                       exit (FATAL_START(ENOSPC));
+@@ -2608,7 +2627,7 @@
+       exit (FATAL_START(EINVAL));
+ 
+     if (imgfd<0)
+-    { if (mkisofs_argc==1)
++    { if ((mkisofs_argc==1) && (dev_found != 'F'))
+           fprintf (stderr,"%s: no mkisofs options specified, "
+                           "aborting...\n",argv[0]),
+           exit (FATAL_START(EINVAL));
+@@ -2880,6 +2899,15 @@
+       }
+     }
+ 
++      if (dev_found == 'F') {
++              off64_t capacity = 0;
++              printf("next_session=%lld\n", next_session*CD_BLOCK);
++              if (ioctl_handle!=INVALID_HANDLE)
++                      capacity = get_capacity (ioctl_handle);
++              printf("capacity=%lld\n", capacity);
++              exit(0);
++      }
++
+     if (imgfd>=0)
+     { quiet--;
+       if (builtin_dd (imgfd,out_fd,next_session*CD_BLOCK) < 0)
--- options.mk.orig     1970-01-01 01:00:00.000000000 +0100
+++ options.mk  2007-02-11 23:27:44.000000000 +0100
@@ -0,0 +1,11 @@
+PKG_OPTIONS_VAR=       PKG_OPTIONS.dvd+rw-tools
+PKG_SUPPORTED_OPTIONS= bacula-patch
+
+#PKG_DEBUG_LEVEL=1
+
+.include "../../mk/bsd.options.mk"
+
+.if !empty(PKG_OPTIONS:Mbacula-patch)
+post-patch:
+       cd ${WRKSRC}; patch -p0 < 
${PKGSRCDIR}/${PKGPATH}/files/dvd+rw-tools-6.1.bacula.patch
+.endif

Attachment: pgpefvj3fDY5x.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index