Difference between revisions of "Creating Inkscape distributions"
(Removed spam) |
|||
(71 intermediate revisions by 16 users not shown) | |||
Line 1: | Line 1: | ||
{{Other languages|en=Creating Inkscape distributions}} | |||
== Creating Dists of Inkscape == | == Creating Dists of Inkscape == | ||
Those who wish to produce packaged releases of inkscape are welcome to do so. | Those who wish to produce packaged releases of inkscape are welcome to do so. | ||
If it is packages changes that you've made to the official release, please select a | If it is packages changes that you've made to the official release, please select a version name that distinguishes it from the official version, to avoid confusion. For example, “inkscape-0.35-johndoe.tar.gz”. Please consider distributing your changes as a patch rather than as a full distribution, as patches tend to be easier to maintain. | ||
version name that distinguishes it from the official version, to avoid confusion. For | |||
example, | |||
as a patch rather than as a full distribution, as patches tend to be easier to | |||
maintain. | |||
Inkscape's release process works like this: | Inkscape's release process works like this: | ||
# | # Chill - Wrap up development work | ||
# Feature Freeze | # Frost - Feature work should be complete. Bug Hunt | ||
# Feature Freeze - Critical bug fixing | |||
# Hard Freeze - Two freeze wardens are named. All development must be done as patches submitted to the freeze wardens for review and integration. | # Hard Freeze - Two freeze wardens are named. All development must be done as patches submitted to the freeze wardens for review and integration. | ||
# Branch - The codebase is tagged and branched. Final release tarball is posted. The codebase is returned to regular open development. | # Branch - The codebase is tagged and branched. Final release tarball is posted. The codebase is returned to regular open development. | ||
Line 17: | Line 16: | ||
# Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites. Our Freshmeat record is updated. | # Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites. Our Freshmeat record is updated. | ||
=== | === Pre-releases === | ||
Prior to the release we'll make a series of pre-releases, which give packagers some practice and provide testers and translators with precompiled binaries to do their work with. This generally follows the regular release process (since it's essentially a dry-run of the release), with a few exceptions. The process is as follows: | |||
ON HEAD: | |||
- | # Update your git branch to latest, and check that Inkscape configures, builds, and runs | ||
# Set the pre-release version number (see below) to <major>.<minor>pre<prerelease>. E.g. 0.91pre2 | |||
# Create a source tarball package (see below) | |||
=== Creating the Official Release Package === | |||
At some point prior to the final release, you should establish a release branch, named in the form RELEASE_<major>_<minor>_BRANCH. For example, 0.38 should have a branch called RELEASE_0_38_BRANCH. Minor fixes and code review can then be performed on that branch before the final release; it will also be used for making future point releases. | |||
To create the release branch, do the following: | |||
<pre> | |||
git branch RELEASE_0_38_BRANCH | |||
git push | |||
</pre> | |||
To check out this branch: | |||
<pre> | |||
git checkout RELEASE_0_38_BRANCH | |||
</pre> | |||
After establishing the release branch, set the Inkscape version number in trunk to reflect the new future version, 0.91+devel. | |||
Once the release is deemed ready a distribution tarball should be created as below. | |||
On the release branch (NOT IN TRUNK): | |||
# Set the official release version number (see below) to <major>.<minor> (e.g., 0.91) or <major>.<minor>.0 (e.g., 0.91.0) | |||
# Create a source tarball package (see below) | |||
# GPG sign the source tarball package (see below) | |||
=== | === Setting the Inkscape version number === | ||
Set the version name and number in CMakeList.txt. For example: | |||
set(INKSCAPE_VERSION_MAJOR 0) | |||
set(INKSCAPE_VERSION_MINOR 92) | |||
set(INKSCAPE_VERSION_PATCH 1) | |||
set(INKSCAPE_VERSION_SUFFIX "pre0") | |||
=== Update the translation files === | |||
This especially must be done when declaring string freeze. | |||
* Run "cd share && make; cd .." to extract needed strings from content files | |||
* Run "cd po && make update-po; cd .." to update the translation files. | |||
* Finally, run "bzr commit -m'update translations'" to commit these changes as well. | |||
=== Creating a source tarball package === | |||
* | * Run `perl packaging/mkNEWS 0.92 > NEWS` to add the release notes into the NEWS file in the release branch. This command requires perl and w3m. Don't forget to replace 0.91 with the correct version number. The NEWS file may need some manual cleanup, so do a quick review of it. | ||
* | * mkdir build; cd build; cmake ..; make -j4 | ||
* Run "git status" to check for anything strange (e.g. source files accidentally added or removed) | |||
* Run "git commit -am 'Update for ${VERSION} release'" to commit the changed CMakeLists.txt and any other files | |||
* Tag the release in git "git tag. Release tags should be in the form INKSCAPE_<major>_<minor>_<point>. A non-point-release like 0.91 would get the tag INKSCAPE_0_91_0, 0.91.1 would get the tag INKSCAPE_0_91_1, and so on. Pre-releases are tagged like INKSCAPE_0_92_PRE3 and INKSCAPE_0_92_2_PRE0. | |||
* Run "make dist" | |||
** This should produce inkscape-${VERSION}.tar.bz2 in the build directory | |||
** Verify the cmake output shows WITH_PROFILING and all WITH_*_EXPERIMENTAL tags are OFF | |||
** Verify CMAKE_BUILD_TYPE is set as 'Release' | |||
** Run "tar -C /tmp -xjf inkscape-${VERSION}.tar.bz2" and verify the contents at /tmp/inkscape-${VERSION}/ are as you expect | |||
* Modify CMakeScripts/inkscape-version.cmake to reset INKSCAPE_REVISION to "unknown" [TODO: Replace this substitution with gitattributes] | |||
* git push | |||
* git push origin INKSCAPE_0_92_1_PRE0 | |||
* GPG sign the packages (see below) | |||
* Upload the package and sig to the website. (see below) | |||
=== GPG signing Tarballs === | === GPG signing Tarballs === | ||
Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing | Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing “The Right Thing”. md5sums are not foolproof. | ||
* To create a gpg signed tarball: | * To create a gpg signed tarball: | ||
Line 78: | Line 96: | ||
* To verify : | * To verify : | ||
<pre>$gpg --verify ./tarball. | <pre>$gpg --verify ./tarball.sig ./tarball.tar.gz</pre> | ||
Of course, this step doesn't mean much in practice unless people have a trust path to your key. Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers). | Of course, this step doesn't mean much in practice unless people have a trust path to your key. Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers). | ||
Public keys for sigs should be posted to Inkscape's download page, http://inkscape.org/en/download/source/ | |||
=== | === Uploading packages to the website === | ||
Releasing on inkscape.org: | |||
1. First time setup | |||
* Make sure you have a user account on inkscape.org - Go to https://inkscape.org and look in the top right of the page and note your logged in status, use the links provided in the drop down to log in or register an account. | |||
* Make sure that your account has a big enough quota - Go to https://inkscape.org/user/ and hover over the "Upload Quota" bar, you will only see 10MB if you are a normal user at this time. If you do not see a 2GB quota / are not seeing the 'Uploader' team in your team list, then you need to contact a website admin to put you into the releases group with the larger quota. | |||
that | * Make sure you have a public gpg key recorded - Go to https://inkscape.org/user/edit/ and fill in the right boxes, the GPG Public Key box is expecting a pasted public key (not private key!) and hit submit when done. | ||
2. Make a folder for your releases in your 'InkSpace' - Go to https://inkscape.org/gallery/new/ and fill in the name of the folder you want to use, for example "0.92pre2". Set the group to "Developer" to allow other packagers to upload into it, and the category to "Inkscape Package". | |||
/ | |||
of the | |||
. | 3. Exit this view, by going back to My Galleries (via the resource icon at top right of the screen). Navigate to the folder you just created (it'll be under the Galleries listing on the lower right). This should show the information about the gallery you created, along with a blue Submit Resource button. Click on that button to get to the Upload New Resource dialog for your gallery. | ||
* Ignore 'External Link' | |||
* Going into the editor section you should be able to fill in the title for the released file. E.g. "Inkscape 0.92pre2 Source Tarball" | |||
* Select 'Inkscape Package' from the category drop down. | |||
* Upload the gpg sig file using the 'Choose File' button under Signature/Checksum. | |||
* Select 'GPLv2' (or 'GPLv3' if appropriate) from the Licenses drop down. | |||
* Check 'Mirror' checkbox (optional; not used presently) | |||
* Submit this form. | |||
5. Verify and copy link - If everything's gone well you should now see your released file with a blue ribbon icon indicating the gpg signature has been verified against your account public key. | |||
* Download the release by clicking on the down-arrow icon. Confirm it's the file you intended. | |||
* Copy this download link. | |||
6. Link from the downloads page. | |||
* For this step you will need CMS editor access or pass this task onto a website editor and/or translator. | |||
* Go to the Source download page and click edit | |||
* In the appropriate section for the download link, insert a 'Link' CMS Plugin | |||
* Edit the downloads pages for the right OS and update with the right version, release and other details as you would want it to be presented to users. Add the copied link into the right place. | |||
* Save /and/ then hit the blue publish button. | |||
Congratulations, you've uploaded, released and published your release file. | |||
=== Update Release Data in Launchpad === | |||
The release packages are also uploaded at launchpad.net by the Inkscape Launchpad Admins. | |||
* From https://launchpad.net/inkscape, under Series and Milestones click the appropriate release series (e.g. 0.91.x) | |||
* Change the development branch from Pre-release Freeze (or whatever) to Current Stable Release | |||
* Make sure there is an existing Milestone entry under Milestones and releases for this release number; if not, add it | |||
* Click on 'Release now' to set a release date. Paste in the Informal Release Announcement to Release Notes, and the NEWS file as ChangeLog. | |||
* Click on 'Add download file' to add the source tarballs and signatures. Set their Description to "Inkscape Source Package (gz)", etc. | |||
* Set the previous Current Stable Release to Obsolete (or Supported if there are any further plans for point releases.) | |||
=== Creating a Windows Distribution with Installer === | |||
See [[Compiling Inkscape on Windows]], specifically the section on [[Compiling Inkscape on Windows#Creating an installer|Creating an installer]]. | |||
=== Creating a Debian .deb === | |||
The article [[CompilingDebian]] provides a makefile to download a tarball and build a debian package therefrom. | |||
The | |||
Line 241: | Line 162: | ||
If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list. This is done by a list admin such as Bryce Harrington. | If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list. This is done by a list admin such as Bryce Harrington. | ||
'''[AnnouncingReleases | '''[[AnnouncingReleases]]''' - Keep an eye out for other places we could announce such as distros or graphics-related sites (not only Linux-centric!). | ||
=== Updating Website Collateral === | === Updating Website Collateral === | ||
When a new release is cut, there are several pieces of info that need to be added to the website: | When a new release is cut, there are several pieces of info that need to be added to the website: | ||
Line 254: | Line 172: | ||
* Review/revise Roadmap | * Review/revise Roadmap | ||
* Add or revise Screenshots (if appropriate) | * Add or revise Screenshots (if appropriate) | ||
* Add the manpage for the release | * doc directory: Add the manpage for the release, update doc/keys.html file, and change the corresponding version number(s) in doc/index.php. | ||
** From shell. | ** From the shell on inkscape.org, cd to /home/inkscape/inkscape_web and run the command “(cd ../inkscape; svn update; chmod g+w -R * 2>/dev/null); pod2html --cachedir=/tmp --infile=../inkscape/inkscape.pod --outfile=doc/inkscape-man.html”. | ||
* | * Review/revise links to keys.html | ||
[[Category:Help Wanted]] |
Latest revision as of 10:33, 7 August 2017
Other languages: العربية Català Česky Deutsch English Español Français Italiano 日本語 한국어 Polski Português Português do Brasil Русский Slovenčina 中文
Creating Dists of Inkscape
Those who wish to produce packaged releases of inkscape are welcome to do so. If it is packages changes that you've made to the official release, please select a version name that distinguishes it from the official version, to avoid confusion. For example, “inkscape-0.35-johndoe.tar.gz”. Please consider distributing your changes as a patch rather than as a full distribution, as patches tend to be easier to maintain.
Inkscape's release process works like this:
- Chill - Wrap up development work
- Frost - Feature work should be complete. Bug Hunt
- Feature Freeze - Critical bug fixing
- Hard Freeze - Two freeze wardens are named. All development must be done as patches submitted to the freeze wardens for review and integration.
- Branch - The codebase is tagged and branched. Final release tarball is posted. The codebase is returned to regular open development.
- Packaging - Three days are allowed for creating release dists (rpm's, deb's, exe's, and autopackages).
- Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites. Our Freshmeat record is updated.
Pre-releases
Prior to the release we'll make a series of pre-releases, which give packagers some practice and provide testers and translators with precompiled binaries to do their work with. This generally follows the regular release process (since it's essentially a dry-run of the release), with a few exceptions. The process is as follows:
ON HEAD:
- Update your git branch to latest, and check that Inkscape configures, builds, and runs
- Set the pre-release version number (see below) to <major>.<minor>pre<prerelease>. E.g. 0.91pre2
- Create a source tarball package (see below)
Creating the Official Release Package
At some point prior to the final release, you should establish a release branch, named in the form RELEASE_<major>_<minor>_BRANCH. For example, 0.38 should have a branch called RELEASE_0_38_BRANCH. Minor fixes and code review can then be performed on that branch before the final release; it will also be used for making future point releases.
To create the release branch, do the following:
git branch RELEASE_0_38_BRANCH git push
To check out this branch:
git checkout RELEASE_0_38_BRANCH
After establishing the release branch, set the Inkscape version number in trunk to reflect the new future version, 0.91+devel.
Once the release is deemed ready a distribution tarball should be created as below.
On the release branch (NOT IN TRUNK):
- Set the official release version number (see below) to <major>.<minor> (e.g., 0.91) or <major>.<minor>.0 (e.g., 0.91.0)
- Create a source tarball package (see below)
- GPG sign the source tarball package (see below)
Setting the Inkscape version number
Set the version name and number in CMakeList.txt. For example:
set(INKSCAPE_VERSION_MAJOR 0) set(INKSCAPE_VERSION_MINOR 92) set(INKSCAPE_VERSION_PATCH 1) set(INKSCAPE_VERSION_SUFFIX "pre0")
Update the translation files
This especially must be done when declaring string freeze.
- Run "cd share && make; cd .." to extract needed strings from content files
- Run "cd po && make update-po; cd .." to update the translation files.
- Finally, run "bzr commit -m'update translations'" to commit these changes as well.
Creating a source tarball package
- Run `perl packaging/mkNEWS 0.92 > NEWS` to add the release notes into the NEWS file in the release branch. This command requires perl and w3m. Don't forget to replace 0.91 with the correct version number. The NEWS file may need some manual cleanup, so do a quick review of it.
- mkdir build; cd build; cmake ..; make -j4
- Run "git status" to check for anything strange (e.g. source files accidentally added or removed)
- Run "git commit -am 'Update for ${VERSION} release'" to commit the changed CMakeLists.txt and any other files
- Tag the release in git "git tag. Release tags should be in the form INKSCAPE_<major>_<minor>_<point>. A non-point-release like 0.91 would get the tag INKSCAPE_0_91_0, 0.91.1 would get the tag INKSCAPE_0_91_1, and so on. Pre-releases are tagged like INKSCAPE_0_92_PRE3 and INKSCAPE_0_92_2_PRE0.
- Run "make dist"
- This should produce inkscape-${VERSION}.tar.bz2 in the build directory
- Verify the cmake output shows WITH_PROFILING and all WITH_*_EXPERIMENTAL tags are OFF
- Verify CMAKE_BUILD_TYPE is set as 'Release'
- Run "tar -C /tmp -xjf inkscape-${VERSION}.tar.bz2" and verify the contents at /tmp/inkscape-${VERSION}/ are as you expect
- Modify CMakeScripts/inkscape-version.cmake to reset INKSCAPE_REVISION to "unknown" [TODO: Replace this substitution with gitattributes]
- git push
- git push origin INKSCAPE_0_92_1_PRE0
- GPG sign the packages (see below)
- Upload the package and sig to the website. (see below)
GPG signing Tarballs
Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing “The Right Thing”. md5sums are not foolproof.
- To create a gpg signed tarball:
$gpg -u packager@foo.net --armor --output tarball.sig --detach-sig tarball.tar.gz
- To verify :
$gpg --verify ./tarball.sig ./tarball.tar.gz
Of course, this step doesn't mean much in practice unless people have a trust path to your key. Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers).
Public keys for sigs should be posted to Inkscape's download page, http://inkscape.org/en/download/source/
Uploading packages to the website
Releasing on inkscape.org:
1. First time setup
- Make sure you have a user account on inkscape.org - Go to https://inkscape.org and look in the top right of the page and note your logged in status, use the links provided in the drop down to log in or register an account.
- Make sure that your account has a big enough quota - Go to https://inkscape.org/user/ and hover over the "Upload Quota" bar, you will only see 10MB if you are a normal user at this time. If you do not see a 2GB quota / are not seeing the 'Uploader' team in your team list, then you need to contact a website admin to put you into the releases group with the larger quota.
- Make sure you have a public gpg key recorded - Go to https://inkscape.org/user/edit/ and fill in the right boxes, the GPG Public Key box is expecting a pasted public key (not private key!) and hit submit when done.
2. Make a folder for your releases in your 'InkSpace' - Go to https://inkscape.org/gallery/new/ and fill in the name of the folder you want to use, for example "0.92pre2". Set the group to "Developer" to allow other packagers to upload into it, and the category to "Inkscape Package".
3. Exit this view, by going back to My Galleries (via the resource icon at top right of the screen). Navigate to the folder you just created (it'll be under the Galleries listing on the lower right). This should show the information about the gallery you created, along with a blue Submit Resource button. Click on that button to get to the Upload New Resource dialog for your gallery.
- Ignore 'External Link'
- Going into the editor section you should be able to fill in the title for the released file. E.g. "Inkscape 0.92pre2 Source Tarball"
- Select 'Inkscape Package' from the category drop down.
- Upload the gpg sig file using the 'Choose File' button under Signature/Checksum.
- Select 'GPLv2' (or 'GPLv3' if appropriate) from the Licenses drop down.
- Check 'Mirror' checkbox (optional; not used presently)
- Submit this form.
5. Verify and copy link - If everything's gone well you should now see your released file with a blue ribbon icon indicating the gpg signature has been verified against your account public key.
- Download the release by clicking on the down-arrow icon. Confirm it's the file you intended.
- Copy this download link.
6. Link from the downloads page.
- For this step you will need CMS editor access or pass this task onto a website editor and/or translator.
- Go to the Source download page and click edit
- In the appropriate section for the download link, insert a 'Link' CMS Plugin
- Edit the downloads pages for the right OS and update with the right version, release and other details as you would want it to be presented to users. Add the copied link into the right place.
- Save /and/ then hit the blue publish button.
Congratulations, you've uploaded, released and published your release file.
Update Release Data in Launchpad
The release packages are also uploaded at launchpad.net by the Inkscape Launchpad Admins.
- From https://launchpad.net/inkscape, under Series and Milestones click the appropriate release series (e.g. 0.91.x)
- Change the development branch from Pre-release Freeze (or whatever) to Current Stable Release
- Make sure there is an existing Milestone entry under Milestones and releases for this release number; if not, add it
- Click on 'Release now' to set a release date. Paste in the Informal Release Announcement to Release Notes, and the NEWS file as ChangeLog.
- Click on 'Add download file' to add the source tarballs and signatures. Set their Description to "Inkscape Source Package (gz)", etc.
- Set the previous Current Stable Release to Obsolete (or Supported if there are any further plans for point releases.)
Creating a Windows Distribution with Installer
See Compiling Inkscape on Windows, specifically the section on Creating an installer.
Creating a Debian .deb
The article CompilingDebian provides a makefile to download a tarball and build a debian package therefrom.
Announcing Releases
When you cut a release, send a copy of the release notes as an announcement to inkscape-announce@lists.sourceforge.net. If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list. This is done by a list admin such as Bryce Harrington.
AnnouncingReleases - Keep an eye out for other places we could announce such as distros or graphics-related sites (not only Linux-centric!).
Updating Website Collateral
When a new release is cut, there are several pieces of info that need to be added to the website:
- Add a news item on front page
- Review/revise FAQ
- Review/revise Roadmap
- Add or revise Screenshots (if appropriate)
- doc directory: Add the manpage for the release, update doc/keys.html file, and change the corresponding version number(s) in doc/index.php.
- From the shell on inkscape.org, cd to /home/inkscape/inkscape_web and run the command “(cd ../inkscape; svn update; chmod g+w -R * 2>/dev/null); pod2html --cachedir=/tmp --infile=../inkscape/inkscape.pod --outfile=doc/inkscape-man.html”.
- Review/revise links to keys.html