diff --git a/docker/lmk.devuan-chimaera.rc b/docker/lmk.devuan-chimaera.rc index 8c876a0..9a50ecb 100644 --- a/docker/lmk.devuan-chimaera.rc +++ b/docker/lmk.devuan-chimaera.rc @@ -1,12 +1,13 @@ container_name="finetest-devuan-chimaera-lmk" -library_image="linux-minetest-kit/libraries-devuan-chimaera" -docker_finetest_server_image_name="linux-minetest-kit/server-finetest-devuan-chimaera" -# ^ This must match the one used in the "FROM" statement in server-finetest-devuan-chimaera/Dockerfile +libraries_image="linux-minetest-kit/libraries-devuan-chimaera" +server_image_dir="server-finetest-devuan-chimaera" +server_image="linux-minetest-kit/server-finetest-devuan-chimaera" +# ^ formerly server_finetest_image +# ^ This must match the one used in the "FROM" statement in $server_image_dir/Dockerfile # client_classic_image=linux-minetest-kit/client-classic -server_finetest_image="linux-minetest-kit/server-finetest-devuan-chimaera" # client_classic_container="minetest-client-classic" -server_container="minetestserver-finetest" -docker_libraries_image_dir="libraries-devuan-chimaera" -docker_finetest_server_image_dir="server-finetest-devuan-chimaera" -container_build_blob=$docker_libraries_image_dir/linux-minetest-kit.zip +# server_container="minetestserver-finetest" +# ^ deprecated since: Only container_name is necessary since there is no container based on libraries_image--a libraries container is not necessary since Dockerfile builds the libraries now. +libraries_image_dir="libraries-devuan-chimaera" +libraries_image_build_blob=$libraries_image_dir/linux-minetest-kit.zip prerelease_path=~/Downloads/minetest.org/insider-prerelease/linux-minetest-kit-220509.zip diff --git a/docker/lmk.devuan-chimaera.sh b/docker/lmk.devuan-chimaera.sh index 272afa6..9b17824 100755 --- a/docker/lmk.devuan-chimaera.sh +++ b/docker/lmk.devuan-chimaera.sh @@ -20,23 +20,28 @@ END fi # container_name="linux-minetest-kit-build-libraries-devuan-chimaera" # ^ This is no longer necessary since the IMAGE does the building (build was moved to Dockerfile) -source lmk.devuan-chimaera.rc +this_rc="lmk.devuan-chimaera.rc" +if [ ! -f "$this_rc" ]; then + echo "Error: $0 must run in the directory containing $this_rc." + exit 1 +fi +source $this_rc if [ $? -ne 0 ]; then exit 1; fi -if [ ! -d "$docker_libraries_image_dir" ]; then - echo "* $0 must run from the directory containing the container image directory: $docker_libraries_image_dir" +if [ ! -d "$libraries_image_dir" ]; then + echo "Error: $0 must run from the directory containing the container image directory: $libraries_image_dir" exit 1 fi -# ^ docker_libraries_image_dir has to be in the same directory as Dockerfile or +# ^ libraries_image_dir has to be in the same directory as Dockerfile or # the COPY command in the Dockerfile won't work. -source $docker_libraries_image_dir/lmk.rc +source $libraries_image_dir/lmk.rc if [ $? -ne 0 ]; then exit 1 fi if [ "@$DL_SRC_PATH" = "@" ]; then # DL_SRC_PATH="$HOME/Downloads/$DL_SRC_NAME" - DL_SRC_PATH="$docker_libraries_image_dir" + DL_SRC_PATH="$libraries_image_dir" # ^ $DL_SRC_PATH has to be in the same directory as Dockerfile or # the COPY command in the Dockerfile won't work. # The file should be added to .gitignore for the reason that it @@ -44,54 +49,55 @@ if [ "@$DL_SRC_PATH" = "@" ]; then fi -# sudo docker image inspect $library_image > /dev/null -sudo docker image inspect $library_image --format "* docker is looking for the image..." +# sudo docker image inspect $libraries_image > /dev/null +sudo docker image inspect $libraries_image --format "* docker is looking for the image..." # ^ appending ":latest" to the name also works. # ^ Get matching images as a JSON list (where each has "Id" and other # metadata). if [ $? -ne 0 ]; then - if [ ! -d "$docker_libraries_image_dir" ]; then - echo "Error: \"$docker_libraries_image_dir\" (docker_libraries_image_dir for storing $SRC_URL) doesn't exist in \"`pwd`\"." + if [ ! -d "$libraries_image_dir" ]; then + echo "Error: \"$libraries_image_dir\" (libraries_image_dir for storing $SRC_URL) doesn't exist in \"`pwd`\"." exit 1 fi - echo "* building image $library_image..." - if [ ! -f "$container_build_blob" ]; then + echo "* building image $libraries_image..." + if [ ! -f "$libraries_image_build_blob" ]; then echo "* downloading $SRC_URL to $DL_SRC_PATH..." curl "$SRC_URL" --progress-bar --output "$DL_SRC_PATH" if [ $? -ne 0 ]; then exit 1 fi - if [ ! -f "$container_build_blob" ]; then - echo "Error: This script requires \"$container_build_blob\"." + if [ ! -f "$libraries_image_build_blob" ]; then + echo "Error: This script requires \"$libraries_image_build_blob\"." exit 1 fi else - echo "* using existing \"$container_build_blob\" to build the container image" + echo "* using existing \"$libraries_image_build_blob\" to build the container image" fi - cp ../install-minetest-build-deps.sh $docker_libraries_image_dir/ + cp ../install-minetest-build-deps.sh $libraries_image_dir/ # ^ This copy of it is in .gitignore. if [ $? -ne 0 ]; then - echo "Error: 'cp ../install-minetest-build-deps.sh $docker_libraries_image_dir/' failed." + echo "Error: 'cp ../install-minetest-build-deps.sh $libraries_image_dir/' failed." exit 1 fi move_back="false" - if [ ! -f $container_build_blob ]; then + if [ ! -f $libraries_image_build_blob ]; then if [ -f "$prerelease_path" ]; then move_back="true" - echo "mv $prerelease_path $container_build_blob" - mv $prerelease_path $container_build_blob + echo "mv $prerelease_path $libraries_image_build_blob" + mv $prerelease_path $libraries_image_build_blob if [ $? -ne 0 ]; then echo "* Error: the mv command failed." exit 1 fi fi fi - sudo docker build -t $library_image $docker_libraries_image_dir + sudo docker build -t $libraries_image $libraries_image_dir + # -t: Name and optionally a tag in the 'name:tag' format code=$? if [ "@move_back" = "@true" ]; then - echo "mv \"$prerelease_path\" \"$container_build_blob\"" - mv "$container_build_blob" "$prerelease_path" + echo "mv \"$prerelease_path\" \"$libraries_image_build_blob\"" + mv "$libraries_image_build_blob" "$prerelease_path" if [ $? -ne 0 ]; then echo "* Warning: the mv command failed." fi @@ -100,17 +106,17 @@ if [ $? -ne 0 ]; then exit 1 fi else - echo "* The container will be built using the existing docker image $library_image" + echo "* The container will be built using the existing docker image $libraries_image" fi -# sudo docker container run -d --name $library_image unzip xvf $contained_arc -C $contained_repos +# sudo docker container run -d --name $libraries_image unzip xvf $contained_arc -C $contained_repos container_Id=`sudo docker ps -aqf "name=$container_name"` -# ^ ONLY works with container_name not library_image +# ^ ONLY works with container_name not libraries_image cat > /dev/null <. # Therefore: -# echo "* Creating image \"$server_finetest_image\"..." -# sudo docker commit $container_Id $server_finetest_image +# echo "* Creating image \"$server_image\"..." +# sudo docker commit $container_Id $server_image # if [ $? -ne 0 ]; then -# echo "FAILED (sudo docker commit $container_Id $server_finetest_image)" +# echo "FAILED (sudo docker commit $container_Id $server_image)" # fi # echo "* Running $server_bin_path in container \"$server_container\"" -# sudo docker container run --name $server_container $server_finetest_image $server_bin_path +# sudo docker container run --name $server_container $server_image $server_bin_path # if [ $? -ne 0 ]; then -# echo "FAILED (sudo docker container run --name $server_container $server_finetest_image $server_bin_path)" +# echo "FAILED (sudo docker container run --name $server_container $server_image $server_bin_path)" # fi # ^ Build the server as a separate step instead (see further up) @@ -224,7 +235,7 @@ How to use the image: sudo docker image ls # ^ See what images are installed (one image can be used for many containers). - sudo docker rmi $library_image + sudo docker rmi $libraries_image # ^ Remove a docker image (This is necessary after updating the unversioned Docker image to avoid cached RUN commands from doing nothing when the script after RUN changes). sudo docker image prune --force @@ -254,12 +265,12 @@ How to use the image: # ^ Stop a container by name (See ) # You must use the container name (as determined using the "ps" subcommand), not the image name. - sudo docker container run -it $library_image /bin/bash + sudo docker container run -it $libraries_image /bin/bash # ^ Run an interactive terminal (Type 'exit' to exit) # (based on ) - sudo docker commit $container_Id $server_finetest_image - sudo docker container run --name tmp_test_im -it $server_finetest_image /bin/bash + sudo docker commit $container_Id $server_image + sudo docker container run --name tmp_test_im -it $server_image /bin/bash # ^ Transform the container into an image and inspect the internals manually # (based on ). # Then: sudo docker rm --force tmp_test_im diff --git a/docker/server-finetest-devuan-chimaera/Dockerfile b/docker/server-finetest-devuan-chimaera/Dockerfile index cbb9eb1..4f6724b 100644 --- a/docker/server-finetest-devuan-chimaera/Dockerfile +++ b/docker/server-finetest-devuan-chimaera/Dockerfile @@ -1,6 +1,6 @@ FROM linux-minetest-kit/libraries-devuan-chimaera -COPY build-and-check.sh /opt/ +COPY build-and-check.sh /opt WORKDIR /opt/linux-minetest-kit -RUN ./mtcompile-program.pl --build --finetest --server +# RUN ./mtcompile-program.pl --build --finetest --server # ^ Always returns 1, so: -# RUN build-and-check.sh +RUN /opt/build-and-check.sh diff --git a/docker/server-finetest-devuan-chimaera/build-and-check.sh b/docker/server-finetest-devuan-chimaera/build-and-check.sh index 2b0cb92..25b0ac3 100755 --- a/docker/server-finetest-devuan-chimaera/build-and-check.sh +++ b/docker/server-finetest-devuan-chimaera/build-and-check.sh @@ -1,11 +1,17 @@ #!/bin/bash -./mtcompile-program.pl --build --finetest --server -echo "Returned $1" -good_flag_file=minetest/bin/multicraftserver +./mtcompile-program.pl build --finetest --server +echo "Done './mtcompile-program.pl build --finetest --server' (returned $?)" +good_flag_file_name=multicraftserver +good_flag_file=minetest/bin/$good_flag_file_name if [ -f "$good_flag_file" ]; then - echo "* forcing OK return since found \"$good_flag_file\"" + echo "* forcing OK return since found \"$good_flag_file\" in `pwd`" exit 0 else - echo "* forcing OK return since \"$good_flag_file\" doesn't exist" + echo "* forcing FAILED return since \"$good_flag_file\" doesn't exist in `pwd`" + echo "* searching..." + find /opt -name "minetest*" | grep -v "minetest\.mo" | grep -v "minetest\.po" + find /opt -name "multicraft*" + echo "* searching for $good_flag_file_name..." + find /opt -name $good_flag_file_name exit 1 fi