summaryrefslogtreecommitdiffstats
path: root/meta/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch')
-rw-r--r--meta/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch97
1 files changed, 97 insertions, 0 deletions
diff --git a/meta/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch b/meta/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
new file mode 100644
index 0000000000..9f9b9359ce
--- /dev/null
+++ b/meta/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
@@ -0,0 +1,97 @@
1---
2 ipkg-make-index | 31 +++++++++++++++++++++++++++----
3 1 file changed, 27 insertions(+), 4 deletions(-)
4
5Index: ipkg-utils/ipkg-make-index
6===================================================================
7--- ipkg-utils.orig/ipkg-make-index 2007-05-26 23:45:56.000000000 +0100
8+++ ipkg-utils/ipkg-make-index 2007-05-26 23:47:25.000000000 +0100
9@@ -40,6 +40,7 @@ def to_locale(filename, locale):
10 old_filename = None
11 packages_filename = None
12 filelist_filename = "Packages.filelist"
13+stamplist_filename = "Packages.stamps"
14 opt_s = 0
15 opt_m = 0
16 (opts, remaining_args) = getopt.getopt(sys.argv[1:], "hl:p:vsmr:L:")
17@@ -50,6 +51,7 @@ for (optkey, optval) in opts:
18 opt_s = 1
19 if optkey == '-p':
20 packages_filename = optval
21+ stamplist_filename = optval + ".stamps"
22 if optkey == '-l':
23 filelist_filename = optval
24 if optkey == '-v':
25@@ -72,6 +74,7 @@ old_pkg_hash = {}
26 if packages_filename and not old_filename and os.path.exists(packages_filename):
27 old_filename = packages_filename
28
29+pkgsStamps = {}
30 if old_filename:
31 if (verbose):
32 sys.stderr.write("Reading package list from " + old_filename + "\n")
33@@ -80,6 +83,14 @@ if old_filename:
34 for k in old_packages.packages.keys():
35 p = old_packages.packages[k]
36 old_pkg_hash[p.filename] = p
37+ try:
38+ f = open(stamplist_filename, "r")
39+ for l in f:
40+ l = l.strip()
41+ s, f = l.split(" ", 1)
42+ pkgsStamps[f] = int(s)
43+ except IOError:
44+ pass
45
46 if (verbose):
47 sys.stderr.write("Reading in all the package info from %s\n" % (pkg_dir, ))
48@@ -87,11 +98,17 @@ files=glob(pkg_dir + '/*.ipk') + glob(pk
49 files.sort()
50 for filename in files:
51 basename = os.path.basename(filename)
52+ pkg = None
53+ fnameStat = os.stat(filename)
54 if old_pkg_hash.has_key(basename):
55- if (verbose):
56+ if pkgsStamps.has_key(basename) and fnameStat.st_mtime == pkgsStamps[basename]:
57+ if (verbose):
58 sys.stderr.write("Found %s in Packages\n" % (filename,))
59- pkg = old_pkg_hash[basename]
60- else:
61+ pkg = old_pkg_hash[basename]
62+ else:
63+ sys.stderr.write("Found %s in Packages, but mtime differs - re-reading\n" % (filename,))
64+
65+ if not pkg:
66 if (verbose):
67 sys.stderr.write("Reading info for package %s\n" % (filename,))
68 pkg = ipkg.Package(filename)
69@@ -101,6 +118,7 @@ for filename in files:
70 else:
71 old_filename = ""
72 s = packages.add_package(pkg)
73+ pkgsStamps[basename] = fnameStat.st_mtime
74 if s == 0:
75 if old_filename:
76 # old package was displaced by newer
77@@ -114,6 +132,11 @@ for filename in files:
78 if opt_s:
79 print filename
80
81+pkgsStampsFile = open(stamplist_filename, "w")
82+for f in pkgsStamps.keys():
83+ pkgsStampsFile.write("%d %s\n" % (pkgsStamps[f], f))
84+pkgsStampsFile.close()
85+
86 if opt_s:
87 sys.exit(0)
88
89@@ -154,7 +177,7 @@ if packages_filename:
90 os.rename(tmp_packages_filename, packages_filename)
91 os.rename(tmp_gzip_filename, gzip_filename)
92
93-if verbose:
94+if verbose:
95 sys.stderr.write("Generate Packages.filelist file\n")
96 files = {}
97 names = packages.packages.keys()