diff --git a/build-release b/build-release index 6cf314f..fe9d7b3 100755 --- a/build-release +++ b/build-release @@ -480,6 +480,8 @@ build () { cmake_opts="${cmake_opts} -DBUILD_GAME_NACL=ON -DBUILD_GAME_NACL_NEXE=ON -DBUILD_CGAME=ON -DBUILD_SGAME=ON -DBUILD_CLIENT=OFF -DBUILD_TTY_CLIENT=OFF -DBUILD_SERVER=OFF" fi + local daemon_dir="${root_dir}/daemon" + if "${build_engine}" then engine_archive_basename="${target}" @@ -498,7 +500,7 @@ build () { fi strip="${mingw_arch_prefix}-w64-mingw32-strip" - cmake_opts="${cmake_opts} -DCMAKE_TOOLCHAIN_FILE=${root_dir}/daemon/cmake/cross-toolchain-mingw${bitness}.cmake" + cmake_opts="${cmake_opts} -DCMAKE_TOOLCHAIN_FILE=${daemon_dir}/cmake/cross-toolchain-mingw${bitness}.cmake" # unused # cmake_opts="${cmake_opts} -DPKG_CONFIG_EXECUTABLE=${mingw_arch_prefix}-w64-mingw32-pkg-config" fi @@ -578,7 +580,7 @@ build () { fi strip="${mingw_arch_prefix}-w64-mingw32-strip" - cmake_opts="${cmake_opts} -DCMAKE_TOOLCHAIN_FILE=${root_dir}/daemon/cmake/cross-toolchain-mingw${bitness}.cmake" + cmake_opts="${cmake_opts} -DCMAKE_TOOLCHAIN_FILE=${daemon_dir}/cmake/cross-toolchain-mingw${bitness}.cmake" # unused # cmake_opts="${cmake_opts} -DPKG_CONFIG_EXECUTABLE=${mingw_arch_prefix}-w64-mingw32-pkg-config" fi @@ -599,7 +601,7 @@ build () { then # configuration - cmake -H"${root_dir}" \ + cmake -H"${daemon_dir}" \ -B"${target_build_dir}" \ -G"Unix Makefiles" \ -D"CMAKE_C_FLAGS=${cmake_cflags}" \ @@ -609,11 +611,6 @@ build () { || throwError INTERNAL "${target} cmake failed" fi - if "${build_vm}" || "${build_engine}" - then - daemon_dir="$(cmake -H"${root_dir}" -B"${target_build_dir}" -LH | grep '^DAEMON_DIR:' | sed -e 's/[^=]*=//')" - fi - if "${build_vm}" then # build vm diff --git a/docker-build b/docker-build index 6ad57ea..eccf4e4 100755 --- a/docker-build +++ b/docker-build @@ -115,8 +115,9 @@ def main(): parser.add_argument("--clean", dest="clean", help="Delete previous target and universal zip builds.", action="store_true") parser.add_argument("--prune", dest="prune", help="Delete all docker images from previous target builds.", action="store_true") parser.add_argument("--reimage", dest="reimage", help="Rebuild the system docker images for the targets to build.", action="store_true") - parser.add_argument("--reference", dest="reference", metavar="REFERENCE", nargs='?', help="Git reference for targets to build.") - parser.add_argument("--targets", dest="targets", metavar="TARGETS", nargs='+', help="List of targets. Requires a reference. Available targets: {}".format(known_target_option_list)) + parser.add_argument("--reference", dest="reference", metavar="REFERENCE", nargs='?', default="default", help="Git reference for targets to build.") + parser.add_argument("--engine-reference", dest="engine_reference", metavar="ENGINE_REFERENCE", nargs='?', default="default", help="Git reference for engine targets to build.") + parser.add_argument("--targets", dest="targets", metavar="TARGETS", nargs='+', help="List of targets. Available targets: {}".format(known_target_option_list)) parser.add_argument("--unizip", dest="unizip", help="Make an universal zip out of built targets.", action="store_true") parser.add_argument("--chown", dest="chown", help="Change ownership of produced files, this option should never be needed as other tasks are expected to do it.", action="store_true") parser.add_argument("--docker", dest="docker", metavar="PATH", default="docker", help="Path to the docker binary. Default: %(default)s.") @@ -125,9 +126,6 @@ def main(): docker = Docker(args.docker) - if args.targets and not args.reference: - error("Building a target requires a reference.") - target_list = [] if args.targets: @@ -150,7 +148,8 @@ def main(): print("Clean: {}".format(str(args.clean))) print("Prune: {}".format(str(args.prune))) print("Reimage: {}".format(str(args.reimage))) - print("Reference: {}".format(str(args.reference))) + print("reference: {}".format(str(args.reference))) + print("Engine reference: {}".format(str(args.engine_reference))) print("Targets: {}".format(target_list_string)) print("Unizip: {}".format(str(args.unizip))) print("Chown: {}".format(str(args.chown))) @@ -174,6 +173,7 @@ def main(): if target_list: reference_arg="--build-arg=reference={}".format(args.reference) + engine_reference_arg = "--build-arg=engine_reference={}".format(args.engine_reference) if args.reimage: docker.run("rmi", ["unvanquished-common-system"], stderr=subprocess.DEVNULL) @@ -186,7 +186,7 @@ def main(): docker.run("build", ["unvanquished-common-system", targets_arg]) # Clone source repositories and build external dependencies. - docker.run("build", ["unvanquished-common-source", targets_arg, reference_arg]) + docker.run("build", ["unvanquished-common-source", targets_arg, reference_arg, engine_reference_arg]) # Build the targets. docker.run("mrun", ["--rm", targets_env, @@ -243,7 +243,7 @@ def main(): docker.run("commit", [container_id, "unvanquished-darling-darling"]) # Clone source repositories. - docker.run("build", ["unvanquished-darling-source", reference_arg]) + docker.run("build", ["unvanquished-darling-source", reference_arg, engine_reference_arg]) # Build the targets. docker.run("mrun", ["--privileged", "--rm", targets_env, diff --git a/docker/clone-repositories b/docker/clone-repositories index 662d102..b6f5015 100755 --- a/docker/clone-repositories +++ b/docker/clone-repositories @@ -26,15 +26,22 @@ source "$(dirname "${BASH_SOURCE[0]}")/common.sh" -# Assume the desired revision of Unvanquished is near the tip -# of some branch (last 20 commits) -_exec git clone --depth 20 --no-single-branch \ - 'https://github.com/Unvanquished/Unvanquished.git' '/Unvanquished' +_exec git clone 'https://github.com/Unvanquished/Unvanquished.git' '/Unvanquished' cd '/Unvanquished' -_exec git checkout "${reference}" +if [ "${reference:-default}" != 'default' ] +then + _exec git checkout "${reference}" +fi -_exec git submodule update --init --depth 1 --recursive +_exec git submodule update --init --recursive + +if [ "${engine_reference:-default}" != 'default' ] +then + _exec git -C daemon checkout "${engine_reference}" + + _exec git -C daemon submodule update --init --recursive +fi _exec mkdir -p '/Unvanquished/build/release' diff --git a/docker/unvanquished-common-source.Dockerfile b/docker/unvanquished-common-source.Dockerfile index 2013a72..df22a0d 100644 --- a/docker/unvanquished-common-source.Dockerfile +++ b/docker/unvanquished-common-source.Dockerfile @@ -4,7 +4,8 @@ ARG targets RUN test -n "${targets}" ARG reference -RUN test -n "${reference}" + +ARG engine_reference RUN /docker/clone-repositories diff --git a/docker/unvanquished-darling-source.Dockerfile b/docker/unvanquished-darling-source.Dockerfile index c3f561e..df4003c 100644 --- a/docker/unvanquished-darling-source.Dockerfile +++ b/docker/unvanquished-darling-source.Dockerfile @@ -1,6 +1,7 @@ FROM unvanquished-darling-darling ARG reference -RUN test -n "${reference}" + +ARG engine_reference RUN /docker/clone-repositories