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

Unified Diff: third_party/gsutil/setup.py

Issue 12317103: Added gsutil to depot tools (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: added readme Created 7 years, 10 months 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 side-by-side diff with in-line comments
Download patch
Index: third_party/gsutil/setup.py
diff --git a/third_party/gsutil/setup.py b/third_party/gsutil/setup.py
new file mode 100755
index 0000000000000000000000000000000000000000..af63de6e579531f579661dee40b0bf1ef0a1b491
--- /dev/null
+++ b/third_party/gsutil/setup.py
@@ -0,0 +1,141 @@
+#!/usr/bin/env python
+# coding=utf8
+# Copyright 2011 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+'''Distutils setup.py script for Google Cloud Storage command line tool.'''
+
+import glob
+import sys
+import os
+import platform
+from distutils.core import setup
+from pkg_util import parse_manifest
+
+print '''
+NOTE: Enterprise mode (installing gsutil via setup.py) is no longer officially
+supported - unpacking the zip file into a directory is the preferred method
+for installing gsutil for both shared and private configurations. See README
+and README.pkg for further details.
+'''
+
+# Command name and target directory.
+NAME = 'gsutil'
+TARGET = '/usr/share/gsutil'
+BINDIR = '/usr/bin'
+
+# Enterprise mode (shared/central) installation is not supported
+# on Windows.
+system = platform.system()
+if system.lower().startswith('windows'):
+ error = 'ERROR: enterprise (shared/central) installation is not ' \
+ 'supported on Windows.'
+ exit(error)
+
+def walk(dir, paths):
+ '''Do a recursive file tree walk, adding files found to passed dict.'''
+ for file in os.listdir(dir):
+ # Skip "dot files".
+ if file[0] == '.':
+ continue
+ path = dir + '/' + file
+ if os.path.isdir(path):
+ walk(path, paths)
+ else:
+ if dir not in paths:
+ paths[dir] = []
+ paths[dir].append(path)
+
+def first_token(filename):
+ '''Open file, read first line, parse & return first token to caller.'''
+ token = None
+ f = open(filename, 'r')
+ line = f.readline().strip()
+ tokens = line.split()
+ token = tokens[0]
+ f.close()
+ return token
+
+# Validate python version.
+if sys.version_info <= (2, 6):
+ error = 'ERROR: gsutil requires Python Version 2.6 or above...exiting.'
+ exit(error)
+
+# Rather than hard-coding package contents here, we read the manifest
+# file to obtain the list of files and directories to include.
+files = []
+dirs = []
+parse_manifest(files, dirs)
+
+# Build list of data files dynamically.
+data_files = [(TARGET, files)]
+paths = {}
+for dir in dirs:
+ walk(dir, paths)
+for path in paths:
+ data_files += (os.path.join(TARGET, path), paths[path]),
+
+long_desc = '''
+GSUtil is a Python application that lets you access Google Cloud Storage
+from the command line. You can use GSUtil to do a wide range of bucket and
+object management tasks, including:
+- Creating and deleting buckets.
+- Uploading, downloading, and deleting objects.
+- Listing buckets and objects.
+- Moving, copying, and renaming objects.
+- Setting object and bucket ACLs.
+'''
+
+VERSION = first_token('VERSION')
+if not VERSION:
+ error = 'ERROR: can\'t find gsutil version...exiting.'
+ exit(error)
+
+# This is the main function call that installs the gsutil package. See
+# distutil documentation for details on this function and its arguments.
+setup(name = NAME,
+ version = VERSION,
+ license = 'Apache 2.0',
+ author = 'Google',
+ author_email = 'gs-team@google.com',
+ url = 'http://code.google.com/apis/storage/docs/gsutil.html',
+ description = 'gsutil - command line utility for Google Cloud Storage',
+ long_description = long_desc,
+ data_files = data_files,
+ # Dependency on boto commented out for now because initially we plan to
+ # bundle boto with this package, however, when we're ready to depend on
+ # a separate boto rpm package, this line should be uncommented.
+ #requires = ['boto (>=2.0)'],
+ )
+
+# Create symlink from /usr/bin/gsutil to /usr/share/gsutil/gsutil but
+# only run directly in enterprise mode (see README.pkg). When run by
+# rpmbuild we don't want to create this link because it's done by the
+# rpm spec file slightly differently (using a relative link). Same story
+# for permission setting, which is only needed if not run by rpmbuild.
+if not os.environ.get('RPM_BUILD_ROOT'):
+ link = os.path.join(BINDIR, NAME)
+ dest = os.path.join(TARGET, NAME)
+ if not os.path.exists(link):
+ os.symlink(dest, link)
+ # Make all files and dirs in install area readable by other
+ # and make all directories executable by other. These steps
+ # are performed in support of the enterprise (shared/central)
+ # installation mode, in which users with different user/group
+ # than the installation user/group must be able to run gsutil.
+ os.system('chmod -R o+r ' + TARGET)
+ os.system('find ' + TARGET + ' -type d | xargs chmod o+x')
+ # Make main gsutil script readable and executable by other.
+ os.system('chmod o+rx ' + os.path.join(TARGET, NAME))
+

Powered by Google App Engine
This is Rietveld 408576698