Merge remote-tracking branch 'origin/145-build-system-rewrite' into fradrive/merge-jost-new-build
This commit is contained in:
commit
aebf6ec914
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,6 +15,7 @@ cabal-dev/
|
|||||||
.cache/
|
.cache/
|
||||||
.stack/
|
.stack/
|
||||||
.stack-work
|
.stack-work
|
||||||
|
.job-*/
|
||||||
.dev-port-http
|
.dev-port-http
|
||||||
.dev-port-https
|
.dev-port-https
|
||||||
.bash_history
|
.bash_history
|
||||||
|
|||||||
41
Makefile
41
Makefile
@ -1,6 +1,9 @@
|
|||||||
|
|
||||||
export SHELL=bash
|
export SHELL=bash
|
||||||
|
|
||||||
|
# MAKE=make -f Makefile-loggingsymbols
|
||||||
|
# MAKE=make -d
|
||||||
|
|
||||||
# System information
|
# System information
|
||||||
export CPU_CORES = $(shell cat /proc/cpuinfo | grep '^processor' | wc -l)
|
export CPU_CORES = $(shell cat /proc/cpuinfo | grep '^processor' | wc -l)
|
||||||
|
|
||||||
@ -24,8 +27,8 @@ export CONTAINER_ATTACHED
|
|||||||
export CONTAINER_INIT
|
export CONTAINER_INIT
|
||||||
export CONTAINER_CLEANUP
|
export CONTAINER_CLEANUP
|
||||||
|
|
||||||
export STACK_INIT="./utils/stack-work-init.sh"
|
# export STACK_INIT="./utils/stack-work-init.sh"
|
||||||
export STACK_CLEANUP="rm -f .stack-work.lock"
|
# export STACK_CLEANUP="rm -f .stack-work.lock"
|
||||||
|
|
||||||
export SERVICE
|
export SERVICE
|
||||||
export SERVICE_VARIANT ?= $(SERVICE)
|
export SERVICE_VARIANT ?= $(SERVICE)
|
||||||
@ -65,7 +68,7 @@ help:
|
|||||||
clean:
|
clean:
|
||||||
rm -rf develop
|
rm -rf develop
|
||||||
-rm -rf node_modules .npm .cache assets/icons assets/favicons static well-known config/manifest.json
|
-rm -rf node_modules .npm .cache assets/icons assets/favicons static well-known config/manifest.json
|
||||||
-rm -rf .stack-work .stack-work.lock .stack-work-compile .stack-work-start .stack-work-test .stack-work-lint .stack-work-hoogle
|
-rm -rf .job-*
|
||||||
-rm -rf bin .Dockerfile develop
|
-rm -rf bin .Dockerfile develop
|
||||||
-$(CONTAINER_COMMAND) container prune --force
|
-$(CONTAINER_COMMAND) container prune --force
|
||||||
.PHONY: clean-all
|
.PHONY: clean-all
|
||||||
@ -103,24 +106,24 @@ start:
|
|||||||
%-backend: SERVICE=backend
|
%-backend: SERVICE=backend
|
||||||
%-backend: SERVICE_VARIANT=backend
|
%-backend: SERVICE_VARIANT=backend
|
||||||
%-backend: CONTAINER_CMD=localhost/fradrive/backend
|
%-backend: CONTAINER_CMD=localhost/fradrive/backend
|
||||||
%-backend: CONTAINER_INIT="$(STACK_INIT)"
|
# %-backend: CONTAINER_INIT="$(STACK_INIT)"
|
||||||
%-backend: CONTAINER_CLEANUP="$(STACK_CLEANUP)"
|
# %-backend: CONTAINER_CLEANUP="$(STACK_CLEANUP)"
|
||||||
%-backend: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
|
%-backend: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
|
||||||
|
|
||||||
.PHONY: %-uniworxdb
|
.PHONY: %-uniworxdb
|
||||||
%-uniworxdb: SERVICE=backend
|
%-uniworxdb: SERVICE=backend
|
||||||
%-uniworxdb: SERVICE_VARIANT=uniworxdb
|
%-uniworxdb: SERVICE_VARIANT=uniworxdb
|
||||||
%-uniworxdb: CONTAINER_CMD=localhost/fradrive/backend
|
%-uniworxdb: CONTAINER_CMD=localhost/fradrive/backend
|
||||||
%-uniworxdb: CONTAINER_INIT="$(STACK_INIT)"
|
# %-uniworxdb: CONTAINER_INIT="$(STACK_INIT)"
|
||||||
%-uniworxdb: CONTAINER_CLEANUP="$(STACK_CLEANUP)"
|
# %-uniworxdb: CONTAINER_CLEANUP="$(STACK_CLEANUP)"
|
||||||
|
|
||||||
.PHONY: %-hoogle
|
.PHONY: %-hoogle
|
||||||
%-hoogle: SERVICE=backend
|
%-hoogle: SERVICE=backend
|
||||||
%-hoogle: SERVICE_VARIANT=hoogle
|
%-hoogle: SERVICE_VARIANT=hoogle
|
||||||
%-hoogle: BASE_PORTS = "HOOGLE_PORT=8081"
|
%-hoogle: BASE_PORTS = "HOOGLE_PORT=8081"
|
||||||
%-hoogle: CONTAINER_CMD=localhost/fradrive/backend
|
%-hoogle: CONTAINER_CMD=localhost/fradrive/backend
|
||||||
%-hoogle: CONTAINER_INIT="$(STACK_INIT)"
|
# %-hoogle: CONTAINER_INIT="$(STACK_INIT)"
|
||||||
%-hoogle: CONTAINER_CLEANUP="$(STACK_CLEANUP)"
|
# %-hoogle: CONTAINER_CLEANUP="$(STACK_CLEANUP)"
|
||||||
--start-hoogle:
|
--start-hoogle:
|
||||||
HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \
|
HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \
|
||||||
stack $(STACK_CORES) hoogle -- server --local --port $${HOOGLE_PORT}
|
stack $(STACK_CORES) hoogle -- server --local --port $${HOOGLE_PORT}
|
||||||
@ -190,7 +193,7 @@ lint-%: --act ;
|
|||||||
exit 1 ; \
|
exit 1 ; \
|
||||||
fi ; \
|
fi ; \
|
||||||
echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \
|
echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \
|
||||||
$(MAKE) -- --$* CONTAINER_FILE=$${CONTAINER_FILE} CONTAINER_IDENT=$${CONTAINER_IDENT}
|
$(MAKE) -- --$* CONTAINER_FILE=$${CONTAINER_FILE} CONTAINER_IDENT=$${CONTAINER_IDENT} JOB=$(JOB)
|
||||||
|
|
||||||
.PHONY: rebuild-%
|
.PHONY: rebuild-%
|
||||||
# HELP(rebuild-{backend,frontend,database,memcached,minio}): force-rebuild the stated docker image
|
# HELP(rebuild-{backend,frontend,database,memcached,minio}): force-rebuild the stated docker image
|
||||||
@ -200,19 +203,29 @@ rebuild-%:
|
|||||||
ifeq "$(CONTAINER_CMD)" "localhost/fradrive/$(SERVICE)"
|
ifeq "$(CONTAINER_CMD)" "localhost/fradrive/$(SERVICE)"
|
||||||
rm -f .Dockerfile
|
rm -f .Dockerfile
|
||||||
ln -s docker/$(SERVICE)/Dockerfile .Dockerfile
|
ln -s docker/$(SERVICE)/Dockerfile .Dockerfile
|
||||||
|
$(MAKE) .job-$(JOB)
|
||||||
MOUNT_DIR=/mnt/fradrive; \
|
MOUNT_DIR=/mnt/fradrive; \
|
||||||
PROJECT_DIR=/mnt/fradrive; \
|
PROJECT_DIR=/mnt/fradrive; \
|
||||||
if [ "$(IN_CI)" == "true" ] ; then \
|
if [ "$(IN_CI)" == "true" ] ; then \
|
||||||
PROJECT_DIR=/fradrive; \
|
PROJECT_DIR=/fradrive; \
|
||||||
fi; \
|
fi; \
|
||||||
if [ "$(IN_CONTAINER)" == "false" ] ; then \
|
if [ "$(IN_CONTAINER)" == "false" ] ; then \
|
||||||
$(CONTAINER_COMMAND) build $(NO_CACHE) -v $(PWD):$${MOUNT_DIR} --env IN_CONTAINER=true --build-arg MOUNT_DIR=$(MOUNT_DIR) --build-arg PROJECT_DIR=$${PROJECT_DIR} --tag fradrive/$(SERVICE) --file $(PWD)/.Dockerfile ; \
|
$(CONTAINER_COMMAND) build $(NO_CACHE) \
|
||||||
|
-v $(PWD):$${MOUNT_DIR} \
|
||||||
|
--build-arg MOUNT_DIR=$(MOUNT_DIR) \
|
||||||
|
--build-arg PROJECT_DIR=$${PROJECT_DIR} \
|
||||||
|
--env IN_CONTAINER=true \
|
||||||
|
--env JOB=$(JOB) \
|
||||||
|
--tag fradrive/$(SERVICE) \
|
||||||
|
--file $(PWD)/.Dockerfile ; \
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
:
|
:
|
||||||
endif
|
endif
|
||||||
|
|
||||||
--containerized: --image-build
|
--containerized:
|
||||||
|
$(MAKE) .job-$(JOB)
|
||||||
|
$(MAKE) -- --image-build
|
||||||
DEVELOP=`cat develop/.current` ; \
|
DEVELOP=`cat develop/.current` ; \
|
||||||
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "$(CONTAINER_INIT)" "$(CONTAINER_CLEANUP)" & \
|
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "$(CONTAINER_INIT)" "$(CONTAINER_CLEANUP)" & \
|
||||||
CONTAINER_NAME=fradrive.$(CURR_DEV).$(CONTAINER_IDENT) ; \
|
CONTAINER_NAME=fradrive.$(CURR_DEV).$(CONTAINER_IDENT) ; \
|
||||||
@ -228,6 +241,7 @@ endif
|
|||||||
--env FRADRIVE_MAKE_TARGET="--$(JOB)-$(SERVICE_VARIANT)" \
|
--env FRADRIVE_MAKE_TARGET="--$(JOB)-$(SERVICE_VARIANT)" \
|
||||||
--env CONTAINER_FILE=$(CONTAINER_FILE) \
|
--env CONTAINER_FILE=$(CONTAINER_FILE) \
|
||||||
--env CONTAINER_NAME=$${CONTAINER_NAME} \
|
--env CONTAINER_NAME=$${CONTAINER_NAME} \
|
||||||
|
--env JOB=$(JOB) \
|
||||||
--name $${CONTAINER_NAME} \
|
--name $${CONTAINER_NAME} \
|
||||||
$${CONTAINER_CMD} \
|
$${CONTAINER_CMD} \
|
||||||
` ; \
|
` ; \
|
||||||
@ -266,6 +280,9 @@ endif
|
|||||||
# HELP(test-backend): test backend
|
# HELP(test-backend): test backend
|
||||||
--test-backend:
|
--test-backend:
|
||||||
stack build $(STACK_CORES) --test --coverage --fast --flag uniworx:library-only $(--DEVELOPMENT)
|
stack build $(STACK_CORES) --test --coverage --fast --flag uniworx:library-only $(--DEVELOPMENT)
|
||||||
|
.PHONY: .job-%:
|
||||||
|
.job-%:
|
||||||
|
./utils/dirsymlink.pl ".job-$*" .stack-work
|
||||||
|
|
||||||
# HELP(compile-frontend): compile frontend assets
|
# HELP(compile-frontend): compile frontend assets
|
||||||
--compile-frontend: node_modules assets esbuild.config.mjs
|
--compile-frontend: node_modules assets esbuild.config.mjs
|
||||||
|
|||||||
@ -14,18 +14,17 @@ ARG PROJECT_DIR=/fradrive
|
|||||||
|
|
||||||
RUN mkdir -p "${PROJECT_DIR}"
|
RUN mkdir -p "${PROJECT_DIR}"
|
||||||
RUN if [ "${PROJECT_DIR}" != "${MOUNT_DIR}" ] ; then cp -r "${MOUNT_DIR}"/* "${PROJECT_DIR}" ; fi
|
RUN if [ "${PROJECT_DIR}" != "${MOUNT_DIR}" ] ; then cp -r "${MOUNT_DIR}"/* "${PROJECT_DIR}" ; fi
|
||||||
WORKDIR "${PROJECT_DIR}"
|
|
||||||
ENV HOME="${PROJECT_DIR}"
|
|
||||||
|
|
||||||
RUN mkdir -p "${PROJECT_DIR}/.stack"
|
RUN mkdir -p "${PROJECT_DIR}/.stack"
|
||||||
ENV STACK_ROOT="${PROJECT_DIR}/.stack"
|
ENV STACK_ROOT="${PROJECT_DIR}/.stack"
|
||||||
|
|
||||||
RUN make -- --dependencies-backend STACK_ROOT=${STACK_ROOT} IN_CONTAINER=true
|
WORKDIR "${PROJECT_DIR}/.job-${JOB}"
|
||||||
RUN stack install yesod-bin
|
ENV HOME="${PROJECT_DIR}/.job-${JOB}"
|
||||||
RUN chmod -R 777 .stack .stack-work .stack-work-compile .stack-work-start .stack-work-test .stack-work-lint .stack-work-hoogle || :
|
RUN make -- --dependencies-backend STACK_ROOT=${STACK_ROOT} IN_CONTAINER=true JOB=${JOB}
|
||||||
|
RUN cd "${PROJECT_DIR}/.job-start" && STACK_ROOT=${STACK_ROOT} stack install yesod-bin
|
||||||
|
|
||||||
ENV FRADRIVE_MAKE_TARGET=--start-backend
|
ENV FRADRIVE_MAKE_TARGET=--start-backend
|
||||||
ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} STACK_ROOT="${STACK_ROOT}" IN_CONTAINER=true CONTAINER_FILE="${CONTAINER_FILE}"
|
ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} STACK_ROOT="${STACK_ROOT}" IN_CONTAINER=true CONTAINER_FILE="${CONTAINER_FILE}" JOB="${JOB}"
|
||||||
|
|
||||||
EXPOSE 3000/tcp
|
EXPOSE 3000/tcp
|
||||||
EXPOSE 3443/tcp
|
EXPOSE 3443/tcp
|
||||||
|
|||||||
@ -7,7 +7,7 @@ my ($shadowdir, @keepdirs) = @ARGV;
|
|||||||
|
|
||||||
mkdir($shadowdir);
|
mkdir($shadowdir);
|
||||||
|
|
||||||
system(qq#rm -f "$shadowdir"/*#);
|
system(qq#rm -f "$shadowdir"/* "$shadowdir"/.*#);
|
||||||
|
|
||||||
for my $k(@keepdirs) {
|
for my $k(@keepdirs) {
|
||||||
unlink("$shadowdir/$k");
|
unlink("$shadowdir/$k");
|
||||||
|
|||||||
@ -2,7 +2,12 @@
|
|||||||
|
|
||||||
: > makelogger
|
: > makelogger
|
||||||
|
|
||||||
utils/makefilelogger.pl Makefile > Makefile-loggingsymbols
|
cp Makefile Makefile.prev
|
||||||
|
|
||||||
make -f Makefile-loggingsymbols "$@"
|
utils/makefilelogger.pl Makefile.prev > Makefile
|
||||||
|
|
||||||
|
make "$@"
|
||||||
|
|
||||||
|
rm Makefile
|
||||||
|
mv Makefile.prev Makefile
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user