aboutsummaryrefslogtreecommitdiff
path: root/tools/star/release-guide.pod
blob: 241b64341d4b17b49f88801ae5c0e3581fe5bfbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
=head1 release_guide.pod - 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, and/or
Parrot.  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 monthly release cycle; we 
expect to slow down to quarterly releases again sometime in 2013.

=head2 Steps to create a release

=over 4

=item 1.

Clone the git@github.com:rakudo/star repository.

  $ git clone git@github.com:rakudo/star

=item 2.

Change to the star repository directory, and edit the first three
lines of tools/star/Makefile to indicate the desired releases of
Rakudo, NQP, and Parrot to use.  Also change PARROT_REL to be
"supported" or "devel" depending on the type of Parrot release.

  $ cd star
  $ vi tools/star/Makefile

=item 3.

Run "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

=item 4.

If there are any new modules to be added, use "git submodule" to add 
its repo to the modules/ directory.  Also add the module directory 
name to the 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 5.

Verify that all of the git submodules are at the desired commit
for the Star release.  (TODO:  document how to do this.)

=item 6.

If one doesn't already exist, create a release announcement in
docs/announce/YYYY.MM .  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
  $ git add docs/announce/YYYY.MM
  $ git commit docs

=item 7.

Update the release number in the README file.

  $ vi README
  $ git commit README

=item 8.

Make sure any locally modified files have been pushed
back to github.

  $ git status
  $ git push

=item 9.

Create a candidate release tarball:

  $ make -f tools/star/Makefile release VERSION=2012.08

This will create a tarball rakudo-star-2012.08.tar.gz in the
current directory.

=item 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-parrot
  $ make install
  $ make rakudo-test
  $ make rakudo-spectest
  $ make modules-test

If anything is wrong, do your best to fix it and then return to
step 8 above.

=item 11.

Tag the release by its release month ("YYYY.MM").

  $ git tag -a -m"tag release YYYY.MM" YYYY.MM    # e.g. 2012.08
  $ git push --tags

=item 12.

Upload the release tarball to github's download area at
L<http://github.com/rakudo/star/downloads>.

=item 13.

Publicize the release in the appropriate places.  These include:
    * rakudo.org
    * perl6-users@perl.org, perl6-language@perl.org, perl6-compiler@perl.org,
      parrot-users@perl.org

=item 14.

You're done!  Celebrate with the appropriate amount of fun.

=back

=cut