* Adeodato Simó <d...@net.com.org.es> [2009-03-29 20:08]:

> Package: python-pymtp
> Version: 0.0.4-1
> Severity: serious
> X-Debbugs-CC: Rafael Laboissiere <raf...@debian.org>
> 
> pymtp hardcodes a dependency on libmtp7, which has been dropped in
> favour of libmtp8. Please take a look into uploading a package with an
> updated dependency, with source changes to adjust to the new library if
> needed. 

Source changes are needed.  The pymtp module uses ctypes to access the
shared library libmtp, so that runtime errors may occur with source
unchanged.

Below is a debdiff that may work.  I did not test it but merely adapted
the code to the changes in the API between libmtp7 and libmtp8.

It seems that upstream has not yet adapted to libmtp8 [1], although it is
staed in the README [2] at the Git repository that "PyMTP 0.1.0 requires
LibMTP 0.3.3 or above".

[1] http://projects.nick125.com/repositories/entry/pymtp/pymtp/main.py
[2] http://projects.nick125.com/repositories/entry/pymtp/README
 
-- 
Rafael
diff -u pymtp-0.0.4/build/lib/pymtp.py pymtp-0.0.4/build/lib/pymtp.py
--- pymtp-0.0.4/build/lib/pymtp.py
+++ pymtp-0.0.4/build/lib/pymtp.py
@@ -819,7 +819,7 @@
 		else:
 			return LIBMTP_Filetype["UNKNOWN"]
 
-	def send_file_from_file(self, source, target, parent=0, callback=None):
+	def send_file_from_file(self, source, target, callback=None):
 		"""
 			Sends a file from the filesystem to the connected device
 			and stores it at the target filename inside the parent.
@@ -831,9 +831,6 @@
 			@param source: The path on the filesystem where the file resides
 			@type target: str
 			@param target: The target filename on the device
-			@type parent: int or 0
-			@param parent: The parent directory for the file to go 
-			 into; If 0, the file goes into main directory
 			@type callback: function or None
 			@param callback: The function provided to libmtp to 
 			 receive callbacks from ptp. Callback function must
@@ -856,7 +853,7 @@
 		  filesize=os.stat(source).st_size)
 
 		ret = self.mtp.LIBMTP_Send_File_From_File(self.device, source, \
-		  ctypes.pointer(metadata), callback, None, parent)
+		  ctypes.pointer(metadata), callback, None)
 
 		if (ret != 0):
 			self.debug_stack()
@@ -864,7 +861,7 @@
 
 		return metadata.item_id
 		
-	def send_track_from_file(self, source, target, metadata, parent=0, callback=None):
+	def send_track_from_file(self, source, target, metadata, callback=None):
 		"""
 			Sends a track from the filesystem to the connected 
 			device
@@ -875,9 +872,6 @@
 			@param target: The target filename on the device
 			@type metadata: LIBMTP_Track
 			@param metadata: The track metadata
-			@type parent: int or 0
-			@param parent: The parent directory for the track;
-			 if 0, the track will be placed in the base dir.
 			@type callback: function or None
 			@param callback: The function provided to libmtp to
 			 receive callbacks from ptp. Callback function must
@@ -1038,7 +1032,7 @@
 
 		return ret
 
-	def create_new_playlist(self, metadata, parent=0):
+	def create_new_playlist(self, metadata):
 		"""
 			Creates a new playlist based on the metadata object
 			passed.
@@ -1046,8 +1040,6 @@
 			@type metadata: LIBMTP_Playlist
 			@param metadata: A LIBMTP_Playlist object describing 
 			 the playlist
-			@type parent: int or 0
-			@param parent: The parent ID or 0 for base
 			@rtype: int
 			@return: The object ID of the new playlist
 		"""
@@ -1055,7 +1047,7 @@
 		if (self.device == None):
 			raise NotConnected
 		
-		ret = self.mtp.LIBMTP_Create_New_Playlist(self.device, ctypes.pointer(metadata), parent)
+		ret = self.mtp.LIBMTP_Create_New_Playlist(self.device, ctypes.pointer(metadata))
 
 		if (ret == 0):
 			self.debug_stack()
@@ -1173,7 +1165,7 @@
 
 		return ret
 
-	def create_folder(self, name, parent=0):
+	def create_folder(self, name, parent=0, storage=0):
 		"""
 			This creates a new folder in the parent. If the parent 
 			is 0, it will go in the main directory.
@@ -1182,6 +1174,9 @@
 			@param name: The name for the folder
 			@type parent: int
 			@param parent: The parent ID or 0 for main directory
+                        @type storage: int
+                        @param storage: The storage id or 0 to create the new folder
+                                        on the primary storage
 			@rtype: int
 			@return: Returns the object ID of the new folder
 		"""
@@ -1189,7 +1184,7 @@
 		if (self.device == None):
 			raise NotConnected
 			
-		ret = self.mtp.LIBMTP_Create_Folder(self.device, name, parent)
+		ret = self.mtp.LIBMTP_Create_Folder(self.device, name, parent, storage)
 
 		if (ret == 0):
 			self.debug_stack()
diff -u pymtp-0.0.4/debian/changelog pymtp-0.0.4/debian/changelog
--- pymtp-0.0.4/debian/changelog
+++ pymtp-0.0.4/debian/changelog
@@ -1,3 +1,16 @@
+pymtp (0.0.4-1.1) unstable; urgency=low
+
+  * Non-maintainer upload
+  * debian/control: Depends on libmtp8
+  * pymtp.py: Adapt to libmtp8.  Functions changed:
+    + MTP.send_file_from_file
+    + MTP.send_track_from_file
+    + MTP.create_new_playlist
+    + MTP.create_folder
+  * examples/send{file,track}.py: Adjust
+
+ -- Rafael Laboissiere <raf...@debian.org>  Sun, 29 Mar 2009 23:13:36 +0200
+
 pymtp (0.0.4-1) unstable; urgency=low
 
   * Initial release (Closes: #489547)
diff -u pymtp-0.0.4/debian/control pymtp-0.0.4/debian/control
--- pymtp-0.0.4/debian/control
+++ pymtp-0.0.4/debian/control
@@ -10,7 +10,7 @@
 
 Package: python-pymtp
 Architecture: all
-Depends: python, libmtp7, ${shlibs:Depends}, ${misc:Depends}
+Depends: python, libmtp8, ${shlibs:Depends}, ${misc:Depends}
 Description: Pythonic binding to LibMTP to interact with MTP devices
  PyMTP is a Pythonic binding to LibMTP that allows Python programs
  to interact with LibMTP-supported devices. These devices include
only in patch2:
unchanged:
--- pymtp-0.0.4.orig/pymtp.py
+++ pymtp-0.0.4/pymtp.py
@@ -819,7 +819,7 @@
 		else:
 			return LIBMTP_Filetype["UNKNOWN"]
 
-	def send_file_from_file(self, source, target, parent=0, callback=None):
+	def send_file_from_file(self, source, target, callback=None):
 		"""
 			Sends a file from the filesystem to the connected device
 			and stores it at the target filename inside the parent.
@@ -831,9 +831,6 @@
 			@param source: The path on the filesystem where the file resides
 			@type target: str
 			@param target: The target filename on the device
-			@type parent: int or 0
-			@param parent: The parent directory for the file to go 
-			 into; If 0, the file goes into main directory
 			@type callback: function or None
 			@param callback: The function provided to libmtp to 
 			 receive callbacks from ptp. Callback function must
@@ -856,7 +853,7 @@
 		  filesize=os.stat(source).st_size)
 
 		ret = self.mtp.LIBMTP_Send_File_From_File(self.device, source, \
-		  ctypes.pointer(metadata), callback, None, parent)
+		  ctypes.pointer(metadata), callback, None)
 
 		if (ret != 0):
 			self.debug_stack()
@@ -864,7 +861,7 @@
 
 		return metadata.item_id
 		
-	def send_track_from_file(self, source, target, metadata, parent=0, callback=None):
+	def send_track_from_file(self, source, target, metadata, callback=None):
 		"""
 			Sends a track from the filesystem to the connected 
 			device
@@ -875,9 +872,6 @@
 			@param target: The target filename on the device
 			@type metadata: LIBMTP_Track
 			@param metadata: The track metadata
-			@type parent: int or 0
-			@param parent: The parent directory for the track;
-			 if 0, the track will be placed in the base dir.
 			@type callback: function or None
 			@param callback: The function provided to libmtp to
 			 receive callbacks from ptp. Callback function must
@@ -1038,7 +1032,7 @@
 
 		return ret
 
-	def create_new_playlist(self, metadata, parent=0):
+	def create_new_playlist(self, metadata):
 		"""
 			Creates a new playlist based on the metadata object
 			passed.
@@ -1046,8 +1040,6 @@
 			@type metadata: LIBMTP_Playlist
 			@param metadata: A LIBMTP_Playlist object describing 
 			 the playlist
-			@type parent: int or 0
-			@param parent: The parent ID or 0 for base
 			@rtype: int
 			@return: The object ID of the new playlist
 		"""
@@ -1055,7 +1047,7 @@
 		if (self.device == None):
 			raise NotConnected
 		
-		ret = self.mtp.LIBMTP_Create_New_Playlist(self.device, ctypes.pointer(metadata), parent)
+		ret = self.mtp.LIBMTP_Create_New_Playlist(self.device, ctypes.pointer(metadata))
 
 		if (ret == 0):
 			self.debug_stack()
@@ -1173,7 +1165,7 @@
 
 		return ret
 
-	def create_folder(self, name, parent=0):
+	def create_folder(self, name, parent=0, storage=0):
 		"""
 			This creates a new folder in the parent. If the parent 
 			is 0, it will go in the main directory.
@@ -1182,6 +1174,9 @@
 			@param name: The name for the folder
 			@type parent: int
 			@param parent: The parent ID or 0 for main directory
+                        @type storage: int
+                        @param storage: The storage id or 0 to create the new folder
+                                        on the primary storage
 			@rtype: int
 			@return: Returns the object ID of the new folder
 		"""
@@ -1189,7 +1184,7 @@
 		if (self.device == None):
 			raise NotConnected
 			
-		ret = self.mtp.LIBMTP_Create_Folder(self.device, name, parent)
+		ret = self.mtp.LIBMTP_Create_Folder(self.device, name, parent, storage)
 
 		if (ret == 0):
 			self.debug_stack()
only in patch2:
unchanged:
--- pymtp-0.0.4.orig/examples/sendtrack.py
+++ pymtp-0.0.4/examples/sendtrack.py
@@ -12,7 +12,7 @@
 import pyid3lib
 
 def usage():
-	print "Usage: %s <source> <target> <parent>\n(The parent id can be 0 for the root directory)" % (sys.argv[0])
+	print "Usage: %s <source> <target>" % (sys.argv[0])
 
 def main():
 	if len(sys.argv) <= 3:
@@ -24,7 +24,6 @@
 
 	source = sys.argv[1]
 	target = sys.argv[2]
-	parent = int(sys.argv[3])
 
 	id3data = pyid3lib.tag(source)
 
@@ -39,7 +38,7 @@
 	if (hasattr(id3data, 'tracknum')):
 		metadata.tracknumber = id3data.tracknum
 		
-	track_id = mtp.send_track_from_file(source, target, metadata, parent=parent)
+	track_id = mtp.send_track_from_file(source, target, metadata)
 	print "Created new track with ID: %s" % (track_id)
 	mtp.disconnect()
 		
only in patch2:
unchanged:
--- pymtp-0.0.4.orig/examples/sendfile.py
+++ pymtp-0.0.4/examples/sendfile.py
@@ -12,7 +12,7 @@
 import pyid3lib
 
 def usage():
-	print "Usage: %s <source> <target> <parent>\n(The parent id can be 0 for the root directory)" % (sys.argv[0])
+	print "Usage: %s <source> <target>" % (sys.argv[0])
 
 def main():
 	if len(sys.argv) <= 3:
@@ -24,9 +24,8 @@
 
 	source = sys.argv[1]
 	target = sys.argv[2]
-	parent = int(sys.argv[3])
 
-	file_id = mtp.send_file_from_file(source, target, parent=parent)
+	file_id = mtp.send_file_from_file(source, target)
 	print "Created new track with ID: %s" % (file_id)
 	mtp.disconnect()
 		

Reply via email to