setup patch - simplistic --include-source for download/installed pkgs
d_hoke@hotmail.com
d_hoke@hotmail.com
Fri Jun 21 10:52:00 GMT 2013
A patch for setup providing command line switches (-I, --include-source) to automatically include source packages associated with any selected binary packages when downloading/installing.
The first version is targeted at source revision 2.774 (can obtain as -D20120430) from cvs, which seems to match the binary setup.exe available for download at cygwin.com in early June 2013.
It will almost apply to head around 20130619, but a second version is provided to do that cleanly.
It may not be suitable for release, but am sending here in case it would be found and useful to others.
=====================================================================
file: include_source_D20120430_R2.774.patch.diff
=====================================================================
Index: install.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/install.cc,v
retrieving revision 2.101
diff -u -r2.101 install.cc
--- install.cc 25 Jul 2011 14:36:24 -0000 2.101
+++ install.cc 10 Jun 2013 08:45:50 -0000
@@ -68,6 +68,8 @@
extern ThreeBarProgressPage Progress;
+extern BoolOption IncludeSource ;
+
static int total_bytes = 0;
static int total_bytes_sofar = 0;
static int package_bytes = 0;
@@ -675,8 +677,9 @@
}
}
- if (pkg.desired.sourcePackage ().picked())
+ if (pkg.desired.sourcePackage ().picked() || IncludeSource)
{
+ bool skiprequested = false ;
try
{
md5_one (*pkg.desired.sourcePackage ().source ());
@@ -684,9 +687,12 @@
catch (Exception *e)
{
if (yesno (owner, IDS_SKIP_PACKAGE, e->what()) == IDYES)
+ {
+ skiprequested = true ; //(err occurred,) skip pkg desired
pkg.desired.sourcePackage ().pick (false, &pkg);
+ }
}
- if (pkg.desired.sourcePackage().picked())
+ if (pkg.desired.sourcePackage().picked() || (IncludeSource && !skiprequested) )
{
md5sum_total_bytes_sofar += pkg.desired.sourcePackage ().source()->size;
total_bytes += pkg.desired.sourcePackage ().source()->size;
Index: download.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/download.cc,v
retrieving revision 2.55
diff -u -r2.55 download.cc
--- download.cc 29 Apr 2011 12:43:59 -0000 2.55
+++ download.cc 10 Jun 2013 08:45:50 -0000
@@ -57,6 +57,8 @@
extern ThreeBarProgressPage Progress;
+BoolOption IncludeSource (false, 'I', "include-source", "Automatically include source download");
+
static bool
validateCachedPackage (const std::string& fullname, packagesource & pkgsource)
{
@@ -223,7 +225,7 @@
if (!check_for_cached (*i))
total_download_bytes += i->size;
}
- if (sourceversion.picked ())
+ if (sourceversion.picked () || IncludeSource)
{
for (vector<packagesource>::iterator i =
sourceversion.sources ()->begin();
@@ -262,7 +264,7 @@
i != version.sources ()->end(); ++i)
e += download_one (*i, owner);
}
- if (sourceversion && sourceversion.picked())
+ if (sourceversion && (sourceversion.picked() || IncludeSource) )
{
for (vector<packagesource>::iterator i =
sourceversion.sources ()->begin();
===========================================================================
file: include_source_patch_HEAD_circa20130612.diff
===========================================================================
Index: install.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/install.cc,v
retrieving revision 2.106
diff -u -r2.106 install.cc
--- install.cc 14 Mar 2013 09:21:06 -0000 2.106
+++ install.cc 12 Jun 2013 11:00:58 -0000
@@ -73,6 +73,7 @@
static long long int total_bytes_sofar = 0;
static int package_bytes = 0;
+extern BoolOption IncludeSource ;
static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot",
"Disable replacing in-use files on next "
"reboot.");
@@ -704,8 +705,9 @@
}
}
- if (pkg.desired.sourcePackage ().picked())
+ if (pkg.desired.sourcePackage ().picked() || IncludeSource)
{
+ bool skiprequested = false ;
try
{
md5_one (*pkg.desired.sourcePackage ().source ());
@@ -713,9 +715,12 @@
catch (Exception *e)
{
if (yesno (owner, IDS_SKIP_PACKAGE, e->what()) == IDYES)
+ {
+ skiprequested = true ; //(err occurred,) skip pkg desired
pkg.desired.sourcePackage ().pick (false, &pkg);
+ }
}
- if (pkg.desired.sourcePackage().picked())
+ if (pkg.desired.sourcePackage().picked() || (IncludeSource && !skiprequested) )
{
md5sum_total_bytes_sofar += pkg.desired.sourcePackage ().source()->size;
total_bytes += pkg.desired.sourcePackage ().source()->size;
Index: download.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/download.cc,v
retrieving revision 2.56
diff -u -r2.56 download.cc
--- download.cc 8 Nov 2012 19:12:16 -0000 2.56
+++ download.cc 12 Jun 2013 11:00:58 -0000
@@ -56,6 +56,8 @@
extern ThreeBarProgressPage Progress;
+BoolOption IncludeSource (false, 'I', "include-source", "Automatically include source download");
+
static bool
validateCachedPackage (const std::string& fullname, packagesource & pkgsource)
{
@@ -222,7 +224,7 @@
if (!check_for_cached (*i))
total_download_bytes += i->size;
}
- if (sourceversion.picked ())
+ if (sourceversion.picked () || IncludeSource)
{
for (vector<packagesource>::iterator i =
sourceversion.sources ()->begin();
@@ -261,7 +263,7 @@
i != version.sources ()->end(); ++i)
e += download_one (*i, owner);
}
- if (sourceversion && sourceversion.picked())
+ if (sourceversion && (sourceversion.picked() || IncludeSource) )
{
for (vector<packagesource>::iterator i =
sourceversion.sources ()->begin();
=============================================================================
More information about the Cygwin-apps
mailing list