Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Jan 2002 10:00:02 +0100 (CET)
From:      Miguel Mendez <flynn@energyhq.homeip.net>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/34105: New port: audio/p5-FreeDB 
Message-ID:  <200201210900.g0L902f02685@energyhq.homeip.net>

next in thread | raw e-mail | index | archive | help

>Number:         34105
>Category:       ports
>Synopsis:       New port: audio/p5-FreeDB
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 21 01:10:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Miguel Mendez
>Release:        FreeBSD 4.5-RC i386
>Organization:
>Environment:
System: FreeBSD energyhq.homeip.net 4.5-RC FreeBSD 4.5-RC #0: Fri Jan 18 19:08:06 CET 2002 root@energyhq.homeip.net:/storage2/obj/storage2/src/sys/ENERGYHQ i386


	
>Description:
FreeDB.pm is a Perl Module that provides a simple object-oriented
programming interface to the FreeDB entry for whatever CD you pop into your drive. 

WWW: http://www.red-bean.com/~bwf/software/FreeDB/
Miguel Mendez <flynn@energyhq.homeip.net>


>How-To-Repeat:
	
>Fix:

	

--- p5-FreeDB.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	p5-FreeDB/
#	p5-FreeDB/pkg-plist
#	p5-FreeDB/pkg-descr
#	p5-FreeDB/pkg-comment
#	p5-FreeDB/distinfo
#	p5-FreeDB/Makefile
#	p5-FreeDB/files
#	p5-FreeDB/files/patch-FreeDB.pm
#
echo c - p5-FreeDB/
mkdir -p p5-FreeDB/ > /dev/null 2>&1
echo x - p5-FreeDB/pkg-plist
sed 's/^X//' >p5-FreeDB/pkg-plist << 'END-of-p5-FreeDB/pkg-plist'
Xlib/perl5/site_perl/%%PERL_VER%%/FreeDB.pm
Xlib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/FreeDB/.packlist
X@dirrm lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/FreeDB
END-of-p5-FreeDB/pkg-plist
echo x - p5-FreeDB/pkg-descr
sed 's/^X//' >p5-FreeDB/pkg-descr << 'END-of-p5-FreeDB/pkg-descr'
XFreeDB.pm is a Perl Module that provides a simple object-oriented programming
Xinterface to the FreeDB entry for whatever CD you pop into your drive. Take a
Xlook at the online man page to find out more about it.
X
XWWW: http://www.red-bean.com/~bwf/software/FreeDB/
XMiguel Mendez <flynn@energyhq.homeip.net>
END-of-p5-FreeDB/pkg-descr
echo x - p5-FreeDB/pkg-comment
sed 's/^X//' >p5-FreeDB/pkg-comment << 'END-of-p5-FreeDB/pkg-comment'
XPerl Module that provides a programming interface to FreeDB
END-of-p5-FreeDB/pkg-comment
echo x - p5-FreeDB/distinfo
sed 's/^X//' >p5-FreeDB/distinfo << 'END-of-p5-FreeDB/distinfo'
XMD5 (FreeDB-1.1.2.tar.gz) = 6912b2da07c90f520bcfd3712639d2be
END-of-p5-FreeDB/distinfo
echo x - p5-FreeDB/Makefile
sed 's/^X//' >p5-FreeDB/Makefile << 'END-of-p5-FreeDB/Makefile'
X# New ports collection makefile for:	p5-CDDB
X# Date created:		20 Jan 2002
X# Whom:			Miguel Mendez <flynn@energyhq.homeip.net>
X#           FreeDB.pm patch by Alan Eldridge <alane@geeksrus.net>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	FreeDB
XPORTVERSION=	1.1.2
XCATEGORIES=	audio perl5
XMASTER_SITES=	http://www.red-bean.com/~bwf/software/FreeDB/
XPKGNAMEPREFIX=	p5-
X
XMAINTAINER=	flynn@energyhq.homeip.net
X
XPERL_CONFIGURE=	yes
X
XMAN3=           FreeDB.3
XMANPREFIX=      ${PREFIX}/lib/perl5/${PERL_VERSION}
X
X.include <bsd.port.mk>
END-of-p5-FreeDB/Makefile
echo c - p5-FreeDB/files
mkdir -p p5-FreeDB/files > /dev/null 2>&1
echo x - p5-FreeDB/files/patch-FreeDB.pm
sed 's/^X//' >p5-FreeDB/files/patch-FreeDB.pm << 'END-of-p5-FreeDB/files/patch-FreeDB.pm'
X--- FreeDB.pm.orig	Wed Dec  8 08:46:32 1999
X+++ FreeDB.pm	Sun Jan 20 21:00:40 2002
X@@ -49,6 +49,21 @@
X 
X $VERSION = '1.1.2';
X 
X+my ($os, $CDIOREADTOCHEADER, $CDIOREADTOCENTRY);
X+
X+sub BEGIN {
X+    $os = `uname`;
X+    if ($os =~ m/FreeBSD/) {
X+	$CDIOREADTOCHEADER = 0x40046304;
X+	$CDIOREADTOCENTRY  = 0xc00c6306;
X+    } elsif ($os =~ m/Linux/) {
X+	$CDIOREADTOCHEADER = 0x5305;
X+	$CDIOREADTOCENTRY  = 0x5306;
X+    } else {
X+	die "FIXME: $os not supported";
X+    }
X+}
X+
X # Preloaded methods go here.
X 
X sub new {
X@@ -576,7 +591,10 @@
X 		my ($trackno, $ttitle) = split('=', $i);
X 		$tracks[$trackno] .= $ttitle;
X 	}
X-	return 0 if (@tracks[1] eq "");
X+
X+# was @tracks[1]
X+
X+	return 0 if ($tracks[1] eq "");
X 	my (@offsets) = ($tmp =~ /^\#\s+(\d+)/mg);
X 	my ($disclength) = ($tmp =~ /^\#\s*Disc length:\s*(\d+)/mg);
X 	
X@@ -624,38 +642,68 @@
X # Sets:    {discid} and _server_string()
X sub _get_disc_info {
X    my $self = shift @_;
X-	my ($result, $start, $end, $discid, $tracknumber);
X+   my ($result, $start, $end, $discid, $tracknumber, $chdr);
X    my ($track, $adr_ctrl, $format, $frame, $minute, $second);
X-   my $chdr = "";
X    my @tracks = ();
X 
X 	open (cdrom_fd, "$self->{'cdrom_device'}") or croak "Error: could not open device: \"$self->{'cdrom_device'}\"\n\nSolution: login as root and make a new group 'cdrom' in /etc/group\nthen issue these commands:\n  chgrp cdrom $self->{'cdrom_device'}\n  cdmod g+r $self->{'cdrom_device'}\n  adduser <username> cdrom\nNow logout and login as the user again.\n\n";
X 
X+   my $hdrfmt;
X+   if ($os =~ m/Linux/) {
X+       $hdrfmt = 'CC';
X+   } elsif ($os =~ m/FreeBSD/) {
X+       $hdrfmt = 'xxCC';
X+   }
X 	# Get start and end track number
X-   $result = ioctl(cdrom_fd, 0x5305, $chdr);
X+   $chdr = pack($hdrfmt, 0, 0);
X+   $result = ioctl(cdrom_fd, $CDIOREADTOCHEADER, $chdr);
X    $result or croak "CD reading ioctl failed.\n";
X    $self->debug(2,"RESULT IS: $result\n");
X-	($start, $end) = unpack('CC', $chdr);
X-
X+   ($start, $end) = unpack($hdrfmt, $chdr);
X 	# Get info for each track
X 	for ($tracknumber = $start; $tracknumber <= $end; $tracknumber++) {
X-		my $tocentry = pack('C8', $tracknumber, 0, 2, 0, 0, 0, 0, 0);
X+		my $tocentry;
X+
X+		if ($os =~ m/Linux/) {
X+		    $tocentry = pack('C8', $tracknumber, 0, 2, 0, 0, 0, 0, 0);
X+		} elsif ($os =~ m/FreeBSD/) {
X+		    $tocentry = pack('CCx10', 2, $tracknumber);
X+		}
X 
X-		if( ioctl(cdrom_fd, 0x5306, $tocentry) < 0 ) {
X+		if( ioctl(cdrom_fd, $CDIOREADTOCENTRY, $tocentry) < 0 ) {
X 			croak "Error: problems during cdrom tracks read in\n\nSolution: sorry no solution\n";
X 		}
X-		($track, $adr_ctrl, $format, $frame, $minute, $second) = unpack('C*', $tocentry);
X+		if ($os =~ m/Linux/) {
X+		    ($track, $adr_ctrl, $format, $frame, $minute, $second) 
X+			= unpack('C*', $tocentry);
X+		} elsif ($os =~ m/FreeBSD/) {
X+		    ($format, $track, $minute, $second, $frame) 
X+			= unpack('CCx7CCC', $tocentry);
X+		}
X 		$tracks[$tracknumber] = (60 * $minute + $second);
X-
X 	}
X 
X 	# Get info for leadout
X-	my $tocentry = pack('C8', 0xAA, 0, 2, 0, 0, 0, 0 ,0);
X-	if( ioctl(cdrom_fd, 0x5306, $tocentry) < 0 )
X+        my $tocentry;
X+
X+        if ($os =~ m/Linux/) {
X+	    $tocentry = pack('C8', 0xAA, 0, 2, 0, 0, 0, 0 ,0);
X+	} elsif ($os =~ m/FreeBSD/) {
X+	    $tocentry = pack('CCx10', 2, 0xAA);
X+	}
X+
X+	if( ioctl(cdrom_fd, $CDIOREADTOCENTRY, $tocentry) < 0 )
X 	{
X 		croak "Error: problems during cdrom tracks read in\n\nSolution: sorry no solution\n";
X 	}
X-	($track, $adr_ctrl, $format, $frame, $minute, $second) = unpack('C*', $tocentry);
X+
X+        if ($os =~ m/Linux/) {
X+	    ($track, $adr_ctrl, $format, $frame, $minute, $second) 
X+		= unpack('C*', $tocentry);
X+	} elsif ($os =~ m/FreeBSD/) {
X+	    ($format, $track, $minute, $second, $frame) 
X+		= unpack('CCx7CCC', $tocentry);
X+	}
X 	$tracks[$end + 1] = (60 * $minute + $second);
X 
X 	# Calculate cddb sum for all tracks and for total
X
X
END-of-p5-FreeDB/files/patch-FreeDB.pm
exit
--- p5-FreeDB.shar ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201210900.g0L902f02685>