Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(683)

Side by Side Diff: chromite/lib/binpkg.py

Issue 5542002: Switch from gsdview.appspot.com to commondatastorage.googleapis.com. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git@master
Patch Set: 80 chars Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | prebuilt.py » ('j') | prebuilt.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 # 4 #
5 # Adapted from portage/getbinpkg.py -- Portage binary-package helper functions 5 # Adapted from portage/getbinpkg.py -- Portage binary-package helper functions
6 # Copyright 2003-2004 Gentoo Foundation 6 # Copyright 2003-2004 Gentoo Foundation
7 # Distributed under the terms of the GNU General Public License v2 7 # Distributed under the terms of the GNU General Public License v2
8 8
9 import operator 9 import operator
10 import os 10 import os
11 import tempfile 11 import tempfile
12 import time 12 import time
13 import urllib
13 import urllib2 14 import urllib2
14 15
15 class PackageIndex(object): 16 class PackageIndex(object):
16 """A parser for the Portage Packages index file. 17 """A parser for the Portage Packages index file.
17 18
18 The Portage Packages index file serves to keep track of what packages are 19 The Portage Packages index file serves to keep track of what packages are
19 included in a tree. It contains the following sections: 20 included in a tree. It contains the following sections:
20 1) The header. The header tracks general key/value pairs that don't apply 21 1) The header. The header tracks general key/value pairs that don't apply
21 to any specific package. E.g., it tracks the base URL of the packages 22 to any specific package. E.g., it tracks the base URL of the packages
22 file, and the number of packages included in the file. The header is 23 file, and the number of packages included in the file. The header is
(...skipping 22 matching lines...) Expand all
45 """Populate db with SHA1 -> URL mapping for packages. 46 """Populate db with SHA1 -> URL mapping for packages.
46 47
47 Args: 48 Args:
48 db: Dictionary to populate with SHA1 -> URL mapping for packages. 49 db: Dictionary to populate with SHA1 -> URL mapping for packages.
49 """ 50 """
50 51
51 uri = self.header['URI'] 52 uri = self.header['URI']
52 for pkg in self.packages: 53 for pkg in self.packages:
53 cpv, sha1 = pkg['CPV'], pkg.get('SHA1') 54 cpv, sha1 = pkg['CPV'], pkg.get('SHA1')
54 if sha1: 55 if sha1:
55 path = pkg.get('PATH', cpv + '.tbz2') 56 path = pkg.get('PATH', urllib.quote(cpv + '.tbz2'))
56 db[sha1] = '%s/%s' % (uri.rstrip('/'), path) 57 db[sha1] = '%s/%s' % (uri.rstrip('/'), path)
57 58
58 def _ReadPkgIndex(self, pkgfile): 59 def _ReadPkgIndex(self, pkgfile):
59 """Read a list of key/value pairs from the Packages file into a dictionary. 60 """Read a list of key/value pairs from the Packages file into a dictionary.
60 61
61 Both header entries and package entries are lists of key/value pairs, so 62 Both header entries and package entries are lists of key/value pairs, so
62 they can both be read by this function. Entries can be terminated by empty 63 they can both be read by this function. Entries can be terminated by empty
63 lines or by the end of the file. 64 lines or by the end of the file.
64 65
65 This function will read lines from the specified file until it encounters 66 This function will read lines from the specified file until it encounters
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 194
194 Args: 195 Args:
195 base_uri: Base URI for all packages in the file. We set 196 base_uri: Base URI for all packages in the file. We set
196 self.header['URI'] to this value, so all packages must live under 197 self.header['URI'] to this value, so all packages must live under
197 this directory. 198 this directory.
198 path_prefix: Path prefix to use for all current packages in the file. 199 path_prefix: Path prefix to use for all current packages in the file.
199 This will be added to the beginning of the path for every package. 200 This will be added to the beginning of the path for every package.
200 """ 201 """
201 self.header['URI'] = base_uri 202 self.header['URI'] = base_uri
202 for pkg in self.packages: 203 for pkg in self.packages:
203 pkg['PATH'] = '%s/%s' % (path_prefix.rstrip('/'), pkg['CPV'] + '.tbz2') 204 path = urllib.quote(pkg['CPV'] + '.tbz2')
205 pkg['PATH'] = '%s/%s' % (path_prefix.rstrip('/'), path)
204 206
205 def Write(self, pkgfile): 207 def Write(self, pkgfile):
206 """Write a packages file to disk. 208 """Write a packages file to disk.
207 209
208 If 'modified' flag is set, the TIMESTAMP and PACKAGES fields in the header 210 If 'modified' flag is set, the TIMESTAMP and PACKAGES fields in the header
209 will be updated before writing to disk. 211 will be updated before writing to disk.
210 212
211 Args: 213 Args:
212 pkgfile: A python file object. 214 pkgfile: A python file object.
213 """ 215 """
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 package_path: Directory containing Packages file. 300 package_path: Directory containing Packages file.
299 301
300 Returns: 302 Returns:
301 A PackageIndex object. 303 A PackageIndex object.
302 """ 304 """
303 packages_file = file(os.path.join(package_path, 'Packages')) 305 packages_file = file(os.path.join(package_path, 'Packages'))
304 pkgindex = PackageIndex() 306 pkgindex = PackageIndex()
305 pkgindex.Read(packages_file) 307 pkgindex.Read(packages_file)
306 packages_file.close() 308 packages_file.close()
307 return pkgindex 309 return pkgindex
OLDNEW
« no previous file with comments | « no previous file | prebuilt.py » ('j') | prebuilt.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698