From b6afc62fa16ed590f8f115f78c189d4090277f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=CC=81=20Moreira?= Date: Sat, 8 Sep 2018 17:59:18 +0100 Subject: [PATCH] prepare other targets --- base-image/Dockerfile | 2 +- base-image/entrypoint.sh | 2 +- builder.sh | 42 +++++++++++++++++++++----------- image-builder/Dockerfile | 5 ++++ package-builder/Dockerfile | 3 +++ targets/18.0.1/brcm2708-brcm2710 | 8 ++++-- 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/base-image/Dockerfile b/base-image/Dockerfile index 02bb3ea..63d174d 100644 --- a/base-image/Dockerfile +++ b/base-image/Dockerfile @@ -15,7 +15,7 @@ RUN echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/so && apt-get autoremove \ && rm -rf /var/lib/apt/lists/* -ADD etc/entrypoint.sh /entrypoint +ADD entrypoint.sh /entrypoint RUN chmod 755 /entrypoint RUN mkdir -p /src /output diff --git a/base-image/entrypoint.sh b/base-image/entrypoint.sh index db18de4..296a2dc 100644 --- a/base-image/entrypoint.sh +++ b/base-image/entrypoint.sh @@ -1,6 +1,6 @@ #!/bin/sh -chown -R $GOSU_USER /lede +chown -R $GOSU_USER /src # If GOSU_USER environment variable set to something other than 0:0 (root:root), # become user:group set within and exec command passed in args diff --git a/builder.sh b/builder.sh index 1dd4d56..cc3367f 100755 --- a/builder.sh +++ b/builder.sh @@ -7,6 +7,7 @@ DOCKER_IMAGE=${DOCKER_IMAGE:-$DOCKER_USERNAME/openwrt-builder} DOCKER="${DOCKER:-docker}" +FORCE=${FORCE:-0} CLOSE_EXEC="/dev/null" # CLOSE_EXEC=">/dev/null 2>&1" if [ ! -z DEBUG ]; then @@ -28,12 +29,15 @@ if [ "$DOCKER_USE_SUDO" != "0" ]; then fi function docker_tag_exists() { - curl --silent -f -lSL https://index.docker.io/v1/repositories/$1/tags/$2 &>$CLOSE_EXEC; + [ "$FORCE" != "0" ] && return 1; + curl --silent -f -lSL https://index.docker.io/v1/repositories/$1/tags/$2; } -function generate_dockerfile_based_on() { - echo "FROM $1:base" - cat $2 +function generate_dockerfile_from() { + echo "FROM $1" + + # Print the Dockerfile, but without the FROM header + cat $2 | grep -v ^FROM } # MAIN - this is where it starts @@ -41,44 +45,54 @@ function generate_dockerfile_based_on() { echo "BASE - Building/Fetching base image" # Lets pull up the base image -$DOCKER pull "$DOCKER_IMAGE:base" &>$CLOSE_EXEC; +$DOCKER pull "${DOCKER_IMAGE}:base"; # Now that we have it in cache, lets build the base image to ensure # that it has the same output -$DOCKER build -t "$DOCKER_IMAGE:base" ./base-image &>$CLOSE_EXEC; +$DOCKER build -t "${DOCKER_IMAGE}:base" ./base-image; # Push the docker base in case it gets changed -$DOCKER push "$DOCKER_IMAGE:base" &>$CLOSE_EXEC; +$DOCKER push "${DOCKER_IMAGE}:base"; # Now it's time to do the same for VERSION in $(ls targets/); do for TARGET in $(ls targets/${VERSION}/); do echo "${VERSION} ${TARGET} - Loading up target configs" - eval "$(cat targets/${VERSION}/${TARGET})" + source targets/${VERSION}/${TARGET} DOCKER_PACKAGE_BUILDER_TAG="package-builder_${VERSION}_${TARGET}" DOCKER_IMAGE_BUILDER_TAG="image-builder_${VERSION}_${TARGET}" # Handle Package builder - if docker_tag_exists "$DOCKER_IMAGE" "$DOCKER_PACKAGE_BUILDER_TAG"; then + if docker_tag_exists "${DOCKER_IMAGE}" "${DOCKER_PACKAGE_BUILDER_TAG}"; then echo "${VERSION} ${TARGET} - Package Builder already exists" else echo "${VERSION} ${TARGET} - Building Package Builder ..." - generate_dockerfile_based_on $DOCKER_IMAGE ./package-builder/Dockerfile | $DOCKER build -f - -t "$DOCKER_IMAGE:$DOCKER_PACKAGE_BUILDER_TAG" ./package-builder &>$CLOSE_EXEC; + generate_dockerfile_from "${DOCKER_IMAGE}:base" ./package-builder/Dockerfile | \ + $DOCKER build \ + -f - \ + --build-arg INSTALL_SRC="$INSTALL_PACKAGE_BUILDER" \ + -t "${DOCKER_IMAGE}:${DOCKER_PACKAGE_BUILDER_TAG}" \ + ./package-builder; echo "${VERSION} ${TARGET} - Pushing Package Builder ..." - $DOCKER push "$DOCKER_IMAGE:$DOCKER_PACKAGE_BUILDER_TAG" &>$CLOSE_EXEC; + $DOCKER push "${DOCKER_IMAGE}:${DOCKER_PACKAGE_BUILDER_TAG}"; fi # Handle Image builder - if docker_tag_exists "$DOCKER_IMAGE" "$DOCKER_IMAGE_BUILDER_TAG"; then + if docker_tag_exists "${DOCKER_IMAGE}" "${DOCKER_IMAGE_BUILDER_TAG}"; then echo "${VERSION} ${TARGET} - Image Builder already exists" else echo "${VERSION} ${TARGET} - Building Image Builder ..." - generate_dockerfile_based_on $DOCKER_IMAGE ./image-builder/Dockerfile | $DOCKER build -f - -t "$DOCKER_IMAGE:$DOCKER_IMAGE_BUILDER_TAG" ./image-builder &>$CLOSE_EXEC; + generate_dockerfile_from "${DOCKER_IMAGE}:base" ./image-builder/Dockerfile | \ + $DOCKER build \ + -f - \ + --build-arg INSTALL_SRC="$INSTALL_IMAGE_BUILDER" \ + -t "${DOCKER_IMAGE}:${DOCKER_IMAGE_BUILDER_TAG}" \ + ./image-builder; echo "${VERSION} ${TARGET} - Pushing Image Builder ..." - $DOCKER push "$DOCKER_IMAGE:$DOCKER_IMAGE_BUILDER_TAG" &>$CLOSE_EXEC; + $DOCKER push "${DOCKER_IMAGE}:${DOCKER_IMAGE_BUILDER_TAG}"; fi done; diff --git a/image-builder/Dockerfile b/image-builder/Dockerfile index e69de29..de103ff 100644 --- a/image-builder/Dockerfile +++ b/image-builder/Dockerfile @@ -0,0 +1,5 @@ +FROM base +LABEL MAINTAINER "Jose Moreira " + +ARG INSTALL_SRC +RUN /bin/bash -c "$INSTALL_SRC" \ No newline at end of file diff --git a/package-builder/Dockerfile b/package-builder/Dockerfile index 6aae00c..de103ff 100644 --- a/package-builder/Dockerfile +++ b/package-builder/Dockerfile @@ -1,2 +1,5 @@ +FROM base LABEL MAINTAINER "Jose Moreira " +ARG INSTALL_SRC +RUN /bin/bash -c "$INSTALL_SRC" \ No newline at end of file diff --git a/targets/18.0.1/brcm2708-brcm2710 b/targets/18.0.1/brcm2708-brcm2710 index f6e1d5d..e328752 100644 --- a/targets/18.0.1/brcm2708-brcm2710 +++ b/targets/18.0.1/brcm2708-brcm2710 @@ -1,2 +1,6 @@ -OWRT_IMAGE_BUILDER="http://downloads.openwrt.org/releases/18.06.1/targets/brcm2708/bcm2710/openwrt-imagebuilder-18.06.1-brcm2708-bcm2710.Linux-x86_64.tar.xz" -OWRT_SDK="http://downloads.openwrt.org/releases/18.06.1/targets/brcm2708/bcm2710/openwrt-sdk-18.06.1-brcm2708-bcm2710_gcc-7.3.0_musl.Linux-x86_64.tar.xz" \ No newline at end of file +OPENWRT_BASE="http://downloads.openwrt.org/releases/18.06.1/targets/brcm2708/bcm2710" +OPENWRT_IMAGE_BUILDER="$OPENWRT_BASE/openwrt-imagebuilder-18.06.1-brcm2708-bcm2710.Linux-x86_64.tar.xz" +OPENWRT_PACKAGE_BUILDER="$OPENWRT_BASE/openwrt-sdk-18.06.1-brcm2708-bcm2710_gcc-7.3.0_musl.Linux-x86_64.tar.xz" + +INSTALL_IMAGE_BUILDER="curl $OPENWRT_IMAGE_BUILDER | tar xvJf - --strip-components 1 -C /src" +INSTALL_PACKAGE_BUILDER="curl $OPENWRT_PACKAGE_BUILDER | tar xvJf - --strip-components 1 -C /src" \ No newline at end of file