unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* bug#26669: [PATCH 1/7] gnu: Add cdrtools.
@ 2017-04-26 16:05 Thomas Danckaert
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:05 UTC (permalink / raw)
  To: 26669

[-- Attachment #1: Type: Text/Plain, Size: 690 bytes --]

Hi,

this patch series adds a few CD/DVD/Blu Ray Disc burning tools.

There is/has been some controversy about the license of cdrtools, 
with claims it cannot be distributed in binary form because it mixes 
CDDL and GPL code.  As far as I understand, mkisofs is GPL, while the 
other executables are CDDL, and I do not really see the problem.  If 
others disagree, or we want to be extra careful, I suppose we can 
disable substitutes for cdrtools, so we only distribute it as source?

cdrtools also bundles a forked LGPL-licensed copy of cdparanoia.  
This is perhaps unfortunate, but I don't think it's easy to unbundle 
it (cdrtools doesn't build agains our current cdparanoia).

Thomas

[-- Attachment #2: 0001-gnu-Add-cdrtools.patch --]
[-- Type: Text/X-Patch, Size: 20346 bytes --]

From 96fb5484e4a4d741da685ce63f578feb69bc016f Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.danckaert@gmail.com>
Date: Fri, 21 Apr 2017 15:54:20 +0200
Subject: [PATCH 1/7] gnu: Add cdrtools.

* gnu/packages/cdrom.scm (cdrtools): New variable.
* gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                       |   1 +
 gnu/packages/cdrom.scm                             |  63 ++-
 .../patches/cdrtools-3.01-mkisofs-isoinfo.patch    | 514 +++++++++++++++++++++
 3 files changed, 577 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index cb94d27e9..a2c56e03d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -513,6 +513,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/calibre-drop-unrar.patch			\
   %D%/packages/patches/calibre-no-updates-dialog.patch		\
   %D%/packages/patches/cdparanoia-fpic.patch			\
+  %D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch 	\
   %D%/packages/patches/ceph-disable-cpu-optimizations.patch	\
   %D%/packages/patches/ceph-disable-unittest-throttle.patch	\
   %D%/packages/patches/ceph-skip-collect-sys-info-test.patch	\
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 7e86753ab..69af39655 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -26,7 +26,7 @@
 (define-module (gnu packages cdrom)
   #:use-module (guix download)
   #:use-module (guix packages)
-  #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+))
+  #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+ cddl1.0))
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
@@ -197,6 +197,67 @@ extra-robust data verification, synchronization, error handling and scratch
 reconstruction capability.")
     (license gpl2))) ; libraries under lgpl2.1
 
+(define-public cdrtools
+  (package
+   (name "cdrtools")
+   (version "3.01")
+   (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://sourceforge/cdrtools/cdrtools-" version ".tar.bz2"))
+             (sha256
+              (base32
+               "03w6ypsmwwy4d7vh6zgwpc60v541vc5ywp8bdb758hbc4yv2wa7d"))
+             (patches (search-patches "cdrtools-3.01-mkisofs-isoinfo.patch"))))
+   (build-system gnu-build-system)
+   (inputs
+    `(("linux-headers" ,linux-libre-headers)))
+   (native-inputs
+    `(("coreutils" ,coreutils)))
+   (arguments
+    `(#:phases (modify-phases %standard-phases
+                 (delete 'configure)
+                 (add-before 'build 'set-linux-headers
+                   (lambda _
+                     (substitute* "autoconf/configure"
+                       (("/usr/src/linux")
+                        (assoc-ref %build-inputs "linux-headers")))
+                     #t))
+                 (add-before 'build 'substitute-dirs
+                   (lambda _
+                     (substitute* (append (find-files "DEFAULTS" "^Defaults\\.")
+                                          (find-files "DEFAULTS_ENG" "^Defaults\\.")
+                                          (find-files "TEMPLATES" "^Defaults\\."))
+                       (("/opt/schily") (assoc-ref %outputs "out")))
+                     #t))
+                 (replace 'build
+                   (lambda _
+                     (zero?
+                      (system* "make" "CONFIG_SHELL=sh" "CCOM=gcc" "RM=rm"))))
+                 (replace 'install
+                   (lambda _
+                     (zero?
+                      (system* "make"
+                               "RM=rm" "LN=ln" "SYMLINK=ln -s"
+                               (string-append "INS_BASE=" (assoc-ref %outputs "out"))
+                               (string-append "INS_RBASE=" (assoc-ref %outputs "out"))
+                               "install" )))))
+      #:tests? #f  ; no tests
+
+      ;; It's unclear if binaries can be distributed due to the mixing of CDDL
+      ;; and GPL code.
+      #:substitutable? #f))
+   (synopsis "Command line utilities to manipulate and burn CD/DVD/BD images")
+   (description "cdrtools is a collection of command line utilities to create
+CD's, DVD's or Blue Ray discs.  The most important components are
+@command{cdrecord}, a burning program, @command{cdda2wav}, a CD audio ripper
+which uses libparanoia, and @command{mkisofs}, which can create various disc
+images.")
+   (home-page "http://cdrtools.sourceforge.net/private/cdrecord.html")
+
+   ;; mkisofs is GPL, the other programs are CDDL.
+   (license (list cddl1.0 gpl2))))
+
 (define-public dvdisaster
   (package
     (name "dvdisaster")
diff --git a/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch
new file mode 100644
index 000000000..9c817d419
--- /dev/null
+++ b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch
@@ -0,0 +1,514 @@
+Patch for version 3.01, taken from upstream at
+https://sourceforge.net/projects/cdrtools/files/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
+
+--- cdrtools-3.01.orig/mkisofs/diag/isoinfo.c	2015-07-22 20:36:45.000000000 +0000
++++ cdrtools-3.01/mkisofs/diag/isoinfo.c	2015-11-17 19:35:40.000000000 +0000
+@@ -1,8 +1,8 @@
+-/* @(#)isoinfo.c	1.95 15/07/22 joerg */
++/* @(#)isoinfo.c	1.100 15/11/17 joerg */
+ #include <schily/mconfig.h>
+ #ifndef	lint
+ static	UConst char sccsid[] =
+-	"@(#)isoinfo.c	1.95 15/07/22 joerg";
++	"@(#)isoinfo.c	1.100 15/11/17 joerg";
+ #endif
+ /*
+  * File isodump.c - dump iso9660 directory information.
+@@ -148,8 +148,10 @@ LOCAL char	er_id[256];
+ LOCAL int	su_version = 0;
+ LOCAL int	rr_version = 0;
+ LOCAL int	aa_version = 0;
++LOCAL int	cl_extent = 0;
+ LOCAL int	ucs_level = 0;
+ LOCAL BOOL	iso9660_inodes = FALSE;
++LOCAL uid_t	myuid;
+ 
+ #ifdef	USE_FIND
+ LOCAL findn_t	*find_node;		/* syntaxtree from find_parse()	*/
+@@ -208,6 +210,9 @@ LOCAL	void	extract		__PR((char *rootname
+ LOCAL	void	extract_file	__PR((int f,
+ 					struct iso_directory_record * idr,
+ 					char *fname));
++LOCAL	void	parse_cl_dir	__PR((struct iso_directory_record *idr,
++					int extent));
++LOCAL	BOOL	parse_de	__PR((struct iso_directory_record *idr));
+ LOCAL	void	parse_dir	__PR((char * rootname, int extent, int len));
+ LOCAL	void	usage		__PR((int excode));
+ EXPORT	int	main		__PR((int argc, char *argv[]));
+@@ -459,7 +464,6 @@ parse_rr(pnt, len, cont_flag)
+ 	int slen;
+ 	int xlen;
+ 	int ncount;
+-	int cl_extent;
+ 	int pl_extent;
+ 	int cont_extent, cont_offset, cont_size;
+ 	int flag1, flag2;
+@@ -469,7 +473,7 @@ parse_rr(pnt, len, cont_flag)
+ 
+ 	symlinkname[0] = 0;
+ 
+-	cont_extent = cont_offset = cont_size = 0;
++	cl_extent = cont_extent = cont_offset = cont_size = 0;
+ 
+ 	ncount = 0;
+ 	flag1 = -1;
+@@ -714,6 +718,7 @@ struct todo
+ };
+ 
+ LOCAL struct todo	*todo_idr = NULL;
++LOCAL struct todo	**todo_pp = &todo_idr;
+ 
+ LOCAL char		*months[12] = {"Jan", "Feb", "Mar", "Apr",
+ 				"May", "Jun", "Jul",
+@@ -962,8 +967,14 @@ static	BOOL		isfirst = TRUE;
+ 	close(f);
+ 	return;
+ setmode:
+-	fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW);
+ 	fchownat(AT_FDCWD, fname, fstat_buf.st_uid, fstat_buf.st_gid, AT_SYMLINK_NOFOLLOW);
++	if (myuid != 0 && S_ISDIR(fstat_buf.st_mode)) {
++		/*
++		 * Temporary hack until we have a dirstack like star.
++		 */
++		fstat_buf.st_mode |= S_IWUSR;
++	}
++	fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW);
+ 	times[0].tv_sec = fstat_buf.st_atime;
+ 	times[0].tv_nsec = stat_ansecs(&fstat_buf);
+ 	times[1].tv_sec = fstat_buf.st_mtime;
+@@ -1001,6 +1012,143 @@ extract_file(f, idr, fname)
+ 	}
+ }
+ 
++
++LOCAL void
++parse_cl_dir(idr, extent)
++	struct iso_directory_record	*idr;
++	int				extent;
++{
++	char				cl_name_buf[256*3];
++
++	strlcpy(cl_name_buf, name_buf, sizeof (cl_name_buf));
++#ifdef	USE_SCG
++	readsecs(extent - sector_offset, idr, 1);
++#else
++	lseek(fileno(infile), ((off_t)(extent - sector_offset)) << 11, SEEK_SET);
++	read(fileno(infile), idr, 2048);
++#endif
++
++	if (parse_de(idr) && use_rock)
++		dump_rr(idr);
++	strlcpy(name_buf, cl_name_buf, sizeof (name_buf));
++}
++
++LOCAL BOOL
++parse_de(idr)
++	struct iso_directory_record	*idr;
++{
++	unsigned char	uc;
++
++	if (idr->length[0] == 0)
++		return (FALSE);
++	memset(&fstat_buf, 0, sizeof (fstat_buf));
++	found_rr = 0;
++	name_buf[0] = xname[0] = 0;
++	fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size);
++	if (idr->flags[0] & 2)
++		fstat_buf.st_mode |= S_IFDIR;
++	else
++		fstat_buf.st_mode |= S_IFREG;
++	if (idr->name_len[0] == 1 && idr->name[0] == 0)
++		strcpy(name_buf, ".");
++	else if (idr->name_len[0] == 1 && idr->name[0] == 1)
++		strcpy(name_buf, "..");
++	else {
++		switch (ucs_level) {
++		case 3:
++		case 2:
++		case 1:
++			/*
++			 * Unicode name.  Convert as best we can.
++			 */
++			{
++			int	j;
++				name_buf[0] = '\0';
++#ifdef	USE_ICONV
++			if (use_iconv(unls)) {
++				int	u;
++				char	*to = name_buf;
++
++				for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) {
++					char	*ibuf = (char *)&idr->name[j*2];
++					size_t	isize = 2;		/* UCS-2 character size */
++					size_t	osize = 4;
++
++					if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize,
++							(char **)&to, &osize) == -1) {
++						int	err = geterrno();
++
++						if ((err == EINVAL || err == EILSEQ) &&
++						    osize == 4) {
++							*to = '_';
++							u += 1;
++							to++;
++						}
++					} else {
++						u += 4 - osize;
++						to = &name_buf[u];
++					}
++				}
++				j = u;
++			} else
++#endif
++			for (j = 0; j < (int)idr->name_len[0] / 2; j++) {
++				UInt16_t	unichar;
++
++				unichar = (idr->name[j*2] & 0xFF) * 256 +
++					    (idr->name[j*2+1] & 0xFF);
++
++				/*
++				 * Get the backconverted char
++				 */
++				if (unls)
++					uc = sic_uni2c(unls, unichar);
++				else
++					uc = unichar > 255 ? '_' : unichar;
++
++				name_buf[j] = uc ? uc : '_';
++			}
++			name_buf[j] = '\0';
++			}
++			break;
++		case 0:
++			/*
++			 * Normal non-Unicode name.
++			 */
++			strncpy(name_buf, idr->name, idr->name_len[0]);
++			name_buf[idr->name_len[0]] = 0;
++			break;
++		default:
++			/*
++			 * Don't know how to do these yet.  Maybe they are the same
++			 * as one of the above.
++			 */
++			exit(1);
++		}
++	}
++	memcpy(date_buf, idr->date, 9);
++	/*
++	 * Always first set up time stamps and file modes from
++	 * ISO-9660. This is used as a fallback in case that
++	 * there is no related Rock Ridge based data.
++	 */
++	fstat_buf.st_atime =
++	fstat_buf.st_mtime =
++	fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE);
++	fstat_buf.st_mode |= S_IRUSR|S_IXUSR |
++		    S_IRGRP|S_IXGRP |
++		    S_IROTH|S_IXOTH;
++	fstat_buf.st_nlink = 1;
++	fstat_buf.st_ino = 0;
++	fstat_buf.st_uid = 0;
++	fstat_buf.st_gid = 0;
++	if (iso9660_inodes) {
++		fstat_buf.st_ino = (unsigned long)
++		    isonum_733((unsigned char *)idr->extent);
++	}
++	return (TRUE);
++}
++
+ LOCAL void
+ parse_dir(rootname, extent, len)
+ 	char	*rootname;
+@@ -1012,12 +1160,13 @@ parse_dir(rootname, extent, len)
+ 	struct iso_directory_record * idr;
+ 	struct iso_directory_record	didr;
+ 	struct stat			dstat;
+-	unsigned char	uc;
++	unsigned char	cl_buffer[2048];
+ 	unsigned char	flags = 0;
+ 	Llong		size = 0;
+ 	int		sextent = 0;
+ 	int	rlen;
+ 	int	blen;
++	int	rr_flags = 0;
+ static	char	*n = 0;
+ static	int	nlen = 0;
+ 
+@@ -1039,115 +1188,23 @@ static	int	nlen = 0;
+ 		i = 0;
+ 		while (1 == 1) {
+ 			idr = (struct iso_directory_record *) &buffer[i];
+-			if (idr->length[0] == 0) break;
+-			memset(&fstat_buf, 0, sizeof (fstat_buf));
+-			found_rr = 0;
+-			name_buf[0] = xname[0] = 0;
+-			fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size);
+-			if (idr->flags[0] & 2)
+-				fstat_buf.st_mode |= S_IFDIR;
+-			else
+-				fstat_buf.st_mode |= S_IFREG;
+-			if (idr->name_len[0] == 1 && idr->name[0] == 0)
+-				strcpy(name_buf, ".");
+-			else if (idr->name_len[0] == 1 && idr->name[0] == 1)
+-				strcpy(name_buf, "..");
+-			else {
+-				switch (ucs_level) {
+-				case 3:
+-				case 2:
+-				case 1:
+-					/*
+-					 * Unicode name.  Convert as best we can.
+-					 */
+-					{
+-					int	j;
+-
+-					name_buf[0] = '\0';
+-#ifdef	USE_ICONV
+-					if (use_iconv(unls)) {
+-						int	u;
+-						char	*to = name_buf;
+-
+-						for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) {
+-							char	*ibuf = (char *)&idr->name[j*2];
+-							size_t	isize = 2;		/* UCS-2 character size */
+-							size_t	osize = 4;
+-
+-							if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize,
+-									(char **)&to, &osize) == -1) {
+-								int	err = geterrno();
+-
+-								if ((err == EINVAL || err == EILSEQ) &&
+-								    osize == 4) {
+-									*to = '_';
+-									u += 1;
+-									to++;
+-								}
+-							} else {
+-								u += 4 - osize;
+-								to = &name_buf[u];
+-							}
+-						}
+-						j = u;
+-					} else
+-#endif
+-					for (j = 0; j < (int)idr->name_len[0] / 2; j++) {
+-						UInt16_t	unichar;
+-
+-						unichar = (idr->name[j*2] & 0xFF) * 256 +
+-							    (idr->name[j*2+1] & 0xFF);
+-
+-						/*
+-						 * Get the backconverted char
+-						 */
+-						if (unls)
+-							uc = sic_uni2c(unls, unichar);
+-						else
+-							uc = unichar > 255 ? '_' : unichar;
++			if (idr->length[0] == 0)
++				break;
++			parse_de(idr);
++			if (use_rock) {
++				rr_flags = dump_rr(idr);
+ 
+-						name_buf[j] = uc ? uc : '_';
+-					}
+-					name_buf[j] = '\0';
+-					}
+-					break;
+-				case 0:
++				if (rr_flags & RR_FLAG_CL) {
+ 					/*
+-					 * Normal non-Unicode name.
++					 * Need to reparse the child link
++					 * but note that we parse "CL/."
++					 * so we get no usable file name.
+ 					 */
+-					strncpy(name_buf, idr->name, idr->name_len[0]);
+-					name_buf[idr->name_len[0]] = 0;
+-					break;
+-				default:
+-					/*
+-					 * Don't know how to do these yet.  Maybe they are the same
+-					 * as one of the above.
+-					 */
+-					exit(1);
+-				}
++					idr = (struct iso_directory_record *) cl_buffer;
++					parse_cl_dir(idr, cl_extent);
++				} else if (rr_flags & RR_FLAG_RE)
++					goto cont;	/* skip rr_moved */
+ 			}
+-			memcpy(date_buf, idr->date, 9);
+-			/*
+-			 * Always first set up time stamps and file modes from
+-			 * ISO-9660. This is used as a fallback in case that
+-			 * there is no related Rock Ridge based data.
+-			 */
+-			fstat_buf.st_atime =
+-			fstat_buf.st_mtime =
+-			fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE);
+-			fstat_buf.st_mode |= S_IRUSR|S_IXUSR |
+-				    S_IRGRP|S_IXGRP |
+-				    S_IROTH|S_IXOTH;
+-			fstat_buf.st_nlink = 1;
+-			fstat_buf.st_ino = 0;
+-			fstat_buf.st_uid = 0;
+-			fstat_buf.st_gid = 0;
+-			if (iso9660_inodes) {
+-				fstat_buf.st_ino = (unsigned long)
+-				    isonum_733((unsigned char *)idr->extent);
+-			}
+-			if (use_rock)
+-				dump_rr(idr);
+ 			if (Xtract &&
+ 			    (idr->flags[0] & 2) != 0 &&
+ 			    idr->name_len[0] == 1 &&
+@@ -1170,30 +1227,30 @@ static	int	nlen = 0;
+ 				n[rlen] = '\0';
+ 
+ 			if ((idr->flags[0] & 2) != 0 &&
+-			    (idr->name_len[0] != 1 ||
++			    ((rr_flags & RR_FLAG_CL) ||
++			    idr->name_len[0] != 1 ||
+ 			    (idr->name[0] != 0 && idr->name[0] != 1))) {
+ 				/*
+ 				 * This is a plain directory (neither "xxx/."
+ 				 * nor "xxx/..").
+ 				 * Add this directory to the todo list.
+ 				 */
+-				td = todo_idr;
+-				if (td != NULL) {
+-					while (td->next != NULL)
+-						td = td->next;
+-					td->next = (struct todo *) malloc(sizeof (*td));
+-					td = td->next;
+-				} else {
+-					todo_idr = td = (struct todo *) malloc(sizeof (*td));
+-				}
++				td = (struct todo *) malloc(sizeof (*td));
++				if (td == NULL)
++					comerr(_("No memory.\n"));
+ 				td->next = NULL;
+ 				td->extent = isonum_733((unsigned char *)idr->extent);
+ 				td->length = isonum_733((unsigned char *)idr->size);
+ 				td->name = (char *) malloc(strlen(rootname)
+ 								+ strlen(name_buf) + 2);
++				if (td->name == NULL)
++					comerr(_("No memory.\n"));
+ 				strcpy(td->name, rootname);
+ 				strcat(td->name, name_buf);
+ 				strcat(td->name, "/");
++
++				*todo_pp = td;
++				todo_pp = &td->next;
+ 			} else {
+ 				if (xtract && strcmp(xtract, n) == 0) {
+ 					extract_file(STDOUT_FILENO, idr, "stdout");
+@@ -1253,6 +1310,7 @@ static	int	nlen = 0;
+ 				if ((idr->flags[0] & ISO_MULTIEXTENT) == 0)
+ 					size = 0;
+ 			}
++		cont:
+ 			i += buffer[i];
+ 			if (i > 2048 - offsetof(struct iso_directory_record, name[0])) break;
+ 		}
+@@ -1381,12 +1439,13 @@ main(argc, argv)
+ 		usage(0);
+ 	if (prvers) {
+ 		printf(_("isoinfo %s (%s-%s-%s) Copyright (C) 1993-1999 %s (C) 1999-2015 %s\n"),
+-					VERSION,
++					"3.02a02",
+ 					HOST_CPU, HOST_VENDOR, HOST_OS,
+ 					_("Eric Youngdale"),
+ 					_("Joerg Schilling"));
+ 		exit(0);
+ 	}
++	myuid = getuid();
+ #ifdef	USE_FIND
+ 	if (do_find) {
+ 		finda_t	fa;
+--- cdrtools-3.01.orig/mkisofs/udf.c	2013-04-24 20:45:18.000000000 +0000
++++ cdrtools-3.01/mkisofs/udf.c	2015-11-25 22:07:30.000000000 +0000
+@@ -1,15 +1,15 @@
+-/* @(#)udf.c	1.42 13/04/24 Copyright 2001-2013 J. Schilling */
++/* @(#)udf.c	1.43 15/11/25 Copyright 2001-2015 J. Schilling */
+ #include <schily/mconfig.h>
+ #ifndef lint
+ static	UConst char sccsid[] =
+-	"@(#)udf.c	1.42 13/04/24 Copyright 2001-2013 J. Schilling";
++	"@(#)udf.c	1.43 15/11/25 Copyright 2001-2015 J. Schilling";
+ #endif
+ /*
+  * udf.c - UDF support for mkisofs
+  *
+  * Written by Ben Rudiak-Gould (2001).
+  *
+- * Copyright 2001-2013 J. Schilling.
++ * Copyright 2001-2015 J. Schilling.
+  */
+ /*
+  * This program is free software; you can redistribute it and/or modify
+@@ -98,7 +98,7 @@ static	UConst char sccsid[] =
+ extern	int	use_sparcboot;
+ 
+ extern struct directory *root;
+-extern time_t		begun;
++extern struct timeval	tv_begun;
+ 
+ static unsigned lba_main_seq;
+ static unsigned lba_main_seq_copy;
+@@ -110,7 +110,7 @@ static unsigned lba_end_anchor_vol_desc;
+ static unsigned num_udf_files;
+ static unsigned num_udf_directories;
+ 
+-static unsigned volume_set_id[2];
++static unsigned volume_set_id[2] = { 0, 0 };
+ 
+ #define	UDF_MAIN_SEQ_LENGTH (16)
+ #define	UDF_INTEG_SEQ_LENGTH (2)
+@@ -723,7 +723,7 @@ set_primary_vol_desc(buf, lba)
+ 	/*pvd->volume_abstract;*/
+ 	/*pvd->volume_copyright_notice;*/
+ 	/*pvd->application_ident;*/
+-	set_timestamp_from_time_t(&pvd->recording_date_and_time, begun);
++	set_timestamp_from_time_t(&pvd->recording_date_and_time, tv_begun.tv_sec);
+ 	set_impl_ident(&pvd->impl_ident);
+ 	set_tag(&pvd->desc_tag, UDF_TAGID_PRIMARY_VOLUME_DESC, lba, 512);
+ }
+@@ -831,7 +831,7 @@ set_logical_vol_integrity_desc(buf, lba)
+ 	udf_logical_volume_integrity_desc *lvid =
+ 				(udf_logical_volume_integrity_desc *)buf;
+ 
+-	set_timestamp_from_time_t(&lvid->recording_date, begun);
++	set_timestamp_from_time_t(&lvid->recording_date, tv_begun.tv_sec);
+ 	set32(&lvid->integrity_type, UDF_INTEGRITY_TYPE_CLOSE);
+ 	/*lvid->next_integrity_extent;*/
+ 	set64(&lvid->logical_volume_contents_use.unique_id,
+@@ -859,7 +859,7 @@ set_file_set_desc(buf, rba)
+ {
+ 	udf_file_set_desc *fsd = (udf_file_set_desc *)buf;
+ 
+-	set_timestamp_from_time_t(&fsd->recording_date_and_time, begun);
++	set_timestamp_from_time_t(&fsd->recording_date_and_time, tv_begun.tv_sec);
+ 	set16(&fsd->interchange_level, 3);
+ 	set16(&fsd->maximum_interchange_level, 3);
+ 	set32(&fsd->character_set_list, 1);
+@@ -1986,8 +1986,10 @@ udf_main_seq_write(out)
+ 	 * volume_set_id needs to be set to a (64-bit) "unique" number.
+ 	 * This will have to do for now.
+ 	 */
+-	volume_set_id[0] = begun;
+-	volume_set_id[1] = (unsigned)clock();	/* XXX Maybe non-portable */
++	if (volume_set_id[0] == 0) {
++		volume_set_id[0] = tv_begun.tv_sec;
++		volume_set_id[1] = (unsigned)tv_begun.tv_usec;
++	}
+ 
+ 	memset(buf, 0, sizeof (buf));
+ 	set_primary_vol_desc(buf, last_extent_written++);
+--- cdrtools-3.01.orig/mkisofs/mkisofs.c	2015-01-01 14:19:51.000000000 +0000
++++ cdrtools-3.01/mkisofs/mkisofs.c
+@@ -69 +69 @@ int		path_ind;
+-char	version_string[] = VERSION;
++char	version_string[] = "3.01-fix-20151126";
-- 
2.12.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools.
  2017-04-26 16:05 bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
@ 2017-04-26 16:30 ` Thomas Danckaert
  2017-04-26 16:30   ` bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item Thomas Danckaert
                     ` (5 more replies)
  2017-04-26 16:59 ` bug#26669: [PATCH 1/7] gnu: Add cdrtools Mathieu Othacehe
  2017-05-03 12:59 ` Ludovic Courtès
  2 siblings, 6 replies; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:30 UTC (permalink / raw)
  To: 26669; +Cc: Thomas Danckaert

From: Thomas Danckaert <post@thomasdanckaert.be>

* gnu/packages/cdrom.scm (dvd+rw-tools): New variable.
* gnu/packages/patches/dvd+rw-tools-add-include.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/cdrom.scm                             | 44 ++++++++++++++++++++++
 .../patches/dvd+rw-tools-add-include.patch         | 14 +++++++
 3 files changed, 59 insertions(+)
 create mode 100644 gnu/packages/patches/dvd+rw-tools-add-include.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a2c56e03d..22431ddc0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -544,6 +544,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/doc++-include-directives.patch		\
   %D%/packages/patches/doc++-segfault-fix.patch			\
   %D%/packages/patches/doxygen-test.patch			\
+  %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
   %D%/packages/patches/elixir-disable-failing-tests.patch	\
   %D%/packages/patches/einstein-build.patch			\
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 69af39655..5c1ac4a50 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 John Darrington <jmd@gnu.org>
+;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,6 +42,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages man)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages elf)
@@ -258,6 +260,48 @@ images.")
    ;; mkisofs is GPL, the other programs are CDDL.
    (license (list cddl1.0 gpl2))))
 
+(define-public dvd+rw-tools
+  (package
+    (name "dvd+rw-tools")
+    (version "7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1jkjvvnjcyxpql97xjjx0kwvy70kxpiznr2zpjy2hhci5s10zmpq"))
+              (patches (search-patches "dvd+rw-tools-add-include.patch"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("cdrtools" ,cdrtools)))
+    (native-inputs
+     `(("m4" ,m4)))
+    (arguments
+     `(#:tests? #f ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _ (setenv "prefix" (assoc-ref %outputs "out")) #t))
+         (add-before 'build 'embed-mkisofs
+           (lambda*  (#:key inputs #:allow-other-keys)
+             ;; We use sed --in-place because substitute* cannot handle the
+             ;; character encoding used by growisofs.c.
+             (system* "sed" "-i" "-e"
+                      (string-append
+                       "s,\"mkisofs\","
+                       "\"" (assoc-ref inputs "cdrtools") "/bin/mkisofs\",")
+                      "growisofs.c")
+             #t)))))
+    (home-page "http://fy.chalmers.se/~appro/linux/DVD+RW/")
+    (synopsis "DVD and Blu-ray Disc burning tools")
+    (description "dvd+rw-tools, mostly known for its command
+@command{growisofs}, is a collection of DVD and Blu-ray Disc burning tools.
+It requires another program, such as @command{mkisofs}, @command{genisoimage},
+or @command{xorrisofs} to create ISO 9660 images.")
+    (license gpl2)))
+
 (define-public dvdisaster
   (package
     (name "dvdisaster")
diff --git a/gnu/packages/patches/dvd+rw-tools-add-include.patch b/gnu/packages/patches/dvd+rw-tools-add-include.patch
new file mode 100644
index 000000000..800f8f30b
--- /dev/null
+++ b/gnu/packages/patches/dvd+rw-tools-add-include.patch
@@ -0,0 +1,14 @@
+Without <limits.h>, INT_MAX is not defined.
+
+diff --git a/transport.hxx b/transport.hxx
+index 35a57a7..838add6 100644
+--- a/transport.hxx
++++ b/transport.hxx
+@@ -11,6 +11,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <string.h>
++#include <limits.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item.
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
@ 2017-04-26 16:30   ` Thomas Danckaert
  2017-04-28  5:54     ` Danny Milosavljevic
  2017-04-26 16:30   ` bug#26669: [PATCH 4/7] gnu: Add dvdauthor Thomas Danckaert
                     ` (4 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:30 UTC (permalink / raw)
  To: 26669; +Cc: Thomas Danckaert

From: Thomas Danckaert <post@thomasdanckaert.be>

* gnu/packages/gnome.scm (brasero)[arguments]: Add phase 'embed-growisofs.
---
 gnu/packages/gnome.scm | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index fc19318b9..ef56168bf 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -150,7 +150,14 @@
                                          "/share/gir-1.0")
                           (string-append "--with-typelibdir="
                                          (assoc-ref %outputs "out")
-                                         "/lib/girepository-1.0"))))
+                                         "/lib/girepository-1.0"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'embed-growisofs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "plugins/growisofs/burn-growisofs.c"
+               (("\"growisofs") (string-append "\"" (which "growisofs"))))
+             #t )))))
     (propagated-inputs
      `(("hicolor-icon-theme" ,hicolor-icon-theme)))
     (native-inputs
@@ -159,7 +166,8 @@
        ("gobject-introspection" ,gobject-introspection)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("glib" ,glib)
+     `(("dvd+rw-tools" ,dvd+rw-tools)
+       ("glib" ,glib)
        ("gnome-doc-utils" ,gnome-doc-utils)
        ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 4/7] gnu: Add dvdauthor.
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
  2017-04-26 16:30   ` bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item Thomas Danckaert
@ 2017-04-26 16:30   ` Thomas Danckaert
  2017-04-27 18:50     ` Danny Milosavljevic
  2017-04-26 16:30   ` bug#26669: [PATCH 5/7] gnu: Add wxwidgets-3.1 Thomas Danckaert
                     ` (3 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:30 UTC (permalink / raw)
  To: 26669; +Cc: Thomas Danckaert

From: Thomas Danckaert <post@thomasdanckaert.be>

* gnu/packages/video.scm (dvdauthor): New variable.
---
 gnu/packages/video.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index cc07cc712..b04956a00 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -75,6 +76,7 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
@@ -1193,6 +1195,33 @@ authentication and descrambling (if an external libdvdcss library is
 installed).")
     (license license:gpl2+)))
 
+(define-public dvdauthor
+  (package
+    (name "dvdauthor")
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/dvdauthor/dvdauthor-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1drfc47hikfzc9d7hjk34rw10iqw01d2vwmn91pv73ppx4nsj81h"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libdvdread" ,libdvdread)
+       ("libpng" ,libpng)
+       ("imagemagick" ,imagemagick)
+       ("libxml2" ,libxml2)
+       ("freetype" ,freetype)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "Generates a DVD-Video movie from a MPEG-2 stream")
+    (description "@command{dvdauthor} will generate a DVD-Video movie from a
+MPEG-2 stream containing VOB packets.")
+    (home-page "http://dvdauthor.sourceforge.net")
+    (license license:gpl3+)))
+
 (define-public libdvdnav
   (package
     (name "libdvdnav")
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 5/7] gnu: Add wxwidgets-3.1.
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
  2017-04-26 16:30   ` bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item Thomas Danckaert
  2017-04-26 16:30   ` bug#26669: [PATCH 4/7] gnu: Add dvdauthor Thomas Danckaert
@ 2017-04-26 16:30   ` Thomas Danckaert
  2017-05-03 13:00     ` Ludovic Courtès
  2017-04-26 16:30   ` bug#26669: [PATCH 6/7] gnu: Add wxsvg Thomas Danckaert
                     ` (2 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:30 UTC (permalink / raw)
  To: 26669; +Cc: Thomas Danckaert

From: Thomas Danckaert <post@thomasdanckaert.be>

* gnu/packages/wxwidgets.scm (wxwidgets-3.1): New variable.
---
 gnu/packages/wxwidgets.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 077195cca..bd6ffec0f 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
+;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,6 +28,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python)
   #:use-module (guix build utils)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
@@ -97,6 +99,27 @@ and many other languages.")
                         (package-inputs wxwidgets))))
            (name "wxwidgets-gtk2")))
 
+;; Development version of wxWidgets, required to build against gstreamer-1.x.
+;; This can be removed when wxWidgets is updated to the next stable version.
+(define-public wxwidgets-3.1
+  (package (inherit wxwidgets)
+           (version "3.1.0")
+           (source
+            (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/wxWidgets/wxWidgets/archive/v"
+                                  version ".tar.gz"))
+              (file-name (string-append "wxwidgets-" version ".tar.gz"))
+              (sha256
+               (base32 "1yan5ysjwh6a7xw82sfjd1xn0nsy1dn2s0cx9ac7cw19191blc3y"))))
+           (inputs `(("gstreamer" ,gstreamer)
+                     ("gst-plugins-base" ,gst-plugins-base)
+                     ,@(package-inputs wxwidgets)))
+           (arguments
+            (substitute-keyword-arguments (package-arguments wxwidgets)
+              ((#:configure-flags flags)
+               `(cons "--enable-mediactrl" ,flags))))))
+
 (define-public python2-wxpython
   (package
     (name "python2-wxpython")
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 6/7] gnu: Add wxsvg.
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
                     ` (2 preceding siblings ...)
  2017-04-26 16:30   ` bug#26669: [PATCH 5/7] gnu: Add wxwidgets-3.1 Thomas Danckaert
@ 2017-04-26 16:30   ` Thomas Danckaert
  2017-05-03 13:02     ` Ludovic Courtès
  2017-04-26 16:30   ` bug#26669: [PATCH 7/7] gnu: Add dvdstyler Thomas Danckaert
  2017-04-26 17:15   ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Danny Milosavljevic
  5 siblings, 1 reply; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:30 UTC (permalink / raw)
  To: 26669; +Cc: Thomas Danckaert

From: Thomas Danckaert <post@thomasdanckaert.be>

* gnu/packages/wxwidgets.scm (wxsvg): New variable.
---
 gnu/packages/wxwidgets.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index bd6ffec0f..b603fe588 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -36,6 +36,8 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages photo)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sdl)
@@ -190,3 +192,30 @@ and many other languages.")
     (description "@code{wxpython} provides Python 2 bindings for wxWidgets.")
     (home-page "http://wxpython.org/")
     (license (package-license wxwidgets))))
+
+(define-public wxsvg
+  (package
+    (name "wxsvg")
+    (version "1.5.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/wxsvg/wxsvg/"
+                            version "/wxsvg-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "0m3ff8mjiq4hvy8rmxyc9fkpf24xwxhvr3a6jmvr2q5zc41xhz7x"))))
+    (build-system glib-or-gtk-build-system)
+    (inputs
+     `(("wxwidgets" ,wxwidgets-3.1)
+       ("cairo" ,cairo)
+       ("pango" ,pango)
+       ("libexif" ,libexif)
+       ("ffmpeg" ,ffmpeg)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "C++ library to create, manipulate and render SVG files")
+    (description "wxSVG is a C++ library to create, manipulate and render
+@dfn{Scalable Vector Graphics} (SVG) files with the wxWidgets toolkit.")
+    (home-page "http://wxsvg.sourceforge.net")
+    (license (list l:lgpl2.0+ (l:fsf-free "file://COPYING")))))
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 7/7] gnu: Add dvdstyler.
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
                     ` (3 preceding siblings ...)
  2017-04-26 16:30   ` bug#26669: [PATCH 6/7] gnu: Add wxsvg Thomas Danckaert
@ 2017-04-26 16:30   ` Thomas Danckaert
  2017-05-03 13:04     ` Ludovic Courtès
  2017-04-26 17:15   ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Danny Milosavljevic
  5 siblings, 1 reply; 17+ messages in thread
From: Thomas Danckaert @ 2017-04-26 16:30 UTC (permalink / raw)
  To: 26669; +Cc: Thomas Danckaert

From: Thomas Danckaert <post@thomasdanckaert.be>

* gnu/packages/cdrom.scm (dvdstyler): New variable.
---
 gnu/packages/cdrom.scm | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 5c1ac4a50..eb8a82f30 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -37,8 +37,12 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages zip)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages docbook)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages man)
@@ -46,11 +50,16 @@
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages elf)
+  #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages base)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages photo)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages wget)
   #:use-module (gnu packages xiph))
 
@@ -343,6 +352,69 @@ depend on the file system of the medium.  The maximum error correction
 capacity is user-selectable.")
     (license gpl2+)))
 
+(define-public dvdstyler
+  (package
+    (name "dvdstyler")
+    (version "3.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/dvdstyler/dvdstyler/"
+                            version "/DVDStyler-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "1j432kszmwmsd3nz398h5514dbm5vsrn4rr3iil72ckjj1h3i00q"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags (list (string-append "XMLTO="
+                                              (assoc-ref %build-inputs "xmlto")
+                                              "/bin/xmlto"
+                                              " --searchpath "
+                                              (assoc-ref %build-inputs "docbook-xsl")
+                                              "/xml/xsl/docbook-xsl-1.79.1/htmlhelp:"
+                                              (assoc-ref %build-inputs "docbook-xml")
+                                              "/xml/dtd/docbook"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program (string-append (assoc-ref outputs "out") "/bin/dvdstyler")
+               `("PATH" ":" prefix
+                 (,(string-join
+                    (map (lambda (in) (string-append (assoc-ref inputs in) "/bin"))
+                                 '("cdrtools" "dvdauthor" "dvd+rw-tools" "ffmpeg"))
+                    ":")))))))
+       #:tests? #f)) ; No tests.
+    (inputs ; TODO package bundled wxvillalib
+     `(("wxwidgets" ,wxwidgets-3.1)
+       ("wssvg" ,wxsvg)
+       ("dbus" ,dbus)
+       ("cdrtools" ,cdrtools)
+       ("dvd+rw-tools" ,dvd+rw-tools)
+       ("dvdauthor" ,dvdauthor)
+       ("eudev" ,eudev)
+       ("fontconfig" ,fontconfig)
+       ("libexif" ,libexif)
+       ("libjpeg" ,libjpeg)
+       ("ffmpeg" ,ffmpeg)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("flex" ,flex)
+       ("python" ,python-2)
+       ("xmlto" ,xmlto)
+       ("gettext" ,gnu-gettext)
+       ("docbook-xml" ,docbook-xml)
+       ("docbook-xsl" ,docbook-xsl)
+       ("zip" ,zip)))
+    (synopsis "DVD authoring application")
+    (description "DVDStyler is a DVD authoring application which allows users
+to burn video files in many formats to DVD discs, complete with individually
+designed menus.  It can be used to create professional-looking DVD's with
+custom buttons, backgrounds and animations, from within a user-friendly
+graphical interface.")
+    (home-page "https://www.dvdstyler.org")
+    (license gpl2)))
+
 (define-public libcue
   (package
     (name "libcue")
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 1/7] gnu: Add cdrtools.
  2017-04-26 16:05 bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
@ 2017-04-26 16:59 ` Mathieu Othacehe
  2017-05-03 12:59 ` Ludovic Courtès
  2 siblings, 0 replies; 17+ messages in thread
From: Mathieu Othacehe @ 2017-04-26 16:59 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: 26669


Hi Thomas,

Thanks for the patches !

Without going into details, it seems to me that you have indentation
issues in this serie.

> +(define-public cdrtools
> +  (package

From here indentation is broken.

> +   (name "cdrtools")
> +   (version "3.01")
> +   (source (origin
> +             (method url-fetch)
> +             (uri (string-append
> +                   "mirror://sourceforge/cdrtools/cdrtools-" version ".tar.bz2"))
> +             (sha256
> +              (base32
> +               "03w6ypsmwwy4d7vh6zgwpc60v541vc5ywp8bdb758hbc4yv2wa7d"))
> +             (patches (search-patches "cdrtools-3.01-mkisofs-isoinfo.patch"))))
> +   (build-system gnu-build-system)
> +   (inputs
> +    `(("linux-headers" ,linux-libre-headers)))
> +   (native-inputs
> +    `(("coreutils" ,coreutils)))
> +   (arguments
> +    `(#:phases (modify-phases %standard-phases
> +                 (delete 'configure)
> +                 (add-before 'build 'set-linux-headers
> +                   (lambda _
> +                     (substitute* "autoconf/configure"
> +                       (("/usr/src/linux")
> +                        (assoc-ref %build-inputs "linux-headers")))
> +                     #t))
> +                 (add-before 'build 'substitute-dirs
> +                   (lambda _
> +                     (substitute* (append (find-files "DEFAULTS" "^Defaults\\.")
> +                                          (find-files "DEFAULTS_ENG" "^Defaults\\.")

Please keep all lines in *.scm files to 80 columns or less.

> +                                          (find-files "TEMPLATES" "^Defaults\\."))
> +                       (("/opt/schily") (assoc-ref %outputs "out")))
> +                     #t))

Thanks,

Mathieu

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools.
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
                     ` (4 preceding siblings ...)
  2017-04-26 16:30   ` bug#26669: [PATCH 7/7] gnu: Add dvdstyler Thomas Danckaert
@ 2017-04-26 17:15   ` Danny Milosavljevic
  5 siblings, 0 replies; 17+ messages in thread
From: Danny Milosavljevic @ 2017-04-26 17:15 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: Thomas Danckaert, 26669

On Wed, 26 Apr 2017 18:30:33 +0200
Thomas Danckaert <thomas.danckaert@gmail.com> wrote:

> +           (lambda*  (#:key inputs #:allow-other-keys)
> +             ;; We use sed --in-place because substitute* cannot handle the
> +             ;; character encoding used by growisofs.c.
> +             (system* "sed" "-i" "-e"
> +                      (string-append
> +                       "s,\"mkisofs\","
> +                       "\"" (assoc-ref inputs "cdrtools") "/bin/mkisofs\",")
> +                      "growisofs.c")
> +             #t)))))

Maybe rather use

  (zero? (system* ...))

instead of

  (system* ...)
  #t

Otherwise LGTM!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 4/7] gnu: Add dvdauthor.
  2017-04-26 16:30   ` bug#26669: [PATCH 4/7] gnu: Add dvdauthor Thomas Danckaert
@ 2017-04-27 18:50     ` Danny Milosavljevic
  0 siblings, 0 replies; 17+ messages in thread
From: Danny Milosavljevic @ 2017-04-27 18:50 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: Thomas Danckaert, 26669

LGTM!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item.
  2017-04-26 16:30   ` bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item Thomas Danckaert
@ 2017-04-28  5:54     ` Danny Milosavljevic
  0 siblings, 0 replies; 17+ messages in thread
From: Danny Milosavljevic @ 2017-04-28  5:54 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: Thomas Danckaert, 26669

Please also mention the added input "dvd+rw-tools".

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 1/7] gnu: Add cdrtools.
  2017-04-26 16:05 bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
  2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
  2017-04-26 16:59 ` bug#26669: [PATCH 1/7] gnu: Add cdrtools Mathieu Othacehe
@ 2017-05-03 12:59 ` Ludovic Courtès
  2 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2017-05-03 12:59 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: 26669

Hi!

Thomas Danckaert <post@thomasdanckaert.be> skribis:

> There is/has been some controversy about the license of cdrtools, with
> claims it cannot be distributed in binary form because it mixes CDDL
> and GPL code.  As far as I understand, mkisofs is GPL, while the other
> executables are CDDL, and I do not really see the problem.  If others
> disagree, or we want to be extra careful, I suppose we can disable
> substitutes for cdrtools, so we only distribute it as source?

We could do that if needed.  From your description it’s not clear to me
either what the problem is though.  It’s a case where I would recommend
checking <https://libreplanet.org/wiki/Software_blacklist> (apparently
there’s nothing about it) or Debian.  :-)

> cdrtools also bundles a forked LGPL-licensed copy of cdparanoia.  This
> is perhaps unfortunate, but I don't think it's easy to unbundle it
> (cdrtools doesn't build agains our current cdparanoia).

Just leave an XXX explaining this.

A couple of comments to complement what Mathieu wrote:

>>From 96fb5484e4a4d741da685ce63f578feb69bc016f Mon Sep 17 00:00:00 2001
> From: Thomas Danckaert <thomas.danckaert@gmail.com>
> Date: Fri, 21 Apr 2017 15:54:20 +0200
> Subject: [PATCH 1/7] gnu: Add cdrtools.
>
> * gnu/packages/cdrom.scm (cdrtools): New variable.
> * gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.

[...]

> +   (inputs
> +    `(("linux-headers" ,linux-libre-headers)))
> +   (native-inputs
> +    `(("coreutils" ,coreutils)))

These are implicit inputs already so you can remove them.

> +++ b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch
> @@ -0,0 +1,514 @@
> +Patch for version 3.01, taken from upstream at
> +https://sourceforge.net/projects/cdrtools/files/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch

It would be nice to add a few words about what it does, like “Fix
compilation with recent glibc” or something.

Ludo’.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 5/7] gnu: Add wxwidgets-3.1.
  2017-04-26 16:30   ` bug#26669: [PATCH 5/7] gnu: Add wxwidgets-3.1 Thomas Danckaert
@ 2017-05-03 13:00     ` Ludovic Courtès
  0 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2017-05-03 13:00 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: Thomas Danckaert, 26669

Thomas Danckaert <thomas.danckaert@gmail.com> skribis:

> From: Thomas Danckaert <post@thomasdanckaert.be>
>
> * gnu/packages/wxwidgets.scm (wxwidgets-3.1): New variable.

LGTM, thanks!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 6/7] gnu: Add wxsvg.
  2017-04-26 16:30   ` bug#26669: [PATCH 6/7] gnu: Add wxsvg Thomas Danckaert
@ 2017-05-03 13:02     ` Ludovic Courtès
  0 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2017-05-03 13:02 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: Thomas Danckaert, 26669

Thomas Danckaert <thomas.danckaert@gmail.com> skribis:

> From: Thomas Danckaert <post@thomasdanckaert.be>
>
> * gnu/packages/wxwidgets.scm (wxsvg): New variable.

[...]

> +    (home-page "http://wxsvg.sourceforge.net")
> +    (license (list l:lgpl2.0+ (l:fsf-free "file://COPYING")))))

Please add a comment explaining what is meant here (the kind of license
that appears in COPYING, whether we’re talking of a combination of
licenses or a choice users can make, etc.)

OK with this change, thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 7/7] gnu: Add dvdstyler.
  2017-04-26 16:30   ` bug#26669: [PATCH 7/7] gnu: Add dvdstyler Thomas Danckaert
@ 2017-05-03 13:04     ` Ludovic Courtès
  2017-05-10  7:48       ` bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2017-05-03 13:04 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: Thomas Danckaert, 26669

Thomas Danckaert <thomas.danckaert@gmail.com> skribis:

> From: Thomas Danckaert <post@thomasdanckaert.be>
>
> * gnu/packages/cdrom.scm (dvdstyler): New variable.

[...]

> +    (arguments
> +     `(#:configure-flags (list (string-append "XMLTO="
> +                                              (assoc-ref %build-inputs "xmlto")
> +                                              "/bin/xmlto"
> +                                              " --searchpath "
> +                                              (assoc-ref %build-inputs "docbook-xsl")
> +                                              "/xml/xsl/docbook-xsl-1.79.1/htmlhelp:"
> +                                              (assoc-ref %build-inputs "docbook-xml")
> +                                              "/xml/dtd/docbook"))

I'd expect that adding libxml2 as an input would lead to the appropriate
definition of XML_CATALOG_FILES, and thus remove the need for these
#:configure-flags.  Could you try that?

> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'install 'wrap-program
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (wrap-program (string-append (assoc-ref outputs "out") "/bin/dvdstyler")
> +               `("PATH" ":" prefix
> +                 (,(string-join
> +                    (map (lambda (in) (string-append (assoc-ref inputs in) "/bin"))
> +                                 '("cdrtools" "dvdauthor" "dvd+rw-tools" "ffmpeg"))
                            <-------'
Identation.  :-)

> +                    ":")))))))

Please return #t at the end of the phase.

> +    (license gpl2)))

GPLv2-only, right?

Otherwise LGTM, thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 1/7] gnu: Add cdrtools.
  2017-05-03 13:04     ` Ludovic Courtès
@ 2017-05-10  7:48       ` Thomas Danckaert
  2017-05-10 11:55         ` Ludovic Courtès
  0 siblings, 1 reply; 17+ messages in thread
From: Thomas Danckaert @ 2017-05-10  7:48 UTC (permalink / raw)
  To: ludo, Danny Milosavljevic, Mathieu Othacehe; +Cc: 26669, 26669-close

Hi all,

Thanks for your comments.

I pushed the series to master, with all comments addressed.  Except 
these 2 by Ludo, where I didn't really manage...

From: ludo@gnu.org (Ludovic Courtès)
Subject: Re: bug#26669: [PATCH 1/7] gnu: Add cdrtools.
Date: Wed, 03 May 2017 14:59:12 +0200

>> +++ b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch
>> @@ -0,0 +1,514 @@
>> +Patch for version 3.01, taken from upstream at
>> +https://sourceforge.net/projects/cdrtools/files/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
>
> It would be nice to add a few words about what it does, like “Fix
> compilation with recent glibc” or something.

Unfortunately, I couldn't find a proper explanation for the patch, 
and I'm not familiar enough with the cdrtools code base to completely 
understand it myself.  It seems like it fixes some issues and 
upgrades half-way to 3.02 at the same time...  Well at least we can 
get rid of the patch if/when they release 3.02.

From: ludo@gnu.org (Ludovic Courtès)
Subject: Re: bug#26669: [PATCH 7/7] gnu: Add dvdstyler.
Date: Wed, 03 May 2017 15:04:47 +0200

>> +    (arguments
>> +     `(#:configure-flags (list (string-append "XMLTO="
>> +                                              (assoc-ref 
>> %build-inputs "xmlto")
>> +                                              "/bin/xmlto"
>> +                                              " --searchpath "
>> +                                              (assoc-ref 
>> %build-inputs "docbook-xsl")
>> +                                              
>> "/xml/xsl/docbook-xsl-1.79.1/htmlhelp:"
>> +                                              (assoc-ref 
>> %build-inputs "docbook-xml")
>> +                                              "/xml/dtd/docbook"))
>
> I'd expect that adding libxml2 as an input would lead to the 
> appropriate
> definition of XML_CATALOG_FILES, and thus remove the need for these
> #:configure-flags.  Could you try that?

I tried it, but it didn't work.  Even with these flags, documentation 
generation phase spits out a few warnings about attempted network 
access to retrieve xsd files, but way less than without the flags, 
and at html help is generated successfully :-) .

Thomas

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#26669: [PATCH 1/7] gnu: Add cdrtools.
  2017-05-10  7:48       ` bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
@ 2017-05-10 11:55         ` Ludovic Courtès
  0 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2017-05-10 11:55 UTC (permalink / raw)
  To: Thomas Danckaert; +Cc: 26669, 26669-close

Hi Thomas,

Thomas Danckaert <post@thomasdanckaert.be> skribis:

> Thanks for your comments.
>
> I pushed the series to master, with all comments addressed.  Except
> these 2 by Ludo, where I didn't really manage...
>
> From: ludo@gnu.org (Ludovic Courtès)
> Subject: Re: bug#26669: [PATCH 1/7] gnu: Add cdrtools.
> Date: Wed, 03 May 2017 14:59:12 +0200
>
>>> +++ b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch
>>> @@ -0,0 +1,514 @@
>>> +Patch for version 3.01, taken from upstream at
>>> +https://sourceforge.net/projects/cdrtools/files/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
>>
>> It would be nice to add a few words about what it does, like “Fix
>> compilation with recent glibc” or something.
>
> Unfortunately, I couldn't find a proper explanation for the patch, and
> I'm not familiar enough with the cdrtools code base to completely
> understand it myself.  It seems like it fixes some issues and upgrades
> half-way to 3.02 at the same time...  Well at least we can get rid of
> the patch if/when they release 3.02.

OK, sounds reasonable.

> From: ludo@gnu.org (Ludovic Courtès)
> Subject: Re: bug#26669: [PATCH 7/7] gnu: Add dvdstyler.
> Date: Wed, 03 May 2017 15:04:47 +0200
>
>>> +    (arguments
>>> +     `(#:configure-flags (list (string-append "XMLTO="
>>> +                                              (assoc-ref
>>> %build-inputs "xmlto")
>>> +                                              "/bin/xmlto"
>>> +                                              " --searchpath "
>>> +                                              (assoc-ref
>>> %build-inputs "docbook-xsl")
>>> +
>>> "/xml/xsl/docbook-xsl-1.79.1/htmlhelp:"
>>> +                                              (assoc-ref
>>> %build-inputs "docbook-xml")
>>> +                                              "/xml/dtd/docbook"))
>>
>> I'd expect that adding libxml2 as an input would lead to the
>> appropriate
>> definition of XML_CATALOG_FILES, and thus remove the need for these
>> #:configure-flags.  Could you try that?
>
> I tried it, but it didn't work.  Even with these flags, documentation
> generation phase spits out a few warnings about attempted network
> access to retrieve xsd files, but way less than without the flags, and
> at html help is generated successfully :-) .

Noted.

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2017-05-10 11:56 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-26 16:05 bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
2017-04-26 16:30 ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Thomas Danckaert
2017-04-26 16:30   ` bug#26669: [PATCH 3/7] gnu: brasero: Embed growisofs store item Thomas Danckaert
2017-04-28  5:54     ` Danny Milosavljevic
2017-04-26 16:30   ` bug#26669: [PATCH 4/7] gnu: Add dvdauthor Thomas Danckaert
2017-04-27 18:50     ` Danny Milosavljevic
2017-04-26 16:30   ` bug#26669: [PATCH 5/7] gnu: Add wxwidgets-3.1 Thomas Danckaert
2017-05-03 13:00     ` Ludovic Courtès
2017-04-26 16:30   ` bug#26669: [PATCH 6/7] gnu: Add wxsvg Thomas Danckaert
2017-05-03 13:02     ` Ludovic Courtès
2017-04-26 16:30   ` bug#26669: [PATCH 7/7] gnu: Add dvdstyler Thomas Danckaert
2017-05-03 13:04     ` Ludovic Courtès
2017-05-10  7:48       ` bug#26669: [PATCH 1/7] gnu: Add cdrtools Thomas Danckaert
2017-05-10 11:55         ` Ludovic Courtès
2017-04-26 17:15   ` bug#26669: [PATCH 2/7] gnu: Add dvd+rw-tools Danny Milosavljevic
2017-04-26 16:59 ` bug#26669: [PATCH 1/7] gnu: Add cdrtools Mathieu Othacehe
2017-05-03 12:59 ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).