Skip to content

docker: make possible to only build the engine without committing it to Unvanquished #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions build-release
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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}" \
Expand All @@ -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
Expand Down
16 changes: 8 additions & 8 deletions docker-build
Original file line number Diff line number Diff line change
Expand Up @@ -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.")
Expand All @@ -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:
Expand All @@ -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)))
Expand All @@ -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)
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
19 changes: 13 additions & 6 deletions docker/clone-repositories
Original file line number Diff line number Diff line change
Expand Up @@ -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'
3 changes: 2 additions & 1 deletion docker/unvanquished-common-source.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ ARG targets
RUN test -n "${targets}"

ARG reference
RUN test -n "${reference}"

ARG engine_reference

RUN /docker/clone-repositories

Expand Down
3 changes: 2 additions & 1 deletion docker/unvanquished-darling-source.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
FROM unvanquished-darling-darling

ARG reference
RUN test -n "${reference}"

ARG engine_reference

RUN /docker/clone-repositories