import urllib import xml.dom.minidom # pylint: disable=W0404 import gdata.projecthosting.client import gdata.service import gdata.spreadsheet.service from chromite.lib import operation # pylint: disable=W0201,E0203 TOKEN_FILE = os.path.join(os.environ['HOME'], '.gdata_token') CRED_FILE = os.path.join(os.environ['HOME'], '.gdata_cred.txt') oper = operation.Operation('gdata_lib') _BAD_COL_CHARS_REGEX = re.compile(r'[ /]') def PrepColNameForSS(col): """Translate a column name for spreadsheet interface.""" # Spreadsheet interface requires column names to be # all lowercase and with no spaces or other special characters. return _BAD_COL_CHARS_REGEX.sub('', col.lower()) # TODO(mtennant): Rename PrepRowValuesForSS def PrepRowForSS(row): """Make sure spreadsheet handles all values in row as strings.""" return dict((key, PrepValForSS(val)) for key, val in row.items())
import optparse import os import re from chromite.lib import operation from chromite.lib import table from chromite.lib import upgrade_table as utable COL_PACKAGE = utable.UpgradeTable.COL_PACKAGE COL_SLOT = utable.UpgradeTable.COL_SLOT COL_TARGET = utable.UpgradeTable.COL_TARGET COL_OVERLAY = utable.UpgradeTable.COL_OVERLAY ID_COLS = [COL_PACKAGE, COL_SLOT] oper = operation.Operation('merge_package_status') # A bit of hard-coding with knowledge of how cros targets work. CHROMEOS_TARGET_ORDER = ['chromeos', 'chromeos-dev', 'chromeos-test'] def _GetCrosTargetRank(target): """Hard-coded ranking of known/expected chromeos root targets for sorting. The lower the ranking, the earlier in the target list it falls by convention. In other words, in the typical target combination "chromeos chromeos-dev", "chromeos" has a lower ranking than "chromeos-dev". All valid rankings are greater than zero. Return valid ranking for target or a false value if target is unrecognized.""" for ix, targ in enumerate(CHROMEOS_TARGET_ORDER): if target == targ:
preserved if chroot is deleted. """ from __future__ import print_function import filecmp import os import shutil from chromite.lib import constants from chromite.lib import commandline from chromite.lib import cros_build_lib as build_lib from chromite.lib import operation MODULE = os.path.splitext(os.path.basename(__file__))[0] oper = operation.Operation(MODULE) TOKEN_FILE = os.path.expanduser('~/.gdata_token') CRED_FILE = os.path.expanduser('~/.gdata_cred.txt') def _ChrootPathToExternalPath(path): """Translate |path| inside chroot to external path to same location.""" if path: return os.path.join(constants.SOURCE_ROOT, constants.DEFAULT_CHROOT_DIR, path.lstrip('/')) return None class OutsideChroot(object):
#!/usr/bin/python # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Refresh online Portage package status spreadsheet.""" import optparse import os import shutil from chromite.lib import cros_build_lib from chromite.lib import operation oper = operation.Operation('refresh_package_status') oper.verbose = True # Without verbose Info messages don't show up. TMP_ROOT = '/tmp' SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) # TODO(mtennant): Remove these two and replace with variables in gdata_lib. GDATA_CRED_FILE = '.gdata_cred.txt' GDATA_TOKEN_FILE = '.gdata_token' GENTOO_DIR = 'gentoo-portage' PRTG_GIT_URL = 'ssh://gerrit.chromium.org:29418/chromiumos/overlays/portage.git' FUNTOO_GIT_URL = 'git://github.com/funtoo/portage.git' def RunGit(cwd, cmd, args=[]): # pylint: disable=W0102 """Run the git |cmd| with |args| in the |cwd| directory.""" cmdline = ['git', cmd] + args cros_build_lib.RunCommand(cmdline, cwd=cwd)
import optparse import os from chromite.lib import gdata_lib from chromite.lib import table from chromite.lib import operation from chromite.lib import upgrade_table as utable from chromite.scripts import merge_package_status as mps REAL_SS_KEY = '0AsXDKtaHikmcdEp1dVN1SG1yRU1xZEw1Yjhka2dCSUE' TEST_SS_KEY = '0AsXDKtaHikmcdDlQMjI3ZDdPVGc4Rkl3Yk5OLWxjR1E' PKGS_WS_NAME = 'Packages' DEPS_WS_NAME = 'Dependencies' oper = operation.Operation('upload_package_status') class Uploader(object): """Uploads portage package status data from csv file to Google spreadsheet.""" __slots__ = ('_creds', # gdata_lib.Creds object '_scomm', # gdata_lib.SpreadsheetComm object '_ss_row_cache', # dict with key=pkg, val=SpreadsheetRow obj '_csv_table', # table.Table of csv rows ) ID_COL = utable.UpgradeTable.COL_PACKAGE SS_ID_COL = gdata_lib.PrepColNameForSS(ID_COL) SOURCE = 'Uploaded from CSV'
PKGS_WS_NAME = 'Packages' CROS_ORG = 'chromium.org' CHROMIUMOS_SITE = 'http://www.%s/%s' % (CROS_ORG, PROJECT_NAME) PKG_UPGRADE_PAGE = '%s/gentoo-package-upgrade-process' % CHROMIUMOS_SITE DOCS_SITE = 'https://docs.google.com/a' COL_PACKAGE = gdata_lib.PrepColNameForSS(utable.UpgradeTable.COL_PACKAGE) COL_TEAM = gdata_lib.PrepColNameForSS('Team/Lead') COL_OWNER = gdata_lib.PrepColNameForSS('Owner') COL_TRACKER = gdata_lib.PrepColNameForSS('Tracker') ARCHES = ('amd64', 'arm', 'x86') oper = operation.Operation('sync_package_status') def _GetPkgSpreadsheetURL(ss_key): return '%s/%s/spreadsheet/ccc?key=%s' % (DOCS_SITE, CROS_ORG, ss_key) class SyncError(RuntimeError): """Extend RuntimeError for use in this module.""" class Syncer(object): """Class to manage synchronizing between spreadsheet and Tracker.""" # Map spreadsheet team names to Tracker team values. VALID_TEAMS = {'build': 'BuildRelease',