Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: ensure_dependencies.py

Issue 29570614: Issue 5028 - Use browser namespace (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Patch Set: Update ensure_dependencies.py Created Oct. 16, 2017, 12:16 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « devtools.js ('k') | ext/background.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ensure_dependencies.py
===================================================================
--- a/ensure_dependencies.py
+++ b/ensure_dependencies.py
@@ -39,16 +39,18 @@
# from a specific Git repository, specifying the revision ID.
adblockpluschrome = git:git@github.com:user/adblockpluschrome.git@1fad3a7
'''
SKIP_DEPENDENCY_UPDATES = os.environ.get(
'SKIP_DEPENDENCY_UPDATES', ''
).lower() not in ('', '0', 'false')
+NPM_LOCKFILE = '.npm_install_lock'
+
class Mercurial():
def istype(self, repodir):
return os.path.exists(os.path.join(repodir, '.hg'))
def clone(self, source, target):
if not source.endswith('/'):
source += '/'
@@ -266,20 +268,29 @@
# production dependencies declared, we don't need to run npm and can
# bail out early.
if not package_data.get('dependencies', False):
return
except IOError:
return
try:
- cmd = ['npm', 'install', '--only=production', '--loglevel=warn']
+ # Create an empty file, which gets deleted after successfully
+ # installing Node.js dependencies.
+ lockfile_path = os.path.join(target, NPM_LOCKFILE)
+ open(lockfile_path, 'a').close()
+
+ cmd = ['npm', 'install', '--only=production',
+ '--loglevel=warn', '--no-package-lock']
subprocess.check_output(cmd, cwd=target)
+ repo_types[vcs].ignore(os.path.join(target, NPM_LOCKFILE), target)
repo_types[vcs].ignore(os.path.join(target, 'node_modules'), target)
+
+ os.remove(lockfile_path)
except OSError as e:
import errno
if e.errno == errno.ENOENT:
logging.error('Failed to install Node.js dependencies for %s,'
' please ensure Node.js is installed.', target)
else:
raise
@@ -360,17 +371,18 @@
if not (vcs and source and rev):
logging.warning('No valid source / revision found to create %s' % target)
continue
repo_cloned = ensure_repo(repodir, parenttype, target, vcs,
_root.get(vcs, ''), source)
repo_updated = update_repo(target, vcs, rev)
- if repo_cloned or repo_updated:
+ recent_npm_failed = os.path.exists(os.path.join(target, NPM_LOCKFILE))
+ if repo_cloned or repo_updated or recent_npm_failed:
resolve_npm_dependencies(target, vcs)
resolve_deps(target, level + 1, self_update=False,
overrideroots=overrideroots, skipdependencies=skipdependencies)
if self_update and '_self' in config and '*' in config['_self']:
source = safe_join(repodir, config['_self']['*'])
try:
with io.open(source, 'rb') as handle:
« no previous file with comments | « devtools.js ('k') | ext/background.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld