summaryrefslogtreecommitdiff
path: root/src/ReleaseProcedure
blob: d47539f3ad5ef2daa703a92a6f4d7e0ec904727e (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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
Procedure for making a GF release:

1. Make sure everything that should be in the release has been
   checked in.

2. Go to the src/ dir.

   $ cd src

3. Edit configure.ac to set the right version number 
   (the second argument to the AC_INIT macro).

4. Edit gf.spec to set the version and release numbers 
   (change %define version and %define release).

5. Commit configure.ac and gf.spec:

   $ darcs record -m 'Updated version numbers.' configure.ac gf.spec

6. Run autoconf to generate configure with the right version number:

   $ autoconf

7. Go back to the root of the tree.

   $ cd ..

8. Tag the release. (X_X should be replaced by the version number, with
   _ instead of ., e.g. 2_0)

   $ darcs tag -m RELEASE-X_X

9. Push the changes that you made for the release to the main repo:

   $ darcs push

10. Build a source package:

   $ cd src
   $ ./configure
   $ make dist

11. (Only if releasing a new grammars distribution)
    Build a grammar tarball:

   $ cd src
   $ ./configure && make grammar-dist

12. Build an x86/linux RPM (should be done on a Mandrake Linux box):

    Setup for building RPMs (first time only):

    - Make sure that you have the directories neccessary to build
      RPMs:
      
      $ mkdir -p ~/rpm/{BUILD,RPMS/i586,RPMS/noarch,SOURCES,SRPMS,SPECS,tmp}

    - Create ~/.rpmrc with the following contents:

buildarchtranslate: i386: i586
buildarchtranslate: i486: i586
buildarchtranslate: i586: i586
buildarchtranslate: i686: i586

    - Create ~/.rpmmacros with the following contents:

%_topdir        %(echo ${HOME}/rpm)
%_tmppath       %{_topdir}/tmp

%packager       Your Name <yourusername@cs.chalmers.se>

    Build the RPM:

   $ cd src 
   $ ./configure && make rpm

13. Build a generic binary x86/linux package (should be done on a Linux box,
    e.g. banded.medic.chalmers.se):

   $ cd src
   $ ./configure --host=i386-pc-linux-gnu && make binary-dist

14. Build a generic binary sparc/solaris package (should be done 
    on a Solaris box, e.g. remote1.cs.chalmers.se):

   $ cd src
   $ ./configure --host=sparc-sun-solaris2 && gmake binary-dist

15. Build a Mac OS X package (should be done on a Mac OS X box, 
    e.g. csmisc99.cs.chalmers.se):

    $ cd src
    $ ./configure && make binary-dist
    
    Note that to run GHC-compiled binaries on OS X, you need
    a "Haskell Support Framework". This should be available 
    separately from the GF download page. 
    
    TODO: Use OS X PackageMaker to build  a .pkg-file which can
    be installed using the standard OS X Installer program. 

16. Build a binary Cygwin package (should be done on a Windows
    machine with Cygwin):

    $ cd src
    $ ./configure && make binary-dist

17. Build a Windows MSI package (FIXME: This doesn't work right,
    pathnames with backslashes and spaces are not handled 
    correctly in Windows. We only release a binary tarball
    for Cygwin right now.):

    $ cd src
    $ ./configure && make all windows-msi

18. Add new GF package release to SourceForge:

    - Project page -> Admin -> File releases -> Add release (for the
      GF package)

    - New release name: X.X (just the version number, e.g. 2.2)

    - Paste in release notes

    - Upload files using anonymous FTP to upload.sourceforge.net 
      in the incoming directory.

    - Add the files to the release and set the processor 
      and file type for each file (remember to press 
      Update/Refresh for each file):
      * x86 rpm -> i386/.rpm
      * source rpm -> Any/Source .rpm
      * x86 binary tarball -> i386/.gz
      * sparc binary tarball -> Sparc/.gz
      * source package -> Any/Source .gz

19. Add new GF-editor release. Repeat the steps above, but
    with GF-editor:

     - Add files and set properties:

      * editor rpm -> i386/.rpm (not really true, but I haven't
        figured out how to make noarch rpms from the same spec as 
	arch-specific ones)

20. (Only if releasing a new grammars distribution)
    Add new GF-grammars release. Repeat the steps above, but with
    GF-grammars:

      - Add files and set properties:

      * grammar tarball -> Platform independent/Source .gz

21. Update website.

22. Party!