All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Kenton <skenton@ou.edu>
To: buildroot@busybox.net
Subject: [Buildroot] ][PATCH V3] dvd+rw-tools: new package
Date: Sun, 18 Jan 2015 00:37:24 -0600	[thread overview]
Message-ID: <54BB54A4.8080301@ou.edu> (raw)

The dvd+rw-tools are used to master Blu-ray Disc
and DVD Disc media, both +RW/+R and -RW/-R. The
+RW in the name is a historical artifact. This
package contains the widely used growisofs program.
	
http://fy.chalmers.se/~appro/linux/DVD+RW/tools

Patch to dvd+rw-tools mkisofs->xorrisofs based on LFS instructions.
http://www.linuxfromscratch.org/blfs/view/svn/multimedia/dvd-rw-tools.html

sed -i '/stdlib/a #include <limits.h>' transport.hxx &&
sed -i 's#mkisofs"#xorrisofs"#' growisofs.c &&
sed -i 's#mkisofs#xorrisofs#;s#MKISOFS#XORRISOFS#' growisofs.1 &&

Signed-off-by Stephen M. Kenton <skenton@ou.edu>
---
The xorriso dependency is only needed at run time, not build time
so it is selected in Config.in but not a dependency in dvdrw-tools.mk

V3 - added xorriso dependency and followed LFS directions
     for replacing cdrtools with GNU xorriso

V2 - added the licensing information
Build tested with both uClibc and glibc against last nights snapshot

uClibc make savedefconfig
BR2_TOOLCHAIN_BUILDROOT_LARGEFILE=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_PACKAGE_DVDRW_TOOLS=y

glibc make savedefconfig
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_DVDRW_TOOLS=y

diff -pruN buildroot.ori/package/Config.in buildroot/package/Config.in
--- buildroot.ori/package/Config.in	2015-01-15 02:41:42.000000000 -0600
+++ buildroot/package/Config.in	2015-01-18 00:18:10.950290643 -0600
@@ -7,6 +7,7 @@ menu "Audio and video applications"
 	source "package/aumix/Config.in"
 	source "package/bellagio/Config.in"
 	source "package/dvdauthor/Config.in"
+	source "package/dvdrw-tools/Config.in"
 	source "package/espeak/Config.in"
 	source "package/faad2/Config.in"
 	source "package/ffmpeg/Config.in"
diff -pruN buildroot.ori/package/dvdrw-tools/0001-xorriso_and_limits.h.patch buildroot/package/dvdrw-tools/0001-xorriso_and_limits.h.patch
--- buildroot.ori/package/dvdrw-tools/0001-xorriso_and_limits.h.patch	1969-12-31 18:00:00.000000000 -0600
+++ buildroot/package/dvdrw-tools/0001-xorriso_and_limits.h.patch	2015-01-17 23:39:44.142246393 -0600
@@ -0,0 +1,159 @@
+diff -pruN dvd+rw-tools-7.1.ori/growisofs.1 dvd+rw-tools-7.1/growisofs.1
+--- dvd+rw-tools-7.1.ori/growisofs.1	2008-03-01 04:40:06.000000000 -0600
++++ dvd+rw-tools-7.1/growisofs.1	2015-01-17 23:33:49.442239589 -0600
+@@ -1,6 +1,6 @@
+ .TH GROWISOFS 1m "1 Mar 2008" "growisofs 7.1"
+ .SH NAME
+-growisofs \- combined mkisofs frontend/DVD recording program.
++growisofs \- combined xorrisofs frontend/DVD recording program.
+ .SH SYNOPSIS
+ .B growisofs
+ [\fB\-dry\-run\fP]
+@@ -9,10 +9,10 @@ growisofs \- combined mkisofs frontend/D
+ [\fB\-speed=1\fP]
+ \-[\fBZ|M\fP]
+ .I /dev/dvd
+-.I <mkisofs-options>
++.I <xorrisofs-options>
+
+ .SH DESCRIPTION
+-\fBgrowisofs\fP was originally designed as a frontend to \fBmkisofs\fP
++\fBgrowisofs\fP was originally designed as a frontend to \fBxorrisofs\fP
+ to facilitate appending of data to ISO9660 volumes residing on
+ random-access media such as DVD+RW, DVD\-RAM, plain files, hard disk
+ partitions. In the course of development general purpose DVD recording
+@@ -35,7 +35,7 @@ EXAMPLES section for further details.
+ Merge a new session to an existing one.
+ .TP
+ .BI \-version
+-Print version information and invoke \fBmkisofs\fP, also with \-version
++Print version information and invoke \fBxorrisofs\fP, also with \-version
+ option.
+ .TP
+ .BI \-dvd\-compat
+@@ -47,7 +47,7 @@ explicitly burn [otherwise optional] lea
+ .BI \-dry\-run
+ At dry\-run \fBgrowisofs\fP performs all the steps till, but not
+ including the first write operation. Most notably check for "overburn"
+-condition is performed, which implies that mkisofs is invoked and
++condition is performed, which implies that xorrisofs is invoked and
+ terminated prematurely.
+ .TP
+ .BI \-overburn
+@@ -68,8 +68,8 @@ be found in \fBdvd+rw\-mediainfo\fP outp
+ recordings are commonly performed at ~1/2 of advertised speed, because
+ of defect management being in effect.
+ .TP
+-.BI <mkisofs-options>
+-More options can be found in the manpage for \fBmkisofs\fP.
++.BI <xorrisofs-options>
++More options can be found in the manpage for \fBxorrisofs\fP.
+
+ .P
+ There are several undocumented options commonly denoted with
+@@ -82,7 +82,7 @@ these options undocumented is that those
+ need to use them directly can as well consult the source code or obtain
+ specific instructions elsewhere.
+
+-.SH DIFFERENCES WITH RUNNING MKISOFS DIRECTLY
++.SH DIFFERENCES WITH RUNNING XORRISOFS DIRECTLY
+ .P
+ When using growisofs you may not use the
+ .B \-o
+@@ -99,13 +99,13 @@ will construct one for you;
+ Otherwise everything that applies to
+ .I [multisession]
+ mastering with
+-.B mkisofs
++.B xorrisofs
+ applies to
+ .B growisofs
+ as well.
+ .B growisofs
+ needs at least
+-.B mkisofs
++.B xorrisofs
+ version 1.14, version 2.0 is required for multisession write-once
+ recordings.
+
+@@ -146,12 +146,12 @@ command name is not intuitive in this co
+ .SH NOTES
+ If executed under sudo(8) growisofs refuses to start. This is done for
+ the following reason. Naturally growisofs has to access the data set to
+-be recorded to optical media, either indirectly by letting mkisofs
++be recorded to optical media, either indirectly by letting xorrisofs
+ generate ISO9660 layout on-the-fly or directly if a pre-mastered image
+ is to be recorded. Being executed under sudo(8), growisofs effectively
+ grants sudoers read access to \fIany\fP file in the file system. The
+-situation is intensified by the fact that growisofs parses MKISOFS
+-environment variable in order to determine alternative path to mkisofs
++situation is intensified by the fact that growisofs parses XORRISOFS
++environment variable in order to determine alternative path to xorrisofs
+ executable image. This means that being executed under sudo(8),
+ growisofs effectively grants sudoers right to execute program of their
+ choice with elevated privileges. If you for any reason still find the
+@@ -162,13 +162,13 @@ real growisofs binary.
+ .nf
+ 	#!/bin/ksh
+ 	unset SUDO_COMMAND
+-	export MKISOFS=/path/to/trusted/mkisofs
++	export XORRISOFS=/path/to/trusted/xorrisofs
+ 	exec growisofs "$@"
+ .fi
+
+ But note that the recommended alternative to the above "workaround" is
+ actually to install growisofs set\-root\-uid, in which case it will drop
+-privileges prior accessing data or executing mkisofs in order to
++privileges prior accessing data or executing xorrisofs in order to
+ preclude unauthorized access to the data.
+
+ If the media already carries isofs and \fBgrowisofs\fP is invoked with
+@@ -214,7 +214,7 @@ it gets pre-formatted with minimal spare
+ Most up-to-date information on dvd+rw\-tools is available at
+ http://fy.chalmers.se/~appro/linux/DVD+RW/.
+ .PP
+-The manpage for \fBmkisofs\fP.
++The manpage for \fBxorrisofs\fP.
+
+ .SH AUTHORS
+ Andy Polyakov <appro@fy.chalmers.se> stands for programming and on-line
+diff -pruN dvd+rw-tools-7.1.ori/growisofs.c dvd+rw-tools-7.1/growisofs.c
+--- dvd+rw-tools-7.1.ori/growisofs.c	2008-03-04 03:15:03.000000000 -0600
++++ dvd+rw-tools-7.1/growisofs.c	2015-01-17 23:33:27.178239162 -0600
+@@ -2724,7 +2724,7 @@ void pipe_mkisofs_up (char *mkisofs_argv
+         perror (":-( unable to create pipe"), exit(FATAL_START(errno));
+
+     if ((mkisofs_pid=fork ()) == (pid_t)-1)
+-	perror (":-( unable to fork mkisofs"), exit(FATAL_START(errno));
++	perror (":-( unable to fork xorrisofs"), exit(FATAL_START(errno));
+     else if (mkisofs_pid == 0)
+     {	dup2  (fildes[1],1);
+ 	close (fildes[0]);
+@@ -2964,7 +2964,7 @@ int main (int argc, char *argv[])
+
+ #if defined(__unix) || defined(__unix__)
+     env = getenv ("MKISOFS");
+-    mkisofs_argv[0] = (env?env:"mkisofs");
++    mkisofs_argv[0] = (env?env:"xorrisofs");
+ #elif defined(_WIN32)
+     /*
+      * On Windows I insist on mkisofs.exe to reside in very same
+diff -pruN dvd+rw-tools-7.1.ori/transport.hxx dvd+rw-tools-7.1/transport.hxx
+--- dvd+rw-tools-7.1.ori/transport.hxx	2008-03-01 04:34:43.000000000 -0600
++++ dvd+rw-tools-7.1/transport.hxx	2015-01-17 23:33:13.078238891 -0600
+@@ -9,6 +9,7 @@
+ #if defined(__unix) || defined(__unix__)
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <limits.h>
+ #include <unistd.h>
+ #include <string.h>
+ #include <sys/types.h>
+@@ -40,6 +41,7 @@ inline long getmsecs()
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <limits.h>
+ #define ssize_t		LONG_PTR
+ #define off64_t		__int64
+
diff -pruN buildroot.ori/package/dvdrw-tools/Config.in buildroot/package/dvdrw-tools/Config.in
--- buildroot.ori/package/dvdrw-tools/Config.in	1969-12-31 18:00:00.000000000 -0600
+++ buildroot/package/dvdrw-tools/Config.in	2015-01-18 00:14:35.642286513 -0600
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_DVDRW_TOOLS
+	bool "dvdrw-tools"
+	select BR2_PACKAGE_XORRISO
+	help
+	  The dvd+rw-tools are used to master Blu-ray Disc
+	  and DVD Disc media, both +RW/+R and -RW/-R. The
+	  +RW in the name is a historical artifact. This
+	  package contains the widely used growisofs program.
+	
+	  http://fy.chalmers.se/~appro/linux/DVD+RW/tools
+
+comment "dvdrw-tools needs a toolchain w/ wchar, largefile"
+	depends on !BR2_USE_WCHAR || !BR2_LARGEFILE
diff -pruN buildroot.ori/package/dvdrw-tools/dvdrw-tools.mk buildroot/package/dvdrw-tools/dvdrw-tools.mk
--- buildroot.ori/package/dvdrw-tools/dvdrw-tools.mk	1969-12-31 18:00:00.000000000 -0600
+++ buildroot/package/dvdrw-tools/dvdrw-tools.mk	2015-01-16 18:56:07.006133481 -0600
@@ -0,0 +1,24 @@
+#############################################################
+#
+# dvdrw-tools
+#
+#############################################################
+DVDRW_TOOLS_VERSION = 7.1
+DVDRW_TOOLS_SOURCE = dvd+rw-tools-$(DVDRW_TOOLS_VERSION).tar.gz
+DVDRW_TOOLS_SITE = http://fy.chalmers.se/~appro/linux/DVD+RW/tools
+DVDRW_TOOLS_LICENSE = GPLv2
+DVDRW_TOOLS_LICENSE_FILES = LICENSE
+
+define DVDRW_TOOLS_BUILD_CMDS
+	$(MAKE) -C $(@D)
+endef
+
+define DVDRW_TOOLS_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/dvd-ram-control $(TARGET_DIR)/usr/bin/dvd-ram-control
+	$(INSTALL) -m 0755 -D $(@D)/dvd+rw-booktype $(TARGET_DIR)/usr/bin/dvd+rw-booktype
+	$(INSTALL) -m 0755 -D $(@D)/dvd+rw-format $(TARGET_DIR)/usr/bin/dvd+rw-format
+	$(INSTALL) -m 0755 -D $(@D)/dvd+rw-mediainfo $(TARGET_DIR)/usr/bin/dvd+rw-mediainfo
+	$(INSTALL) -m 0755 -D $(@D)/growisofs $(TARGET_DIR)/usr/bin/growisofs
+endef
+
+$(eval $(generic-package))

             reply	other threads:[~2015-01-18  6:37 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-18  6:37 Steve Kenton [this message]
2015-01-19 19:42 ` [Buildroot] ][PATCH V3] dvd+rw-tools: new package Bernd Kuhls

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54BB54A4.8080301@ou.edu \
    --to=skenton@ou.edu \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.