diff options
-rw-r--r-- | .gitignore | 6 | ||||
-rw-r--r-- | .gitlab-ci.yml | 14 | ||||
-rwxr-xr-x | bin/mkrelease.sh | 23 | ||||
-rw-r--r-- | bundle/Configure.pl (renamed from Configure.pl) | 0 | ||||
-rw-r--r-- | bundle/README.md (renamed from README) | 0 | ||||
-rw-r--r-- | bundle/build_msi.bat (renamed from build_msi.bat) | 0 | ||||
-rw-r--r-- | tools/star/Makefile | 90 |
7 files changed, 86 insertions, 47 deletions
@@ -6,11 +6,7 @@ # Temporary files used to build a new Rakudo Star release MANIFEST Makefile -MoarVM config.status -install -nqp perl6 -rakudo release -src +work diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cda7a00..b5977fd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,26 +10,24 @@ Tarball: script: - git submodule sync - git submodule update --init --recursive - - make -f tools/star/Makefile - - make -f tools/star/Makefile release VERSION=$CI_COMMIT_REF_NAME + - bin/mkrelease.sh "$CI_COMMIT_REF_NAME" artifacts: paths: - - release + - work/release MoarVM: stage: Build image: alpine:latest before_script: - apk add --no-cache bash build-base git perl - - cd "$(mktemp -d)" - - tar xf "$CI_PROJECT_DIR/release/rakudo-star-$CI_COMMIT_REF_NAME.tar.gz" + - cd -- "$(mktemp -d)" + - tar xzf "$CI_PROJECT_DIR/work/release/rakudo-star-$CI_COMMIT_REF_NAME.tar.gz" script: - cd "rakudo-star-$CI_COMMIT_REF_NAME" - - perl Configure.pl --prefix=/usr/local --backend=moar --gen-moar --make-install + - perl Configure.pl --prefix="$CI_PROJECT_DIR/work/install" --backend=moar --gen-moar --make-install artifacts: paths: - - "$CI_COMMIT_REF_NAME/release" - - /usr/local + - work/install # TODO: Run tests # TODO: Release an updated Docker container diff --git a/bin/mkrelease.sh b/bin/mkrelease.sh new file mode 100755 index 0000000..7c712e0 --- /dev/null +++ b/bin/mkrelease.sh @@ -0,0 +1,23 @@ +#! /usr/bin/env sh + +readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) + +main() +{ + if [ -z "$1" ] + then + usage + exit 1 + fi + + cd -- "$BASEDIR" + make -f tools/star/Makefile all VERSION="$1" + make -f tools/star/Makefile release VERSION="$1" +} + +usage() +{ + print "NYI" +} + +main "$@" diff --git a/Configure.pl b/bundle/Configure.pl index 4a1984e..4a1984e 100644 --- a/Configure.pl +++ b/bundle/Configure.pl diff --git a/README b/bundle/README.md index 857b3a6..857b3a6 100644 --- a/README +++ b/bundle/README.md diff --git a/build_msi.bat b/bundle/build_msi.bat index 270c5f9..270c5f9 100644 --- a/build_msi.bat +++ b/bundle/build_msi.bat diff --git a/tools/star/Makefile b/tools/star/Makefile index 9d74422..a1b879a 100644 --- a/tools/star/Makefile +++ b/tools/star/Makefile @@ -9,7 +9,9 @@ MOAR_VER = 2019.07.1 STAR_REL = rakudo-star-$(VERSION) STAR_TGZ = $(STAR_REL).tar.gz -SRC_DIR = src +SRC_DIR = work/src +WORKDIR ?= $(shell pwd)/work/rakudo-star-$(VERSION) +RELEASE_DIR = $(shell pwd)/work/release RAKUDO_TGZ = rakudo-$(RAKUDO_VER).tar.gz RAKUDO_URL = https://rakudo.perl6.org/downloads/rakudo/$(RAKUDO_TGZ) @@ -26,29 +28,27 @@ PREFIX = $(PERL) $(CURDIR)/tools/star/prefix.pl WGET = wget TAR = tar -all: rakudo nqp moar manifest - -always: +all: rakudo nqp moarvm manifest rakudo: nqp $(RAKUDO_SRC) - mkdir rakudo - $(TAR) -C rakudo --strip-components 1 -xzf $(RAKUDO_SRC) + mkdir -p $(WORKDIR)/rakudo + $(TAR) -C $(WORKDIR)/rakudo --strip-components 1 -xzf $(RAKUDO_SRC) $(RAKUDO_SRC): mkdir -p $(SRC_DIR) $(WGET) $(RAKUDO_URL) -O $(RAKUDO_SRC) -nqp: moar $(NQP_SRC) - mkdir nqp - $(TAR) -C nqp --strip-components 1 -xzf $(NQP_SRC) +nqp: moarvm $(NQP_SRC) + mkdir -p $(WORKDIR)/nqp + $(TAR) -C $(WORKDIR)/nqp --strip-components 1 -xzf $(NQP_SRC) $(NQP_SRC): mkdir -p $(SRC_DIR) $(WGET) $(NQP_URL) -O $(NQP_SRC) -moar: $(MOAR_SRC) - mkdir MoarVM - $(TAR) -C MoarVM --strip-components 1 -xzf $(MOAR_SRC) +moarvm: $(MOAR_SRC) + mkdir -p $(WORKDIR)/MoarVM + $(TAR) -C $(WORKDIR)/MoarVM --strip-components 1 -xzf $(MOAR_SRC) $(MOAR_SRC): mkdir -p $(SRC_DIR) @@ -59,37 +59,59 @@ modules/DBIish/lib: git submodule init git submodule update -manifest: modules/DBIish/lib - echo MANIFEST >MANIFEST - git ls-files >>MANIFEST - $(PREFIX) rakudo/ rakudo/MANIFEST >>MANIFEST - $(PREFIX) nqp/ nqp/MANIFEST >>MANIFEST - $(PREFIX) MoarVM/ MoarVM/MANIFEST >>MANIFEST - git submodule foreach --quiet 'git ls-files | $(PREFIX) $$path/' >>MANIFEST - grep -v -f tools/star/MANIFEST.exclude MANIFEST >MANIFEST.1 - $(PERL) -n -e 'chomp; print "$$_\n"' MANIFEST.1 >MANIFEST - sort -o MANIFEST MANIFEST - rm MANIFEST.1 +manifest: + printf "%s\n" MANIFEST >> "$(WORKDIR)/MANIFEST" + + # Add an assortment of files from this repository + git ls-files | grep -E '^docs' >> "$(WORKDIR)/MANIFEST" + git ls-files | grep -E '^modules' >> "$(WORKDIR)/MANIFEST" + git ls-files | grep -E '^ports' >> "$(WORKDIR)/MANIFEST" + git ls-files | grep -E '^tools' >> "$(WORKDIR)/MANIFEST" + + printf "%s\n" build_msi.bat >> "$(WORKDIR)/MANIFEST" + printf "%s\n" Configure.pl >> "$(WORKDIR)/MANIFEST" + printf "%s\n" LICENSE >> "$(WORKDIR)/MANIFEST" + printf "%s\n" README.md >> "$(WORKDIR)/MANIFEST" + + # Add the 3 core parts for Raku + cd -- "$(WORKDIR)" && $(PREFIX) rakudo/ rakudo/MANIFEST >> "$(WORKDIR)/MANIFEST" + cd -- "$(WORKDIR)" && $(PREFIX) nqp/ nqp/MANIFEST >> "$(WORKDIR)/MANIFEST" + cd -- "$(WORKDIR)" && $(PREFIX) MoarVM/ MoarVM/MANIFEST >> "$(WORKDIR)/MANIFEST" + + # Add ecosystem modules + git submodule foreach --quiet 'git ls-files | $(PREFIX) $$path/' >> $(WORKDIR)/MANIFEST + + # Remove explicitly removed files + grep -v -f tools/star/MANIFEST.exclude $(WORKDIR)/MANIFEST > $(WORKDIR)/MANIFEST.1 + mv -- "$(WORKDIR)/MANIFEST.1" "$(WORKDIR)/MANIFEST" + + # Clean up whitespace + $(PERL) -n -e 'chomp; print "$$_\n"' $(WORKDIR)/MANIFEST > $(WORKDIR)/MANIFEST.1 + mv -- "$(WORKDIR)/MANIFEST.1" "$(WORKDIR)/MANIFEST" + + # Sort the MANIFEST + sort -o $(WORKDIR)/MANIFEST $(WORKDIR)/MANIFEST patch: patch -p1 < patches/star-ver.patch tarball: manifest [ -n "$(VERSION)" ] || ( echo "\nTry '$(MAKE) release VERSION=yyyy.mm'\n\n"; exit 1 ) - [ -d $(STAR_REL) ] || ln -s . $(STAR_REL) - - mkdir -p "release" - $(PREFIX) $(STAR_REL)/ MANIFEST \ - | grep -Ev '^$(STAR_REL)/release/' \ - | $(TAR) -zc -T - -f "release/$(STAR_TGZ)" + mkdir -p "$(RELEASE_DIR)" + cp -r modules "$(WORKDIR)/." + cp -r docs "$(WORKDIR)/." + cp -r ports "$(WORKDIR)/." + cp -r tools "$(WORKDIR)/." + cp LICENSE "$(WORKDIR)/." + cp bundle/README.md "$(WORKDIR)/." + cp bundle/build_msi.bat "$(WORKDIR)/." + cp bundle/Configure.pl "$(WORKDIR)/." - rm $(STAR_REL) + cd -- work && $(PREFIX) $(STAR_REL)/ "$(WORKDIR)/MANIFEST" \ + | $(TAR) -zc -T - -f "$(RELEASE_DIR)/$(STAR_TGZ)" release: tarball clean: - rm -fr rakudo - rm -fr nqp - rm -fr MoarVM - rm -fr src + rm -fr work |