1
0
mirror of https://github.com/facebook/proxygen.git synced 2025-08-08 18:02:05 +03:00

getdeps: allow overriding project source, build, and install directories

Summary:
Add arguments to getdeps.py to allow overriding the source, build, and install
directories a per-project basis.  The arguments take the form `[PROJECT:]PATH`
If the `PROJECT` portion is omitted, it defaults to the current project being
built.

In particular this makes it possible to specify `--src-dir .` to tell
getdeps.py to find the project sources from the current directory rather than
downloading them.

Reviewed By: wez

Differential Revision: D16778011

fbshipit-source-id: f33b87213ace04abb66334f588babdf59df91964
This commit is contained in:
Adam Simpkins
2019-08-15 17:53:32 -07:00
committed by Facebook Github Bot
parent fb5f217226
commit a412d9a8a0
3 changed files with 104 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ import glob
import hashlib
import os
from . import fetcher
from .envfuncs import path_search
from .manifest import ManifestParser
@@ -105,6 +106,9 @@ class ManifestLoader(object):
self.manifests_by_name = {}
self._loaded_all = False
self._project_hashes = {}
self._fetcher_overrides = {}
self._build_dir_overrides = {}
self._install_dir_overrides = {}
def load_manifest(self, name):
manifest = self.manifests_by_name.get(name)
@@ -200,7 +204,20 @@ class ManifestLoader(object):
return dep_order
def set_project_src_dir(self, project_name, path):
self._fetcher_overrides[project_name] = fetcher.LocalDirFetcher(path)
def set_project_build_dir(self, project_name, path):
self._build_dir_overrides[project_name] = path
def set_project_install_dir(self, project_name, path):
self._install_dir_overrides[project_name] = path
def create_fetcher(self, manifest):
override = self._fetcher_overrides.get(manifest.name)
if override is not None:
return override
ctx = self.ctx_gen.get_context(manifest.name)
return manifest.create_fetcher(self.build_opts, ctx)
@@ -268,9 +285,17 @@ class ManifestLoader(object):
return "%s-%s" % (manifest.name, project_hash)
def get_project_install_dir(self, manifest):
override = self._install_dir_overrides.get(manifest.name)
if override:
return override
project_dir_name = self._get_project_dir_name(manifest)
return os.path.join(self.build_opts.install_dir, project_dir_name)
def get_project_build_dir(self, manifest):
override = self._build_dir_overrides.get(manifest.name)
if override:
return override
project_dir_name = self._get_project_dir_name(manifest)
return os.path.join(self.build_opts.scratch_dir, "build", project_dir_name)