[meego-commits] 11062: Changes to Trunk:Testing/libzypp
Zhang Qiang
no_reply at build.meego.com
Mon Dec 20 11:35:51 UTC 2010
Hi,
I have made the following changes to libzypp in project Trunk:Testing. Please review and accept ASAP.
Thank You,
Zhang Qiang
[This message was auto-generated]
---
Request #11062:
submit: devel:packagemanagement/libzypp(r32) -> Trunk:Testing/libzypp
Message:
Add MeeGo-resume-download.patch to support resume/re-start download packages, this patch can support to implement FEA#9355 Add MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch to support two arm architecture, fix BMC#11484
State: new 2010-12-20T03:35:50 xiaoqiang
Comment: None
changes files:
--------------
--- libzypp.changes
+++ libzypp.changes
@@ -0,0 +1,6 @@
+* Mon Dec 20 2010 Zhang Qiang <qiang.z.zhang at intel.com> - 8.1.0
+- Add MeeGo-resume-download.patch to support resume/re-start
+ download packages, this patch can support to implement FEA#9355
+- Add MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch to support
+ two arm architecture, fix BMC#11484
+
@@ -4,0 +11,3 @@
+- Update meego-enable-proxy.patch, to add removeQueryParam() in class
+ Url, which can used to remove proxy Param while it's useless.
+ also use regex to parse the proxy info in repo file
new:
----
MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch
MeeGo-resume-download.patch
spec files:
-----------
--- libzypp.spec
+++ libzypp.spec
@@ -24,6 +24,7 @@
BuildRequires: ruby
BuildRequires: expat-devel
BuildRequires: dbus-glib-devel glib2-devel popt-devel rpm-devel
+BuildRequires: libproxy-devel
Requires: gnupg2
Requires: satsolver-tools
@@ -33,6 +34,8 @@
Patch3: use_gpg2.patch
Patch4: meego-enable-proxy.patch
Patch5: meego-check-products-dir-while-using-rpmdb2solv.patch
+Patch6: MeeGo-resume-download.patch
+Patch7: MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch
%description
Package, Patch, Pattern, and Product Management
@@ -81,12 +84,15 @@
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
+%patch7 -p1
%build
mkdir build
cd build
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$CFLAGS"
+
cmake -DCMAKE_INSTALL_PREFIX=%{prefix} \
-DDOC_INSTALL_DIR=%{_docdir} \
-DLIB=%{_lib} \
other changes:
--------------
++++++ MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch (new)
--- MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch
+++ MeeGo-Add-armv7hl-and-armv7nhl-architecture.patch
+diff -uNr libzypp-8.1.0/zypp/Arch.cc libzypp-8.1.0.new/zypp/Arch.cc
+--- libzypp-8.1.0/zypp/Arch.cc 2010-08-06 00:32:16.000000000 +0800
++++ libzypp-8.1.0.new/zypp/Arch.cc 2010-12-20 16:31:19.541305043 +0800
+@@ -187,6 +187,8 @@
+ DEF_BUILTIN( sparcv8 );
+ DEF_BUILTIN( sparc );
+
++ DEF_BUILTIN( armv7nhl );
++ DEF_BUILTIN( armv7hl );
+ DEF_BUILTIN( armv7l );
+ DEF_BUILTIN( armv6l );
+ DEF_BUILTIN( armv5tejl );
+@@ -317,6 +319,8 @@
+ defCompatibleWith( _armv5tejl, _noarch,_armv3l,_armv4l,_armv4tl,_armv5l,_armv5tel );
+ defCompatibleWith( _armv6l, _noarch,_armv3l,_armv4l,_armv4tl,_armv5l,_armv5tel,_armv5tejl );
+ defCompatibleWith( _armv7l, _noarch,_armv3l,_armv4l,_armv4tl,_armv5l,_armv5tel,_armv5tejl,_armv6l );
++ defCompatibleWith( _armv7hl, _noarch,_armv3l,_armv4l,_armv4tl,_armv5l,_armv5tel,_armv5tejl,_armv6l,_armv7l );
++ defCompatibleWith( _armv7nhl, _noarch,_armv3l,_armv4l,_armv4tl,_armv5l,_armv5tel,_armv5tejl,_armv6l,_armv7l,_armv7hl );
+ //
+ defCompatibleWith( _sh3, _noarch );
+ //
+@@ -422,6 +426,8 @@
+ const Arch Arch_sparcv8( _sparcv8 );
+ const Arch Arch_sparc( _sparc );
+
++ const Arch Arch_armv7nhl( _armv7nhl );
++ const Arch Arch_armv7hl( _armv7hl );
+ const Arch Arch_armv7l( _armv7l );
+ const Arch Arch_armv6l( _armv6l );
+ const Arch Arch_armv5tejl( _armv5tejl );
+diff -uNr libzypp-8.1.0/zypp/Arch.h libzypp-8.1.0.new/zypp/Arch.h
+--- libzypp-8.1.0/zypp/Arch.h 2010-08-06 00:32:16.000000000 +0800
++++ libzypp-8.1.0.new/zypp/Arch.h 2010-12-20 16:31:59.001574385 +0800
+@@ -212,6 +212,10 @@
+ extern const Arch Arch_sparc;
+
+ /** \relates Arch */
++ extern const Arch Arch_armv7nhl;
++ /** \relates Arch */
++ extern const Arch Arch_armv7hl;
++ /** \relates Arch */
+ extern const Arch Arch_armv7l;
+ /** \relates Arch */
+ extern const Arch Arch_armv6l;
+diff -uNr libzypp-8.1.0/zypp/parser/yum/schema/common-inc.rnc libzypp-8.1.0.new/zypp/parser/yum/schema/common-inc.rnc
+--- libzypp-8.1.0/zypp/parser/yum/schema/common-inc.rnc 2010-08-06 00:32:16.000000000 +0800
++++ libzypp-8.1.0.new/zypp/parser/yum/schema/common-inc.rnc 2010-12-20 16:36:41.668574373 +0800
+@@ -31,6 +31,8 @@
+ | "armv5tel"
+ | "armv7el"
+ | "armv7l"
++ | "armv7hl"
++ | "armv7nhl"
+ | "athlon"
+ | "i386"
+ | "i486"
+diff -uNr libzypp-8.1.0/zypp/parser/yum/schema/common-inc.rng libzypp-8.1.0.new/zypp/parser/yum/schema/common-inc.rng
+--- libzypp-8.1.0/zypp/parser/yum/schema/common-inc.rng 2010-08-06 00:32:16.000000000 +0800
++++ libzypp-8.1.0.new/zypp/parser/yum/schema/common-inc.rng 2010-12-20 16:36:12.991526308 +0800
+@@ -94,6 +94,8 @@
+ <value>armv5tel</value>
+ <value>armv7el</value>
+ <value>armv7l</value>
++ <value>armv7hl</value>
++ <value>armv7nhl</value>
+ <value>athlon</value>
+ <value>i386</value>
+ <value>i486</value>
++++++ MeeGo-resume-download.patch (new)
--- MeeGo-resume-download.patch
+++ MeeGo-resume-download.patch
+diff -uNr libzypp-8.1.0/zypp/Fetcher.cc libzypp-8.1.0.new/zypp/Fetcher.cc
+--- libzypp-8.1.0/zypp/Fetcher.cc 2010-12-20 11:23:22.352574623 +0800
++++ libzypp-8.1.0.new/zypp/Fetcher.cc 2010-12-20 11:41:13.390574478 +0800
+@@ -550,21 +550,27 @@
+ // try to get the file from the net
+ try
+ {
+- Pathname tmp_file = media.provideFile(resource, resource.optional() ? MediaSetAccess::PROVIDE_NON_INTERACTIVE : MediaSetAccess::PROVIDE_DEFAULT, deltafile );
+-
+ Pathname dest_full_path = dest_dir + resource.filename();
++ Pathname tmp_file;
+
+ if ( assert_dir( dest_full_path.dirname() ) != 0 )
+ ZYPP_THROW( Exception("Can't create " + dest_full_path.dirname().asString()));
+- if ( filesystem::hardlinkCopy( tmp_file, dest_full_path ) != 0 )
++
++ if ( deltafile.asString() == "" )
++ media.provideFile(resource, resource.optional() ? MediaSetAccess::PROVIDE_NON_INTERACTIVE : MediaSetAccess::PROVIDE_DEFAULT, dest_full_path );
++ else
+ {
+- if ( ! PathInfo(tmp_file).isExist() )
+- ERR << tmp_file << " does not exist" << endl;
+- if ( ! PathInfo(dest_full_path.dirname()).isExist() )
+- ERR << dest_full_path.dirname() << " does not exist" << endl;
++ tmp_file = media.provideFile(resource, resource.optional() ? MediaSetAccess::PROVIDE_NON_INTERACTIVE : MediaSetAccess::PROVIDE_DEFAULT, deltafile );
++ if ( filesystem::hardlinkCopy( tmp_file, dest_full_path ) != 0 )
++ {
++ if ( ! PathInfo(tmp_file).isExist() )
++ ERR << tmp_file << " does not exist" << endl;
++ if ( ! PathInfo(dest_full_path.dirname()).isExist() )
++ ERR << dest_full_path.dirname() << " does not exist" << endl;
+
+- media.releaseFile(resource); //not needed anymore, only eat space
+- ZYPP_THROW( Exception("Can't hardlink/copy " + tmp_file.asString() + " to " + dest_dir.asString()));
++ media.releaseFile(resource); //not needed anymore, only eat space
++ ZYPP_THROW( Exception("Can't hardlink/copy " + tmp_file.asString() + " to " + dest_dir.asString()));
++ }
+ }
+
+ media.releaseFile(resource); //not needed anymore, only eat space
+diff -uNr libzypp-8.1.0/zypp/media/MediaMultiCurl.cc libzypp-8.1.0.new/zypp/media/MediaMultiCurl.cc
+--- libzypp-8.1.0/zypp/media/MediaMultiCurl.cc 2010-11-06 17:44:08.639456006 +0800
++++ libzypp-8.1.0.new/zypp/media/MediaMultiCurl.cc 2010-12-20 11:24:29.770636984 +0800
+@@ -14,6 +14,7 @@
+ #include <sys/types.h>
+ #include <signal.h>
+ #include <sys/wait.h>
++#include <sys/stat.h>
+ #include <netdb.h>
+ #include <arpa/inet.h>
+
+@@ -1180,37 +1181,61 @@
+ void MediaMultiCurl::doGetFileCopy( const Pathname & filename , const Pathname & target, callback::SendReport<DownloadProgressReport> & report, RequestOptions options ) const
+ {
+ Pathname dest = target.absolutename();
++ string destNew;
++ FILE *file = NULL;
+ if( assert_dir( dest.dirname() ) )
+ {
+ DBG << "assert_dir " << dest.dirname() << " failed" << endl;
+ Url url(getFileUrl(filename));
+ ZYPP_THROW( MediaSystemException(url, "System error on " + dest.dirname().asString()) );
+ }
+- string destNew = target.asString() + ".new.zypp.XXXXXX";
+- char *buf = ::strdup( destNew.c_str());
+- if( !buf)
++ if ( deltafile().asString() != "" )
+ {
+- ERR << "out of memory for temp file name" << endl;
+- Url url(getFileUrl(filename));
+- ZYPP_THROW(MediaSystemException(url, "out of memory for temp file name"));
++ destNew = deltafile().asString();
++ Pathname target_path(destNew.c_str());
++ struct stat file_info;
++ curl_off_t file_off = -1 ;
++
++ file = ::fopen( destNew.c_str(), "ab+" );
++ if ( !file ) {
++ filesystem::unlink( destNew );
++ ERR << "fopen failed for file '" << destNew << "'" << endl;
++ ZYPP_THROW(MediaWriteException(destNew));
++ }
++ if ( stat(destNew.c_str(), &file_info) == 0 )
++ {
++ file_off = file_info.st_size;
++ curl_easy_setopt(_curl, CURLOPT_RESUME_FROM_LARGE, file_off);
++ }
+ }
+-
+- int tmp_fd = ::mkstemp( buf );
+- if( tmp_fd == -1)
++ else
+ {
++ destNew = target.asString() + ".new.zypp.XXXXXX";
++ char *buf = ::strdup( destNew.c_str());
++ if( !buf)
++ {
++ ERR << "out of memory for temp file name" << endl;
++ Url url(getFileUrl(filename));
++ ZYPP_THROW(MediaSystemException(url, "out of memory for temp file name"));
++ }
++
++ int tmp_fd = ::mkstemp( buf );
++ if( tmp_fd == -1)
++ {
++ free( buf);
++ ERR << "mkstemp failed for file '" << destNew << "'" << endl;
++ ZYPP_THROW(MediaWriteException(destNew));
++ }
++ destNew = buf;
+ free( buf);
+- ERR << "mkstemp failed for file '" << destNew << "'" << endl;
+- ZYPP_THROW(MediaWriteException(destNew));
+- }
+- destNew = buf;
+- free( buf);
+
+- FILE *file = ::fdopen( tmp_fd, "w" );
+- if ( !file ) {
+- ::close( tmp_fd);
+- filesystem::unlink( destNew );
+- ERR << "fopen failed for file '" << destNew << "'" << endl;
+- ZYPP_THROW(MediaWriteException(destNew));
++ file = ::fdopen( tmp_fd, "w" );
++ if ( !file ) {
++ ::close( tmp_fd);
++ filesystem::unlink( destNew );
++ ERR << "fopen failed for file '" << destNew << "'" << endl;
++ ZYPP_THROW(MediaWriteException(destNew));
++ }
+ }
+ DBG << "dest: " << dest << endl;
+ DBG << "temp: " << destNew << endl;
+@@ -1226,8 +1251,6 @@
+ curl_easy_setopt(_curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_NONE);
+ curl_easy_setopt(_curl, CURLOPT_TIMEVALUE, 0L);
+ }
+- // change header to include Accept: metalink
+- curl_easy_setopt(_curl, CURLOPT_HTTPHEADER, _customHeadersMetalink);
+ try
+ {
+ MediaCurl::doGetFileCopyFile(filename, dest, file, report, options);
+@@ -1325,7 +1348,7 @@
+ ERR << "Fclose failed for file '" << destNew << "'" << endl;
+ ZYPP_THROW(MediaWriteException(destNew));
+ }
+- if ( rename( destNew, dest ) != 0 )
++ if ( deltafile().asString() == "" && rename( destNew, dest ) != 0 )
+ {
+ ERR << "Rename failed" << endl;
+ ZYPP_THROW(MediaWriteException(dest));
More information about the MeeGo-commits
mailing list