Browse Source

Reflect the new naming. Separate the server image from the library image further.

master
poikilos 2 years ago
parent
commit
84e7b09fc1
  1. 103
      buildenliven.py
  2. 2
      docker/lmk-libraries.devuan-chimera/Dockerfile
  3. 6
      docker/lmk-libraries.devuan-chimera/build-lmk.sh
  4. 9
      docker/lmk-libraries.devuan-chimera/lmk.rc
  5. 12
      docker/lmk.devuan-chimaera.sh
  6. 3
      docker/server-finetest-devuan-chimera/Dockerfile

103
buildenliven.py

@ -1,44 +1,18 @@
#!/usr/bin/env python #!/usr/bin/env python
''' '''
This script is a remake of the ENLIVEN build script in Python using This script is a remake of the ENLIVEN build script in Python using
Bucket_Game as the basis. bucket_game as the basis.
''' '''
from __future__ import print_function from __future__ import print_function
import sys import sys
import platform
import os import os
import configparser
profile = None from pyenliven import (
if platform.system() == "Windows": error,
profile = os.environ.get('USERPROFILE') getSGPath,
else: profile,
profile = os.environ.get('HOME') )
# see <https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python>
def error(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
try:
import mtanalyze
except ModuleNotFoundError as ex:
# tryMTA = os.path.join(profile, "git", "mtanalyze")
tryMTA = os.path.abspath(os.path.join("..", "mtanalyze"))
if os.path.isdir(tryMTA):
sys.path.append(tryMTA)
import mtanalyze
else:
error("")
error("You must install mtanalyze alongside")
error("EnlivenMinetest such that ../mtanalize/mtanalize exists")
error("such as via:")
error(" git clone https://github.com/poikilos/mtanalyze {}"
"".format(tryMTA))
error("")
# raise tryMTA
exit(1)
# from mtanalyze import profile_path
gamespec = {} gamespec = {}
gamespec['remove_mods'] = [ gamespec['remove_mods'] = [
@ -48,32 +22,25 @@ gamespec['remove_mods'] = [
"more_chests", # See https://github.com/poikilos/EnlivenMinetest/issues/446 "more_chests", # See https://github.com/poikilos/EnlivenMinetest/issues/446
"emeralds", # See https://github.com/poikilos/EnlivenMinetest/issues/497 "emeralds", # See https://github.com/poikilos/EnlivenMinetest/issues/497
"give_initial_stuff", # or make it configurable (It only uses a give_initial_stuff boolean, no configurable item list) "give_initial_stuff", # or make it configurable (It only uses a give_initial_stuff boolean, no configurable item list)
# TODO: more are at https://github.com/poikilos/EnlivenMinetest/issues/310
] ]
myDir = os.path.dirname(os.path.abspath(__file__))
mods_stopgap = os.path.join(myDir, "patches", "mods-stopgap")
if not os.path.isdir(mods_stopgap):
error("Error: \"{}\" is missing.".format(mods_stopgap))
exit(1)
gamespec['local_mods_paths'] = []
gamespec['local_mods_paths'].append(mods_stopgap)
# NOTE: get a git repo's origin via: git remote show origin
def getSGPath(stopgap_mod_name): gamespec['local_mods_paths'] = []
return os.path.join(mods_stopgap, stopgap_mod_name) gamespec['local_mods_paths'].append("mods_stopgap")
gamespec['add_mods'] = [ gamespec['add_mods'] = [
# {'repo':"https://github.com/poikilos/homedecor_ua"}, # {'repo':"https://github.com/poikilos/homedecor_ua"},
{'src_path': getSGPath("animal_materials_legacy")}, {'name': "animal_materials_legacy"},
{'repo':"https://github.com/minetest-mods/ccompass.git"}, {'repo':"https://github.com/minetest-mods/ccompass.git"},
{'repo':"https://github.com/octacian/chat3.git"}, {'repo':"https://github.com/octacian/chat3.git"},
{'repo':"https://github.com/poikilos/compassgps.git"}, {'repo':"https://github.com/poikilos/compassgps.git"},
{'src_path': getSGPath("elk_legacy")}, {'name': "elk_legacy"},
{'repo':"https://github.com/MinetestForFun/fishing.git"}, {'repo':"https://github.com/MinetestForFun/fishing.git"},
{'src_path': getSGPath("glooptest_missing")}, {'name': "glooptest_missing"},
{'repo':"https://github.com/minetest-mods/item_drop.git"}, {'repo':"https://github.com/minetest-mods/item_drop.git"},
{'repo':"https://github.com/poikilos/metatools.git"}, {'repo':"https://github.com/poikilos/metatools.git"},
{'src_path': getSGPath("nftools_legacy")}, {'name': "nftools_legacy"},
{'src_path': getSGPath("glooptest_missing")}, {'name': "glooptest_missing"},
{'repo':"https://github.com/poikilos/slimenodes.git"}, {'repo':"https://github.com/poikilos/slimenodes.git"},
{'repo':"https://github.com/BenjieFiftysix/sponge.git"}, {'repo':"https://github.com/BenjieFiftysix/sponge.git"},
{'repo':"https://github.com/poikilos/throwing.git"}, # Can utilize toolranks, toolranks_extras, wielded_light {'repo':"https://github.com/poikilos/throwing.git"}, # Can utilize toolranks, toolranks_extras, wielded_light
@ -188,16 +155,52 @@ gamespec['disable_mobs'] = [
"old_lady", "old_lady",
] ]
warnings = ''' """
warning = '''
WARNINGS: WARNINGS:
(Bucket_Game 200527) (Bucket_Game 200527)
- The "rope" required for making a fishing rod has no recipe! - The "rope" required for making a fishing rod has no recipe!
See <https://github.com/poikilos/EnlivenMinetest/issues/444> See <https://github.com/poikilos/EnlivenMinetest/issues/444>
''' '''
"""
warnings = []
valid_bases = ['Bucket_Game', "bucket_ game"]
def main(): def main():
print(warnings) for warning in warnings:
error(warning)
tryGameDir = os.getcwd()
error('* examining "{}"'.format(tryGameDir))
gameConfName = "game.conf"
gameConfPath = os.path.join(tryGameDir, gameConfName)
if not os.path.isfile(gameConfPath):
raise ValueError(
'You must run this command from bucket_game, but there is'
' no "{}" in "{}"'
''.format(gameConfName, tryGameDir)
)
config = configparser.ConfigParser()
with open(gameConfPath, 'r') as ins:
config.read_string('[top]\n' + ins.read())
# ^ insert a section since ConfigParser requires sections.
gameName = config['top'].get("name")
error(' * detected {} from {}'
''.format(gameName, gameConfName))
if gameName not in valid_bases:
raise ValueError(
'{} does not appear to be compatible with the enliven build'
' script. You must run this in a directory with one of the'
' following name'
' strings in {}: {}'
''.format(tryGameDir, gameConfName, valid_bases)
)
targetMT = os.path.join(profile, "minetest")
# ^ TODO: Get this from mtanalyze?
targetGames = os.path.join(targetMT, "games")
target = os.path.join(targetGames, "ENLIVEN")
centerOfTheSunTarget =
raise NotImplementedError("pyenliven build") raise NotImplementedError("pyenliven build")
if __name__ == "__main__": if __name__ == "__main__":

2
docker/lmk-libraries.devuan-chimera/Dockerfile

@ -2,7 +2,7 @@ FROM dyne/devuan:chimaera
# An absolute path for COPY doesn't work ('/' is removed from the beginning). # An absolute path for COPY doesn't work ('/' is removed from the beginning).
COPY linux-minetest-kit.zip /opt COPY linux-minetest-kit.zip /opt
COPY lmk.rc /opt COPY lmk.rc /opt
COPY build-lmk.sh /opt # COPY build-lmk.sh /opt
COPY install-minetest-build-deps.sh /opt COPY install-minetest-build-deps.sh /opt
RUN apt-get update RUN apt-get update
RUN apt-get install -y unzip RUN apt-get install -y unzip

6
docker/lmk-libraries.devuan-chimera/build-lmk.sh

@ -43,11 +43,11 @@ if [ $? -ne 0 ]; then exit 1; fi
# $repo_build_libs_cmd # $repo_build_libs_cmd
# if [ $? -ne 0 ]; then exit 1; fi # if [ $? -ne 0 ]; then exit 1; fi
echo echo
echo "* building program using $repo_build_cmd..." echo "* building program using $build_finetest_server_cmd..."
$repo_build_cmd $build_finetest_server_cmd
code=$? code=$?
if [ $code -ne 0 ]; then if [ $code -ne 0 ]; then
echo "$repo_build_cmd FAILED (code $code)" echo "$build_finetest_server_cmd FAILED (code $code)"
exit $code exit $code
else else
echo "SUCCESS" echo "SUCCESS"

9
docker/lmk-libraries.devuan-chimera/lmk.rc

@ -2,7 +2,7 @@
contained_repos=/opt contained_repos=/opt
docker_image_build_script_name="lmk.devuan-chimaera.sh" docker_image_build_script_name="lmk.devuan-chimaera.sh"
contained_arc="$contained_repos/linux-minetest-kit.zip" contained_arc="$contained_repos/linux-minetest-kit.zip"
# ^ This must always be in sync with "COPY linux-minetest-kit.zip /opt" in Dockerfile # ^ This must match the name in "COPY linux-minetest-kit.zip /opt" in Dockerfile
contained_repo=$contained_repos/linux-minetest-kit contained_repo=$contained_repos/linux-minetest-kit
contained_user=minebest contained_user=minebest
# ^ must match the useradd command in Dockerfile # ^ must match the useradd command in Dockerfile
@ -20,9 +20,10 @@ good_repo_flag_name="mtcompile-program.pl"
repo_build_assumptions_cmd="/opt/install-minetest-build-deps.sh" repo_build_assumptions_cmd="/opt/install-minetest-build-deps.sh"
# repo_build_libs_cmd="bash -e ./mtcompile-libraries.sh build" # repo_build_libs_cmd="bash -e ./mtcompile-libraries.sh build"
# ^ moved to the Dockerfile for the libraries image # ^ moved to the Dockerfile for the libraries image
# repo_build_cmd="./mtcompile-program.pl --build --classic --client" # build_finetest_server_cmd="./mtcompile-program.pl --build --classic --client"
repo_build_cmd="./mtcompile-program.pl --build --finetest --server" # build_finetest_server_cmd="./mtcompile-program.pl --build --finetest --server"
# ^ moved to server-finetest-devuan-chimera/Dockerfile
contained_good_repo_flag_path="$contained_repo/$good_repo_flag_name" contained_good_repo_flag_path="$contained_repo/$good_repo_flag_name"
run_all_build_commands_script=/opt/build-lmk.sh # run_all_build_commands_script=/opt/build-lmk.sh
echo "lmk.rc finished loading." echo "lmk.rc finished loading."

12
docker/lmk.devuan-chimaera.sh

@ -20,15 +20,16 @@ or Docker's own documentation at
<https://docs.docker.com/engine/install/>. <https://docs.docker.com/engine/install/>.
END END
fi fi
container_name="lmk-devuan-chimaera" container_name="linux-minetest-kit-build-libraries-devuan-chimaera"
image_name="lmk-devuan-chimaera-img" image_name="linux-minetest-kit/libraries-devuan-chimaera"
# ^ This must match the one used in the "FROM" statement in server-finetest-devuan-chimera/Dockerfile
# client_classic_image=linux-minetest-kit/client-classic # client_classic_image=linux-minetest-kit/client-classic
server_finetest_image=linux-minetest-kit/server-finetest server_finetest_image="linux-minetest-kit/server-finetest-devuan-chimera"
# client_classic_container="minetest-client-classic" # client_classic_container="minetest-client-classic"
server_container="minetestserver-finetest" server_container="minetestserver-finetest"
docker_image_dir="lmk.devuan-chimaera" docker_image_dir="lmk-libraries.devuan-chimaera"
if [ ! -d "$docker_image_dir" ]; then if [ ! -d "$docker_image_dir" ]; then
echo "* $me must run from the directory containing the container image directory: $docker_image_dir" echo "* $0 must run from the directory containing the container image directory: $docker_image_dir"
exit 1 exit 1
fi fi
container_build_blob=$docker_image_dir/linux-minetest-kit.zip container_build_blob=$docker_image_dir/linux-minetest-kit.zip
@ -39,7 +40,6 @@ source $docker_image_dir/lmk.rc
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
exit 1 exit 1
fi fi
me=lmk.devuan-chimaera.sh
if [ "@$DL_SRC_PATH" = "@" ]; then if [ "@$DL_SRC_PATH" = "@" ]; then
# DL_SRC_PATH="$HOME/Downloads/$DL_SRC_NAME" # DL_SRC_PATH="$HOME/Downloads/$DL_SRC_NAME"

3
docker/server-finetest-devuan-chimera/Dockerfile

@ -0,0 +1,3 @@
FROM linux-minetest-kit/libraries-devuan-chimaera
WORKDIR /opt/linux-minetest-kit
RUN ./mtcompile-program.pl --build --finetest --server
Loading…
Cancel
Save