summaryrefslogtreecommitdiff
path: root/release.txt
blob: 6f9aec887aa078f37e399a57aa7b48571f5f9ee0 (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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
TODO
====

@@ Need to test upgradability via bpkg (create config with previous version
   of toolchain, upgrade).

@@ Looks like we need a public staging host.
@@ Local Clang test is broken and disabled, using FreeBSD for Clang testing


Notes
====

- Be very careful with submodules if fixing anything, remember to update
  build2-toolchain.


Setup
=====

- Make symlinks to development b, bpkg in /usr/local/bin/, used as the latest
  toolchain.

- Boot cppget1, freebsd VMs, make sure data/time is correct.

- Set passwordless sudo, logins to freebsd, cppget1, rbook (Mac OS)

  For Mac OS:
    echo "boris ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers
    #echo "192.168.111.103 cppget1 pkg.cppget1" >>/etc/hosts
    #echo "192.168.0.19 protem" >>/etc/hosts
    curl --resolve 'pkg.cppget1:8080:192.168.0.19' http://pkg.cppget1:8080/1/
    iptables -t nat -A PREROUTING -d 192.168.0.19 -p tcp --dport 8080 -j DNAT --to-destination 192.168.111.103:80

- Copy prerequisites into build2-X.Y/, generate sha256 sums in BINARY (-b)

- Build new prerequisites (if any) on local, freebsd (install to /usr/local).


Prelude
=======

- Review '@@' items [note: etc, private excluded]

  etc/review | less -R

- Increment version to final.

  * Need to update versions/dates for man generation.

- Close schema versions, review schema changlog difference from previous
  release (tag) for any data migration that may be required (@@ Would also
  need to test this).

- Need to update submodules? Remember to push first.

- Need to regenerate ODB files, CLI documentation, in build2-toolchin!

- Update everything:

  b libbutl/ build2/ libbpkg/ bpkg/ brep/ build2-toolchain-default/

- Run tests for each project:

  * b 'test(libbutl/ libbpkg/)'

  * Manually in build2/

  * Manually in bpkg/; test valgrind, publish, test remote with -v, FreeBSD
    tools:

    ./test.sh -v --remote --fetch fetch --fetch-option --no-verify-peer \
      --tar bsdtar --sha256 sha256-freebsd

  * Update hello repository:

    cd hello
    for d in hello libhello libprint libformat repository; do \
      git -C $d status; done
    ./release -a

  * Update cppget repository (existing packages, not publishing yet):

    cd cppget.org
    git -C repository status
    ./update repository/1/

    This might not work in the early stage (backwards-incompatible)

    ./test -c cxx -c config.cxx.loptions=-L/usr/local/lib \
      -c config.cxx.poptions="-I/usr/include/apache2 -I/usr/include/apr-1.0" \
      repository/1/

  * Test dev integration of brep/ on hello and cppget repos

    First check if Apache2 configuration needs updating (INSTALL-DEV). Then
    from build2/ work root:

    # This will have broken links since we are not running it as /pkg/hello.
    #
    brep/migrate/brep-migrate --recreate
    brep/load/brep-load hello/brep-loader-home.conf
    sudo /etc/init.d/apache2 restart

    brep/migrate/brep-migrate --recreate
    brep/load/brep-load cppget.org/brep-loader-home.conf
    sudo /etc/init.d/apache2 restart

Procession
==========

- Generate distribution (use -t for toolchain-only, without brep)

  etc/dist 2>&1 | tee dist.log

- Stage packages to cppget1 host

  etc/stage

- Determine the earliest supported toolchain (see requires: in manifests),
  update etc/test

- Publish hello repository [@@ Ideally we would want to stage it. Perhaps
  on cppget1?]

- Test Intro steps:

  etc/intro https://build2.org/pkg/1/hello/

- Test

  etc/test 2>&1 | tee test.log
  grep -i warning test.log

- Upgrade brep on cppget1 (using pkg.cppget1), verify works

- Publish to production (build2.org/cppget.org)

  etc/publish

- Test production and save a copy of toolchain in etc1/install/X.Y.Z

  etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \
    https://download.build2.org/0.Y/build2-toolchain-0.2.0.tar.gz \
    https://pkg.cppget.org/1/alpha

etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \
    https://download.build2.org/0.2/build2-toolchain-0.2.0.tar.gz \
    https://pkg.cppget.org/1/alpha

- Upgrade brep on cppget.org (using pkg.cppget.org), verify works

- Tag (review tag_modules)

  etc/tag
  ./push.sh

- Commit and push cppget.org, hello git repositories

Release
=======

cat `ls -1 *.sha256`

Postlude
========

- Need to regenerate/republish hello/ repository?

- Increment and open schema versions. Maybe not. Maybe we should only do that
  when there is a model change.

- Increment project versions to alpha1