diff options
author | Naoum Hankache <naoum88@gmail.com> | 2020-02-26 20:14:39 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-26 20:14:39 +0300 |
commit | a6253c2b109538031b7c9b52cbd56adb266c4746 (patch) | |
tree | 1b349ba24e7732118d884b4122ef741f091e2704 | |
parent | 139ba6333a8b7497b5349a6ed9fde963ea7a90e7 (diff) | |
parent | 34714c9ec604da31fc87a98f1f7f165ea50214d1 (diff) |
Merge pull request #144 from Tyil/master
Get Rakudo Star working for 2019.07.1
-rw-r--r-- | .gitignore | 18 | ||||
-rw-r--r-- | .gitlab-ci.yml | 85 | ||||
-rw-r--r-- | .gitmodules | 308 | ||||
-rw-r--r-- | Dockerfile | 22 | ||||
-rw-r--r-- | README.md | 47 | ||||
-rwxr-xr-x | bin/build-release.sh | 73 | ||||
-rwxr-xr-x | bin/mkchecksum.sh | 48 | ||||
-rwxr-xr-x | bin/mkdocker.sh | 52 | ||||
-rwxr-xr-x | bin/mkrelease.sh | 54 | ||||
-rw-r--r-- | bundle/Configure.pl (renamed from Configure.pl) | 51 | ||||
-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-- | dev-bin/ci-debug.sh | 21 | ||||
-rw-r--r-- | docs/announce/2019.07.md | 4 | ||||
-rw-r--r-- | docs/announce/2019.11.md | 35 | ||||
-rw-r--r-- | docs/announce/2020.01.md | 25 | ||||
-rw-r--r-- | docs/guides/adding-new-community-modules.md | 9 | ||||
-rw-r--r-- | docs/guides/mac-dmg.pod (renamed from tools/star/mac-dmg.pod) | 0 | ||||
-rw-r--r-- | docs/guides/release-guide.md | 273 | ||||
-rw-r--r-- | docs/guides/windows-msi.pod (renamed from tools/star/windows-msi.pod) | 0 | ||||
m--------- | modules/App::Prove6 | 0 | ||||
m--------- | modules/DBIish | 0 | ||||
m--------- | modules/DateTime::Format (renamed from modules/perl6-datetime-format) | 0 | ||||
m--------- | modules/DateTime::Parse | 0 | ||||
m--------- | modules/Debugger::UI::CommandLine | 0 | ||||
m--------- | modules/Digest | 0 | ||||
m--------- | modules/Digest::MD5 (renamed from modules/perl6-digest-md5) | 0 | ||||
m--------- | modules/Encode | 0 | ||||
m--------- | modules/File::Directory::Tree | 0 | ||||
m--------- | modules/File::Find (renamed from modules/file-find) | 0 | ||||
m--------- | modules/File::Temp (renamed from modules/p6-File-Temp) | 0 | ||||
m--------- | modules/File::Which (renamed from modules/perl6-file-which) | 0 | ||||
m--------- | modules/Getopt::Long | 0 | ||||
m--------- | modules/Grammar::Debugger (renamed from modules/grammar-debugger) | 0 | ||||
m--------- | modules/Grammar::Profiler::Simple (renamed from modules/Grammar-Profiler-Simple) | 0 | ||||
m--------- | modules/HTTP::Easy (renamed from modules/perl6-http-easy) | 0 | ||||
m--------- | modules/HTTP::Status (renamed from modules/perl6-http-status) | 0 | ||||
m--------- | modules/HTTP::UserAgent | 0 | ||||
m--------- | modules/IO::Capture::Simple (renamed from modules/io-capture-simple) | 0 | ||||
m--------- | modules/IO::Socket::SSL (renamed from modules/io-socket-ssl) | 0 | ||||
m--------- | modules/IO::String (renamed from modules/p6-io-string) | 0 | ||||
m--------- | modules/JSON-Class | 0 | ||||
m--------- | modules/JSON-Marshal | 0 | ||||
m--------- | modules/JSON::Class | 0 | ||||
m--------- | modules/JSON::Fast | 0 | ||||
m--------- | modules/JSON::Marshal | 0 | ||||
m--------- | modules/JSON::Name (renamed from modules/JSON-Name) | 0 | ||||
m--------- | modules/JSON::RPC (renamed from modules/jsonrpc) | 0 | ||||
m--------- | modules/JSON::Tiny (renamed from modules/json) | 0 | ||||
m--------- | modules/JSON::Unmarshal (renamed from modules/JSON-Unmarshal) | 0 | ||||
m--------- | modules/LWP::Simple | 0 | ||||
m--------- | modules/LibraryCheck | 0 | ||||
m--------- | modules/LibraryMake (renamed from modules/library-make) | 0 | ||||
m--------- | modules/License-SPDX | 0 | ||||
m--------- | modules/License::SPDX | 0 | ||||
m--------- | modules/Linenoise | 0 | ||||
m--------- | modules/META6 | 0 | ||||
m--------- | modules/MIME::Base64 (renamed from modules/Perl6-MIME-Base64) | 0 | ||||
-rw-r--r-- | modules/MODULES.txt | 114 | ||||
m--------- | modules/NativeHelpers::Blob (renamed from modules/NativeHelpers-Blob) | 0 | ||||
m--------- | modules/OO::Monitors | 0 | ||||
m--------- | modules/OpenSSL (renamed from modules/openssl) | 0 | ||||
m--------- | modules/Pod-To-HTML | 0 | ||||
m--------- | modules/Pod::Load | 0 | ||||
m--------- | modules/Pod::To::BigPage (renamed from modules/perl6-pod-to-bigpage) | 0 | ||||
m--------- | modules/Pod::To::HTML | 0 | ||||
m--------- | modules/Readline | 0 | ||||
m--------- | modules/SVG (renamed from modules/svg) | 0 | ||||
m--------- | modules/SVG::Plot (renamed from modules/svg-plot) | 0 | ||||
m--------- | modules/Shell::Command (renamed from modules/shell-command) | 0 | ||||
m--------- | modules/TAP | 0 | ||||
m--------- | modules/Temp::Path (renamed from modules/perl6-Temp-Path) | 0 | ||||
m--------- | modules/Template::Mojo (renamed from modules/Template-Mojo) | 0 | ||||
m--------- | modules/Template::Mustache (renamed from modules/p6-Template-Mustache) | 0 | ||||
m--------- | modules/Terminal::ANSIColor (renamed from modules/Terminal-ANSIColor) | 0 | ||||
m--------- | modules/Test::META (renamed from modules/Test-META) | 0 | ||||
m--------- | modules/Test::Mock | 0 | ||||
m--------- | modules/Test::Output | 0 | ||||
m--------- | modules/Test::Util::ServerPort (renamed from modules/test-util-serverport) | 0 | ||||
m--------- | modules/Test::When (renamed from modules/perl6-Test-When) | 0 | ||||
m--------- | modules/Testo (renamed from modules/perl6-Testo) | 0 | ||||
m--------- | modules/URI | 0 | ||||
m--------- | modules/XML::Writer (renamed from modules/xml-writer) | 0 | ||||
m--------- | modules/app-prove6 | 0 | ||||
m--------- | modules/datetime-parse | 0 | ||||
m--------- | modules/debugger-ui-commandline | 0 | ||||
m--------- | modules/doc | 0 | ||||
m--------- | modules/getopt-long6 | 0 | ||||
m--------- | modules/http-useragent | 0 | ||||
m--------- | modules/json_fast | 0 | ||||
m--------- | modules/libdigest-perl6 | 0 | ||||
m--------- | modules/oo-monitors | 0 | ||||
m--------- | modules/p6-file-directory-tree | 0 | ||||
m--------- | modules/p6-pod-load | 0 | ||||
m--------- | modules/p6doc | 0 | ||||
m--------- | modules/perl6-Test-Output | 0 | ||||
m--------- | modules/perl6-encode | 0 | ||||
m--------- | modules/perl6-lwp-simple | 0 | ||||
m--------- | modules/tap-harness6 | 0 | ||||
m--------- | modules/test-mock | 0 | ||||
m--------- | modules/uri | 0 | ||||
m--------- | modules/zef | 0 | ||||
-rw-r--r-- | tools/build/Makefile.in | 6 | ||||
-rw-r--r-- | tools/build/module-install.pl | 36 | ||||
-rw-r--r-- | tools/build/modules-test.pl | 60 | ||||
-rw-r--r-- | tools/lib/NQP/Configure.pm | 3 | ||||
-rw-r--r-- | tools/star/Makefile | 98 | ||||
-rw-r--r-- | tools/star/release-guide.pod | 350 |
108 files changed, 1128 insertions, 664 deletions
@@ -1,12 +1,12 @@ -MANIFEST -rakudo -nqp -MoarVM -src -config.status -Makefile -install -perl6 +# Editor specific files *.swp *~ \#*# + +# Temporary files used to build a new Rakudo Star release +MANIFEST +Makefile +config.status +perl6 +release +work diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..22bdad8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,85 @@ +stages: + - Package + - Build + - Test + - Release + +Tarball: + stage: Package + image: alpine:latest + before_script: + - apk add --no-cache coreutils git make perl + script: + - git submodule sync + - git submodule update --init --recursive + - bin/mkrelease.sh "$CI_COMMIT_REF_NAME" + - bin/mkchecksum.sh "work/release/rakudo-star-$CI_COMMIT_REF_NAME.tar.gz" + artifacts: + paths: + - work/release + +Rakudo Star: + stage: Build + image: alpine:latest + before_script: + - apk add --no-cache coreutils bash build-base git openssl-dev perl readline-dev + - bin/mkchecksum.sh "work/release/rakudo-star-$CI_COMMIT_REF_NAME.tar.gz" + - mkdir -p "$CI_PROJECT_DIR/work/build" + - cd -- "$CI_PROJECT_DIR/work/build" + - 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="$CI_PROJECT_DIR/work/install" --backend=moar --gen-moar --make-install + artifacts: + paths: + - work/build + - work/install + +Rakudo Test: + stage: Test + image: alpine:latest + before_script: + - apk add --no-cache build-base perl + - cd -- "work/build/rakudo-star-$CI_COMMIT_REF_NAME" + script: + - make rakudo-test + +Rakudo Spectest: + stage: Test + image: alpine:latest + allow_failure: true + before_script: + - apk add --no-cache build-base git perl + - cd -- "work/build/rakudo-star-$CI_COMMIT_REF_NAME" + script: + - make rakudo-spectest + +Debug Test: + stage: Test + image: alpine:latest + before_script: + - export PATH="$CI_PROJECT_DIR/work/install/bin:$CI_PROJECT_DIR/work/install/share/perl6/site/bin:$PATH" + - apk add --no-cache build-base git perl + script: + - sh "$CI_PROJECT_DIR/dev-bin/ci-debug.sh" + +Community Modules: + stage: Test + image: alpine:latest + before_script: + - export PATH="$CI_PROJECT_DIR/work/install/bin:$CI_PROJECT_DIR/work/install/share/perl6/site/bin:$PATH" + - apk add --no-cache build-base openssl-dev perl perl-test-harness-utils readline-dev + - cd -- "work/build/rakudo-star-$CI_COMMIT_REF_NAME" + script: + - make verbose-modules-test + +Docker: + stage: Release + image: docker:stable + services: + - docker:dind + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker build --build-arg "VERSION=$CI_COMMIT_REF_NAME" -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" . + - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" diff --git a/.gitmodules b/.gitmodules index 5d1be8c..46597d9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,177 +1,183 @@ -[submodule "modules/debugger-ui-commandline"] - path = modules/debugger-ui-commandline - url = git://github.com/jnthn/rakudo-debugger -[submodule "modules/xml-writer"] - path = modules/xml-writer - url = git://github.com/masak/xml-writer -[submodule "modules/svg"] - path = modules/svg - url = git://github.com/moritz/svg -[submodule "modules/svg-plot"] - path = modules/svg-plot - url = git://github.com/moritz/svg-plot -[submodule "modules/test-mock"] - path = modules/test-mock - url = git://github.com/jnthn/test-mock -[submodule "modules/Grammar-Profiler-Simple"] - path = modules/Grammar-Profiler-Simple - url = git://github.com/perlpilot/Grammar-Profiler-Simple -[submodule "modules/grammar-debugger"] - path = modules/grammar-debugger - url = git://github.com/jnthn/grammar-debugger -[submodule "modules/json"] - path = modules/json - url = git://github.com/moritz/json -[submodule "modules/perl6-digest-md5"] - path = modules/perl6-digest-md5 - url = git://github.com/cosimo/perl6-digest-md5 -[submodule "modules/perl6-http-status"] - path = modules/perl6-http-status - url = git://github.com/supernovus/perl6-http-status -[submodule "modules/perl6-http-easy"] - path = modules/perl6-http-easy - url = git://github.com/supernovus/perl6-http-easy -[submodule "modules/Template-Mojo"] - path = modules/Template-Mojo - url = git://github.com/tadzik/Template-Mojo +[submodule "modules/Debugger::UI::CommandLine"] + path = modules/Debugger::UI::CommandLine + url = git://github.com/jnthn/rakudo-debugger.git +[submodule "modules/XML::Writer"] + path = modules/XML::Writer + url = git://github.com/masak/xml-writer.git +[submodule "modules/SVG"] + path = modules/SVG + url = git://github.com/moritz/svg.git +[submodule "modules/SVG::Plot"] + path = modules/SVG::Plot + url = git://github.com/moritz/svg-plot.git +[submodule "modules/Test::Mock"] + path = modules/Test::Mock + url = git://github.com/jnthn/test-mock.git +[submodule "modules/Grammar::Profiler::Simple"] + path = modules/Grammar::Profiler::Simple + url = git://github.com/perlpilot/Grammar-Profiler-Simple.git +[submodule "modules/Grammar::Debugger"] + path = modules/Grammar::Debugger + url = git://github.com/jnthn/grammar-debugger.git +[submodule "modules/JSON::Tiny"] + path = modules/JSON::Tiny + url = git://github.com/moritz/json.git +[submodule "modules/Digest::MD5"] + path = modules/Digest::MD5 + url = git://github.com/cosimo/perl6-digest-md5.git +[submodule "modules/HTTP::Status"] + path = modules/HTTP::Status + url = git://github.com/supernovus/perl6-http-status.git +[submodule "modules/HTTP::Easy"] + path = modules/HTTP::Easy + url = git://github.com/supernovus/perl6-http-easy.git +[submodule "modules/Template::Mojo"] + path = modules/Template::Mojo + url = git://github.com/tadzik/Template-Mojo.git [submodule "modules/DBIish"] path = modules/DBIish - url = git://github.com/perl6/DBIish -[submodule "modules/uri"] - path = modules/uri - url = git://github.com/perl6-community-modules/uri -[submodule "modules/perl6-lwp-simple"] - path = modules/perl6-lwp-simple - url = git://github.com/perl6/perl6-lwp-simple -[submodule "modules/jsonrpc"] - path = modules/jsonrpc - url = git://github.com/bbkr/jsonrpc -[submodule "modules/Pod-To-HTML"] - path = modules/Pod-To-HTML - url = git://github.com/perl6/Pod-To-HTML -[submodule "modules/doc"] - path = modules/doc - url = git://github.com/perl6/doc -[submodule "modules/Perl6-MIME-Base64"] - path = modules/Perl6-MIME-Base64 - url = git://github.com/perl6/Perl6-MIME-Base64 + url = git://github.com/perl6/DBIish.git +[submodule "modules/URI"] + path = modules/URI + url = git://github.com/perl6-community-modules/uri.git +[submodule "modules/LWP::Simple"] + path = modules/LWP::Simple + url = git://github.com/perl6/perl6-lwp-simple.git +[submodule "modules/JSON::RPC"] + path = modules/JSON::RPC + url = git://github.com/bbkr/jsonrpc.git +[submodule "modules/Pod::To::HTML"] + path = modules/Pod::To::HTML + url = git://github.com/perl6/Pod-To-HTML.git +[submodule "modules/p6doc"] + path = modules/p6doc + url = git://github.com/perl6/doc.git +[submodule "modules/MIME::Base64"] + path = modules/MIME::Base64 + url = git://github.com/perl6/Perl6-MIME-Base64.git [submodule "modules/PSGI"] path = modules/PSGI - url = git://github.com/supernovus/perl6-psgi -[submodule "modules/shell-command"] - path = modules/shell-command - url = git://github.com/tadzik/Shell-Command -[submodule "modules/file-find"] - path = modules/file-find - url = git://github.com/tadzik/File-Find -[submodule "modules/p6-Template-Mustache"] - path = modules/p6-Template-Mustache - url = git://github.com/softmoth/p6-Template-Mustache -[submodule "modules/p6-File-Temp"] - path = modules/p6-File-Temp - url = git://github.com/perlpilot/p6-File-Temp -[submodule "modules/p6-file-directory-tree"] - path = modules/p6-file-directory-tree - url = git://github.com/labster/p6-file-directory-tree -[submodule "modules/Terminal-ANSIColor"] - path = modules/Terminal-ANSIColor - url = git://github.com/tadzik/Terminal-ANSIColor -[submodule "modules/json_fast"] - path = modules/json_fast - url = git://github.com/timo/json_fast -[submodule "modules/library-make"] - path = modules/library-make - url = https://github.com/retupmoca/P6-LibraryMake/ + url = git://github.com/supernovus/perl6-psgi.git +[submodule "modules/Shell::Command"] + path = modules/Shell::Command + url = git://github.com/tadzik/Shell-Command.git +[submodule "modules/File::Find"] + path = modules/File::Find + url = git://github.com/tadzik/File-Find.git +[submodule "modules/Template::Mustache"] + path = modules/Template::Mustache + url = git://github.com/softmoth/p6-Template-Mustache.git +[submodule "modules/File::Temp"] + path = modules/File::Temp + url = git://github.com/perlpilot/p6-File-Temp.git +[submodule "modules/File::Directory::Tree"] + path = modules/File::Directory::Tree + url = git://github.com/labster/p6-file-directory-tree.git +[submodule "modules/Terminal::ANSIColor"] + path = modules/Terminal::ANSIColor + url = git://github.com/tadzik/Terminal-ANSIColor.git +[submodule "modules/JSON::Fast"] + path = modules/JSON::Fast + url = git://github.com/timo/json_fast.git +[submodule "modules/LibraryMake"] + path = modules/LibraryMake + url = git://github.com/retupmoca/P6-LibraryMake.git [submodule "modules/Linenoise"] path = modules/Linenoise - url = https://github.com/hoelzro/p6-linenoise/ -[submodule "modules/perl6-file-which"] - path = modules/perl6-file-which - url = git://github.com/azawawi/perl6-file-which -[submodule "modules/NativeHelpers-Blob"] - path = modules/NativeHelpers-Blob - url = git://github.com/salortiz/NativeHelpers-Blob -[submodule "modules/perl6-pod-to-bigpage"] - path = modules/perl6-pod-to-bigpage + url = git://github.com/hoelzro/p6-linenoise.git +[submodule "modules/File::Which"] + path = modules/File::Which + url = git://github.com/azawawi/perl6-file-which.git +[submodule "modules/NativeHelpers::Blob"] + path = modules/NativeHelpers::Blob + url = git://github.com/salortiz/NativeHelpers-Blob.git +[submodule "modules/Pod::To::BigPage"] + path = modules/Pod::To::BigPage url = git://github.com/gfldex/perl6-pod-to-bigpage.git [submodule "modules/zef"] path = modules/zef url = git://github.com/ugexe/zef.git -[submodule "modules/oo-monitors"] - path = modules/oo-monitors - url = git://github.com/jnthn/oo-monitors -[submodule "modules/tap-harness6"] - path = modules/tap-harness6 +[submodule "modules/OO::Monitors"] + path = modules/OO::Monitors + url = git://github.com/jnthn/oo-monitors.git +[submodule "modules/TAP"] + path = modules/TAP url = git://github.com/perl6/tap-harness6.git -[submodule "modules/p6-io-string"] - path = modules/p6-io-string +[submodule "modules/IO::String"] + path = modules/IO::String url = git://github.com/hoelzro/p6-io-string.git -[submodule "modules/perl6-Test-When"] - path = modules/perl6-Test-When +[submodule "modules/Test::When"] + path = modules/Test::When url = git://github.com/zoffixznet/perl6-Test-When.git -[submodule "modules/perl6-encode"] - path = modules/perl6-encode - url = git://github.com/sergot/perl6-encode.git -[submodule "modules/Test-META"] - path = modules/Test-META +[submodule "modules/Test::META"] + path = modules/Test::META url = git://github.com/jonathanstowe/Test-META.git -[submodule "modules/perl6-datetime-format"] - path = modules/perl6-datetime-format +[submodule "modules/DateTime::Format"] + path = modules/DateTime::Format url = git://github.com/supernovus/perl6-datetime-format.git [submodule "modules/META6"] path = modules/META6 url = git://github.com/jonathanstowe/META6.git -[submodule "modules/JSON-Class"] - path = modules/JSON-Class +[submodule "modules/JSON::Class"] + path = modules/JSON::Class url = git://github.com/jonathanstowe/JSON-Class.git -[submodule "modules/JSON-Marshal"] - path = modules/JSON-Marshal +[submodule "modules/JSON::Marshal"] + path = modules/JSON::Marshal url = git://github.com/jonathanstowe/JSON-Marshal.git -[submodule "modules/JSON-Name"] - path = modules/JSON-Name +[submodule "modules/JSON::Name"] + path = modules/JSON::Name url = git://github.com/jonathanstowe/JSON-Name -[submodule "modules/JSON-Unmarshal"] - path = modules/JSON-Unmarshal +[submodule "modules/JSON::Unmarshal"] + path = modules/JSON::Unmarshal url = git://github.com/tadzik/JSON-Unmarshal.git -[submodule "modules/http-useragent"] - path = modules/http-useragent +[submodule "modules/HTTP::UserAgent"] + path = modules/HTTP::UserAgent url = git://github.com/sergot/http-useragent.git -[submodule "modules/datetime-parse"] - path = modules/datetime-parse +[submodule "modules/DateTime::Parse"] + path = modules/DateTime::Parse url = git://github.com/sergot/datetime-parse.git -[submodule "modules/io-capture-simple"] - path = modules/io-capture-simple +[submodule "modules/IO::Capture::Simple"] + path = modules/IO::Capture::Simple url = git://github.com/sergot/IO-Capture-Simple.git -[submodule "modules/test-util-serverport"] - path = modules/test-util-serverport +[submodule "modules/Test::Util::ServerPort"] + path = modules/Test::Util::ServerPort url = git://github.com/jonathanstowe/Test-Util-ServerPort.git -[submodule "modules/openssl"] - path = modules/openssl - url = git://github.com/sergot/openssl -[submodule "modules/io-socket-ssl"] - path = modules/io-socket-ssl - url = git://github.com/sergot/io-socket-ssl -[submodule "modules/app-prove6"] - path = modules/app-prove6 - url = git://github.com/Leont/app-prove6 -[submodule "modules/getopt-long6"] - path = modules/getopt-long6 - url = git://github.com/Leont/getopt-long6 -[submodule "modules/p6-pod-load"] - path = modules/p6-pod-load - url = git@github.com:JJ/p6-pod-load -[submodule "modules/perl6-Temp-Path"] - path = modules/perl6-Temp-Path - url = git@github.com:ufobat/perl6-Temp-Path -[submodule "modules/libdigest-perl6"] - path = modules/libdigest-perl6 - url = git@github.com:grondilu/libdigest-perl6 -[submodule "modules/perl6-Testo"] - path = modules/perl6-Testo - url = git@github.com:perl6-community-modules/perl6-Testo -[submodule "modules/License-SPDX"] - path = modules/License-SPDX - url = git@github.com:jonathanstowe/License-SPDX -[submodule "modules/perl6-Test-Output"] - path = modules/perl6-Test-Output - url = git@github.com:perl6-community-modules/perl6-Test-Output +[submodule "modules/OpenSSL"] + path = modules/OpenSSL + url = git://github.com/sergot/openssl.git +[submodule "modules/IO::Socket::SSL"] + path = modules/IO::Socket::SSL + url = git://github.com/sergot/io-socket-ssl.git +[submodule "modules/App::Prove6"] + path = modules/App::Prove6 + url = git://github.com/Leont/app-prove6.git +[submodule "modules/Getopt::Long"] + path = modules/Getopt::Long + url = git://github.com/Leont/getopt-long6.git +[submodule "modules/Pod::Load"] + path = modules/Pod::Load + url = git://github.com/JJ/p6-pod-load.git +[submodule "modules/Temp::Path"] + path = modules/Temp::Path + url = git://github.com/ufobat/perl6-Temp-Path.git +[submodule "modules/Digest"] + path = modules/Digest + url = git://github.com/grondilu/libdigest-perl6.git +[submodule "modules/Testo"] + path = modules/Testo + url = git://github.com/perl6-community-modules/perl6-Testo.git +[submodule "modules/License::SPDX"] + path = modules/License::SPDX + url = git://github.com/jonathanstowe/License-SPDX.git +[submodule "modules/Test::Output"] + path = modules/Test::Output + url = git://github.com/perl6-community-modules/perl6-Test-Output.git +[submodule "modules/LibraryCheck"] + path = modules/LibraryCheck + url = git://github.com/jonathanstowe/LibraryCheck.git +[submodule "modules/Readline"] + path = modules/Readline + url = git://github.com/drforr/perl6-readline.git +[submodule "modules/Encode"] + path = modules/Encode + url = git://github.com/sergot/perl6-encode.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3117420 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM alpine:latest AS build + +ARG VERSION + +COPY work /tmp/work + +WORKDIR /tmp/rakudo-star + +RUN apk add --no-cache build-base git perl perl-utils openssl-dev readline-dev +RUN tar xzf "/tmp/work/release/rakudo-star-$VERSION.tar.gz" +RUN cd -- "rakudo-star-$VERSION" \ + && perl Configure.pl --prefix=/usr/local --backend=moar --gen-moar --make-install + +FROM alpine:latest + +WORKDIR /root + +RUN apk add --no-cache libressl + +COPY --from=build /usr/local /usr/local + +CMD [ "perl6" ] @@ -1,25 +1,44 @@ # Rakudo Star -This git repository contains _only_ the tools needed to create a Rakudo Star distribution. +Rakudo Star is a user-oriented distribution of the Raku programming language, +and a number of common community modules. -The `tar` files available from `github.com` -are NOT suitable for building Rakudo Star; do not use them. +This git repository contains _only_ the tools needed to create a Rakudo Star +distribution, not the sources of individual components of the distribution. +These are fetched when you build the distribution tarball. + +The `tar` files available from `github.com` for MoarVM, NQP and Rakudo are NOT +suitable for building Rakudo Star; do not use them. Instead, use the tarballs +found on the individual projects' sites, which correctly contain all the +utilities and dependencies used by them. ## Get Rakudo Star -To get the latest release of Rakudo Star, please download the corresponding file depending on your platform. -* [Linux](https://rakudo.org/latest/star/source) -* [Windows](https://rakudo.org/latest/star/win64) -* [macOS](https://rakudo.org/latest/star/macos) +To get the latest release of Rakudo Star, please download the corresponding +file depending on your platform. + +- [Linux](https://rakudo.org/latest/star/source) +- [Windows](https://rakudo.org/latest/star/win64) +- [macOS](https://rakudo.org/latest/star/macos) ## Build Rakudo Star -If you're a Rakudo Star release manager, or someone who wants to create a new Perl 6 -distribution based on the tools here, then run `make -f tools/star/Makefile` to -populate a distribution image. -## Guides -* [Release guide](tools/star/release-guide.pod) +If you're a Rakudo Star release manager, or someone who wants to create a +user-friendly Raku distribution based on the tools here, check the `guides` +directory. This contains documentation on how to make a Rakudo Star tarball, as +well as information on how to create Windows `.msi` and MacOS `.dmg` packages. + +### Quickstart + + export VERSION=quickstart # Update to whatever version number you want to use + ./bin/mkrelease.sh "$VERSION" + mkdir -p work/build + tar xzf "work/release/rakudo-star-$VERSION.tar.gz" -C work/build + cd "work/build/rakudo-star-$VERSION" + perl Configure.pl --prefix="../../install" --backend=moar --gen-moar --make-install -* [Guide to build MSI packages](tools/star/windows-msi.pod) +If you're satisfied, you probably want to generate checksums and a detached PGP +signature for the release. -* [Guide to build DMG packages](tools/star/mac-dmg.pod) + ./bin/mkchecksum "work/release/rakudo-star-$VERSION.tar.gz" + gpg --armor --detach-sign "work/release/rakudo-star-$VERSION.tar.gz" diff --git a/bin/build-release.sh b/bin/build-release.sh new file mode 100755 index 0000000..fc8319e --- /dev/null +++ b/bin/build-release.sh @@ -0,0 +1,73 @@ +#! /usr/bin/env sh + +readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) + +main() +{ + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + prefix="${OPT_PREFIX:-$BASEDIR/work/install}" + + # Exit after every failure from here on out + set -e + + # Build Rakudo Star from the release tarball + mkdir -p -- "$BASEDIR/work/build" + cd -- "$BASEDIR/work/build" + tar xzf "$BASEDIR/work/release/rakudo-star-$1.tar.gz" + cd "rakudo-star-$1" + perl Configure.pl --prefix="$prefix" --backend=moar --gen-moar + + if [ "$OPT_INSTALL" ] + then + make install + fi +} + +opts() +{ + OPTS=0 + + while getopts ":hip:" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + i) OPT_INSTALL=1 ; OPTS=$(( OPTS + 1 )) ;; + p) OPT_PREFIX=$OPTARG ; OPTS=$(( OPTS + 2 )) ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done + + unset opt +} + +usage() +{ + cat <<EOF +Usage: + $(basename "$0") -h + $(basename "$0") [-i [-p <path>]] <version> + +Build Rakudo Star from a release tarball in $BASEDIR/work/release. This tarball +can be easily made using mkrelease.sh in this repository. If you don't specify +-i, this will not install Raku in $BASEDIR/work/install. This can be convenient +if you just want to run some simple tests. + +Options: + -h Show this help text and exit. + -i Also install the freshly built Rakudo Star. + -p Set a prefix to install Rakudo Star into. Defaults to ./work/install, + relative to the repository root. +EOF +} + +main "$@" diff --git a/bin/mkchecksum.sh b/bin/mkchecksum.sh new file mode 100755 index 0000000..5a7ac1f --- /dev/null +++ b/bin/mkchecksum.sh @@ -0,0 +1,48 @@ +#! /usr/bin/env sh + +main() +{ + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + printf "md5 %s\n" "$(md5sum "$1" | cut -f1 -d" ")" + printf "sha1 %s\n" "$(sha1sum "$1" | cut -f1 -d" ")" + printf "sha224 %s\n" "$(sha224sum "$1" | cut -f1 -d" ")" + printf "sha256 %s\n" "$(sha256sum "$1" | cut -f1 -d" ")" + printf "sha384 %s\n" "$(sha384sum "$1" | cut -f1 -d" ")" + printf "sha512 %s\n" "$(sha512sum "$1" | cut -f1 -d" ")" +} + +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done +} + +usage() +{ + cat <<EOF +Usage: + $(basename "$0") -h + $(basename "$0") <file> + +Make a number of checksums of a given file. +EOF +} + +main "$@" diff --git a/bin/mkdocker.sh b/bin/mkdocker.sh new file mode 100755 index 0000000..8c6e1b8 --- /dev/null +++ b/bin/mkdocker.sh @@ -0,0 +1,52 @@ +#! /usr/bin/env sh + +readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) + +main() +{ + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + # Make the Docker image + cd -- "$BASEDIR" + docker build --build-arg "VERSION=$1" -t "rakudo-star:$1" . + docker tag "rakudo-star:$1" rakudo-star:latest +} + +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done +} + +usage() +{ + cat <<EOF +Usage: + $(basename "$0") -h + $(basename "$0") <version> + +Make a Docker image for Rakudo Star. This requires a release tarball to exist. +You must specify the same version argument as you supplied to mkrelease.sh. + +Options: + -h Show this help text and exit. +EOF +} + +main "$@" diff --git a/bin/mkrelease.sh b/bin/mkrelease.sh new file mode 100755 index 0000000..5dc036d --- /dev/null +++ b/bin/mkrelease.sh @@ -0,0 +1,54 @@ +#! /usr/bin/env sh + +readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) + +main() +{ + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + # Make the release + cd -- "$BASEDIR" + make -f tools/star/Makefile all VERSION="$1" \ + && make -f tools/star/Makefile release VERSION="$1" +} + +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done +} + +usage() +{ + cat <<EOF +Usage: + $(basename "$0") -h + $(basename "$0") <version> + +Make a releasable tarball of Rakudo Star. You must specify a version number, +which will be used to name the tarball. The tarball will be put in +$BASEDIR/work/release. You will still have to manually create checksums and a +PGP signature. + +Options: + -h Show this help text and exit. +EOF +} + +main "$@" diff --git a/Configure.pl b/bundle/Configure.pl index 0627b2f..4a1984e 100644 --- a/Configure.pl +++ b/bundle/Configure.pl @@ -49,53 +49,56 @@ MAIN: { } if (-d '.git') { - worry( $options{'force'}, - "I see a .git directory here -- you appear to be trying", - "to run Configure.pl from a clone of the Rakudo Star git", - "repository.", - "You most probably should be following", - " tools/star/release-guide.pod", - "instead. Please be aware that running Configure.pl from", - "a clone of the rakudo star git repo will never be", - "the right thing to do.", - $options{'force'} - ? '--force specified, continuing' - : download_text() + worry( + $options{'force'}, + "I see a .git directory here -- you appear to be trying", + "to run Configure.pl from a clone of the Rakudo Star git", + "repository.", + "You most probably should be following", + " tools/star/release-guide.pod", + "instead. Please be aware that running Configure.pl from", + "a clone of the rakudo star git repo will never be", + "the right thing to do.", + $options{'force'} ? '--force specified, continuing' : download_text() ); } unless (defined $options{prefix}) { - my $default = defined($options{sysroot}) ? '/usr' : File::Spec->catdir(getcwd, 'install'); + + my $default = defined($options{sysroot}) ? '/usr' : File::Spec->catdir(getcwd, 'install'); print "ATTENTION: no --prefix supplied, building and installing to $default\n"; + $options{prefix} = $default; } + $options{prefix} = File::Spec->rel2abs($options{prefix}); my $prefix = $options{'prefix'}; my %known_backends = (jvm => 1, moar => 1); my %letter_to_backend; my $default_backend; + for (keys %known_backends) { $letter_to_backend{ substr($_, 0, 1) } = $_; } + my %backends; + if (defined $options{backends}) { - $options{backends} = 'moar,jvm' - if lc($options{backends}) eq 'all'; + $options{backends} = 'moar,jvm' if lc($options{backends}) eq 'all'; + for my $b (split /,\s*/, $options{backends}) { $b = lc $b; - if ($b eq 'parrot') { - die "Parrot support has been suspended from Rakudo Star. Please use version 2015.02 if you need Parrot support, or otherwise the MoarVM backend.\n"; - } - unless ($known_backends{$b}) { - die "Unknown backend '$b'; Supported backends are: " . - join(", ", sort keys %known_backends) . - "\n"; + + if (!$known_backends{$b}) { + die "Unknown backend '$b'; Supported backends are: " . join(", ", sort keys %known_backends) . "\n"; } + $backends{$b} = 1; $default_backend ||= $b; } - unless (%backends) { + + if (!%backends) { die "--prefix given, but no valid backend?!\n"; } } @@ -171,7 +174,7 @@ MAIN: { my @prefixes = sort map substr($_, 0, 1), keys %backends; # determine the version of NQP we want - my ($nqp_want) = split(' ', slurp('rakudo/tools/build/NQP_REVISION')); + my ($nqp_want) = split(' ', slurp('rakudo/tools/templates/NQP_REVISION')); my %binaries; my %impls = gen_nqp($nqp_want, prefix => $prefix, backends => join(',', sort keys %backends), %options); 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/dev-bin/ci-debug.sh b/dev-bin/ci-debug.sh new file mode 100644 index 0000000..f7a460a --- /dev/null +++ b/dev-bin/ci-debug.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env sh + +# +# This is an additional script, ran during CI testing. This is intended to +# debug issues that show up only during CI testing. +# + +main() +{ + perl6 -v + perl6 -e 'dd $*KERNEL.signal("SIGHUP"), $*KERNEL.signal("HUP")' + perl6 -e 'dd $*KERNEL.signal(SIGHUP)' + perl6 -e 'dd $*KERNEL.signal("SIGHUP")' + perl6 -e 'dd $*KERNEL.signal(HUP)' + perl6 -e 'dd $*KERNEL.signal("HUP")' + perl6 -e 'dd Signal.enums' + perl6 -e 'dd $*KERNEL.signals' + uname -a +} + +main "$@" diff --git a/docs/announce/2019.07.md b/docs/announce/2019.07.md new file mode 100644 index 0000000..dfe2a37 --- /dev/null +++ b/docs/announce/2019.07.md @@ -0,0 +1,4 @@ +# Rakudo Star (2019.07) + +This is a test release. + diff --git a/docs/announce/2019.11.md b/docs/announce/2019.11.md new file mode 100644 index 0000000..8af3599 --- /dev/null +++ b/docs/announce/2019.11.md @@ -0,0 +1,35 @@ +# Announce: Rakudo Star Release 2019.11 + +Just in time for the end of the year, Rakudo Star 2019.11. Only the second +release this year, compared to the usual four releases per year, but it beats +having only a single one. + +Many systems received a couple slight tweaks in order to keep them working for +newer releases. Some of these received them only to make them easier to +understand for me. After a lot of hard work, and with help from people all +around the community, this release was made possible. + +A big thanks to everyone involved! + +## Changes + +- The build system itself received some rigorous changes. All work is now done + in the `work` subdirectory, instead of in the root directory. A number of + scripts were altered to output some more information as well, which is mostly + intended to help Rakudo Star maintainers figure out issues. + +- Perl 6 is being renamed to Raku, and this is the first Rakudo Star release + containing `raku` as executable. It's just a symbolic link to `rakudo` right + now, but it allows you to run programs usin `raku`. + +### Ecosystem Modules + +- `Linenoise` has been dropped in favour of `Readline`. This also got + `LibraryCheck` included, as this is a dependency for `Readline`. + +## Downloads + +- [Rakudo Star 2019.11](https://dist.tyil.nl/raku/rakudo-star/rakudo-star-2019.11.tar.gz) +- [Rakudo Star 2019.11 checksums](https://dist.tyil.nl/raku/rakudo-star/rakudo-star-2019.11.tar.gz.checksums.txt) +- [Rakudo Star 2019.11 PGP signature](https://dist.tyil.nl/raku/rakudo-star/rakudo-star-2019.11.tar.gz.asc) +- [PGP key (0x7A6AC285E2D98827)](https://www.tyil.nl/pubkey.txt) diff --git a/docs/announce/2020.01.md b/docs/announce/2020.01.md new file mode 100644 index 0000000..e4e3fc2 --- /dev/null +++ b/docs/announce/2020.01.md @@ -0,0 +1,25 @@ +# Announce: Rakudo Star Release 2020.01 + +This is the first release of Rakudo Star for the year of the lord, 2020. + +The systems that were tweaked in the last version seem to work quite well, and +none were updated. A number of modules did receive updates, and these have been +bundles with this release. + +## Changes + +- Rakudo has been bumped to tag `2020.01`. +- MoarVM has been bumped to tag `2020.01.1`. +- NQP has been bumped to tag `2020.01`. + +### Ecosystem Modules + +No modules were added or removed in this release, compared to the previous +release. + +## Downloads + +- [Rakudo Star 2020.01](https://dist.tyil.nl/raku/rakudo-star/rakudo-star-2020.01.tar.gz) +- [Rakudo Star 2020.01 checksums](https://dist.tyil.nl/raku/rakudo-star/rakudo-star-2020.01.tar.gz.checksums.txt) +- [Rakudo Star 2020.01 PGP signature](https://dist.tyil.nl/raku/rakudo-star/rakudo-star-2020.01.tar.gz.asc) +- [PGP key (0x7A6AC285E2D98827)](https://www.tyil.nl/pubkey.txt) diff --git a/docs/guides/adding-new-community-modules.md b/docs/guides/adding-new-community-modules.md new file mode 100644 index 0000000..42c429f --- /dev/null +++ b/docs/guides/adding-new-community-modules.md @@ -0,0 +1,9 @@ + + +If there are any new modules to be added, use C<git submodule> to add +its repo to the modules/ directory. Also add the module directory +name to the C<modules/MODULES.txt> file. + + $ git submodule add git@github.com:user/acme-example modules/acme-example + $ echo acme-example >>modules/MODULES.txt + $ git commit . -m "Added acme-example to installed modules." diff --git a/tools/star/mac-dmg.pod b/docs/guides/mac-dmg.pod index 7ebc64a..7ebc64a 100644 --- a/tools/star/mac-dmg.pod +++ b/docs/guides/mac-dmg.pod diff --git a/docs/guides/release-guide.md b/docs/guides/release-guide.md new file mode 100644 index 0000000..5bd8ce2 --- /dev/null +++ b/docs/guides/release-guide.md @@ -0,0 +1,273 @@ +# Rakudo Star release guide + +Rakudo Star releases are based on Rakudo compiler releases. Since some time is +often needed for module updates and testing after each Rakudo compiler release, +the timing of Star releases varies from one release to the next. + +Also, while the Rakudo compiler issues monthly releases, Star releases are free +to choose a longer release cycle. Star releases are also free to choose older +releases of the compiler, NQP, or MoarVM. The goal is to balance end-user +stability needs with progress being made on the compiler, modules, and other +runtime components. Currently, Star is on a quarterly release cycle. + +## Creating a release distribution + +If this is your first time releasing, **read the whole guide before starting**. +That way you can ask questions and clear up and confusions before you're in the +thick of it. + +If you have done this before, you might want to check for and read any changes +to this release guide since your last run. + +### Clone this repository + + git clone git://gitlab.com/tyil/rakudo-star.git + +If this is not your first time, you probably already have a copy of this +repository, in which case you should pull the latest changes. + + git pull origin master + +### Branch out + +Since all the information is stored in git, this is a great moment to create a +new branch. This will make it easier to roll back if things go horribly wrong, +and to create a merge request later on to get other people to review the +changes. + + git switch -c $VERSION-rc1 + +### Update all community modules + +All community modules that are going to be bundled with this release need to be +made up-to-date. These are managed as submodules, so `git submodule` comes in +handy here. + + git submodule sync + git submodule update --init --recursive + git submodule foreach git pull origin master + git commit -m "Update submodules" + +At this point `git status` should report a clean repository. + +### Set component versions + +Inside the repository is a Makefile which indicates which versions of upstream +components should be used. This file can be found at `tools/star/Makefile`. +These version numbers are *usually* similar, but not necesarily. Specifically, +it is about the values for `RAKUDO_VER`, `NQP_VER`, `MOAR_VER`. + +If unsure, ask for the specific value for `RAKUDO_VER` in `#raku-dev` on +`irc.freenode.net`. The `NQP_VER` can be found inside the Rakudo repository, in +`tools/build/NQP_REVISION`, and the `MOAR_VER` can be found in the NQP +repository in the `tools/build/MOAR_REVISION` file. + + $EDITOR tools/star/Makefile + git commit -m "Bump component versions" + +### Create a release announcement + +For every release, an announcement should be made. These can be found in +`docs/announce`. They follow the same versioning scheme as Rakudo Star itself, +and as such, the name for the new one should have the current version number, +followed by `.md` since the announcements are in Markdown. + +You should include the latest version number changes, community module changes +(updated ones, deleted ones, new ones), and any other information which might +be relevant to end-users or package maintainers. + + $EDITOR docs/announce/$VERSION.md + git add !$ + git commit -m "Add release announcement for $VERSION" + +### Bump Rakudo Star version number + +The version number for Rakudo Star itself is referred to in another file, +`Makefile.in`, which needs updating. + + $EDITOR tools/build/Makefile.in. + git commit -m "Bump Rakudo Star version" + +### Publish changes + +With all the prep-work done, it is time to build an actual release +distribution. This is done using GitLab CI, so all you need to do now is push +the changes back to the repository. Generally, this would be done through a +merge request, so the changes can be reviewed and approved. Luckily, you're +already using a seperate branch, so this is pretty straightforward as well. + + git push origin $VERSION-rc1 + +This should give you an URL to create a merge request directly, however, if it +does not, you'll have to use your `$BROWSER` to go to the repository web page, +and make one manually. + +### Creating the release candidate + +GitLab CI has been set up to create a new release on every branch or tag. As +such, the previous `git push` should have started a CI job to build a +distribution tarball. If it did not, please consult `#raku-dev` on +`irc.freenode.net`. + +The CI setup also contains a testing phase, where the resulting tarball is +compiled and tested. If any of these steps fail, a solution must be found. The +best place to discuss options would be, again, the `#raku-dev` channel. + +### Creating the official release + +Once the release candidate has been approved to become an official release, the +branch can be merged into `master`. Afterwards, create a new tag for the new +release, and push it to the remote repository. GitLab CI will make a tarball +for you. + + git switch master + git pull origin master + git tag -s $VERSION + git push origin $VERSION + +The `-s` option for `git tag` makes you sign this particular tag with your PGP +key. All tags must be signed, so if you lack a PGP key, you should [strongly +consider to get yourself one](https://fedoraproject.org/wiki/Creating_GPG_Keys). + +### Publishing the official release + +Once GitLab CI has built and tested the final image, you can download it as an +artifact from the job. The job is of stage "Package, and name "Tarball". +Downloading the artifacts will get you a zip file with the tarball inside of +it. Extract the zipfile to some temporary location. Next, create a PGP +signature and checksums for it, to allow other people to verify they got the +right thing. + +For checksumming, a small utility can be found in the `bin` directory, +`mkchecksum`, which will generate a number or checksum formats for a given +file. + + cd -- "$(mktemp -d)" + wget "$ARTIFACTS_URL" + unzip download + cd work/release + gpg --armor --detach-sig *.tar.gz + mkchecksum *.tar.gz > rakudo-star-$VERSION.tar.gz.checksum.txt + +Lastly, the three files you have right now should be uploaded to the remote +server hosting official releases. + +TODO: I currently don't have any information on this step yet! + + If you don't have permission to do this step, please ask one of the core + devs (pmichaud, jnthn, masak, PerlJam/perlpilot, tadzik, or moritz) on + C<#perl6> to do it for you. + +### Announce the new release + +Now that a new release has been made, you're *technically* done. However, it +would be much appreciated if you also announce to the rest of the world that a +new release has been published. The most important place would be `rakudo.org`. + +#### rakudo.org +The sources of this site can be found in the +[`perl6/rakudo.org`](https://github.com/perl6/rakudo.org repository on GitHub). +It contains a small script to make this easier, called +`push-latest-rakudo-star-announcement.p6`. You will need to have a working +`perl6` in your `$PATH`, and have the `WWW` module installed. + + cd -- "$(mktemp -d)" + git clone git@github.com:perl6/rakudo.org . + ./push-latest-rakudo-star-announcement.p6 $VERSION + +You will also have to bump versions manually in C<templates/files.html.ep> in +the rakudo.org repo. + +#### Other places of importance + +There are more places around the 'net that should be informed of the new +release. These are not all documented, so you may have to ask around to get +access. + +- http://perl6.org/ +- perl6-users@perl.org +- perl6-language@perl.org +- perl6-compiler@perl.org +- http://en.wikipedia.org/wiki/Rakudo_Perl_6 (latest release date is mentioned in the main text) +- http://en.wikipedia.org/wiki/Perl_6 + +You should actively ask others to advertise the release as well. This includes +their social media accounts and blogs. Notable places include: + +- http://blogs.perl.org/ +- [Perl 6 Facebook Page](https://www.facebook.com/groups/1595443877388632/) +- Reddit: [r/perl](https://www.reddit.com/r/perl/), + [r/rakulang](https://www.reddit.com/r/rakulang/), + [r/programming](https://www.reddit.com/r/programming/) +- [Hacker News](https://news.ycombinator.com/news) +- Twitter: [@rakudoperl](https://twitter.com/rakudoperl) + +### Give yourself some credit + +Add this release and your name to the list of releases at the end of this +document, to eternalize your fame. This may also help other people interested +in making releases to find people to help them when any issues arrive. + + $EDITOR docs/guides/release-guide.md + +You may want to commit and push this file as well, of course. + +**You're done!** Celebrate with the appropriate amount of fun. + +## Rakudo Star release list + +- `2019.03`: hankache, clarkema +- `2018.10`: stmuk +- `2018.06`: stmuk +- `2018.04`: stmuk +- `2018.01`: stmuk +- `2017.10`: stmuk +- `2017.07`: stmuk +- `2017.04`: stmuk +- `2017.01`: stmuk +- `2016.11`: stmuk +- `2016.10`: stmuk +- `2016.07`: stmuk +- `2016.04`: stmuk +- `2016.01`: FROGGS +- `2015.11`: moritz +- `2015.09`: moritz +- `2015.07`: moritz +- `2015.06`: FROGGS +- `2015.03`: moritz +- `2015.02`: moritz +- `2015.01`: moritz +- `2014.12`: moritz +- `2014.09`: FROGGS +- `2014.08`: FROGGS +- `2014.04`: jnthn +- `2014.03`: FROGGS +- `2014.01`: tadzik +- `2013.12`: lue +- `2013.11`: moritz +- `2013.10`: lue +- `2013.09`: moritz +- `2013.08`: moritz +- `2013.05`: pmichaud +- `2013.02`: moritz +- `2013.01`: moritz +- `2012.12`: moritz +- `2012.11`: moritz +- `2012.10`: jnthn +- `2012.09`: pmichaud +- `2012.08`: pmichaud +- `2012.07`: pmichaud +- `2012.06`: moritz +- `2012.05`: moritz +- `2012.04`: moritz +- `2012.02`: jnthn +- `2012.01`: jnthn +- `2011.07`: pmichaud +- `2011.04`: pmichaud +- `2011.01`: pmichaud +- `2010.12`: pmichaud +- `2010.11`: pmichaud +- `2010.10`: pmichaud +- `2010.09`: pmichaud +- `2010.08`: pmichaud +- `2010.07`: pmichaud diff --git a/tools/star/windows-msi.pod b/docs/guides/windows-msi.pod index 8674c22..8674c22 100644 --- a/tools/star/windows-msi.pod +++ b/docs/guides/windows-msi.pod diff --git a/modules/App::Prove6 b/modules/App::Prove6 new file mode 160000 +Subproject c3e62325e3400fc6147b27682a967568e1027a7 diff --git a/modules/DBIish b/modules/DBIish -Subproject 606089631fdbfc526dd86eac7070d736951c786 +Subproject 0c50fd9a6aa3fa3bc4365e0b81f1c07cae1e944 diff --git a/modules/perl6-datetime-format b/modules/DateTime::Format -Subproject 3f3c99314e36029e36738097685a51dd94a188c +Subproject 3f3c99314e36029e36738097685a51dd94a188c diff --git a/modules/DateTime::Parse b/modules/DateTime::Parse new file mode 160000 +Subproject acf2f4f493891d3accdc25e8209ce275899d5dd diff --git a/modules/Debugger::UI::CommandLine b/modules/Debugger::UI::CommandLine new file mode 160000 +Subproject 45817dc77f4e1d0f50d3bd9b64e76f1033cc197 diff --git a/modules/Digest b/modules/Digest new file mode 160000 +Subproject 42ba6bef6ca5a9e532ad1436465df7af0cd5f70 diff --git a/modules/perl6-digest-md5 b/modules/Digest::MD5 -Subproject 2194250ff2d50a37f92d4f82fac216729f4eba8 +Subproject 2194250ff2d50a37f92d4f82fac216729f4eba8 diff --git a/modules/Encode b/modules/Encode new file mode 160000 +Subproject 7561b5f48cd666f5f767d400c5fa7444f546e3a diff --git a/modules/File::Directory::Tree b/modules/File::Directory::Tree new file mode 160000 +Subproject 12f1ab52191efa38787de26e5a8d4c01a94d03a diff --git a/modules/file-find b/modules/File::Find -Subproject 41421e8f1aec7207a1633de17f7630b7ceba1ff +Subproject 41421e8f1aec7207a1633de17f7630b7ceba1ff diff --git a/modules/p6-File-Temp b/modules/File::Temp -Subproject 7f128adc5bbad8d172f87e868c52eb85339fc90 +Subproject 7f128adc5bbad8d172f87e868c52eb85339fc90 diff --git a/modules/perl6-file-which b/modules/File::Which -Subproject 1dfbeba2f92f8b2b04e8b26619eb20d599198d2 +Subproject 1dfbeba2f92f8b2b04e8b26619eb20d599198d2 diff --git a/modules/Getopt::Long b/modules/Getopt::Long new file mode 160000 +Subproject 2f83c23fac987fbabcb4bbcc0ee386edff7a27a diff --git a/modules/grammar-debugger b/modules/Grammar::Debugger -Subproject 0375008027c8caa216bd869476ce59ae09b2a70 +Subproject 0375008027c8caa216bd869476ce59ae09b2a70 diff --git a/modules/Grammar-Profiler-Simple b/modules/Grammar::Profiler::Simple -Subproject c0aca5fab323b2974821dabd6b89330c609e0b7 +Subproject c0aca5fab323b2974821dabd6b89330c609e0b7 diff --git a/modules/perl6-http-easy b/modules/HTTP::Easy -Subproject 8742272c4913e6e05895f90c96262cd0c37772d +Subproject 8742272c4913e6e05895f90c96262cd0c37772d diff --git a/modules/perl6-http-status b/modules/HTTP::Status -Subproject c8226cfcfe5ee65536880287fcd0c332f7f409f +Subproject c8226cfcfe5ee65536880287fcd0c332f7f409f diff --git a/modules/HTTP::UserAgent b/modules/HTTP::UserAgent new file mode 160000 +Subproject 590680d9679a6a1184ef224ec03b86bd0df2603 diff --git a/modules/io-capture-simple b/modules/IO::Capture::Simple -Subproject 360a6bed347723940b9f0fb12be04cb5ec84f35 +Subproject 360a6bed347723940b9f0fb12be04cb5ec84f35 diff --git a/modules/io-socket-ssl b/modules/IO::Socket::SSL -Subproject f07010c8965855ff734de297466c883afffbb56 +Subproject f07010c8965855ff734de297466c883afffbb56 diff --git a/modules/p6-io-string b/modules/IO::String -Subproject 364df2753eef8976d902ed51b4085e77f1dda23 +Subproject 364df2753eef8976d902ed51b4085e77f1dda23 diff --git a/modules/JSON-Class b/modules/JSON-Class deleted file mode 160000 -Subproject 691e59138925d9bfd9130abcabbe5b2d2913f5a diff --git a/modules/JSON-Marshal b/modules/JSON-Marshal deleted file mode 160000 -Subproject c40bec636cc5948932fa467841725c93e30db32 diff --git a/modules/JSON::Class b/modules/JSON::Class new file mode 160000 +Subproject 6037517c6843a6a58d55c778dbe0e2575e04d83 diff --git a/modules/JSON::Fast b/modules/JSON::Fast new file mode 160000 +Subproject eb6ae0d339ed2441eb9df7758e3e1b6609eb514 diff --git a/modules/JSON::Marshal b/modules/JSON::Marshal new file mode 160000 +Subproject 492264295dd88aa7753048c46edce3f546ad399 diff --git a/modules/JSON-Name b/modules/JSON::Name -Subproject f9d52e032da0f9621a3f38cd03a825b93ab6567 +Subproject f9d52e032da0f9621a3f38cd03a825b93ab6567 diff --git a/modules/jsonrpc b/modules/JSON::RPC -Subproject ebccb25d505ef544e016038f39e21ad9c59c3bd +Subproject ebccb25d505ef544e016038f39e21ad9c59c3bd diff --git a/modules/json b/modules/JSON::Tiny -Subproject a5ef8c179350dae44ce7fb1abb684fc62c1c2b9 +Subproject a5ef8c179350dae44ce7fb1abb684fc62c1c2b9 diff --git a/modules/JSON-Unmarshal b/modules/JSON::Unmarshal -Subproject e1b6288c5f3165058f36c0f4e171cdf2dfd640d +Subproject e1b6288c5f3165058f36c0f4e171cdf2dfd640d diff --git a/modules/LWP::Simple b/modules/LWP::Simple new file mode 160000 +Subproject eb48ab98b3422b40cd0def8faa882abb9184c26 diff --git a/modules/LibraryCheck b/modules/LibraryCheck new file mode 160000 +Subproject e713a7f773f3352801bd43d399e3bdcb3baae5f diff --git a/modules/library-make b/modules/LibraryMake -Subproject 7aae514f09c18b54e2a5d584df340b70d9776a6 +Subproject 7aae514f09c18b54e2a5d584df340b70d9776a6 diff --git a/modules/License-SPDX b/modules/License-SPDX deleted file mode 160000 -Subproject 4f435605326fe8530917d0fdc0e64c5d22b3066 diff --git a/modules/License::SPDX b/modules/License::SPDX new file mode 160000 +Subproject 2165ab27ed6e58d3e68eea21bb21d9908d473f4 diff --git a/modules/Linenoise b/modules/Linenoise deleted file mode 160000 -Subproject 480fd919b2c082e691c518fd50c19ad8719532b diff --git a/modules/META6 b/modules/META6 -Subproject 04fc2e8ea2c428cb30fdcbad9f4455af235896b +Subproject 335492ad357a76e5d31166d4f700b66562054d5 diff --git a/modules/Perl6-MIME-Base64 b/modules/MIME::Base64 -Subproject 71f046ab176a6dd77a5a4103a44778ed5cf1b17 +Subproject 71f046ab176a6dd77a5a4103a44778ed5cf1b17 diff --git a/modules/MODULES.txt b/modules/MODULES.txt index 81a3f2f..3a489b7 100644 --- a/modules/MODULES.txt +++ b/modules/MODULES.txt @@ -1,61 +1,61 @@ # The order of modules here is significant; a module must be listed after # all of its dependencies. -uri -json_fast -JSON-Name -JSON-Unmarshal -JSON-Marshal -JSON-Class +URI +JSON::Fast +JSON::Name +JSON::Unmarshal +JSON::Marshal +JSON::Class META6 -License-SPDX -Test-META -xml-writer -svg # uses XML::Writer -svg-plot # uses SVG -Terminal-ANSIColor -oo-monitors -test-mock -Grammar-Profiler-Simple -grammar-debugger # uses Terminal::ANSIColor -Perl6-MIME-Base64 -uri -json -perl6-encode -openssl -io-socket-ssl -perl6-lwp-simple # uses MIME::Base64, URI, JSON::Tiny -perl6-digest-md5 -perl6-http-status -p6-Template-Mustache +License::SPDX +Test::META +XML::Writer +SVG # XML::Writer +SVG::Plot # SVG +Terminal::ANSIColor +OO::Monitors +Test::Mock +Grammar::Profiler::Simple +Grammar::Debugger # Terminal::ANSIColor +MIME::Base64 +JSON::Tiny +OpenSSL +IO::Socket::SSL +LWP::Simple # MIME::Base64, URI, JSON::Tiny +Digest::MD5 +HTTP::Status +Template::Mustache PSGI -perl6-http-easy # uses PSGI -Template-Mojo -NativeHelpers-Blob -DBIish # uses NativeHelpers::Blob -perl6-Test-When -p6-file-directory-tree -libdigest-perl6 -perl6-Testo -perl6-Temp-Path # uses Digest::SHA, File::Directory::Tree -p6-pod-load # uses Temp::Path -perl6-Test-Output -Pod-To-HTML # uses Pod::Load -perl6-pod-to-bigpage -p6-File-Temp # uses File::Directory::Tree -file-find -doc # uses File::Temp -debugger-ui-commandline -shell-command -library-make # check needed? -Linenoise -perl6-file-which -p6-io-string -perl6-datetime-format -datetime-parse # dependency for http-useragent -io-capture-simple -test-util-serverport -http-useragent -jsonrpc # uses PSGI & http-useragent -getopt-long6 -tap-harness6 # have last so faster perl5 prove used -app-prove6 +HTTP::Easy # PSGI +Template::Mojo +NativeHelpers::Blob +DBIish # NativeHelpers::Blob +Test::When +File::Directory::Tree +Digest +Testo +Temp::Path # Digest::SHA, File::Directory::Tree +Pod::Load +Test::Output +Pod::To::HTML # Pod::Load +Pod::To::BigPage +File::Temp # File::Directory::Tree +File::Find +p6doc # File::Temp +Debugger::UI::CommandLine +File::Which +Shell::Command # File::Which, File::Temp +LibraryMake # Shell::Command +IO::String +DateTime::Format +DateTime::Parse # HTTP::UserAgent +IO::Capture::Simple +Test::Util::ServerPort +Encode +HTTP::UserAgent # Encode +JSON::RPC # PSGI, HTTP::UserAgent +Getopt::Long +TAP +App::Prove6 +LibraryCheck +Readline # LibraryCheck diff --git a/modules/NativeHelpers-Blob b/modules/NativeHelpers::Blob -Subproject b00a4899ce219dae5fe97e9e414d01dd92874f5 +Subproject b00a4899ce219dae5fe97e9e414d01dd92874f5 diff --git a/modules/OO::Monitors b/modules/OO::Monitors new file mode 160000 +Subproject b59fb975fe0340cf16c075bc2bc9994a8d9eca6 diff --git a/modules/openssl b/modules/OpenSSL -Subproject 597e836c73684bb53ac5cb4511edca9b4f10ea8 +Subproject 597e836c73684bb53ac5cb4511edca9b4f10ea8 diff --git a/modules/Pod-To-HTML b/modules/Pod-To-HTML deleted file mode 160000 -Subproject 98d16f6aac7ec45e0902e23db347c1f153f0e5f diff --git a/modules/Pod::Load b/modules/Pod::Load new file mode 160000 +Subproject 53df2215d8e9980fde1308b4f8e0e5a28edef21 diff --git a/modules/perl6-pod-to-bigpage b/modules/Pod::To::BigPage -Subproject 92f2e4ef9f20a5031a5f033dc876e72f9d54455 +Subproject 92f2e4ef9f20a5031a5f033dc876e72f9d54455 diff --git a/modules/Pod::To::HTML b/modules/Pod::To::HTML new file mode 160000 +Subproject 8ddda65e0504ef2ca3f21c17f611aca00011dcc diff --git a/modules/Readline b/modules/Readline new file mode 160000 +Subproject 0d380bc191698d09ec0557e773e16ba773088d3 diff --git a/modules/svg b/modules/SVG -Subproject 07190c0602aa276e5319f06aa0012452dbff358 +Subproject 07190c0602aa276e5319f06aa0012452dbff358 diff --git a/modules/svg-plot b/modules/SVG::Plot -Subproject 062570a78fd38c3c6baba29dfe2fbb8ca014f4d +Subproject 062570a78fd38c3c6baba29dfe2fbb8ca014f4d diff --git a/modules/shell-command b/modules/Shell::Command -Subproject 1145ea0ff71507b2fe932fca6d2a68d4004c7d1 +Subproject 1145ea0ff71507b2fe932fca6d2a68d4004c7d1 diff --git a/modules/TAP b/modules/TAP new file mode 160000 +Subproject f0143104bfe37a34ce0c1b0daea08365302dfbf diff --git a/modules/perl6-Temp-Path b/modules/Temp::Path -Subproject 5a6acee907d65fc5b681a6ea022aa18217f6e99 +Subproject 5a6acee907d65fc5b681a6ea022aa18217f6e99 diff --git a/modules/Template-Mojo b/modules/Template::Mojo -Subproject 3d38f92636a0c44dfd4cec2e7b8b67f12e43c02 +Subproject 3d38f92636a0c44dfd4cec2e7b8b67f12e43c02 diff --git a/modules/p6-Template-Mustache b/modules/Template::Mustache -Subproject 4f09e0a97f38fe5d8c75514ca0c858cdfb26d09 +Subproject 4f09e0a97f38fe5d8c75514ca0c858cdfb26d09 diff --git a/modules/Terminal-ANSIColor b/modules/Terminal::ANSIColor -Subproject eeb2dadd2cc2b7df34588be7869768213fd9fff +Subproject eeb2dadd2cc2b7df34588be7869768213fd9fff diff --git a/modules/Test-META b/modules/Test::META -Subproject 498d80bf64af6fbecd6dde40406fbaf8c3e2672 +Subproject 498d80bf64af6fbecd6dde40406fbaf8c3e2672 diff --git a/modules/Test::Mock b/modules/Test::Mock new file mode 160000 +Subproject 1130427f4d9f3866fa39e113251bb142d7fa5cc diff --git a/modules/Test::Output b/modules/Test::Output new file mode 160000 +Subproject 16bafe1f6d0e5a83b73563d4afd8ced097f559e diff --git a/modules/test-util-serverport b/modules/Test::Util::ServerPort -Subproject 184ed7e575b48c4a1db50dae9bfb606a7de59ad +Subproject 184ed7e575b48c4a1db50dae9bfb606a7de59ad diff --git a/modules/perl6-Test-When b/modules/Test::When -Subproject a1a0040520911ed8d56e839e2e00d8ab9a0a24e +Subproject a1a0040520911ed8d56e839e2e00d8ab9a0a24e diff --git a/modules/perl6-Testo b/modules/Testo -Subproject d1134ec7c3b40baf766384d004fd9b379eac27c +Subproject d1134ec7c3b40baf766384d004fd9b379eac27c diff --git a/modules/URI b/modules/URI new file mode 160000 +Subproject abe8c9bb65947760cb656c6c154f466cd87f6e5 diff --git a/modules/xml-writer b/modules/XML::Writer -Subproject 4d30a9d8e06033ca97387971b653817becd5a75 +Subproject 4d30a9d8e06033ca97387971b653817becd5a75 diff --git a/modules/app-prove6 b/modules/app-prove6 deleted file mode 160000 -Subproject ace4c7c758084d5ae62519cc072f3b6937721d6 diff --git a/modules/datetime-parse b/modules/datetime-parse deleted file mode 160000 -Subproject ab2401b046dc9ea893f8e3282e497136c9399f0 diff --git a/modules/debugger-ui-commandline b/modules/debugger-ui-commandline deleted file mode 160000 -Subproject f81ab6323f1fb1051aa750e414c75797e6b1bb0 diff --git a/modules/doc b/modules/doc deleted file mode 160000 -Subproject 99c20ef5b400cdb1073fdcab2133f9cffcd8d2b diff --git a/modules/getopt-long6 b/modules/getopt-long6 deleted file mode 160000 -Subproject 6f6fb5e83916038ba36483c69fa0fc23bf6c43f diff --git a/modules/http-useragent b/modules/http-useragent deleted file mode 160000 -Subproject cfdfc48c55d312049f90f1db61042718c1de990 diff --git a/modules/json_fast b/modules/json_fast deleted file mode 160000 -Subproject 5ce76c039dc143fa9a068f1dfa47b42e5804682 diff --git a/modules/libdigest-perl6 b/modules/libdigest-perl6 deleted file mode 160000 -Subproject 39bb469a81485ede064de7c7aa9284d1c4b327c diff --git a/modules/oo-monitors b/modules/oo-monitors deleted file mode 160000 -Subproject 6dc1a363c7859b760bf973d0ada0773cfdb1435 diff --git a/modules/p6-file-directory-tree b/modules/p6-file-directory-tree deleted file mode 160000 -Subproject 25faef927c83eea1b688b5a324d5e11011f7305 diff --git a/modules/p6-pod-load b/modules/p6-pod-load deleted file mode 160000 -Subproject 5a1a2ffdf881bdb9c21ea8e42bb1ee2e211ac5c diff --git a/modules/p6doc b/modules/p6doc new file mode 160000 +Subproject ac9517314fb567898beaae24a88c831d7154dfb diff --git a/modules/perl6-Test-Output b/modules/perl6-Test-Output deleted file mode 160000 -Subproject 32f2a33cc94b1aa137fe30a1d881ad573652642 diff --git a/modules/perl6-encode b/modules/perl6-encode deleted file mode 160000 -Subproject 702214dcedd05ea62d815ffb4c287e1596cee4c diff --git a/modules/perl6-lwp-simple b/modules/perl6-lwp-simple deleted file mode 160000 -Subproject 46d3fdb698b5ec0cd819e533abf2e8d235f1876 diff --git a/modules/tap-harness6 b/modules/tap-harness6 deleted file mode 160000 -Subproject e1e1d221ed7e3d15d096ced64d1976f489a9369 diff --git a/modules/test-mock b/modules/test-mock deleted file mode 160000 -Subproject bfa37f639d42796fcd21ab477d294a054bf22a1 diff --git a/modules/uri b/modules/uri deleted file mode 160000 -Subproject c5f7d74feacb752e2dcfb07b17006e24fb47306 diff --git a/modules/zef b/modules/zef -Subproject a56b65a120d27e2dfb6c470e5f179993ef5c8c9 +Subproject 7bbc6638aa62fa5535aad77252f9a3bc61e87ce diff --git a/tools/build/Makefile.in b/tools/build/Makefile.in index 7152691..29d5071 100644 --- a/tools/build/Makefile.in +++ b/tools/build/Makefile.in @@ -3,7 +3,7 @@ MOAR_DIR = moarvm NQP_DIR = nqp RAKUDO_DIR = rakudo -STAR_VERSION = 2019.03 +STAR_VERSION = 2020.01 # install location PREFIX_DIR = @prefix@ @@ -67,12 +67,12 @@ modules-install-m: rakudo-install modules-test: @backend_modules_test@ verbose-modules-test: @backend_modules_test@ -modules-test-j: modules-install-j +modules-test-j: $(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES) verbose-modules-test-j: modules-install-j $(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES) -modules-test-m: modules-install-m +modules-test-m: $(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES) verbose-modules-test-m: modules-install-m $(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES) diff --git a/tools/build/module-install.pl b/tools/build/module-install.pl index 9f7e038..eadb99e 100644 --- a/tools/build/module-install.pl +++ b/tools/build/module-install.pl @@ -2,21 +2,37 @@ use warnings; use strict; + my $perl6bin = shift @ARGV; my $zefbin = shift @ARGV; +my $exit = 0; +my $path_sep = $^O eq 'MSWin32' ? '\\' : '/'; -my $exit = 0; +while (<>) { + # Skip comments + next if /^\s*(#|$)/; -my $path_sep = "/"; -$path_sep = "\\" if ( $^O eq 'MSWin32' ); + # Extract only the module name from the current line + my ($module) = /(\S+)/; -while (<>) { - next if /^\s*(#|$)/; - my ($module) = /(\S+)/; - $exit ||= system $perl6bin, $zefbin, - '--/build-depends', '--/test-depends', '--/depends', - '--/p6c', '--/metacpan', '--/cpan', - '--force', 'install', "./modules$path_sep$module"; + # Create the command list + my @cmd = ( + $perl6bin, + $zefbin, + '--/build-depends', + '--/depends', + '--/test', + '--/test-depends', + '--force', + 'install', + "./modules$path_sep$module" + ); + + # Show the command that's going to be ran, for debugging purposes + printf "@cmd\n"; + + # Actually run the command + $exit ||= system "@cmd"; } exit $exit; diff --git a/tools/build/modules-test.pl b/tools/build/modules-test.pl index 396f066..c4b9d00 100644 --- a/tools/build/modules-test.pl +++ b/tools/build/modules-test.pl @@ -1,5 +1,8 @@ #! perl +use warnings; +use strict; + use Cwd; use Getopt::Long; @@ -7,19 +10,52 @@ GetOptions('verbose' => \my $verbose); my $base = shift @ARGV; my $perl6 = shift @ARGV; +my @failures; while (<>) { - next if /^\s*(#|$)/; - my ($moduledir) = /(\S+)/; - print "Testing modules/$moduledir with $perl6...\n"; - if (-d "$base/modules/$moduledir/t") { - chdir("$base/modules/$moduledir"); - system('prove', $verbose ? '-v' : (), '-e', $perl6, '-r', 't'); - } - else { - print "...no t/ directory found.\n"; - } - print "\n"; + # Skip comments + next if /^\s*(#|$)/; + + # Extract only the module name from the current line + my ($moduledir) = /(\S+)/; + + if (! -d "$base/modules/$moduledir/t") { + print "[" . getcwd . "] ...no t/ directory found.\n"; + next; + } + + # Run the tests through prove + chdir("$base/modules/$moduledir"); + + my @cmd = ( + 'prove', + $verbose ? '-v' : (), + '-e', $perl6, + '-r', + 't', + ); + + # Show the command that's going to be ran, for debugging purposes + print "[" . getcwd . "] @cmd\n"; + + # Actually run the command + my $exit = system "@cmd"; + + # Exit early if any errors occurred + if ($exit) { + push @failures, $_; + } + + print "\n"; } -0; +# If we reach this, no errors have been found +if (@failures) { + print "The following modules failed their tests:\n"; + + foreach (@failures) { + print "- $_\n"; + } + + exit 1; +} diff --git a/tools/lib/NQP/Configure.pm b/tools/lib/NQP/Configure.pm index 2f67bf1..b63fffb 100644 --- a/tools/lib/NQP/Configure.pm +++ b/tools/lib/NQP/Configure.pm @@ -221,8 +221,7 @@ sub gen_nqp { my $sdkroot = $options{'sdkroot'} || ''; my $startdir = cwd(); - my $PARROT_REVISION = 'nqp/tools/build/PARROT_REVISION'; - my $MOAR_REVISION = 'nqp/tools/build/MOAR_REVISION'; + my $MOAR_REVISION = 'nqp/tools/templates/MOAR_REVISION'; my (%impls, %need); diff --git a/tools/star/Makefile b/tools/star/Makefile index 661b299..b2d4673 100644 --- a/tools/star/Makefile +++ b/tools/star/Makefile @@ -2,20 +2,23 @@ # eg. 2017.07 etc. # Occasionally (mis-)used to pull in fixes (see 'lastmin-fixes.txt') # eg. 2017.07-9-gc0abee7 etc. -RAKUDO_VER = 2019.03.1 -NQP_VER = 2019.03 -MOAR_VER = 2019.03 +RAKUDO_VER = 2020.01 +NQP_VER = 2020.01 +MOAR_VER = 2020.01.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) +RAKUDO_URL = https://github.com/rakudo/rakudo/releases/download/$(RAKUDO_VER)/$(RAKUDO_TGZ) RAKUDO_SRC = $(SRC_DIR)/$(RAKUDO_TGZ) NQP_TGZ = nqp-$(NQP_VER).tar.gz -NQP_URL = https://rakudo.perl6.org/downloads/nqp/$(NQP_TGZ) +NQP_URL = https://github.com/perl6/nqp/releases/download/$(NQP_VER)/$(NQP_TGZ) NQP_SRC = $(SRC_DIR)/$(NQP_TGZ) MOAR_TGZ = MoarVM-$(MOAR_VER).tar.gz MOAR_URL = https://www.moarvm.org/releases/$(MOAR_TGZ) @@ -26,29 +29,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 -xvzf $(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 -xvzf $(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 -xvzf $(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,26 +60,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; -f && 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 patch +tarball: manifest [ -n "$(VERSION)" ] || ( echo "\nTry '$(MAKE) release VERSION=yyyy.mm'\n\n"; exit 1 ) - [ -d $(STAR_REL) ] || ln -s . $(STAR_REL) - $(PREFIX) $(STAR_REL)/ MANIFEST | \ - $(TAR) -zcv -T - -f $(STAR_TGZ) - rm $(STAR_REL) + + 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)/." + + cd -- work && $(PREFIX) $(STAR_REL)/ "$(WORKDIR)/MANIFEST" \ + | $(TAR) -zc -T - -f "$(RELEASE_DIR)/$(STAR_TGZ)" release: tarball + +clean: + rm -fr work diff --git a/tools/star/release-guide.pod b/tools/star/release-guide.pod deleted file mode 100644 index 584ee17..0000000 --- a/tools/star/release-guide.pod +++ /dev/null @@ -1,350 +0,0 @@ -=head1 Guide to Rakudo Star releases - -Rakudo Star releases are based on Rakudo compiler releases. -Since some time is often needed for module updates and testing -after each Rakudo compiler release, the timing of Star releases -varies from one release to the next. - -Also, while the Rakudo compiler issues monthly releases, Star -releases are free to choose a longer release cycle. Star releases -are also free to choose older releases of the compiler, NQP, or -MoarVM. The goal is to balance end-user stability needs with -progress being made on the compiler, modules, and other runtime -components. Currently, Star is on a quarterly release cycle. - -=head2 Steps to create a release - -If this is your first time releasing, B<read the whole guide before -starting>. That way you can ask questions and clear up and confusions before -you're in the thick of it. - -If you have done this before, you might want to check for and read any changes -to this release guide since your last run. - -Any time this guide tells you to commit changes, you may also push them if you -wish to do so. Step 8 will make sure you do this regardless. - -=over 4 - -=item Step 0 - -Make sure you have a working C<perl6> binary in your C<$PATH>. Refer to -L<http://rakudo.org/how-to-get-rakudo/> for how to do that. The exact version -isn't very important at the moment, it just shouldn't be a year out of date. - -=item Step 1 - -Clone the git@github.com:rakudo/star repository. - - $ git clone git@github.com:rakudo/star - -If you already have a clone of rakudo/star, make sure it is in sync -with github: - - $ git checkout master - $ git pull origin master - $ git submodule sync - $ git submodule update --init --recursive - -Verify that - - $ git status - -reports a clean repository. - -=item Step 2 - -Change to the star repository directory and edit the first three -lines of F<tools/star/Makefile> to indicate the desired releases of -Rakudo, NQP, and MoarVM to use. - -Usually that means the last Rakudo release, the NQP version that is in the -released Rakudo's F<tools/build/NQP_REVISION> file, and the MoarVM version that -is in the F<tools/build/MOAR_REVISION> file that is included in the NQP -release. - - $ cd star - $ vi tools/star/Makefile - -=item Step 3 - -Run C<make -f tools/star/Makefile> to populate the star directory -with the needed tarballs and module repositories for building Rakudo Star: - - $ make -f tools/star/Makefile - -You may at times be prompted for your SSH key/pass combo. - -Assuming the Makefile ran successfully, you should now commit your changes. - - $ git commit tools - -=item Step 4 - -If there are any new modules to be added, use C<git submodule> to add -its repo to the modules/ directory. Also add the module directory -name to the C<modules/MODULES.txt> file. - - $ git submodule add git@github.com:user/acme-example modules/acme-example - $ echo acme-example >>modules/MODULES.txt - $ git commit . -m "Added acme-example to installed modules." - -=item Step 5 - -Verify that all of the git submodules are at the desired commit -for the Star release. To bring all modules up to the current -C<master> branch, one can do: - - # pull master in each submodule dir - $ git submodule foreach git pull origin master - -Create a temporary file as a basis for the module changelog to be -included in release announcement below: - - $ git diff --submodule=log > /tmp/mod.txt - -Then you may commit your update of the submodules: - - # commit submodules state to star repo - $ git commit modules - -=item Step 6 - -If one doesn't already exist, create a release announcement in -C<docs/announce/YYYY.MM.md>. You can often use the previous release's -file as a starting point, updating the release number, version -information, name, etc., as appropriate. Be sure to pay attention -to any changes listed in Rakudo's ChangeLog. - - $ vi docs/announce/YYYY.MM.md - $ git add docs/announce/YYYY.MM.md - $ git commit docs - -The module changelog temporary file above can be used to help with -the corresponding section in the announcement. - -At this point it is strongly advised that you push your changes so far, to get -feedback on your announcement while you do other steps. - - $ git push - -=item Step 7 - -Update the release number in the C<README> and C<Makefile.in> files. - - $ vi README tools/build/Makefile.in - $ git commit README tools/build/Makefile.in - -=item Step 8 - -Make sure any locally modified files have been pushed -back to github. - - $ git status - $ git push - -=item Step 9 - -Create a candidate release tarball: - - $ make -f tools/star/Makefile release VERSION=2012.08 - -This will create a tarball C<rakudo-star-2012.08.tar.gz> in the -current directory. - -=item Step 10 - -Unpack the tarball somewhere else, and do a test build/install: - - $ mkdir work - $ cd work - $ tar xvfz ../rakudo-star-2012.08.tar.gz - $ cd rakudo-star-2012.08 - $ perl Configure.pl --gen-moar - $ make install - $ make rakudo-test - $ make rakudo-spectest - $ make modules-test - -If there are failures in any of C<rakudo-test>, C<rakudo-spectest>, or -C<modules-test>, then do your best to fix them and return to step 8. - -STOP THE RELEASE PROCESS (i.e., do not issue a release) if there -are any errors that you're unable to fix. File issue tickets -(https://github.com/rakudo/star/issues) for failing tests -and report them to C<#perl6>. - -=item Step 11 - -Tag the release by its release month ("YYYY.MM"). - - $ git tag -s -a -m"tag release YYYY.MM" YYYY.MM # e.g. 2012.08 - $ git push --tags - -The C<-s> tells git to sign the release with your PGP/GPG key, so it will -likely ask you for the passphrase of your secret key. Note some versions of -git/gpg don't correctly prompt for passphrase or display a meaningful error -when it's absent. - -If you have no PGP key, you might need to -L<create one first|https://fedoraproject.org/wiki/Creating_GPG_Keys>. Should -that prove impossible, you can omit the C<-s> from the command line. - -Also sign the release tarball with GPG and a suitable key -eg. C<gpg --armor --detach-sig rakudo-star-2018.01.tar.gz> - -Generate a SHA256 sum eg. - - $ sha256sum rakudo-star-2018.01.tar.gz | cut -f1 -d" " > rakudo-star-2018.01.tar.gz.sha256.txt - -=item Step 12 - -Upload the release tarball to L<http://rakudo.org/downloads/star> and L<https://rakudo.perl6.org/downloads/star/>: - - $ scp rakudo-star-2012.08.tar.gz rakudo@rakudo.org:public_html/downloads/star - -Also upload the detached signature eg. C<rakudo-star-2018.01.tar.gz.asc> -and sha256 sum eg. C<rakudo-star-2018.01.tar.gz.sha256.txt> - -If you don't have permission to do this step, please ask one of the core devs -(pmichaud, jnthn, masak, PerlJam/perlpilot, tadzik, or moritz) on C<#perl6> to do -it for you. - -=item Step 13 - -Commit announcement to the rakudo.org repo automatically by running the following -command. You will need C<perl6> in the C<PATH> and to C<zef install WWW> if you don't -have it. - -You can also make and commit the post manually, but if you do, be sure -to add C<%% title:> and C<%% date:> metadate to the top of the file: - - cd $(mktemp -d) && - git clone git@github.com:perl6/rakudo.org/. && - ./push-latest-rakudo-star-announcement.p6 2018.01 - -You will also have to bump versions manually in C<templates/files.html.ep> in -the rakudo.org repo. - -Publicize the release in the appropriate places. These include: - -=over 4 - -=item * http://perl6.org/ - -=item * perl6-users@perl.org - -=item * perl6-language@perl.org - -=item * perl6-compiler@perl.org - -=item * http://en.wikipedia.org/wiki/Rakudo_Perl_6 (latest release date is mentioned in the main text) - -=item * http://en.wikipedia.org/wiki/Perl_6 - -=back - -Actively ask others to advertise the release as well. This includes their social -media accounts and blogs. Notable places include: - -=over 4 - -=item * L<http://blogs.perl.org/> - -=item * L<Perl 6 Facebook Page|https://www.facebook.com/groups/1595443877388632/> - -=item * Reddit: L<r/perl|https://www.reddit.com/r/perl/>, L<r/perl6|https://www.reddit.com/r/perl6/>, -and L<r/programming|https://www.reddit.com/r/programming/> - -=item * L<Hacker News|https://news.ycombinator.com/news> - -=item * L<Rakudo's Twitter account|https://twitter.com/rakudoperl> - -=back - -=item Step 14 - -Add this release and your name to the list of releases at the end of this -document (F<tools/star/release-guide.pod>). - - $ vim tools/star/release-guide.pod - $ git add tools/star/release-guide.pod - $ git commit -m 'note YYYY.MM release in release-guide.pod - -=item Step 15 - -You're done! Celebrate with the appropriate amount of fun. - -=back - -=head2 Star Releases - - Release Release Manager - ======= =============== - - 2010.07 pmichaud - 2010.08 pmichaud - 2010.09 pmichaud - 2010.10 pmichaud - 2010.11 pmichaud - 2010.12 pmichaud - - 2011.01 pmichaud - 2011.04 pmichaud - 2011.07 pmichaud - - 2012.01 jnthn - 2012.02 jnthn - 2012.04 moritz - 2012.05 moritz - 2012.06 moritz - 2012.07 pmichaud - 2012.08 pmichaud - 2012.09 pmichaud - 2012.10 jnthn - 2012.11 moritz - 2012.12 moritz - - 2013.01 moritz - 2013.02 moritz - 2013.05 pmichaud - 2013.08 moritz - 2013.09 moritz - 2013.10 lue - 2013.11 moritz - 2013.12 lue - - 2014.01 tadzik - 2014.03 FROGGS - 2014.04 jnthn - 2014.08 FROGGS - 2014.09 FROGGS - 2014.12 moritz - - 2015.01 moritz - 2015.02 moritz - 2015.03 moritz - 2015.06 FROGGS - 2015.07 moritz - 2015.09 moritz - 2015.11 moritz - - 2016.01 FROGGS - 2016.04 stmuk - 2016.07 stmuk - 2016.10 stmuk - 2016.11 stmuk - - 2017.01 stmuk - 2017.04 stmuk - 2017.07 stmuk - 2017.10 stmuk - - 2018.01 stmuk - 2018.04 stmuk - 2018.06 stmuk - 2018.10 stmuk - - 2019.03 hankache, clarkema - -=cut |