mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 18:50:48 +00:00
144 lines
6.3 KiB
Text
144 lines
6.3 KiB
Text
GStreamer Release Policies (or: why we should become a country and pass laws)
|
|
--------------------------
|
|
|
|
Development Period
|
|
------------------
|
|
Development period is marked by having a fourth (nano) version number of 1.
|
|
During development anything goes short of wiping the tree.
|
|
Just try doing a few basic things :
|
|
- make sure it builds for you !
|
|
- preferably, keep an anonymous checkout around as well so you can
|
|
immediately update and check if your changes work in a clean tree as well
|
|
|
|
Prerelease Period
|
|
-----------------
|
|
After a bit of development, people want a new release. This generally happens
|
|
when :
|
|
- core developers get anxious to apply massive changes to the core bound
|
|
to break everything
|
|
- a few important plugins decide, as if by magic, to work again (avi, mad, ...)
|
|
- thaytan or thomasvs get tired of being lazy.
|
|
|
|
Also, this should only be allowed after passing a few sanity checks :
|
|
- make distcheck should pass
|
|
- rpms should build
|
|
- FIXME: should debs be built here ? If so, how ?
|
|
|
|
At this time, we need to do a few prereleases for general checking by all
|
|
interested developers. The git modules that are in the process of being
|
|
released are usually frozen for commits during that time, until the final
|
|
release is made. We intentionally don't do releases in separate branches to
|
|
make sure everyone is focused on testing the code that is about to be released.
|
|
|
|
|
|
RELEASE PROCEDURE:
|
|
-----------------
|
|
|
|
- www/bin/new-release is a release helper script. It automates a lot of the
|
|
tedious work. Now releasing looks like this:
|
|
|
|
- before release:
|
|
- make sure all blocker bugs for that release are fixed or deferred
|
|
- make sure you have a local copy of all online files
|
|
- run 'make download-po' to make sure translations in CVS are up-to-date,
|
|
and then 'make update-po' in po/ (which will update the .pot template too
|
|
and merge the changes into the .po files)
|
|
- run 'make win32-update' where applicable
|
|
- Make one or more prereleases
|
|
- Make sure you've got the latest clean CVS of the module
|
|
- Run bin/data-get in www/ to sync data from website
|
|
- Bump the nano number to >= 2 (eg, first pre-release for
|
|
0.10.12 is 0.10.11.2)
|
|
- When releasing -base/-good/-ugly/-bad/gnonlin, make sure GST_REQ and
|
|
GST_PBREQ are up-to-date. In particular, keep GST_REQ of the
|
|
to-be-released -base module in sync with the core version that is to
|
|
be released at the same time
|
|
- Re-autogen if not in maintainer-mode (which you should be)
|
|
- Update the changelog
|
|
python common/gen-changelog.py > ChangeLog
|
|
- Check (and fix if necessary) make distcheck
|
|
- run 'make release' to build the tarballs
|
|
- copy tarballs+md5 sums to the data/src/$module/pre/ dir
|
|
- Run bin/data-put in www/ to sync the new tarballs to the website
|
|
- Announce the availability of the new tarballs
|
|
- Tell the translation project by sending an email to
|
|
coordinator@translationproject.org, eg:
|
|
Subject: gst-plugins-bad-0.10.5.2.pot available
|
|
Tarball is at http://gstreamer.freedesktop.org/src/gst-plugins-bad/pre/gst-plugins-bad-0.10.5.2.tar.bz2
|
|
|
|
- prepare the release:
|
|
- Make sure your www is up to date: Run bin/data-get in www/
|
|
- Update the doap file to insert the new release info
|
|
- Prepare the following in a text file for copy'n'paste purposes:
|
|
- list of noteworthy changes / new features, check changelog or shortlog:
|
|
- git log 1.0.98..
|
|
- git shortlog 1.0.98..
|
|
- wrap like this:
|
|
<feature>added this and that</feature>
|
|
<feature>foodemux now supports seek in twilight mode</feature>
|
|
- list of API additions, two useful sources:
|
|
- git diff 1.0.98.. win32/common/*.def \
|
|
| grep "^+[^+]" | sed -e 's/[^a-z_]*/ <item>/' -e 's%$%</item>%'
|
|
- git log 1.0.98.. --grep=API
|
|
- wrap like this:
|
|
<item>gst_new_func()</item>
|
|
<item>gst_new_func_full()</item>
|
|
- list of recently deprecated API, same as above:
|
|
<item>gst_broken_func()</item>
|
|
- in www, run bin/new-release (module) (version) (checkoutdir) (release name)
|
|
- updates git
|
|
- allows you to update versioning in configure.ac (don't forget to bump
|
|
core/base requirements from prereleases to released version if needed)
|
|
- rebuilds
|
|
- updates ChangeLog
|
|
- adds a new releases/module/version.xml file and lets you edit
|
|
--> here you add/fix up the features (from ChangeLog) and check
|
|
contributors
|
|
- allows you to update NEWS file with snippets from RELEASE
|
|
--> copy stuff
|
|
- rebuilds docs for plugins
|
|
- rolls release tarballs and puts them in the local www/data tree
|
|
- uploads docs to website
|
|
- commits changes to po files
|
|
- shows you a diff for evaluation
|
|
|
|
- build packages to test
|
|
|
|
- release:
|
|
- 'git commit -a' in the tree
|
|
- tag tree. Tags should be GPG signed.
|
|
Example: creating a 1.0.42 tag:
|
|
Signed : git tag -s -m 'Release 1.0.42' 1.0.42 (may prompt for passphrase)
|
|
Unsigned : git tag -a -m 'Release 1.0.42' 1.0.42
|
|
Check: 'git describe' should show '1.0.42' and 'git show 1.0.42' should
|
|
show the PGP signature attached to the tag if it was signed.
|
|
- bump nano number in configure.ac, commit
|
|
- sync source and packages to website
|
|
+ run /bin/data-put in www
|
|
- change versions in www/src/htdocs/entities.gst
|
|
- add entry on website
|
|
+ Edit src/htdocs/news/news.xml (in a local checkout of the www git module)
|
|
and add a new item at the bottom.
|
|
- commit additions and push changes to the server
|
|
- run bin/www-update in your www git module checkout. This will ssh into
|
|
the server and update the website based on the changes you just pushed.
|
|
This may require an entry for gstreamer.freedesktop.org in your
|
|
~/.ssh/config (e.g. in case your local username is different from your
|
|
freedesktop.org username)
|
|
- add versions and milestones in bugzilla
|
|
- upload new core, -base and -good tarballs to gnome ftp
|
|
+ e.g:
|
|
scp gstreamer-1.0.42.tar.xz master.gnome.org:
|
|
ssh master.gnome.org
|
|
ftpadmin install gstreamer-1.0.42.tar.xz
|
|
|
|
- Send release announcements to:
|
|
gstreamer-devel@lists.freedesktop.org
|
|
gstreamer-announce@lists.freedesktop.org
|
|
kde-multimedia@kde.org
|
|
gnome-multimedia@gnome.org
|
|
- Update freshmeat with new releases (get Uraeus to do it)
|
|
|
|
- push release commit(s) to git repo
|
|
- push new tag to git repo: git push origin tag 1.0.42
|
|
|