Control: tag -1 patch pending

Dear maintainer,

Since this is blocking the parted transition I'm working on, I've
prepared an NMU for partitionmanager (versioned as 1.0.3-2.1) and
uploaded it to DELAYED/5.  Please feel free to tell me if I should delay
it longer.

Although the backport was non-trivial, I decided that this course of
action was better for an NMU, because it's easier for you to back out a
patch like this if necessary than it would be to back out an upgrade to
a new upstream release.  Of course, please let me know if there are
problems I didn't catch, and I'll do my best to fix them.

Regards,

-- 
Colin Watson                                       [cjwat...@debian.org]
diff -Nru partitionmanager-1.0.3/debian/changelog partitionmanager-1.0.3/debian/changelog
--- partitionmanager-1.0.3/debian/changelog	2013-05-12 01:14:23.000000000 +0100
+++ partitionmanager-1.0.3/debian/changelog	2014-07-19 23:06:03.000000000 +0100
@@ -1,3 +1,11 @@
+partitionmanager (1.0.3-2.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Backport support for libparted 3.1 from upstream (closes: #754580).
+  * Include cmake module needed for CHECK_FUNCTION_EXISTS.
+
+ -- Colin Watson <cjwat...@debian.org>  Sat, 19 Jul 2014 23:05:50 +0100
+
 partitionmanager (1.0.3-2) unstable; urgency=low
 
   * Upload to unstable
diff -Nru partitionmanager-1.0.3/debian/patches/check-function-exists.patch partitionmanager-1.0.3/debian/patches/check-function-exists.patch
--- partitionmanager-1.0.3/debian/patches/check-function-exists.patch	1970-01-01 01:00:00.000000000 +0100
+++ partitionmanager-1.0.3/debian/patches/check-function-exists.patch	2014-07-19 23:05:14.000000000 +0100
@@ -0,0 +1,17 @@
+Description: Include cmake module needed for CHECK_FUNCTION_EXISTS
+Author: Colin Watson <cjwat...@debian.org>
+Forwarded: no
+Last-Update: 2014-07-19
+
+Index: b/cmake/modules/FindLIBPARTED.cmake
+===================================================================
+--- a/cmake/modules/FindLIBPARTED.cmake
++++ b/cmake/modules/FindLIBPARTED.cmake
+@@ -16,6 +16,7 @@
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ 
+ INCLUDE(CheckCSourceCompiles)
++INCLUDE(CheckFunctionExists)
+ 
+ if (LIBPARTED_INCLUDE_DIR AND LIBPARTED_LIBRARY)
+   # Already in cache, be silent
diff -Nru partitionmanager-1.0.3/debian/patches/libparted-3.1.patch partitionmanager-1.0.3/debian/patches/libparted-3.1.patch
--- partitionmanager-1.0.3/debian/patches/libparted-3.1.patch	1970-01-01 01:00:00.000000000 +0100
+++ partitionmanager-1.0.3/debian/patches/libparted-3.1.patch	2014-07-19 22:21:41.000000000 +0100
@@ -0,0 +1,259 @@
+Description: Port to libparted 3.1
+ I (Colin Watson) backported this from the new upstream release 1.1.0.
+ There are a number of other extensive rearrangements of code in that
+ release, so this required substantial changes.  This patch can be discarded
+ when upgrading to 1.1.0.
+Origin: backport, https://projects.kde.org/projects/extragear/sysadmin/partitionmanager/repository/revisions/6a2b4c5c09eb3ac74b4d89a981d53f3ea125a94e/diff
+Origin: backport, https://projects.kde.org/projects/extragear/sysadmin/partitionmanager/repository/revisions/0fe0fb40e725a2d1daecbe88a3ef8ed27c2ec669/diff
+Origin: backport, https://projects.kde.org/projects/extragear/sysadmin/partitionmanager/repository/revisions/85801458109a62ce115a4c4ba365b009cb6e50dd/diff
+Origin: backport, https://projects.kde.org/projects/extragear/sysadmin/partitionmanager/repository/revisions/06914e2eab1a9e3b2beda3962f2e8aa83a9ad919/diff
+Bug-Debian: http://bugs.debian.org/754580
+Forwarded: not-needed
+Last-Update: 2014-07-19
+
+Index: b/CMakeLists.txt
+===================================================================
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -40,6 +40,14 @@
+ pkg_check_modules(BLKID REQUIRED blkid)
+ find_package(LIBPARTED REQUIRED)
+ 
++if (LIBPARTED_FILESYSTEM_SUPPORT)
++	add_definitions(-DLIBPARTED_FILESYSTEM_SUPPORT)
++endif (LIBPARTED_FILESYSTEM_SUPPORT)
++
++if (LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT)
++	add_definitions(-DLIBPARTED_FS_RESIZE_LIBRARY_SUPPORT)
++endif (LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT)
++
+ add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
+ add_definitions(${KDE4_ENABLE_EXCEPTIONS})
+ 
+Index: b/cmake/modules/FindLIBPARTED.cmake
+===================================================================
+--- a/cmake/modules/FindLIBPARTED.cmake
++++ b/cmake/modules/FindLIBPARTED.cmake
+@@ -1,4 +1,4 @@
+-# Copyright (C) 2008 by Volker Lanz <v...@fidra.de>
++# Copyright (C) 2008,2010,2011 by Volker Lanz <v...@fidra.de>
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -15,6 +15,8 @@
+ # Free Software Foundation, Inc.,
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ 
++INCLUDE(CheckCSourceCompiles)
++
+ if (LIBPARTED_INCLUDE_DIR AND LIBPARTED_LIBRARY)
+   # Already in cache, be silent
+   set(LIBPARTED_FIND_QUIETLY TRUE)
+@@ -24,10 +26,25 @@
+ FIND_PATH(LIBPARTED_INCLUDE_DIR parted.h PATH_SUFFIXES parted )
+ 
+ FIND_LIBRARY(LIBPARTED_LIBRARY NAMES parted)
++FIND_LIBRARY(LIBPARTED_FS_RESIZE_LIBRARY NAMES parted-fs-resize)
+ 
+ INCLUDE(FindPackageHandleStandardArgs)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBPARTED DEFAULT_MSG LIBPARTED_LIBRARY LIBPARTED_INCLUDE_DIR)
+ 
+-SET(LIBPARTED_LIBS ${LIBPARTED_LIBRARY})
++if (LIBPARTED_FS_RESIZE_LIBRARY)
++  set(LIBPARTED_LIBS ${LIBPARTED_LIBRARY} ${LIBPARTED_FS_RESIZE_LIBRARY})
++else (LIBPARTED_FS_RESIZE_LIBRARY)
++  set(LIBPARTED_LIBS ${LIBPARTED_LIBRARY})
++endif (LIBPARTED_FS_RESIZE_LIBRARY)
++
++# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so
++# undo that
++unset(CMAKE_C_FLAGS)
++
++set(CMAKE_REQUIRED_INCLUDES ${LIBPARTED_INCLUDE_DIR})
++set(CMAKE_REQUIRED_LIBRARIES ${LIBPARTED_LIBS})
++
++CHECK_FUNCTION_EXISTS("ped_file_system_clobber" LIBPARTED_FILESYSTEM_SUPPORT) # parted < 3.0
++CHECK_FUNCTION_EXISTS("ped_file_system_resize" LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT) # parted != 3.0
+ 
+-MARK_AS_ADVANCED(LIBPARTED_LIBRARY LIBPARTED_INCLUDE_DIR)
++MARK_AS_ADVANCED(LIBPARTED_LIBRARY LIBPARTED_INCLUDE_DIR LIBPARTED_FILESYSTEM_SUPPORT LIBPARTED_FS_RESIZE_LIBRARY LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT)
+Index: b/src/core/libparted.cpp
+===================================================================
+--- a/src/core/libparted.cpp
++++ b/src/core/libparted.cpp
+@@ -1,5 +1,5 @@
+ /***************************************************************************
+- *   Copyright (C) 2008,2009 by Volker Lanz <v...@fidra.de>                  *
++ *   Copyright (C) 2008,2009,2010,2011 by Volker Lanz <v...@fidra.de>        *
+  *                                                                         *
+  *   This program is free software; you can redistribute it and/or modify  *
+  *   it under the terms of the GNU General Public License as published by  *
+@@ -118,6 +118,7 @@
+ 	@param p the Partition the FileSystem is on
+ 	@return the number of sectors used
+ */
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ static qint64 readSectorsUsedLibParted(PedDisk* pedDisk, const Partition& p)
+ {
+ 	Q_ASSERT(pedDisk);
+@@ -144,6 +145,7 @@
+ 
+ 	return rval;
+ }
++#endif
+ 
+ /** Reads the sectors used in a FileSystem and stores the result in the Partition's FileSystem object.
+ 	@param pedDisk pointer to pedDisk  where the Partition and its FileSystem are
+@@ -160,8 +162,12 @@
+ 		p.fileSystem().setSectorsUsed((sfs.f_blocks - sfs.f_bfree) * sfs.f_bsize / p.sectorSize());
+ 	else if (p.fileSystem().supportGetUsed() == FileSystem::SupportExternal)
+ 		p.fileSystem().setSectorsUsed(p.fileSystem().readUsedCapacity(p.deviceNode()) / p.sectorSize());
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ 	else if (p.fileSystem().supportGetUsed() == FileSystem::SupportLibParted)
+ 		p.fileSystem().setSectorsUsed(readSectorsUsedLibParted(pedDisk, p));
++#else
++	Q_UNUSED(pedDisk);
++#endif
+ }
+ 
+ /** Scans a Device for Partitions.
+Index: b/src/fs/fat16.cpp
+===================================================================
+--- a/src/fs/fat16.cpp
++++ b/src/fs/fat16.cpp
+@@ -59,8 +59,10 @@
+ 		m_Create = findExternal("mkfs.msdos") ? SupportExternal : SupportNone;
+ 		m_GetUsed = m_Check = findExternal("fsck.msdos", QStringList(), 2) ? SupportExternal : SupportNone;
+ 		m_GetLabel = findIdUtil() ? SupportExternal : SupportNone;
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ 		m_Grow = SupportLibParted;
+ 		m_Shrink = SupportLibParted;
++#endif
+ 		m_Move = SupportInternal;
+ 		m_Copy = SupportInternal;
+ 		m_Backup = SupportInternal;
+Index: b/src/fs/hfs.cpp
+===================================================================
+--- a/src/fs/hfs.cpp
++++ b/src/fs/hfs.cpp
+@@ -46,8 +46,10 @@
+ 		m_Create = findExternal("hformat") ? SupportExternal : SupportNone;
+ 		m_Check = m_GetLabel = findExternal("hfsck") ? SupportExternal : SupportNone;
+ 
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ 		m_GetUsed = SupportLibParted;
+ 		m_Shrink = SupportLibParted;
++#endif
+ 
+ 		m_Move = m_Copy = (m_Check != SupportNone) ? SupportInternal : SupportNone;
+ 		m_Backup = SupportInternal;
+Index: b/src/fs/hfsplus.cpp
+===================================================================
+--- a/src/fs/hfsplus.cpp
++++ b/src/fs/hfsplus.cpp
+@@ -42,8 +42,10 @@
+ 	{
+ 		m_Check = findExternal("hpfsck") ? SupportExternal : SupportNone;
+ 
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ 		m_GetUsed = SupportLibParted;
+ 		m_Shrink = SupportLibParted;
++#endif
+ 		m_Copy = (m_Check != SupportNone) ? SupportInternal : SupportNone;
+ 		m_Move = (m_Check != SupportNone) ? SupportInternal : SupportNone;
+ 		m_Backup = SupportInternal;
+Index: b/src/jobs/deletefilesystemjob.cpp
+===================================================================
+--- a/src/jobs/deletefilesystemjob.cpp
++++ b/src/jobs/deletefilesystemjob.cpp
+@@ -60,26 +60,21 @@
+ 	{
+ 		if (PedPartition* pedPartition = ped_disk_get_partition_by_sector(pedDisk(), partition().firstSector()))
+ 		{
+-			if (ped_file_system_clobber(&pedPartition->geom))
++			if (pedPartition->type == PED_PARTITION_NORMAL || pedPartition->type == PED_PARTITION_LOGICAL)
+ 			{
+-				if (pedPartition->type == PED_PARTITION_NORMAL || pedPartition->type == PED_PARTITION_LOGICAL)
++				if (ped_device_open(pedDevice()))
+ 				{
+-					if (ped_device_open(pedDevice()))
+-					{
+-						// libparted doesn't deal with reiser4, so we overwrite it ourselves here
+-						rval = ped_geometry_write(&pedPartition->geom, "0000000", 128, 1);
++					//reiser4 stores "ReIsEr4" at sector 128 with a sector size of 512 bytes
++					rval = ped_geometry_write(&pedPartition->geom, "0000000", 65536 / pedDevice()->sector_size, 1);
+ 
+-						if (!rval)
+-							report->line() << i18nc("@info/plain", "Failed to erase reiser4 signature on partition <filename>%1</filename>.", partition().deviceNode());
++					if (!rval)
++						report->line() << i18nc("@info/plain", "Failed to erase reiser4 signature on partition <filename>%1</filename>.", partition().deviceNode());
+ 
+-						ped_device_close(pedDevice());
+-					}
++					ped_device_close(pedDevice());
+ 				}
+-				else
+-					rval = true;
+ 			}
+ 			else
+-				report->line() << i18nc("@info/plain", "Failed to clobber file system on partition <filename>%1</filename>.", partition().deviceNode());
++				rval = true;
+ 		}
+ 		else
+ 			report->line() << i18nc("@info/plain", "Could not delete file system on partition <filename>%1</filename>: Failed to get partition.", partition().deviceNode());
+Index: b/src/jobs/job.cpp
+===================================================================
+--- a/src/jobs/job.cpp
++++ b/src/jobs/job.cpp
+@@ -370,6 +370,7 @@
+ 	 emit progress(i);
+ }
+ 
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ void Job::pedTimerHandler(PedTimer* pedTimer, void* ctx)
+ {
+ 	if (ctx)
+@@ -380,6 +381,7 @@
+ 			job->emitProgress(pedTimer->frac * 100);
+ 	}
+ }
++#endif
+ 
+ Report* Job::jobStarted(Report& parent)
+ {
+Index: b/src/jobs/job.h
+===================================================================
+--- a/src/jobs/job.h
++++ b/src/jobs/job.h
+@@ -104,7 +104,9 @@
+ 		PedDisk* pedDisk() { return m_PedDisk; }
+ 
+ 		static PedFileSystemType* getPedFileSystemType(FileSystem::Type t);
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ 		static void pedTimerHandler(PedTimer* pedTimer, void* ctx);
++#endif
+ 
+ 	private:
+ 		PedDevice* m_PedDevice;
+Index: b/src/jobs/resizefilesystemjob.cpp
+===================================================================
+--- a/src/jobs/resizefilesystemjob.cpp
++++ b/src/jobs/resizefilesystemjob.cpp
+@@ -119,6 +119,7 @@
+ 		return false;
+ 	}
+ 
++#if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT
+ 	if (PedGeometry* originalGeometry = ped_geometry_new(pedDevice(), partition().fileSystem().firstSector(), partition().fileSystem().length()))
+ 	{
+ 		if (PedFileSystem* pedFileSystem = ped_file_system_open(originalGeometry))
+@@ -144,6 +145,9 @@
+ 	}
+ 	else
+ 		report.line() << i18nc("@info/plain", "Could not read geometry for partition <filename>%1</filename> while trying to resize the file system.", partition().deviceNode());
++#else
++	Q_UNUSED(report);
++#endif
+ 	
+ 	closePed();
+ 	
diff -Nru partitionmanager-1.0.3/debian/patches/series partitionmanager-1.0.3/debian/patches/series
--- partitionmanager-1.0.3/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ partitionmanager-1.0.3/debian/patches/series	2014-07-19 23:04:05.000000000 +0100
@@ -0,0 +1,2 @@
+libparted-3.1.patch
+check-function-exists.patch
_______________________________________________
pkg-kde-extras mailing list
pkg-kde-extras@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-kde-extras

Reply via email to