diff --git a/base-image/Dockerfile b/base-image/Dockerfile index e004cff..e78d041 100644 --- a/base-image/Dockerfile +++ b/base-image/Dockerfile @@ -18,7 +18,7 @@ RUN echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/so ADD entrypoint.sh /entrypoint RUN chmod 755 /entrypoint -RUN mkdir -p /src /output +RUN mkdir -p /src /output /overlay /repositories /feeds WORKDIR /src ENTRYPOINT ["/entrypoint"] CMD ["/bin/bash"] \ No newline at end of file diff --git a/base-image/entrypoint.sh b/base-image/entrypoint.sh index f31ad3d..dc394a3 100644 --- a/base-image/entrypoint.sh +++ b/base-image/entrypoint.sh @@ -3,7 +3,13 @@ # 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 if [ "$GOSU_USER" != "0:0" ]; then + echo "[OpenWRT Builder] Arranging permissions..." + chown -R $GOSU_USER /src + chown -R $GOSU_USER /output + [ -d /feeds ] && chown -R $GOSU_USER /feeds + [ -d /repositories ] && chown -R $GOSU_USER /repositories + [ -d /overlay ] && chown -R $GOSU_USER /overlay # make sure a valid user exists in /etc/passwd if grep "^builder:" /etc/passwd; then diff --git a/image-builder/builder.sh b/image-builder/builder.sh index a9bf588..ee1e534 100644 --- a/image-builder/builder.sh +++ b/image-builder/builder.sh @@ -1 +1,24 @@ #!/bin/bash + +PROFILE=${PROFILE} +PACKAGES=${PACKAGES} +PATH_SRC=/src +PATH_REPOSITORIES=/repositories +PATH_OVERLAY=/overlay +PATH_OUTPUT=/output +CUSTOM_REPOSITORIES=$(ls $PATH_REPOSITORIES) +CPUS=${CPUS:-2} +CLEAN=${CLEAN:-0} + + +## HANDLE REPOSITORYS +cp $PATH_SRC/repositories.conf $PATH_SRC/repositories.conf.default +for CUSTOM_REPOSITORY in $CUSTOM_REPOSITORIES; do + echo "src ${CUSTOM_REPOSITORY} file://${PATH_REPOSITORIES}/${CUSTOM_REPOSITORY}" >> $PATH_SRC/repositories.conf +done; + +# Build image +make image \ + PACKAGES="$PACKAGES" \ + FILES="$PATH_OVERLAY" \ + BIN_DIR="$PATH_OUTPUT" \ No newline at end of file diff --git a/package-builder/Dockerfile b/package-builder/Dockerfile index 637405f..88b7d69 100644 --- a/package-builder/Dockerfile +++ b/package-builder/Dockerfile @@ -4,6 +4,9 @@ LABEL MAINTAINER "Jose Moreira " ARG INSTALL_SRC RUN /bin/bash -c "$INSTALL_SRC" +# Cache packages feeds +RUN ./scripts/feeds update -a + ADD builder.sh /builder RUN chmod 755 /builder CMD ["/builder"] \ No newline at end of file diff --git a/package-builder/builder.sh b/package-builder/builder.sh index 1635256..9ca16e7 100644 --- a/package-builder/builder.sh +++ b/package-builder/builder.sh @@ -15,7 +15,7 @@ CLEAN=${CLEAN:-0} ## HANDLE FEEDS cp $PATH_SRC/feeds.conf.default $PATH_SRC/feeds.conf for CUSTOM_FEED in $CUSTOM_FEEDS; do - echo "src-link ${CUSTOM_FEED} ${PATH_FEEDS}/${CUSTOM_FEED}" >> $PATH_SRC/feeds.conf + echo "src-link ${CUSTOM_FEED} file://${PATH_FEEDS}/${CUSTOM_FEED}" >> $PATH_SRC/feeds.conf done; ./scripts/feeds update -a @@ -24,11 +24,24 @@ for CUSTOM_FEED in $CUSTOM_FEEDS; do done; make defconfig +echo "- Building packages $PACKAGES..." +COMMANDS="" +[ "$CLEAN" != "0" ] && { + for PACKAGE in $PACKAGES; do + COMMANDS="$COMMANDS package/${PACKAGE}/clean" + done +} for PACKAGE in $PACKAGES; do - [ "$CLEAN" != "0" ] && { - make package/${PACKAGE}/clean - } + COMMANDS="$COMMANDS package/${PACKAGE}/download" +} +for PACKAGE in $PACKAGES; do + COMMANDS="$COMMANDS package/${PACKAGE}/compile" +} - make package/${PACKAGE}/compile -done +make -j ${CPUS} ${COMMANDS} \ + BIN_DIR="$PATH_OUTPUT" + +# Move bin/packages contents to the PATH_OUTPUT +echo "- Moving built packages to output dir..." +mv -v bin/packages/* $PATH_OUTPUT \ No newline at end of file