Date: Sat, 16 Nov 2002 19:58:51 +0100 From: Martin Klaffenboeck <martin.klaffenboeck@gmx.at> To: gnome@freebsd.org Subject: rhythmbox - part of gnome 2.4 Message-ID: <20021116185851.GA425@martin.kdrache.org>
next in thread | raw e-mail | index | archive | help
--1yeeQ81UyVL57Vl7 Content-Type: text/plain; format=flowed; charset=ISO-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit Hello, Is anybody else working on rythmbox, which will be in the fifth-toe for gnome 2.2 and a part of gnome 2.4? It's running here. Please can you have a look at this and report any errors back to me? (Please do that really, sometimes when I submit a port, the port will be modified without any feedback to me, which would help me to make better ports.) Note: monkey-media does not support audio cd right now for FreeBSD. (So also rhythmbox cannot support that.) Install musicbrainz first, than monkey-media and rhythmbox at last. I'm not sure of the installation and deinstallation of rhythmbox. musicbrainz is ready and can be added to the portstree (here I'm really sure). monkey-media is also ready I think. (It will not be useful to add monkey-media to the portstree when not adding rhythmbox.) But on rhythmbox please tell me how we have to handle the scrollkeeper things on installing and deinstalling: Further: rhythmbox crashes when I try to play any song. Maybe thats a problem of gstreamer or not, I don't know at the moment. This is first a message to find other people who want integrate rhythmbox to freebsd, like me. Lets make that togeter... - Martin Btw. I get the following messages on installing rhythmbox: Registering /usr/X11R6/share/omf/rhythmbox/rhythmbox-C.omf Updating /usr/X11R6/share/gnome/omf/gnome-utils/gnome-system-log-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local ^ Updating /usr/X11R6/share/gnome/omf/gnome-utils/gnome-character-map-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local ^ Updating /usr/X11R6/share/gnome/omf/gnome-utils/gnome-calculator-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local ^ Updating /usr/X11R6/share/gnome/omf/gnome-utils/gnome-search-tool-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local ^ Updating /usr/X11R6/share/gnome/omf/gnome-utils/gnome-dictionary-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local ^ Updating /usr/X11R6/share/gnome/omf/gnome-utils/archive-generator-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local ^ Updating /usr/X11R6/share/gnome/omf/gnome-games/gnect-C.omf file:///usr/local/share/xml/catalog:1: error: Start tag expected, '<' not found PUBLIC "-//OASIS//DTD Simplified DocBook RefEntry XML V4.1.2.5//EN" "/usr/local and many more. What does that mean? --1yeeQ81UyVL57Vl7 Content-Type: text/x-sh; charset=us-ascii Content-Disposition: attachment; filename="musicbrainz.sh" # 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: # # musicbrainz # musicbrainz/Makefile # musicbrainz/distinfo # musicbrainz/pkg-descr # musicbrainz/pkg-plist # musicbrainz/pkg-comment # echo c - musicbrainz mkdir -p musicbrainz > /dev/null 2>&1 echo x - musicbrainz/Makefile sed 's/^X//' >musicbrainz/Makefile << 'END-of-musicbrainz/Makefile' X# New ports collection makefile for: musicbrainz X# Date created: 14 November 2002 X# Whom: Martin Klaffenboeck <martin.klaffenboeck@gmx.at> X# X# $FreeBSD$ X# X XPORTNAME= musicbrainz XPORTVERSION= 1.1.0 XCATEGORIES= audio XMASTER_SITES= ftp://ftp.musicbrainz.org/pub/musicbrainz/ X XMAINTAINER= martin.klaffenboeck@gmx.at X XUSE_GMAKE= yes XGNU_CONFIGURE= yes X XCONFIGURE_ARGS+= --prefix=${PREFIX} XCONFIGURE_TARGET= --target=${MACHINE_ARCH}-unknown-freebsd${OSREL} X X.include <bsd.port.mk> END-of-musicbrainz/Makefile echo x - musicbrainz/distinfo sed 's/^X//' >musicbrainz/distinfo << 'END-of-musicbrainz/distinfo' XMD5 (musicbrainz-1.1.0.tar.gz) = 3cb03b32369a8040c5214e964628dae2 END-of-musicbrainz/distinfo echo x - musicbrainz/pkg-descr sed 's/^X//' >musicbrainz/pkg-descr << 'END-of-musicbrainz/pkg-descr' XMusicBrainz is a network of web sites that form an open music Xencyclopedia. Like a normal encyclopedia the MusicBrainz Xencyclopedia contains numerous facts, specifically about artists, Xtheir albums, and tracks. X XWWW: http://www.musicbrainz.org/ X- Martin Klaffenboeck <martin.klaffenboeck@gmx.at> END-of-musicbrainz/pkg-descr echo x - musicbrainz/pkg-plist sed 's/^X//' >musicbrainz/pkg-plist << 'END-of-musicbrainz/pkg-plist' Xinclude/musicbrainz/bitprintinfo.h Xinclude/musicbrainz/bitzi/bitcollider.h Xinclude/musicbrainz/bitzi/gui_win32.h Xinclude/musicbrainz/bitzi/list.h Xinclude/musicbrainz/bitzi/plugin.h Xinclude/musicbrainz/errors.h Xinclude/musicbrainz/mb_c.h Xinclude/musicbrainz/musicbrainz.h Xinclude/musicbrainz/queries.h Xlib/libmusicbrainz.a Xlib/libmusicbrainz.la Xlib/libmusicbrainz.so Xlib/libmusicbrainz.so.2 X@dirrm include/musicbrainz/bitzi X@dirrm include/musicbrainz END-of-musicbrainz/pkg-plist echo x - musicbrainz/pkg-comment sed 's/^X//' >musicbrainz/pkg-comment << 'END-of-musicbrainz/pkg-comment' XA library for the open music encyclopedia END-of-musicbrainz/pkg-comment exit --1yeeQ81UyVL57Vl7 Content-Type: text/x-sh; charset=us-ascii Content-Disposition: attachment; filename="monkey-media.sh" # 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: # # monkey-media # monkey-media/Makefile # monkey-media/distinfo # monkey-media/pkg-comment # monkey-media/pkg-descr # monkey-media/pkg-plist # monkey-media/files # monkey-media/files/patch-src::monkey-media-audio-cd.c # monkey-media/files/patch-configure # echo c - monkey-media mkdir -p monkey-media > /dev/null 2>&1 echo x - monkey-media/Makefile sed 's/^X//' >monkey-media/Makefile << 'END-of-monkey-media/Makefile' X# New ports collection makefile for: monkey-media X# Date created: 4 November 2002 X# Whom: Martin Klaffenboeck <martin.klaffenboeck@gmx.at> X# X# $FreeBSD$ X# X XPORTNAME= monkey-media XPORTVERSION= 0.6.0 XCATEGORIES= audio gnome XMASTER_SITES= http://www.rhythmbox.org/download/ X XMAINTAINER= martin.klaffenboeck@gmx.at X XBUILD_DEPENDS= gst-launch-ext:${PORTSDIR}/graphics/gstreamer-plugins XLIB_DEPENDS= gnomevfs-2.0:${PORTSDIR}/devel/gnomevfs2 \ X glade-2.0:${PORTSDIR}/devel/libglade2 \ X vorbis.2:${PORTSDIR}/audio/libvorbis \ X id3tag.1:${PORTSDIR}/audio/mad \ X musicbrainz.2:${PORTSDIR}/audio/musicbrainz X XUSE_GNOMENG= yes XUSE_GMAKE= yes XUSE_X_PREFIX= yes XGNU_CONFIGURE= yes XUSE_LIBTOOL= yes XUSE_REINPLACE= yes X XCONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include ${PTHREAD_CFLAGS}" \ X LIBS="-L${LOCALBASE}/lib -lgnuregex -lcompat" X XCONFIGURE_ARGS+= --prefix=${PREFIX} XCONFIGURE_TARGET= --target=${MACHINE_ARCH}-unknown-freebsd${OSREL} X Xpre-patch: X @find ${WRKSRC} -name Makefile.in | xargs ${REINPLACE_CMD} -e \ X 's|[(]libdir[)]/pkgconfig|(prefix)/libdata/pkgconfig|g' X X.include <bsd.port.mk> END-of-monkey-media/Makefile echo x - monkey-media/distinfo sed 's/^X//' >monkey-media/distinfo << 'END-of-monkey-media/distinfo' XMD5 (monkey-media-0.6.0.tar.gz) = b5a4f8ef0a07a5b9936b409ce8b0fc94 END-of-monkey-media/distinfo echo x - monkey-media/pkg-comment sed 's/^X//' >monkey-media/pkg-comment << 'END-of-monkey-media/pkg-comment' XA library for multimedia playback END-of-monkey-media/pkg-comment echo x - monkey-media/pkg-descr sed 's/^X//' >monkey-media/pkg-descr << 'END-of-monkey-media/pkg-descr' XMonkeyMedia is a library for multimedia playback (of which only audio Xis supported at this point), offering support for seeking, managing Xvolume, obtaining stream information like ID3 tags and bitrate, Xequalizer, and GStreamer visualization plugins. X XMonkeyMedia builds upon the GStreamer multimedia framework, thereby Xsupporting all formats for which GStreamer plugins have been written. X XAll data retreival is done via GnomeVFS, so it is no problem to play data Xover HTTP, Samba, or whatever GnomeVFS-supported protocol you can think of. X X- Martin Klaffenboeck <martin.klaffenboeck@gmx.at> END-of-monkey-media/pkg-descr echo x - monkey-media/pkg-plist sed 's/^X//' >monkey-media/pkg-plist << 'END-of-monkey-media/pkg-plist' Xetc/gconf/gconf.xml.defaults/schemas/system/monkey_media/%gconf.xml Xetc/gconf/gconf.xml.defaults/system/monkey_media/%gconf.xml Xetc/gconf/schemas/monkey-media.schemas Xinclude/monkey-media/monkey-media-audio-cd.h Xinclude/monkey-media/monkey-media-audio-quality.h Xinclude/monkey-media/monkey-media-audio-reencoder.h Xinclude/monkey-media/monkey-media-audio-stream.h Xinclude/monkey-media/monkey-media-mixer.h Xinclude/monkey-media/monkey-media-stream-info.h Xinclude/monkey-media/monkey-media-stream.h Xinclude/monkey-media/monkey-media-visualization.h Xinclude/monkey-media/monkey-media.h Xlib/libmonkey-media.a Xlib/libmonkey-media.la Xlib/libmonkey-media.so Xlib/libmonkey-media.so.0 Xlibdata/pkgconfig/monkey-media.pc Xshare/locale/cs/LC_MESSAGES/monkey-media.mo Xshare/locale/da/LC_MESSAGES/monkey-media.mo Xshare/locale/de/LC_MESSAGES/monkey-media.mo Xshare/locale/it/LC_MESSAGES/monkey-media.mo Xshare/locale/ko/LC_MESSAGES/monkey-media.mo Xshare/locale/no/LC_MESSAGES/monkey-media.mo Xshare/locale/sv/LC_MESSAGES/monkey-media.mo X@dirrm include/monkey-media X@dirrm etc/gconf/gconf.xml.defaults/system/monkey_media X@dirrm etc/gconf/gconf.xml.defaults/schemas/system/monkey_media END-of-monkey-media/pkg-plist echo c - monkey-media/files mkdir -p monkey-media/files > /dev/null 2>&1 echo x - monkey-media/files/patch-src::monkey-media-audio-cd.c sed 's/^X//' >monkey-media/files/patch-src::monkey-media-audio-cd.c << 'END-of-monkey-media/files/patch-src::monkey-media-audio-cd.c' X--- src/monkey-media-audio-cd.c.orig Thu Sep 26 17:15:09 2002 X+++ src/monkey-media-audio-cd.c Sat Nov 16 18:38:44 2002 X@@ -32,7 +32,7 @@ X #include <time.h> X #include <stdlib.h> X #include <string.h> X-#include <linux/cdrom.h> X+/* #include <linux/cdrom.h> We don't have this on FreeBSD */ X X #include "monkey-media.h" X #include "monkey-media-private.h" X@@ -77,13 +77,13 @@ X enum X { X PROP_0, X- PROP_ERROR X+ PROP_ERROR X }; X X enum X { X CD_CHANGED, X- LAST_SIGNAL X+ LAST_SIGNAL X }; X X static guint monkey_media_audio_cd_signals[LAST_SIGNAL] = { 0 }; X@@ -96,131 +96,27 @@ X GType X monkey_media_audio_cd_get_type (void) X { X- static GType type = 0; X- X- if (type == 0) X- { X- static const GTypeInfo our_info = X- { X- sizeof (MonkeyMediaAudioCDClass), X- NULL, X- NULL, X- (GClassInitFunc) monkey_media_audio_cd_class_init, X- NULL, X- NULL, X- sizeof (MonkeyMediaAudioCD), X- 0, X- (GInstanceInitFunc) monkey_media_audio_cd_init, X- }; X- X- type = g_type_register_static (G_TYPE_OBJECT, X- "MonkeyMediaAudioCD", X- &our_info, 0); X- } X- X- return type; X } X X static void X monkey_media_audio_cd_class_init (MonkeyMediaAudioCDClass *klass) X { X- GObjectClass *object_class = G_OBJECT_CLASS (klass); X- X- parent_class = g_type_class_peek_parent (klass); X- X- object_class->finalize = monkey_media_audio_cd_finalize; X- X- object_class->set_property = monkey_media_audio_cd_set_property; X- object_class->get_property = monkey_media_audio_cd_get_property; X- X- g_object_class_install_property (object_class, X- PROP_ERROR, X- g_param_spec_pointer ("error", X- "Error", X- "Failure information", X- G_PARAM_READABLE)); X- X- monkey_media_audio_cd_signals[CD_CHANGED] = X- g_signal_new ("cd_changed", X- G_OBJECT_CLASS_TYPE (object_class), X- G_SIGNAL_RUN_LAST, X- G_STRUCT_OFFSET (MonkeyMediaAudioCDClass, cd_changed), X- NULL, NULL, X- g_cclosure_marshal_VOID__BOOLEAN, X- G_TYPE_NONE, X- 1, X- G_TYPE_BOOLEAN); X } X X X static gboolean X is_cdrom_device (MonkeyMediaAudioCD *cdrom) X { X- int fd; X- X- fd = open (monkey_media_get_cd_drive (), O_RDONLY | O_NONBLOCK); X- if (fd < 0) X- { X- return FALSE; X- } X- X- /* Fire a harmless ioctl at the device. */ X- if (ioctl (fd, CDROM_GET_CAPABILITY, 0) < 0) X- { X- /* Failed, it's not a CDROM drive */ X- close (fd); X- X- return FALSE; X- } X- X- close (fd); X- X- return TRUE; X } X X static void X monkey_media_audio_cd_init (MonkeyMediaAudioCD *cd) X { X- cd->priv = g_new0 (MonkeyMediaAudioCDPrivate, 1); X- X- cd->priv->lock = g_mutex_new (); X- X- if (!is_cdrom_device (cd)) X- { X- cd->priv->error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_NOT_OPENED, X- _("%s does not point to a valid CDRom device. This may be caused by:\n" X- "a) CD support is not compiled into Linux\n" X- "b) You do not have the correct permissions to access the CD drive\n" X- "c) %s is not the CD drive.\n"), X- monkey_media_get_cd_drive (), monkey_media_get_cd_drive ()); X- return; X- } X- X- cd->priv->poll_func_id = g_timeout_add (1000, (GSourceFunc) poll_event_cb, cd); X- X- cd->priv->valid_info = FALSE; X- cd->priv->cd_available = monkey_media_audio_cd_available (cd, NULL); X } X X static void X monkey_media_audio_cd_finalize (GObject *object) X { X- MonkeyMediaAudioCD *cd; X- X- cd = MONKEY_MEDIA_AUDIO_CD (object); X- X- g_mutex_free (cd->priv->lock); X- X- g_source_remove (cd->priv->poll_func_id); X- X- g_free (cd->priv->cd_id); X- g_free (cd->priv->track_lengths); X- g_free (cd->priv->track_offsets); X- X- g_free (cd->priv); X- X- G_OBJECT_CLASS (parent_class)->finalize (object); X } X X static void X@@ -229,7 +125,6 @@ X const GValue *value, X GParamSpec *pspec) X { X- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); X } X X static void X@@ -238,230 +133,46 @@ X GValue *value, X GParamSpec *pspec) X { X- MonkeyMediaAudioCD *cd = MONKEY_MEDIA_AUDIO_CD (object); X- X- if (prop_id != PROP_ERROR) X- { X- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); X- return; X- } X- X- g_value_set_pointer (value, cd->priv->error); X } X X void X monkey_media_audio_cd_unref_if_around (void) X { X- if (global_cd != NULL) X- g_object_unref (G_OBJECT (global_cd)); X- if (global_cd_lock != NULL) X- g_mutex_free (global_cd_lock); X } X X MonkeyMediaAudioCD * X monkey_media_audio_cd_new (GError **error) X { X- MonkeyMediaAudioCD *cd; X- GError *tmp; X- X- if (global_cd_lock == NULL) X- global_cd_lock = g_mutex_new (); X- g_mutex_lock (global_cd_lock); X- X- /* we fake creating the object, since we need it internally as well X- * and having multiple instances would just be a waste of memory. */ X- if (global_cd != NULL) X- { X- g_mutex_unlock (global_cd_lock); X- return g_object_ref (G_OBJECT (global_cd)); X- } X- X- cd = MONKEY_MEDIA_AUDIO_CD (g_object_new (MONKEY_MEDIA_TYPE_AUDIO_CD, NULL)); X- X- g_return_val_if_fail (cd->priv != NULL, NULL); X- X- g_object_get (G_OBJECT (cd), "error", &tmp, NULL); X- X- if (tmp != NULL) X- { X- if (error != NULL) X- *error = tmp; X- else X- g_error_free (tmp); X- X- g_object_unref (G_OBJECT (cd)); X- cd = NULL; X- } X- X- global_cd = cd; X- X- g_mutex_unlock (global_cd_lock); X- X- return g_object_ref (G_OBJECT (cd)); X } X X static gboolean X monkey_media_audio_cd_open (MonkeyMediaAudioCD *cd, X GError **error) X { X- if (cd->priv->open_count++ == 0) X- { X- cd->priv->fd = open (monkey_media_get_cd_drive (), O_RDONLY | O_NONBLOCK); X- X- if (cd->priv->fd < 0) X- { X- if (errno == EACCES && error != NULL) X- { X- *error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_NOT_OPENED, X- _("You do not seem to have permission to access %s."), X- monkey_media_get_cd_drive ()); X- } X- else if (error != NULL) X- { X- *error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_NOT_OPENED, X- _("%s does not appear to point to a valid CD device. This may be because:\n" X- "a) CD support is not compiled into Linux\n" X- "b) You do not have the correct permissions to access the CD drive\n" X- "c) %s is not the CD drive.\n"), X- monkey_media_get_cd_drive (), X- monkey_media_get_cd_drive ()); X- } X- X- cd->priv->open_count = 0; X- return FALSE; X- } X- } X- X- return (cd->priv->fd >= 0); X } X X static void X monkey_media_audio_cd_close (MonkeyMediaAudioCD *cd, X gboolean force_close) X { X- if (--cd->priv->open_count < 0 || force_close) X- { X- cd->priv->open_count = 0; X- } X- X- if (cd->priv->open_count == 0) X- { X- if (cd->priv->fd >= 0) X- close (cd->priv->fd); X- cd->priv->fd = -1; X- } X } X X void X monkey_media_audio_cd_open_tray (MonkeyMediaAudioCD *cd, X GError **error) X { X- int cd_status; X- X- g_return_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd)); X- X- g_mutex_lock (cd->priv->lock); X- X- if (monkey_media_audio_cd_open (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return; X- } X- X- cd_status = ioctl (cd->priv->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); X- X- if (cd_status != -1) X- { X- if (cd_status != CDS_TRAY_OPEN) X- { X- if (ioctl (cd->priv->fd, CDROMEJECT, 0) < 0) X- { X- if (error != NULL) X- { X- *error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_SYSTEM_ERROR, X- "(monkey_media_audio_cd_open_tray): ioctl failed: %s", X- g_strerror (errno)); X- } X- X- monkey_media_audio_cd_close (cd, FALSE); X- X- g_mutex_unlock (cd->priv->lock); X- X- return; X- } X- } X- } X- X- monkey_media_audio_cd_close (cd, TRUE); X- X- g_mutex_unlock (cd->priv->lock); X } X X void X monkey_media_audio_cd_close_tray (MonkeyMediaAudioCD *cd, X GError **error) X { X- g_return_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd)); X- X- g_mutex_lock (cd->priv->lock); X- X- if (monkey_media_audio_cd_open (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return; X- } X- X- if (ioctl (cd->priv->fd, CDROMCLOSETRAY) < 0) X- { X- if (error != NULL) X- { X- *error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_SYSTEM_ERROR, X- "(monkey_media_audio_cd_close_tray): ioctl failed %s", X- g_strerror (errno)); X- } X- X- monkey_media_audio_cd_close (cd, FALSE); X- X- g_mutex_unlock (cd->priv->lock); X- X- return; X- } X- X- monkey_media_audio_cd_close (cd, TRUE); X- X- g_mutex_unlock (cd->priv->lock); X } X X gboolean X monkey_media_audio_cd_available (MonkeyMediaAudioCD *cd, X GError **error) X { X- int cd_status; X- gboolean ret; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), FALSE); X- X- g_mutex_lock (cd->priv->lock); X- X- if (monkey_media_audio_cd_open (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return FALSE; X- } X- X- cd_status = ioctl (cd->priv->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); X- X- monkey_media_audio_cd_close (cd, TRUE); X- X- ret = (cd_status == CDS_DISC_OK); X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X /* X@@ -521,285 +232,24 @@ X X unsigned char *rfc822_binary (void *src,unsigned long srcl,unsigned long *len) X { X- unsigned char *ret,*d; X- unsigned char *s = (unsigned char *) src; X- char *v = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._"; X- unsigned long i = ((srcl + 2) / 3) * 4; X- *len = i += 2 * ((i / 60) + 1); X- d = ret = (unsigned char *) malloc ((size_t) ++i); X- for (i = 0; srcl; s += 3) { /* process tuplets */ X- *d++ = v[s[0] >> 2]; /* byte 1: high 6 bits (1) */ X- /* byte 2: low 2 bits (1), high 4 bits (2) */ X- *d++ = v[((s[0] << 4) + (--srcl ? (s[1] >> 4) : 0)) & 0x3f]; X- /* byte 3: low 4 bits (2), high 2 bits (3) */ X- *d++ = srcl ? v[((s[1] << 2) + (--srcl ? (s[2] >> 6) : 0)) & 0x3f] : '-'; X- /* byte 4: low 6 bits (3) */ X- *d++ = srcl ? v[s[2] & 0x3f] : '-'; X- if (srcl) srcl--; /* count third character if processed */ X- if ((++i) == 15) { /* output 60 characters? */ X- i = 0; /* restart line break count, insert CRLF */ X- *d++ = '\015'; *d++ = '\012'; X- } X- } X- *d = '\0'; /* tie off string */ X- X- return ret; /* return the resulting string */ X } X X static gboolean X ensure_sync (MonkeyMediaAudioCD *cd, X GError **error) X { X- int i, j, *track_frames; X- struct cdrom_tochdr tochdr; X- unsigned char track0, track1; X- struct cdrom_tocentry tocentry; X- long *frame_offsets; X- SHA_INFO sha; X- char *tmp; X- unsigned char digest[20], *base64; X- unsigned long size; X- X- /* Don't recalculate data, valid_data can be changed from X- * callback functions */ X- if (cd->priv->valid_info == TRUE) X- return TRUE; X- X- if (monkey_media_audio_cd_open (cd, error) == FALSE) X- return FALSE; X- X- if (ioctl (cd->priv->fd, CDROMREADTOCHDR, &tochdr) < 0) X- { X- if (error != NULL) X- { X- *error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_SYSTEM_ERROR, X- _("Error reading CD header: %s"), X- g_strerror (errno)); X- } X- monkey_media_audio_cd_close (cd, FALSE); X- return FALSE; X- } X- X- track0 = tochdr.cdth_trk0; X- track1 = tochdr.cdth_trk1; X- cd->priv->n_audio_tracks = track1 - track0 + 1; X- X- if (cd->priv->track_offsets != NULL) X- { X- g_free (cd->priv->track_offsets); X- g_free (cd->priv->track_lengths); X- } X- X- cd->priv->track_offsets = g_new0 (int, cd->priv->n_audio_tracks + 1); X- cd->priv->track_lengths = g_new0 (int, cd->priv->n_audio_tracks + 1); X- X- frame_offsets = g_new0 (long, 100); X- track_frames = g_new0 (int, cd->priv->n_audio_tracks + 1); X- X- for (i = 0, j = track0; i < cd->priv->n_audio_tracks; i++, j++) X- { X- /* handle time-based stuff */ X- tocentry.cdte_track = j; X- tocentry.cdte_format = CDROM_MSF; X- X- if (ioctl (cd->priv->fd, CDROMREADTOCENTRY, &tocentry) < 0) X- { X- g_warning ("IOCtl failed"); X- continue; X- } X- X- cd->priv->track_offsets[i] = (tocentry.cdte_addr.msf.minute * 60) X- + tocentry.cdte_addr.msf.second; X- track_frames[i] = tocentry.cdte_addr.msf.frame; X- X- /* get frame offest */ X- tocentry.cdte_track = j; X- tocentry.cdte_format = CDROM_LBA; X- X- if (ioctl (cd->priv->fd, CDROMREADTOCENTRY, &tocentry) < 0) X- { X- g_warning ("IOCtl failed"); X- continue; X- } X- X- frame_offsets[i + 1] = tocentry.cdte_addr.lba + 150; X- } X- X- /* handle time based stuff */ X- tocentry.cdte_track = CDROM_LEADOUT; X- tocentry.cdte_format = CDROM_MSF; X- X- if (ioctl (cd->priv->fd, CDROMREADTOCENTRY, &tocentry) < 0) X- goto leadout_error; X- X- cd->priv->track_offsets[cd->priv->n_audio_tracks] = (tocentry.cdte_addr.msf.minute * 60) X- + tocentry.cdte_addr.msf.second; X- track_frames[cd->priv->n_audio_tracks] = tocentry.cdte_addr.msf.frame; X- X- /* get frame offset */ X- tocentry.cdte_track = CDROM_LEADOUT; X- tocentry.cdte_format = CDROM_LBA; X- X- if (ioctl (cd->priv->fd, CDROMREADTOCENTRY, &tocentry) < 0) X- goto leadout_error; X- X- frame_offsets[0] = tocentry.cdte_addr.lba + 150; X- X- for (i = 0; i < cd->priv->n_audio_tracks; i++) X- { X- int f1, f2, df; X- X- /* Convert all addresses to frames */ X- f1 = cd->priv->track_offsets[i] * CD_FRAMES + track_frames[i]; X- f2 = cd->priv->track_offsets[i + 1] * CD_FRAMES + track_frames[i + 1]; X- X- df = f2 - f1; X- cd->priv->track_lengths[i] = df / CD_FRAMES; X- } X- X- /* calculates the musicbrainz disc ID. We do it locally instead of calling X- * the lib for this, since we avoid the cd to be accessed yet another time X- * this way */ X- sha_init (&sha); X- X- tmp = g_strdup_printf ("%02X", track0); X- sha_update (&sha, (unsigned char *) tmp, strlen (tmp)); X- g_free (tmp); X- X- tmp = g_strdup_printf ("%02X", track1); X- sha_update (&sha, (unsigned char *) tmp, strlen (tmp)); X- g_free (tmp); X- X- for (i = 0; i < 100; i++) X- { X- tmp = g_strdup_printf ("%08lX", frame_offsets[i]); X- sha_update (&sha, (unsigned char *) tmp, strlen (tmp)); X- g_free (tmp); X- } X- X- sha_final (digest, &sha); X- X- base64 = rfc822_binary (digest, 20, &size); X- if (cd->priv->cd_id != NULL) X- g_free (cd->priv->cd_id); X- cd->priv->cd_id = g_strndup (base64, size); X- g_free (base64); X- X- g_free (track_frames); X- g_free (frame_offsets); X- X- monkey_media_audio_cd_close (cd, TRUE); X- X- cd->priv->valid_info = TRUE; X- X- return TRUE; X- X-leadout_error: X- if (error != NULL) X- { X- *error = g_error_new (MONKEY_MEDIA_AUDIO_CD_ERROR, X- MONKEY_MEDIA_AUDIO_CD_ERROR_SYSTEM_ERROR, X- _("Error getting leadout: %s"), X- g_strerror (errno)); X- } X- X- monkey_media_audio_cd_close (cd, FALSE); X- X- g_free (track_frames); X- g_free (frame_offsets); X- X- return FALSE; X } X X X static gboolean X poll_event_cb (MonkeyMediaAudioCD *cd) X { X- int cd_status; X- gboolean emit_signal = FALSE, available = FALSE; X- X- g_mutex_lock (cd->priv->lock); X- X- if (monkey_media_audio_cd_open (cd, NULL) == FALSE) X- { X- cd->priv->valid_info = FALSE; X- cd->priv->cd_available = FALSE; X- X- g_mutex_unlock (cd->priv->lock); X- X- return TRUE; X- } X- X- cd_status = ioctl (cd->priv->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); X- if (cd_status != -1) X- { X- switch (cd_status) X- { X- case CDS_NO_INFO: X- case CDS_NO_DISC: X- case CDS_TRAY_OPEN: X- case CDS_DRIVE_NOT_READY: X- if (cd->priv->cd_available == TRUE) X- { X- cd->priv->cd_available = FALSE; X- cd->priv->valid_info = FALSE; X- X- emit_signal = TRUE; X- available = FALSE; X- } X- break; X- default: X- if (cd->priv->cd_available == FALSE) X- { X- cd->priv->cd_available = TRUE; X- cd->priv->valid_info = FALSE; X- X- emit_signal = TRUE; X- available = TRUE; X- } X- break; X- } X- } X- else X- { X- /* so we went out of sync.. */ X- cd->priv->valid_info = FALSE; X- } X- X- monkey_media_audio_cd_close (cd, FALSE); X- X- g_mutex_unlock (cd->priv->lock); X- X- if (emit_signal == TRUE) X- { X- g_signal_emit (G_OBJECT (cd), monkey_media_audio_cd_signals[CD_CHANGED], 0, available); X- } X- X- return TRUE; X } X X char * X monkey_media_audio_cd_get_disc_id (MonkeyMediaAudioCD *cd, X GError **error) X { X- char *ret; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), NULL); X- X- g_mutex_lock (cd->priv->lock); X- X- if (ensure_sync (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return NULL; X- } X- X- ret = g_strdup (cd->priv->cd_id); X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X long X@@ -807,25 +257,6 @@ X int track, X GError **error) X { X- long ret; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), -1); X- X- g_mutex_lock (cd->priv->lock); X- X- if (ensure_sync (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return -1; X- } X- X- g_return_val_if_fail (track > 0 && track <= cd->priv->n_audio_tracks, -1); X- X- ret = (long) cd->priv->track_lengths[track - 1]; X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X int X@@ -833,25 +264,6 @@ X int track, X GError **error) X { X- int ret; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), -1); X- X- g_mutex_lock (cd->priv->lock); X- X- if (ensure_sync (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return -1; X- } X- X- g_return_val_if_fail (track > 0 && track <= cd->priv->n_audio_tracks, -1); X- X- ret = cd->priv->track_offsets[track - 1]; X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X gboolean X@@ -859,98 +271,26 @@ X int track, X GError **error) X { X- gboolean ret; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), FALSE); X- X- g_mutex_lock (cd->priv->lock); X- X- if (ensure_sync (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return FALSE; X- } X- X- ret = (track > 0 && track <= cd->priv->n_audio_tracks); X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X int X monkey_media_audio_cd_get_n_tracks (MonkeyMediaAudioCD *cd, X GError **error) X { X- int ret; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), -1); X- X- g_mutex_lock (cd->priv->lock); X- X- if (ensure_sync (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return -1; X- } X- X- ret = cd->priv->n_audio_tracks; X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X GList * X monkey_media_audio_cd_list_tracks (MonkeyMediaAudioCD *cd, X GError **error) X { X- GList *ret = NULL; X- int i; X- X- g_return_val_if_fail (MONKEY_MEDIA_IS_AUDIO_CD (cd), NULL); X- X- g_mutex_lock (cd->priv->lock); X- X- if (ensure_sync (cd, error) == FALSE) X- { X- g_mutex_unlock (cd->priv->lock); X- return NULL; X- } X- X- for (i = 0; i < cd->priv->n_audio_tracks; i++) X- { X- char *uri; X- X- uri = g_strdup_printf ("audiocd://%d", i + 1); X- X- ret = g_list_append (ret, uri); X- } X- X- g_mutex_unlock (cd->priv->lock); X- X- return ret; X } X X void X monkey_media_audio_cd_free_tracks (GList *list) X { X- GList *l; X- X- for (l = list; l != NULL; l = g_list_next (l)) X- { X- g_free (l->data); X- } X- X- g_list_free (list); X } X X GQuark X monkey_media_audio_cd_error_quark (void) X { X- static GQuark quark = 0; X- if (!quark) X- quark = g_quark_from_static_string ("monkey_media_audio_cd_error"); X- X- return quark; X } END-of-monkey-media/files/patch-src::monkey-media-audio-cd.c echo x - monkey-media/files/patch-configure sed 's/^X//' >monkey-media/files/patch-configure << 'END-of-monkey-media/files/patch-configure' X--- configure.orig Sat Nov 16 18:41:20 2002 X+++ configure Sat Nov 16 18:42:03 2002 X@@ -8464,13 +8464,13 @@ X warning_flags= X ;; X minimum) X- warning_flags="-Wall -Wunused" X+ warning_flags="-Wunused" X ;; X yes) X- warning_flags="-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations" X+ warning_flags="-Wunused -Wmissing-prototypes -Wmissing-declarations" X ;; X maximum|error) X- warning_flags="-Wall -Wunused -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith" X+ warning_flags="-Wunused -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith" X CFLAGS="$warning_flags $CFLAGS" X for option in -Wsign-promo -Wno-sign-compare; do X SAVE_CFLAGS="$CFLAGS" X@@ -11643,7 +11643,7 @@ X LIBS="$LIBS -lmusicbrainz -lstdc++" X X X-CFLAGS="$CFLAGS -Wall -Werror" X+CFLAGS="$CFLAGS -Werror" X X X LIBS="$LIBS -lgstcontrol" END-of-monkey-media/files/patch-configure exit --1yeeQ81UyVL57Vl7 Content-Type: text/x-sh; charset=us-ascii Content-Disposition: attachment; filename="rhythmbox.sh" # 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: # # rhythmbox # rhythmbox/Makefile # rhythmbox/distinfo # rhythmbox/pkg-comment # rhythmbox/pkg-descr # rhythmbox/pkg-plist # echo c - rhythmbox mkdir -p rhythmbox > /dev/null 2>&1 echo x - rhythmbox/Makefile sed 's/^X//' >rhythmbox/Makefile << 'END-of-rhythmbox/Makefile' X# New ports collection makefile for: rhythmbox X# Date created: 4 November 2002 X# Whom: Martin Klaffenboeck <martin.klaffenboeck@gmx.at> X# X# $FreeBSD$ X# X XPORTNAME= rhythmbox XPORTVERSION= 0.4.0 XCATEGORIES= audio gnome XMASTER_SITES= http://www.rhythmbox.org/download/ X XMAINTAINER= martin.klaffenboeck@gmx.at X XLIB_DEPENDS= monkey-media.0:${PORTSDIR}/audio/monkey-media X XUSE_GNOMENG= yes XUSE_GNOME= gnomehack gnomeprefix XUSE_X_PREFIX= yes XUSE_GMAKE= yes XGNU_CONFIGURE= yes XUSE_LIBTOOL= yes X XCONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include ${PTHREAD_CFLAGS}" \ X LIBS="-L${LOCALBASE}/lib -lgnuregex -lcompat" X XCONFIGURE_ARGS+= --prefix=${PREFIX} XCONFIGURE_TARGET= --target=${MACHINE_ARCH}-unknown-freebsd${OSREL} X X.include <bsd.port.mk> END-of-rhythmbox/Makefile echo x - rhythmbox/distinfo sed 's/^X//' >rhythmbox/distinfo << 'END-of-rhythmbox/distinfo' XMD5 (rhythmbox-0.4.0.tar.gz) = 0060ed6e9220f90a1c4d07ff3a8a882c END-of-rhythmbox/distinfo echo x - rhythmbox/pkg-comment sed 's/^X//' >rhythmbox/pkg-comment << 'END-of-rhythmbox/pkg-comment' XPlaying cd's and music files on the Gnome 2 desktop. END-of-rhythmbox/pkg-comment echo x - rhythmbox/pkg-descr sed 's/^X//' >rhythmbox/pkg-descr << 'END-of-rhythmbox/pkg-descr' XRhythmbox which takes its inspiration from Apple's iTunes application, lets you do everything from importing your audio cd's into mp3 or Ogg Vorbis format, and play these music files and other music files you have. Play your music with an assortment of visualization plugins and burn new audio cd's from your music files. It is a one-stop shopping application for all your music needs. X XWWW: http://www.rhythmbox.org/ X- Martin Klaffenboeck <martin.klaffenboeck@gmx.at> END-of-rhythmbox/pkg-descr echo x - rhythmbox/pkg-plist sed 's/^X//' >rhythmbox/pkg-plist << 'END-of-rhythmbox/pkg-plist' Xbin/rhythmbox Xetc/gconf/gconf.xml.defaults/apps/rhythmbox/%gconf.xml Xetc/gconf/gconf.xml.defaults/apps/rhythmbox/state/%gconf.xml Xetc/gconf/gconf.xml.defaults/apps/rhythmbox/state/library/%gconf.xml Xetc/gconf/gconf.xml.defaults/apps/rhythmbox/ui/%gconf.xml Xetc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/%gconf.xml Xetc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/state/%gconf.xml Xetc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/state/library/%gconf.xml Xetc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/ui/%gconf.xml Xlibdata/bonobo/servers/GNOME_Rhythmbox_Shell.server Xshare/gnome/application-registry/rhythmbox.applications Xshare/gnome/applications/rhythmbox.desktop Xshare/gnome/gnome-2.0/ui/rhythmbox-group-view.xml Xshare/gnome/gnome-2.0/ui/rhythmbox-library-view.xml Xshare/gnome/gnome-2.0/ui/rhythmbox-test-view-2.xml Xshare/gnome/gnome-2.0/ui/rhythmbox-ui.xml Xshare/gnome/help/rhythmbox/C/authors.xml Xshare/gnome/help/rhythmbox/C/fdl-appendix.xml Xshare/gnome/help/rhythmbox/C/legal.xml Xshare/gnome/help/rhythmbox/C/quick-reference.xml Xshare/gnome/help/rhythmbox/C/rhythmbox.xml Xshare/gnome/help/rhythmbox/C/user-guide.xml Xshare/gnome/omf/rhythmbox/rhythmbox-C.omf Xshare/gnome/pixmaps/rhythmbox.png Xshare/gnome/rhythmbox/art/about-logo.png Xshare/gnome/rhythmbox/art/rhythmbox-album.png Xshare/gnome/rhythmbox/art/rhythmbox-dnd.png Xshare/gnome/rhythmbox/art/rhythmbox-group.png Xshare/gnome/rhythmbox/art/rhythmbox-library.png Xshare/gnome/rhythmbox/art/rhythmbox-next.png Xshare/gnome/rhythmbox/art/rhythmbox-no-star.png Xshare/gnome/rhythmbox/art/rhythmbox-pause.png Xshare/gnome/rhythmbox/art/rhythmbox-play.png Xshare/gnome/rhythmbox/art/rhythmbox-playing.png Xshare/gnome/rhythmbox/art/rhythmbox-playlist.png Xshare/gnome/rhythmbox/art/rhythmbox-previous.png Xshare/gnome/rhythmbox/art/rhythmbox-repeat.png Xshare/gnome/rhythmbox/art/rhythmbox-rewind.png Xshare/gnome/rhythmbox/art/rhythmbox-set-star.png Xshare/gnome/rhythmbox/art/rhythmbox-shuffle.png Xshare/gnome/rhythmbox/art/rhythmbox-stop.png Xshare/gnome/rhythmbox/art/rhythmbox-tray-icon.png Xshare/gnome/rhythmbox/art/rhythmbox-unset-star.png Xshare/gnome/rhythmbox/art/rhythmbox-visuals.png Xshare/gnome/rhythmbox/art/rhythmbox-volume-max.png Xshare/gnome/rhythmbox/art/rhythmbox-volume-medium.png Xshare/gnome/rhythmbox/art/rhythmbox-volume-min.png Xshare/gnome/rhythmbox/art/rhythmbox-volume-mute.png Xshare/gnome/rhythmbox/art/rhythmbox-volume-zero.png Xshare/gnome/rhythmbox/glade/preferences.glade Xshare/gnome/rhythmbox/glade/song-info.glade Xshare/gnome/rhythmbox/glade/toolbar-editor.glade Xshare/gnome/rhythmbox/node-views/rb-node-view-albums.xml Xshare/gnome/rhythmbox/node-views/rb-node-view-artists.xml Xshare/gnome/rhythmbox/node-views/rb-node-view-songs.xml X@dirrm share/gnome/rhythmbox/node-views X@dirrm share/gnome/rhythmbox/glade X@dirrm share/gnome/rhythmbox/art X@dirrm share/gnome/rhythmbox X@dirrm share/gnome/omf/rhythmbox X@dirrm etc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/ui X@dirrm etc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/state/library X@dirrm etc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox/state X@dirrm etc/gconf/gconf.xml.defaults/schemas/apps/rhythmbox X@dirrm etc/gconf/gconf.xml.defaults/apps/rhythmbox/ui X@dirrm etc/gconf/gconf.xml.defaults/apps/rhythmbox/state/library X@dirrm etc/gconf/gconf.xml.defaults/apps/rhythmbox/state X@dirrm etc/gconf/gconf.xml.defaults/apps/rhythmbox END-of-rhythmbox/pkg-plist exit --1yeeQ81UyVL57Vl7-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-gnome" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021116185851.GA425>