Skip to content

Commit

Permalink
ローカルビルドのオプション名を変更する
Browse files Browse the repository at this point in the history
  • Loading branch information
melpon committed May 13, 2024
1 parent 8e8724e commit fdc48fe
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 47 deletions.
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@

## develop

- [CHANGE] `--sora-dir`, `--sora-args``--local-sora-cpp-sdk-dir``--local-sora-cpp-sdk-args` に変更する
- @melpon
- [CHANGE] `--webrtc-build-dir`, `--webrtc-build-args``--local-webrtc-build-dir``--local-webrtc-build-args` に変更する
- @melpon

## 2024.3.0 (2024-04-18)

- [UPDATE] Sora C++ SDK を `2024.6.1` に上げる
Expand Down
62 changes: 36 additions & 26 deletions buildbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,19 +433,19 @@ def install_webrtc(version, source_dir, install_dir, platform: str):
extract(archive, output_dir=install_dir, output_dirname="webrtc")


def build_webrtc(platform, webrtc_build_dir, webrtc_build_args, debug):
with cd(webrtc_build_dir):
def build_webrtc(platform, local_webrtc_build_dir, local_webrtc_build_args, debug):
with cd(local_webrtc_build_dir):
args = ["--webrtc-nobuild-ios-framework", "--webrtc-nobuild-android-aar"]
if debug:
args += ["--debug"]

args += webrtc_build_args
args += local_webrtc_build_args

cmd(["python3", "run.py", "build", platform, *args])

# インクルードディレクトリを増やしたくないので、
# __config_site を libc++ のディレクトリにコピーしておく
webrtc_source_dir = os.path.join(webrtc_build_dir, "_source", platform, "webrtc")
webrtc_source_dir = os.path.join(local_webrtc_build_dir, "_source", platform, "webrtc")
src_config = os.path.join(
webrtc_source_dir, "src", "buildtools", "third_party", "libc++", "__config_site"
)
Expand Down Expand Up @@ -486,11 +486,11 @@ class WebrtcInfo(NamedTuple):


def get_webrtc_info(
platform: str, webrtc_build_dir: Optional[str], install_dir: str, debug: bool
platform: str, local_webrtc_build_dir: Optional[str], install_dir: str, debug: bool
) -> WebrtcInfo:
webrtc_install_dir = os.path.join(install_dir, "webrtc")

if webrtc_build_dir is None:
if local_webrtc_build_dir is None:
return WebrtcInfo(
version_file=os.path.join(webrtc_install_dir, "VERSIONS"),
deps_file=os.path.join(webrtc_install_dir, "DEPS"),
Expand All @@ -501,15 +501,17 @@ def get_webrtc_info(
libcxx_dir=os.path.join(install_dir, "llvm", "libcxx"),
)
else:
webrtc_build_source_dir = os.path.join(webrtc_build_dir, "_source", platform, "webrtc")
webrtc_build_source_dir = os.path.join(
local_webrtc_build_dir, "_source", platform, "webrtc"
)
configuration = "debug" if debug else "release"
webrtc_build_build_dir = os.path.join(
webrtc_build_dir, "_build", platform, configuration, "webrtc"
local_webrtc_build_dir, "_build", platform, configuration, "webrtc"
)

return WebrtcInfo(
version_file=os.path.join(webrtc_build_dir, "VERSION"),
deps_file=os.path.join(webrtc_build_dir, "DEPS"),
version_file=os.path.join(local_webrtc_build_dir, "VERSION"),
deps_file=os.path.join(local_webrtc_build_dir, "DEPS"),
webrtc_include_dir=os.path.join(webrtc_build_source_dir, "src"),
webrtc_source_dir=os.path.join(webrtc_build_source_dir, "src"),
webrtc_library_dir=webrtc_build_build_dir,
Expand Down Expand Up @@ -749,15 +751,23 @@ def install_sora_and_deps(platform: str, source_dir: str, install_dir: str):


def build_sora(
platform: str, sora_dir: str, sora_args: List[str], debug: bool, webrtc_build_dir: Optional[str]
platform: str,
local_sora_cpp_sdk_dir: str,
local_sora_cpp_sdk_args: List[str],
debug: bool,
local_webrtc_build_dir: Optional[str],
):
if debug and "--debug" not in sora_args:
sora_args = ["--debug", *sora_args]
if webrtc_build_dir is not None:
sora_args = ["--webrtc-build-dir", webrtc_build_dir, *sora_args]
if debug and "--debug" not in local_sora_cpp_sdk_args:
local_sora_cpp_sdk_args = ["--debug", *local_sora_cpp_sdk_args]
if local_webrtc_build_dir is not None:
local_sora_cpp_sdk_args = [
"--local-webrtc-build-dir",
local_webrtc_build_dir,
*local_sora_cpp_sdk_args,
]

with cd(sora_dir):
cmd(["python3", "run.py", platform, *sora_args])
with cd(local_sora_cpp_sdk_dir):
cmd(["python3", "run.py", platform, *local_sora_cpp_sdk_args])


class SoraInfo(NamedTuple):
Expand All @@ -766,11 +776,11 @@ class SoraInfo(NamedTuple):


def get_sora_info(
platform: str, sora_dir: Optional[str], install_dir: str, debug: bool
platform: str, local_sora_cpp_sdk_dir: Optional[str], install_dir: str, debug: bool
) -> SoraInfo:
if sora_dir is not None:
if local_sora_cpp_sdk_dir is not None:
configuration = "debug" if debug else "release"
install_dir = os.path.join(sora_dir, "_install", platform, configuration)
install_dir = os.path.join(local_sora_cpp_sdk_dir, "_install", platform, configuration)

return SoraInfo(
sora_install_dir=os.path.join(install_dir, "sora"),
Expand Down Expand Up @@ -1497,32 +1507,32 @@ def get_webrtc_platform(platform: Platform) -> str:
# `--sora-args '--test'` のようにスペースを使うと、ハイフンから始まるオプションが正しく解釈されない
def add_sora_arguments(parser):
parser.add_argument(
"--sora-dir",
"--local-sora-cpp-sdk-dir",
type=os.path.abspath,
default=None,
help="Refer to local Sora C++ SDK. "
"When this option is specified, Sora C++ SDK will also be built.",
)
parser.add_argument(
"--sora-args",
"--local-sora-cpp-sdk-args",
type=shlex.split,
default=[],
help="Options for building local Sora C++ SDK when `--sora-dir` is specified.",
help="Options for building local Sora C++ SDK when `--local-sora-cpp-sdk-dir` is specified.",
)


# add_sora_arguments と同様の注意点があるので注意すること
def add_webrtc_build_arguments(parser):
parser.add_argument(
"--webrtc-build-dir",
"--local-webrtc-build-dir",
type=os.path.abspath,
default=None,
help="Refer to local webrtc-build. "
"When this option is specified, webrtc-build will also be built.",
)
parser.add_argument(
"--webrtc-build-args",
"--local-webrtc-build-args",
type=shlex.split,
default=[],
help="Options for building local webrtc-build when `--webrtc-build-dir` is specified.",
help="Options for building local webrtc-build when `--local-webrtc-build-dir` is specified.",
)
50 changes: 29 additions & 21 deletions run.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ def install_deps(
build_dir,
install_dir,
debug,
webrtc_build_dir: Optional[str],
webrtc_build_args: List[str],
sora_dir: Optional[str],
sora_args: List[str],
local_webrtc_build_dir: Optional[str],
local_webrtc_build_args: List[str],
local_sora_cpp_sdk_dir: Optional[str],
local_sora_cpp_sdk_args: List[str],
):
with cd(BASE_DIR):
version = read_version_file("VERSION")
Expand All @@ -59,7 +59,7 @@ def install_deps(
install_android_ndk(**install_android_ndk_args)

# WebRTC
if webrtc_build_dir is None:
if local_webrtc_build_dir is None:
install_webrtc_args = {
"version": version["WEBRTC_BUILD_VERSION"],
"version_file": os.path.join(install_dir, "webrtc.version"),
Expand All @@ -71,21 +71,21 @@ def install_deps(
else:
build_webrtc_args = {
"platform": platform,
"webrtc_build_dir": webrtc_build_dir,
"webrtc_build_args": webrtc_build_args,
"local_webrtc_build_dir": local_webrtc_build_dir,
"local_webrtc_build_args": local_webrtc_build_args,
"debug": debug,
}
build_webrtc(**build_webrtc_args)

webrtc_info = get_webrtc_info(platform, webrtc_build_dir, install_dir, debug)
webrtc_info = get_webrtc_info(platform, local_webrtc_build_dir, install_dir, debug)

# Windows は MSVC を使うので不要
# macOS と iOS は Apple Clang を使うので不要
# Android は libc++ のために必要
# webrtc-build をソースビルドしてる場合は既にローカルにあるので不要
if (
platform not in ("windows_x86_64", "macos_x86_64", "macos_arm64", "ios")
and webrtc_build_dir is None
and local_webrtc_build_dir is None
):
webrtc_version = read_version_file(webrtc_info.version_file)

Expand Down Expand Up @@ -137,10 +137,16 @@ def install_deps(
add_path(os.path.join(install_dir, "cmake", "bin"))

# Sora C++ SDK
if sora_dir is None:
if local_sora_cpp_sdk_dir is None:
install_sora_and_deps(platform, source_dir, install_dir)
else:
build_sora(platform, sora_dir, sora_args, debug, webrtc_build_dir)
build_sora(
platform,
local_sora_cpp_sdk_dir,
local_sora_cpp_sdk_args,
debug,
local_webrtc_build_dir,
)

# protobuf
install_protobuf_args = {
Expand Down Expand Up @@ -230,10 +236,10 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument("--debug", action="store_true")
parser.add_argument("--relwithdebinfo", action="store_true")
parser.add_argument("--webrtc-build-dir", type=os.path.abspath)
parser.add_argument("--webrtc-build-args", default="", type=shlex.split)
parser.add_argument("--sora-dir", type=os.path.abspath)
parser.add_argument("--sora-args", default="", type=shlex.split)
parser.add_argument("--local-webrtc-build-dir", type=os.path.abspath)
parser.add_argument("--local-webrtc-build-args", default="", type=shlex.split)
parser.add_argument("--local-sora-cpp-sdk-dir", type=os.path.abspath)
parser.add_argument("--local-sora-cpp-sdk-args", default="", type=shlex.split)
parser.add_argument("target", choices=AVAILABLE_TARGETS)

args = parser.parse_args()
Expand Down Expand Up @@ -262,10 +268,10 @@ def main():
build_dir,
install_dir,
args.debug,
args.webrtc_build_dir,
args.webrtc_build_args,
args.sora_dir,
args.sora_args,
args.local_webrtc_build_dir,
args.local_webrtc_build_args,
args.local_sora_cpp_sdk_dir,
args.local_sora_cpp_sdk_args,
)

if args.debug:
Expand All @@ -278,8 +284,10 @@ def main():
unity_build_dir = os.path.join(build_dir, "sora_unity_sdk")
mkdir_p(unity_build_dir)
with cd(unity_build_dir):
webrtc_info = get_webrtc_info(platform, args.webrtc_build_dir, install_dir, args.debug)
sora_info = get_sora_info(platform, args.sora_dir, install_dir, args.debug)
webrtc_info = get_webrtc_info(
platform, args.local_webrtc_build_dir, install_dir, args.debug
)
sora_info = get_sora_info(platform, args.local_sora_cpp_sdk_dir, install_dir, args.debug)
webrtc_version = read_version_file(webrtc_info.version_file)
webrtc_commit = webrtc_version["WEBRTC_COMMIT"]
with cd(BASE_DIR):
Expand Down

0 comments on commit fdc48fe

Please sign in to comment.