From 980bc5de9efd3f114389edcc36712b16ad7e1f61 Mon Sep 17 00:00:00 2001 From: Lyno Ferraz Date: Thu, 20 Jul 2023 18:31:25 -0300 Subject: [PATCH] feat: Add option to new build system for custom python dapps --- custom-dapps/.gitignore | 1 + custom-dapps/create-dapp.sh | 20 ++++++++++++++----- .../docker-riscv.Dockerfile | 19 ++++++++++++++++++ .../template-dockerfile/std-rootfs.Dockerfile | 5 +++++ 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 custom-dapps/template-dockerfile/docker-riscv.Dockerfile create mode 100644 custom-dapps/template-dockerfile/std-rootfs.Dockerfile diff --git a/custom-dapps/.gitignore b/custom-dapps/.gitignore index 616022a6..d0d885df 100644 --- a/custom-dapps/.gitignore +++ b/custom-dapps/.gitignore @@ -1,5 +1,6 @@ /* !.gitignore !template +!template-dockerfile !create-dapp.sh !README.md diff --git a/custom-dapps/create-dapp.sh b/custom-dapps/create-dapp.sh index abb9d796..f36ed3b7 100755 --- a/custom-dapps/create-dapp.sh +++ b/custom-dapps/create-dapp.sh @@ -11,22 +11,31 @@ # CONDITIONS OF ANY KIND, either express or implied. See the License for the # specific language governing permissions and limitations under the License. -if [ $# -ne 1 ] +if [ $# -eq 0 ] then echo "No DAPP_NAME supplied" - echo "Usage: $0 DAPP_NAME" + echo "Usage: $0 DAPP_NAME [BUILD_SYSTEM]" exit 1 fi dapp_name=${1} +build_system=${2:-std-rootfs} + +if [[ ! "$build_system" =~ ^(std-rootfs|docker-riscv)$ ]]; then + echo "BUILD_SYSTEM should either be std-rootfs or docker-riscv" + echo "Usage: $0 DAPP_NAME [BUILD_SYSTEM]" + exit 1 +fi + echo "Creating DApp ${dapp_name}..." echo "Copying files from template..." cp -pr template ${dapp_name} +cp template-dockerfile/${build_system}.Dockerfile ${dapp_name}/Dockerfile echo "Copying common files..." -cp -pr ../build/std-rootfs ${dapp_name} -mv ${dapp_name}/std-rootfs/base.hcl ${dapp_name}/docker-bake.hcl +cp -pr ../build/${build_system} ${dapp_name} +mv ${dapp_name}/${build_system}/base.hcl ${dapp_name}/docker-bake.hcl cp ../deploy-testnet.yml ${dapp_name} cp ../docker-compose.yml ${dapp_name} cp ../docker-compose-testnet.yml ${dapp_name} @@ -37,7 +46,7 @@ echo "Customizing DApp infrastructure..." for i in \ ${dapp_name}/docker-bake.hcl do - sed -i'' -e "s/\.\.\/build\/std-rootfs/\.\/std-rootfs/g" $i + sed -i'' -e "s/\.\.\/build\/${build_system}/\.\/${build_system}/g" $i done # replace template placeholders by dapp name @@ -46,6 +55,7 @@ for i in \ ${dapp_name}/docker-bake.override.hcl \ ${dapp_name}/docker-compose.override.yml \ ${dapp_name}/entrypoint.sh \ + ${dapp_name}/Dockerfile \ ${dapp_name}/README.md do sed -i'' -e "s/template/${dapp_name}/g" $i diff --git a/custom-dapps/template-dockerfile/docker-riscv.Dockerfile b/custom-dapps/template-dockerfile/docker-riscv.Dockerfile new file mode 100644 index 00000000..65c9dc58 --- /dev/null +++ b/custom-dapps/template-dockerfile/docker-riscv.Dockerfile @@ -0,0 +1,19 @@ +# syntax=docker.io/docker/dockerfile:1.4 +FROM --platform=linux/riscv64 cartesi/python:3.10-slim-jammy + +# install required libs and remove cache +# RUN apt-get update \ +# && apt-get install -y --no-install-recommends \ +# \ +# && rm -rf /var/lib/apt/lists/* \ +# && find /var/log \( -name '*.log' -o -name '*.log.*' \) -exec truncate -s 0 {} \; \ +# && truncate -s 0 /var/cache/ldconfig/aux-cache + +WORKDIR /opt/cartesi/dapp + +COPY ./requirements.txt . +RUN pip install -r requirements.txt --no-cache \ + && find /usr/local/lib -type d -name __pycache__ -exec rm -r {} + + +COPY ./entrypoint.sh . +COPY ./template.py . diff --git a/custom-dapps/template-dockerfile/std-rootfs.Dockerfile b/custom-dapps/template-dockerfile/std-rootfs.Dockerfile new file mode 100644 index 00000000..eac7e124 --- /dev/null +++ b/custom-dapps/template-dockerfile/std-rootfs.Dockerfile @@ -0,0 +1,5 @@ +# syntax=docker.io/docker/dockerfile:1.4 +FROM cartesi/toolchain:0.14.0 + +WORKDIR /opt/cartesi/dapp +COPY . .