diff --git a/build/fbcode_builder/getdeps/builder.py b/build/fbcode_builder/getdeps/builder.py index bcba90a14..f382d5af9 100644 --- a/build/fbcode_builder/getdeps/builder.py +++ b/build/fbcode_builder/getdeps/builder.py @@ -723,6 +723,26 @@ class NopBuilder(BuilderBase): shutil.copytree(self.src_dir, self.inst_dir) +class OpenBCMBuilder(NopBuilder): + # OpenBCM libraries are stored with git LFS. As a result, fetcher fetches + # LFS pointers and not the contents. Use git-lfs to pull the real contents + # before copying to install dir using NoopBuilder. + # In future, if more builders require git-lfs, we would consider installing + # git-lfs as part of the sandcastle infra as against repeating similar + # logic for each builder that requires git-lfs. + def __init__(self, build_opts, ctx, manifest, src_dir, inst_dir): + super(OpenBCMBuilder, self).__init__( + build_opts, ctx, manifest, src_dir, inst_dir + ) + + def build(self, install_dirs, reconfigure): + env = self._compute_env(install_dirs) + self._run_cmd(["git", "lfs", "install", "--local"], cwd=self.src_dir, env=env) + self._run_cmd(["git", "lfs", "pull"], cwd=self.src_dir, env=env) + + super(OpenBCMBuilder, self).build(install_dirs, reconfigure) + + class SqliteBuilder(BuilderBase): def __init__(self, build_opts, ctx, manifest, src_dir, build_dir, inst_dir): super(SqliteBuilder, self).__init__( diff --git a/build/fbcode_builder/getdeps/manifest.py b/build/fbcode_builder/getdeps/manifest.py index 7cc0ea2e8..94552fdf2 100644 --- a/build/fbcode_builder/getdeps/manifest.py +++ b/build/fbcode_builder/getdeps/manifest.py @@ -18,6 +18,7 @@ from .builder import ( MakeBuilder, NinjaBootstrap, NopBuilder, + OpenBCMBuilder, OpenSSLBuilder, SqliteBuilder, ) @@ -424,6 +425,9 @@ class ManifestParser(object): build_options, ctx, self, src_dir, build_dir, inst_dir, build_doc ) + if builder == "OpenBCM": + return OpenBCMBuilder(build_options, ctx, self, src_dir, inst_dir) + raise KeyError("project %s has no known builder" % (self.name)) diff --git a/build/fbcode_builder/manifests/OpenBCM b/build/fbcode_builder/manifests/OpenBCM index 107897fb8..fe4026b07 100644 --- a/build/fbcode_builder/manifests/OpenBCM +++ b/build/fbcode_builder/manifests/OpenBCM @@ -4,9 +4,15 @@ name = OpenBCM [git] repo_url = https://github.com/Broadcom-Network-Switching-Software/OpenBCM.git -[build] +[build.os=linux] +builder = OpenBCM + +[build.not(os=linux)] builder = nop +[dependencies] +git-lfs + [install.files] lib/x86-64 = lib include = include