amarok install failure

Mel fbsd.questions at rachie.is-a-geek.net
Sun Dec 28 18:00:37 UTC 2008


On Sunday 28 December 2008 00:35:56 Alain G. Fabry wrote:
> During the installation of amarok, I get the following error, what is going
> wrong here.
>
> gmake[5]: Entering directory
> `/usr/ports/audio/amarok/work/amarok-1.4.10/amarok/src/mediadevice/mtp'
> /bin/sh /usr/local/bin/libtool --silent --tag=CXX   --mode=compile c++
> -DHAVE_CONFIG_H -I. -I../../../.. -I../../../../amarok/src
> -I../../../../amarok/src -I../../../../amarok/src/amarokcore
> -I../../../../amarok/src/amarokcore -I../../../../amarok/src/engine
> -I../../../../amarok/src/engine -I../../../../amarok/src/mediadevice
> -I/usr/local/include/taglib   -I/usr/local/include  -I/usr/local/include 
> -D_THREAD_SAFE -pthread -DQT_THREAD_SUPPORT   -I/usr/local/include
> -I/usr/local/include  -I/usr/local/include -D_GETOPT_H -D_THREAD_SAFE  
> -Wno-long-long -Wundef -Wall -W -Wpointer-arith -O2 -fno-strict-aliasing
> -pipe -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common
> -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT
> -DQT_NO_TRANSLATION  -MT mtpmediadevice.lo -MD -MP -MF
> .deps/mtpmediadevice.Tpo -c -o mtpmediadevice.lo mtpmediadevice.cpp
> /usr/local/include/libmtp.h: In member function 'virtual MediaItem*
> MtpMediaDevice::copyTrackToDevice(const MetaBundle&)':
> /usr/local/include/libmtp.h:489: error: too many arguments to function 'int
> LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t*, const char*,
> LIBMTP_track_t*, int (*)(uint64_t, uint64_t, const void*), const void*)'
> mtpmediadevice.cpp:302: error: at this point in file
> mtpmediadevice.cpp: In member function 'uint32_t
> MtpMediaDevice::getDefaultParentId()': mtpmediadevice.cpp:383: warning:
> deprecated conversion from string constant to 'char*'
> /usr/local/include/libmtp.h: In member function 'LIBMTP_album_t*
> MtpMediaDevice::getOrCreateAlbum(QPtrList<MediaItem>*)':
> /usr/local/include/libmtp.h:533: error: too many arguments to function 'int
> LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t*, LIBMTP_album_t*)'
> mtpmediadevice.cpp:532: error: at this point in file
> /usr/local/include/libmtp.h: In member function 'uint32_t
> MtpMediaDevice::createFolder(const char*, uint32_t)':
> /usr/local/include/libmtp.h:508: error: too few arguments to function
> 'uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char*, uint32_t,
> uint32_t)' mtpmediadevice.cpp:611: error: at this point in file
> /usr/local/include/libmtp.h: In member function 'void
> MtpMediaDevice::playlistFromItem(MtpMediaItem*)':
> /usr/local/include/libmtp.h:521: error: too many arguments to function 'int
> LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t*, LIBMTP_playlist_t*)'
> mtpmediadevice.cpp:916: error: at this point in file
> gmake[5]: *** [mtpmediadevice.lo] Error 1
> gmake[5]: Leaving directory
> `/usr/ports/audio/amarok/work/amarok-1.4.10/amarok/src/mediadevice/mtp'
> gmake[4]: *** [all-recursive] Error 1
> gmake[4]: Leaving directory
> `/usr/ports/audio/amarok/work/amarok-1.4.10/amarok/src/mediadevice'
> gmake[3]: *** [all-recursive] Error 1
> gmake[3]: Leaving directory
> `/usr/ports/audio/amarok/work/amarok-1.4.10/amarok/src' gmake[2]: ***
> [all-recursive] Error 1
> gmake[2]: Leaving directory
> `/usr/ports/audio/amarok/work/amarok-1.4.10/amarok' gmake[1]: ***
> [all-recursive] Error 1
> gmake[1]: Leaving directory `/usr/ports/audio/amarok/work/amarok-1.4.10'
> gmake: *** [all] Error 2
> *** Error code 2

This is a result of libmtp update. Either don't use libmtp, downgrade it to 
previous version 0.2.6 or add the patch below my sig 
as /usr/ports/audio/amarok/files/patch-amarok_src_mediadevice_mtp_mtpmediadevice.cpp

-- 
Mel

--- amarok/src/mediadevice/mtp/mtpmediadevice.cpp.orig	2008-08-13 
13:21:51.000000000 -0800
+++ amarok/src/mediadevice/mtp/mtpmediadevice.cpp	2008-12-28 
08:47:14.000000000 -0900
@@ -296,9 +296,10 @@
 
     m_critical_mutex.lock();
     debug() << "Sending track... " << bundle.url().path().utf8() << endl;
+    trackmeta->parent_id = parent_id;
     int ret = LIBMTP_Send_Track_From_File(
         m_device, bundle.url().path().utf8(), trackmeta,
-        progressCallback, this, parent_id
+        progressCallback, this
     );
     m_critical_mutex.unlock();
 
@@ -529,7 +530,8 @@
         for( MtpMediaItem *it = dynamic_cast<MtpMediaItem*>(items->first()); 
it; it = dynamic_cast<MtpMediaItem*>(items->next()) )
             album_object->tracks[i++] = it->track()->id();
         album_object->no_tracks = items->count();
-        ret = LIBMTP_Create_New_Album( m_device, album_object, 0 );
+	album_object->parent_id = 0;
+        ret = LIBMTP_Create_New_Album( m_device, album_object);
         if( ret != 0 )
         {
             debug() << "creating album failed : " << ret << endl;
@@ -577,7 +579,7 @@
         {
             if( create )
             {
-                check_folder = createFolder( (*it).utf8() , parent_id );
+                check_folder = createFolder( (*it).utf8() , parent_id);
                 if( check_folder == 0 )
                 {
                     m_critical_mutex.unlock();
@@ -608,7 +610,9 @@
 {
     debug() << "Creating new folder '" << name << "' as a child of "<< 
parent_id << endl;
     char *name_copy = qstrdup( name );
-    uint32_t new_folder_id = LIBMTP_Create_Folder( m_device, name_copy, 
parent_id );
+    // XXX: storage_id not used anywhere, so pass in 0, but upstream
+    // should revisit this.
+    uint32_t new_folder_id = LIBMTP_Create_Folder( m_device, name_copy, 
parent_id, 0 );
     delete(name_copy);
     debug() << "New folder ID: " << new_folder_id << endl;
     if( new_folder_id == 0 )
@@ -913,7 +917,8 @@
     if( item->playlist()->id() == 0 )
     {
         debug() << "creating new playlist : " << metadata->name << endl;
-        int ret = LIBMTP_Create_New_Playlist( m_device, metadata, 0 );
+	metadata->parent_id = 0;
+        int ret = LIBMTP_Create_New_Playlist( m_device, metadata);
         if( ret == 0 )
         {
             item->playlist()->setId( metadata->playlist_id );


More information about the freebsd-questions mailing list