[gparted] Apply upstream patch to build with parted-3.0
Deji Akingunola
deji at fedoraproject.org
Mon Jul 4 13:05:40 UTC 2011
commit 6a4655ca40b2abcf9a95392c5c615a56968d44e9
Author: Deji Akingunola <dakingun at mail.com>
Date: Mon Jul 4 09:07:26 2011 -0400
Apply upstream patch to build with parted-3.0
gparted-libparted_3-config.patch | 74 ++++++++
gparted-libparted_3-src.patch | 372 ++++++++++++++++++++++++++++++++++++++
gparted.spec | 14 ++-
3 files changed, 458 insertions(+), 2 deletions(-)
---
diff --git a/gparted-libparted_3-config.patch b/gparted-libparted_3-config.patch
new file mode 100644
index 0000000..e5d9bb5
--- /dev/null
+++ b/gparted-libparted_3-config.patch
@@ -0,0 +1,74 @@
+diff --git a/configure.in b/configure.in
+index 427de2a..436051d 100644
+--- a/configure.in
++++ b/configure.in
+@@ -131,6 +131,55 @@ int main ()
+ LIBS="$LIBS_save"
+
+
++dnl======================
++dnl check whether libparted >= 3.0 (libparted is missing file system resizing API)
++dnl======================
++LIBPARTED_VERSION=3.0
++AC_MSG_CHECKING([if libparted >= $LIBPARTED_VERSION (libparted is missing file system resizing API)])
++LIBS_save="$LIBS"
++LIBS="-lparted -luuid -ldl"
++need_work_around=yes
++AC_TRY_RUN([
++#include <stdio.h>
++#include <parted/parted.h>
++
++int main ()
++{
++ int min_major = 0;
++ int min_minor = 0;
++ int min_micro = 0;
++ int major = 0;
++ int minor = 0;
++ int micro = 0;
++
++ if ( ( sscanf( "$LIBPARTED_VERSION", "%d.%d.%d", &min_major, &min_minor, &min_micro ) == 3 ) ||
++ ( sscanf( "$LIBPARTED_VERSION", "%d.%d", &min_major, &min_minor ) == 2 ) ||
++ ( sscanf( "$LIBPARTED_VERSION", "%d", &min_major ) == 1 )
++ )
++ {
++ if ( ( sscanf( ped_get_version(), "%d.%d.%d", &major, &minor, µ ) == 3 ) ||
++ ( sscanf( ped_get_version(), "%d.%d", &major, &minor ) == 2 ) ||
++ ( sscanf( ped_get_version(), "%d", &major ) == 1 )
++ )
++ {
++ return ! ( (major > min_major) ||
++ ( (major == min_major) && (minor > min_minor) ) ||
++ ( (major == min_major) && (minor == min_minor) && (micro >= min_micro) )
++ ) ;
++ }
++ }
++
++ return 1 ;
++}
++], [AC_MSG_RESULT([yes])
++ AC_DEFINE([HAVE_LIBPARTED_3_0_0_PLUS], [1], [Define to 1 if libparted >= 3.0])
++ have_lp_fs_resize_api=no]
++, [AC_MSG_RESULT([no])
++ have_lp_fs_resize_api=yes]
++)
++LIBS="$LIBS_save"
++
++
+ dnl GTKMM
+ PKG_CHECK_MODULES([GTKMM], [gtkmm-2.4 > 2.8])
+ AC_SUBST([GTKMM_LIBS])
+@@ -215,9 +215,12 @@
+ echo ""
+ echo " Build documentation? : $enable_doc"
+ echo ""
++echo " Use native libparted dmraid support? : $enable_libparted_dmraid"
++echo ""
++echo " --- Features Based On Libparted Version ---"
+ echo " Need part table re-read work around? : $need_pt_reread_work_around"
+ echo " Supports sector sizes > 512 bytes? : $support_sector_size_gt_512"
+-echo " Use native libparted dmraid support? : $enable_libparted_dmraid"
++echo " Have libparted file system resizing API? : $have_lp_fs_resize_api"
+ echo ""
+ echo " If all settings are OK, type make and make install "
+ echo "========================================================"
diff --git a/gparted-libparted_3-src.patch b/gparted-libparted_3-src.patch
new file mode 100644
index 0000000..cd15efc
--- /dev/null
+++ b/gparted-libparted_3-src.patch
@@ -0,0 +1,372 @@
+diff --git a/include/GParted_Core.h b/include/GParted_Core.h
+index 55bd6f5..03ad852 100644
+--- a/include/GParted_Core.h
++++ b/include/GParted_Core.h
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -78,7 +78,9 @@ private:
+ bool inside_extended ) ;
+ void set_mountpoints( std::vector<Partition> & partitions ) ;
+ void set_used_sectors( std::vector<Partition> & partitions ) ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ void LP_set_used_sectors( Partition & partition );
++#endif
+ void set_flags( Partition & partition ) ;
+
+ //operationstuff...
+@@ -103,9 +105,11 @@ private:
+ bool move_filesystem( const Partition & partition_old,
+ const Partition & partition_new,
+ OperationDetail & operationdetail ) ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ bool resize_move_filesystem_using_libparted( const Partition & partition_old,
+ const Partition & partition_new,
+ OperationDetail & operationdetail ) ;
++#endif
+ bool resize( const Partition & partition_old,
+ const Partition & partition_new,
+ OperationDetail & operationdetail ) ;
+@@ -176,7 +180,9 @@ private:
+ Partition & partition_new,
+ OperationDetail & operationdetail ) ;
+ bool set_proper_filesystem( const FILESYSTEM & filesystem ) ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ bool erase_filesystem_signatures( const Partition & partition ) ;
++#endif
+ bool update_bootsector( const Partition & partition, OperationDetail & operationdetail ) ;
+
+ //general..
+diff --git a/include/Utils.h b/include/Utils.h
+index 180416b..e154d6f 100644
+--- a/include/Utils.h
++++ b/include/Utils.h
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -94,7 +94,9 @@ struct FS
+ {
+ NONE = 0,
+ GPARTED = 1,
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ LIBPARTED = 2,
++#endif
+ EXTERNAL = 3
+ };
+
+diff --git a/src/Dialog_Partition_New.cc b/src/Dialog_Partition_New.cc
+index 7ecb2e5..7be8ef4 100644
+--- a/src/Dialog_Partition_New.cc
++++ b/src/Dialog_Partition_New.cc
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -61,7 +61,7 @@ void Dialog_Partition_New::Set_Data( const Partition & partition,
+ FS fs_tmp ;
+ //add FS_UNFORMATTED
+ fs_tmp .filesystem = GParted::FS_UNFORMATTED ;
+- fs_tmp .create = GParted::FS::LIBPARTED ;
++ fs_tmp .create = FS::GPARTED ;
+ this ->FILESYSTEMS .push_back( fs_tmp ) ;
+
+ //add FS_EXTENDED
+diff --git a/src/GParted_Core.cc b/src/GParted_Core.cc
+index 847ca74..a39b88f 100644
+--- a/src/GParted_Core.cc
++++ b/src/GParted_Core.cc
+@@ -1223,8 +1223,10 @@ void GParted_Core::read_label( Partition & partition )
+ if ( set_proper_filesystem( partition .filesystem ) )
+ p_filesystem ->read_label( partition ) ;
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case FS::LIBPARTED:
+ break ;
++#endif
+
+ default:
+ break ;
+@@ -1396,9 +1398,11 @@ void GParted_Core::set_used_sectors( std::vector<Partition> & partitions )
+ if ( set_proper_filesystem( partitions[ t ] .filesystem ) )
+ p_filesystem ->set_used_sectors( partitions[ t ] ) ;
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case GParted::FS::LIBPARTED :
+ LP_set_used_sectors( partitions[ t ] ) ;
+ break ;
++#endif
+
+ default:
+ break ;
+@@ -1430,6 +1434,7 @@ void GParted_Core::set_used_sectors( std::vector<Partition> & partitions )
+ }
+ }
+
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ void GParted_Core::LP_set_used_sectors( Partition & partition )
+ {
+ PedFileSystem *fs = NULL;
+@@ -1458,6 +1463,7 @@ void GParted_Core::LP_set_used_sectors( Partition & partition )
+ }
+ }
+ }
++#endif
+
+ void GParted_Core::set_flags( Partition & partition )
+ {
+@@ -1572,7 +1578,11 @@ bool GParted_Core::create_partition( Partition & new_partition, OperationDetail
+ close_device_and_disk() ;
+ }
+
+- bool succes = new_partition .partition_number > 0 && erase_filesystem_signatures( new_partition ) ;
++ bool succes = new_partition .partition_number > 0
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
++ && erase_filesystem_signatures( new_partition )
++#endif
++ ;
+
+ #ifndef USE_LIBPARTED_DMRAID
+ //create dev map entries if dmraid
+@@ -1600,8 +1610,10 @@ bool GParted_Core::create_filesystem( const Partition & partition, OperationDeta
+ break ;
+ case GParted::FS::GPARTED:
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case GParted::FS::LIBPARTED:
+ break ;
++#endif
+ case GParted::FS::EXTERNAL:
+ succes = set_proper_filesystem( partition .filesystem ) &&
+ p_filesystem ->create( partition, operationdetail .get_last_child() ) ;
+@@ -1614,9 +1626,11 @@ bool GParted_Core::create_filesystem( const Partition & partition, OperationDeta
+ }
+
+ bool GParted_Core::format( const Partition & partition, OperationDetail & operationdetail )
+-{
++{
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ //remove all file system signatures...
+ erase_filesystem_signatures( partition ) ;
++#endif
+
+ return set_partition_type( partition, operationdetail ) && create_filesystem( partition, operationdetail ) ;
+ }
+@@ -1684,8 +1698,10 @@ bool GParted_Core::label_partition( const Partition & partition, OperationDetail
+ succes = set_proper_filesystem( partition .filesystem ) &&
+ p_filesystem ->write_label( partition, operationdetail .get_last_child() ) ;
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case FS::LIBPARTED:
+ break ;
++#endif
+
+ default:
+ break ;
+@@ -1867,11 +1883,13 @@ bool GParted_Core::move_filesystem( const Partition & partition_old,
+ succes = copy_filesystem( partition_old, partition_new, operationdetail .get_last_child() ) ;
+
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case GParted::FS::LIBPARTED:
+ succes = resize_move_filesystem_using_libparted( partition_old,
+ partition_new,
+ operationdetail .get_last_child() ) ;
+ break ;
++#endif
+ case GParted::FS::EXTERNAL:
+ succes = set_proper_filesystem( partition_new .filesystem ) &&
+ p_filesystem ->move( partition_old
+@@ -1885,6 +1903,7 @@ bool GParted_Core::move_filesystem( const Partition & partition_old,
+ return succes ;
+ }
+
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ bool GParted_Core::resize_move_filesystem_using_libparted( const Partition & partition_old,
+ const Partition & partition_new,
+ OperationDetail & operationdetail )
+@@ -1921,6 +1940,7 @@ bool GParted_Core::resize_move_filesystem_using_libparted( const Partition & par
+
+ return return_value ;
+ }
++#endif
+
+ bool GParted_Core::resize( const Partition & partition_old,
+ const Partition & partition_new,
+@@ -2173,11 +2193,13 @@ bool GParted_Core::resize_filesystem( const Partition & partition_old,
+ break ;
+ case GParted::FS::GPARTED:
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case GParted::FS::LIBPARTED:
+ succes = resize_move_filesystem_using_libparted( partition_old,
+ partition_new,
+ operationdetail .get_last_child() ) ;
+ break ;
++#endif
+ case GParted::FS::EXTERNAL:
+ succes = set_proper_filesystem( partition_new .filesystem ) &&
+ p_filesystem ->resize( partition_new,
+@@ -2244,10 +2266,12 @@ bool GParted_Core::copy( const Partition & partition_src,
+ partition_dst,
+ operationdetail .get_last_child() ) ;
+ break ;
+-
++
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case GParted::FS::LIBPARTED :
+ //FIXME: see if copying through libparted has any advantages
+ break ;
++#endif
+
+ case GParted::FS::EXTERNAL :
+ succes = set_proper_filesystem( partition_dst .filesystem ) &&
+@@ -2479,8 +2503,10 @@ bool GParted_Core::check_repair_filesystem( const Partition & partition, Operati
+ break ;
+ case GParted::FS::GPARTED:
+ break ;
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ case GParted::FS::LIBPARTED:
+ break ;
++#endif
+ case GParted::FS::EXTERNAL:
+ succes = set_proper_filesystem( partition .filesystem ) &&
+ p_filesystem ->check_repair( partition, operationdetail .get_last_child() ) ;
+@@ -2908,7 +2934,8 @@ bool GParted_Core::set_proper_filesystem( const FILESYSTEM & filesystem )
+
+ return p_filesystem ;
+ }
+-
++
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ bool GParted_Core::erase_filesystem_signatures( const Partition & partition )
+ {
+ bool return_value = false ;
+@@ -2935,7 +2962,8 @@ bool GParted_Core::erase_filesystem_signatures( const Partition & partition )
+
+ return return_value ;
+ }
+-
++#endif
++
+ bool GParted_Core::update_bootsector( const Partition & partition, OperationDetail & operationdetail )
+ {
+ //only for ntfs atm...
+diff --git a/src/fat16.cc b/src/fat16.cc
+index a9d418a..2fe73c9 100644
+--- a/src/fat16.cc
++++ b/src/fat16.cc
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -49,11 +49,15 @@ FS fat16::get_filesystem_support()
+ fs .write_label = FS::EXTERNAL ;
+ }
+
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ //resizing of start and endpoint are provided by libparted
+ fs .grow = GParted::FS::LIBPARTED ;
+ fs .shrink = GParted::FS::LIBPARTED ;
+ fs .move = GParted::FS::LIBPARTED ;
+-
++#else
++ fs.move = FS::GPARTED ;
++#endif
++
+ fs .copy = GParted::FS::GPARTED ;
+
+ fs .MIN = 16 * MEBIBYTE ;
+diff --git a/src/fat32.cc b/src/fat32.cc
+index f7990dd..8860a5e 100644
+--- a/src/fat32.cc
++++ b/src/fat32.cc
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -48,12 +48,16 @@ FS fat32::get_filesystem_support()
+ fs .read_label = FS::EXTERNAL ;
+ fs .write_label = FS::EXTERNAL ;
+ }
+-
++
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ //resizing of start and endpoint are provided by libparted
+ fs .grow = GParted::FS::LIBPARTED ;
+ fs .shrink = GParted::FS::LIBPARTED ;
+ fs .move = GParted::FS::LIBPARTED ;
+-
++#else
++ fs .move = FS::GPARTED ;
++#endif
++
+ fs .copy = GParted::FS::GPARTED ;
+
+ fs .MIN = 32 * MEBIBYTE ; //smaller fs'es will cause windows scandisk to fail..
+diff --git a/src/hfs.cc b/src/hfs.cc
+index aa6fed7..0856aaa 100644
+--- a/src/hfs.cc
++++ b/src/hfs.cc
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -27,9 +27,11 @@ FS hfs::get_filesystem_support()
+ FS fs ;
+
+ fs .filesystem = GParted::FS_HFS ;
+-
++
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ fs .read = GParted::FS::LIBPARTED ;
+ fs .shrink = GParted::FS::LIBPARTED ;
++#endif
+
+ if ( ! Glib::find_program_in_path( "hformat" ) .empty() )
+ fs .create = GParted::FS::EXTERNAL ;
+diff --git a/src/hfsplus.cc b/src/hfsplus.cc
+index bb5126d..31925a0 100644
+--- a/src/hfsplus.cc
++++ b/src/hfsplus.cc
+@@ -1,5 +1,5 @@
+ /* Copyright (C) 2004 Bart
+- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
++ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
+ *
+ * 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
+@@ -27,10 +27,12 @@ FS hfsplus::get_filesystem_support()
+ FS fs ;
+
+ fs .filesystem = GParted::FS_HFSPLUS ;
+-
++
++#ifndef HAVE_LIBPARTED_3_0_0_PLUS
+ fs .read = GParted::FS::LIBPARTED ;
+ fs .shrink = GParted::FS::LIBPARTED ;
+-
++#endif
++
+ if ( ! Glib::find_program_in_path( "mkfs.hfsplus" ) .empty() )
+ fs .create = GParted::FS::EXTERNAL ;
+
diff --git a/gparted.spec b/gparted.spec
index 09e9165..cbcb5b9 100644
--- a/gparted.spec
+++ b/gparted.spec
@@ -1,18 +1,21 @@
Summary: Gnome Partition Editor
Name: gparted
Version: 0.8.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Group: Applications/System
License: GPLv2+
URL: http://gparted.sourceforge.net
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.bz2
Source1: gparted-console.apps
Source2: gparted-pam.d
+Patch0: gparted-libparted_3-config.patch
+Patch1: gparted-libparted_3-src.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gtkmm24-devel parted-devel
BuildRequires: libuuid-devel gettext perl(XML::Parser)
BuildRequires: desktop-file-utils gnome-doc-utils intltool
BuildRequires: rarian-compat
+BuildRequires: automake autoconf gnome-common
%description
GParted stands for Gnome Partition Editor and is a graphical frontend to
@@ -23,9 +26,13 @@ will be detected at runtime and don't require a rebuild of GParted
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
%build
-%configure
+PKG_NAME="gparted" REQUIRED_AUTOMAKE_VERSION=1.9 USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
+
+%configure --enable-libparted-dmraid
make %{?_smp_mflags}
%install
@@ -85,6 +92,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%config(noreplace) %{_sysconfdir}/security/console.apps/gparted
%changelog
+* Sun Jun 26 2011 Deji Akingunola <dakingun at gmail.com> - 0.8.1-2
+- Apply upstream patch to build with parted-3.0
+
* Sun Jun 26 2011 Deji Akingunola <dakingun at gmail.com> - 0.8.1-1
- Update to version 0.8.1
More information about the scm-commits
mailing list