# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- # vim: set filetype=python: # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. option('--disable-nodejs', help='Require Node.js to build') option(env='NODEJS', nargs=1, help='Path to nodejs') @depends('--enable-nodejs', 'NODEJS') @checking('for nodejs', callback=lambda x: '%s (%s)' % (x.path, x.str_version) if x else 'no') @imports(_from='mozbuild.nodeutil', _import='find_node_executable') @imports(_from='mozbuild.nodeutil', _import='NODE_MIN_VERSION') @imports(_from='mozbuild.util', _import='system_encoding') def nodejs(require, env_node): node_exe = env_node[0] if env_node else None nodejs, version = find_node_executable(node_exe) MAYBE_FILE_A_BUG = ''' Executing `mach bootstrap --no-system-changes` should install a compatible version in ~/.mozbuild on most platforms. If you believe this is a bug, is a good way to file. More details: ''' if not nodejs: msg = ('could not find Node.js executable later than %s; ensure ' '`node` or `nodejs` is in PATH or set NODEJS in environment ' 'to point to an executable.%s' % (NODE_MIN_VERSION, MAYBE_FILE_A_BUG) ) if require: raise FatalCheckError(msg) else: log.warning(msg) log.warning('(This will become an error in the near future.)') return if not version: msg = 'NODEJS must point to node %s or newer; found node location: %s. %s' % ( NODE_MIN_VERSION, nodejs, MAYBE_FILE_A_BUG) if require: raise FatalCheckError(msg) else: log.warning(msg) return return namespace( path=nodejs.decode(system_encoding), version=version, str_version='.'.join(str(v) for v in version), ) set_config('NODEJS', depends_if(nodejs)(lambda p: p.path))