Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "CDT/Obsolete/release engineering"

< CDT‎ | Obsolete
(How do we publish release builds?)
Line 183: Line 183:
 
'''Steps during Quiet week'''
 
'''Steps during Quiet week'''
 
* These steps assume that RC4 is available by the above steps
 
* These steps assume that RC4 is available by the above steps
'''SHOULD ONLY BE DONE WITH RC4 AS THE MIRRORS WILL TRIGGER RIGHT AWAY'''
+
'''SHOULD ONLY BE DONE WITH RC4 AS THE MIRRORS WILL TRIGGER RIGHT AWAY'''<br>
 
'''SHOULD BE DONE EARLY DURING QUIET WEEK TO ALLOW MIRRORS TO SYNC'''
 
'''SHOULD BE DONE EARLY DURING QUIET WEEK TO ALLOW MIRRORS TO SYNC'''
 
# Log on to build.eclipse.org  
 
# Log on to build.eclipse.org  
Line 193: Line 193:
 
#* mv releases/8.5/r/artifacts.jar releases/8.5/r/artifacts.jar.tmp
 
#* mv releases/8.5/r/artifacts.jar releases/8.5/r/artifacts.jar.tmp
 
#* mv releases/8.5/r/content.jar  releases/8.5/r/content.jar.tmp
 
#* mv releases/8.5/r/content.jar  releases/8.5/r/content.jar.tmp
#*# The above two steps are to keep the release invisible until release day
+
#** The above two steps are to keep the release invisible until release day
  
 
'''Morning of the release'''
 
'''Morning of the release'''
Line 201: Line 201:
 
#** cp releases/8.4/composite*.xml releases/8.5
 
#** cp releases/8.4/composite*.xml releases/8.5
 
#** Manually update ''both'' the files to change the name of the release ("repository name" entry")
 
#** Manually update ''both'' the files to change the name of the release ("repository name" entry")
#** mv  releases/8.5/r/content.jar.tmp  releases/8.5/r/content.jar
+
#* mv  releases/8.5/r/content.jar.tmp  releases/8.5/r/content.jar
#** mv releases/8.5/r/artifacts.jar.tmp releases/8.5/r/artifacts.jar
+
#* mv releases/8.5/r/artifacts.jar.tmp releases/8.5/r/artifacts.jar
 
# Tag the release (it is best to wait until the day of release in case of re-spins)
 
# Tag the release (it is best to wait until the day of release in case of re-spins)
 
# Update the website (index.php, downloads.php), the website can be modified using this git repo: [https://git.eclipse.org/c/www.eclipse.org/cdt.git/ https://git.eclipse.org/c/www.eclipse.org/cdt.git/]
 
# Update the website (index.php, downloads.php), the website can be modified using this git repo: [https://git.eclipse.org/c/www.eclipse.org/cdt.git/ https://git.eclipse.org/c/www.eclipse.org/cdt.git/]

Revision as of 13:37, 24 September 2014

What do we build today?

CDT is currently built as an update site, archived in a master zip file.


To install CDT:

  1. Download the master zip file and put it somewhere on your machine.
  2. Fire up Eclipse
  3. Help->Software Updates
  4. On the Available Features tab, select Manage sites...
  5. Add... in the master zip as an Archive...
  6. Under CDT Main Features select the one you want. C/C++ Development Tools is the main one. The SDK adds in the schemas and source for building extensions to the CDT. The C/C++ Development Platform is the Tools without the GNU toolchain support.
  7. You can install other neat things from the CDT Optional Features category.


This master zip has everything, including:

  • CDT Platform Feature - includes editor, search, builders, launch, debug, user documentation
  • CDT Runtime Feature - superset of platform feature that adds gnu toolchain integrations for build/debug
  • CDT SDK Feature - superset of runtime that adds source and extension point schemas
  • GDB Hardware Debugging - provides a launch configuration for launching gdb to do hardware debugging.
  • XL C/C++ Compiler Support - provides an error parser and managed build support for IBM's XL C/C++ compilers.
  • LR Parser - provides a parser for the ISO/IEC 9899:1999 variant of the C programming language (aka C99) and the C++ programming language, generated from a grammar using the LPG parser generator. The grammar can be reused and extended to create your own parser for variants on the C programming language.
  • Unified Parallel C Support - Provides support for the Unified Parallel C programming language. Provides parsing/indexing infrastructure and language definition, allowing the UPC language to be recognized by CDT. Requires the LR parser feature.
  • CDT Utilities - provides utilities for C/C++ Development Tools
  • CDT Testing Feature - includes all test plugins required for running automated JUnit tests


Building CDT master headlessly with Tycho/Maven

CDT master is built from git using Maven+Tycho (as of CDT 8). Running a headless build is straightforward. (Within the IDE, plugins are automatically built.) Note that Tycho requires Maven 3.0. You can download it directly from Apache.

Building CDT

  1. mkdir cdt-releng ; cd cdt-releng
  2. git clone git://git.eclipse.org/gitroot/cdt/org.eclipse.cdt.git
  3. pushd org.eclipse.cdt
  4. mvn clean install
  5. popd

Add -Dmaven.skip.test if you don't want maven to run the tests.

The generated p2 repository lives under: releng/org.eclipse.cdt.repo/target/repository/ or compressed at: releng/org.eclipse.cdt.repo/target/org.eclipse.cdt.repo.zip

How do we run the build? How often do we build?

We use several scripts to kick off our builds. There is one for every release stream we build against in /home/www/tools/cdt/scripts/ on the Eclipse build machine (build.eclipse.org, running Linux/PPC):

Script CDT version Git branch Java JRE Build schedule
mvn clean install CDT 8.6 master Java 7 Hudson, [nightly]
mvn clean install CDT 8.5 cdt_8_5 Java 7 Hudson, [nightly]
mvn clean install CDT 8.4 cdt_8_4 Java 7 Hudson, [on demand]
mvn clean install CDT 8.3 cdt_8_3 Java 6 Hudson, [on demand]
mvn clean install CDT 8.2 cdt_8_2 Java 6
mvn clean install CDT 8.1 cdt_8_1 Java 6
mvn clean install CDT 8.0 master Java 5
cdtbuild CDT 7.0 cdt_7_0 Java 5
cdtbuild6.0 CDT 6.0.2 cdt_6_0 Java 5
cdtbuild5.0 CDT 5.0.3 cdt_5_0 Java 5


These scripts setup the staging area on the build machine for the build.

Builds for CDT 8.0 and more recent are run using Maven.

Scripts for CDT 7.X and earlier check out the latest org.eclipse.cdt.releng plugin in their respective stream. It then runs build.sh and build.xml (in org.eclipse.cdt.releng) where majority of the build logic resides. We rely on the plugins in org.eclipse.releng.basebuilder to run our builds. We use different versions of the basebuilder for various stream builds. More information can be found on http://wiki.eclipse.org/Platform-releng-basebuilder. During the build process, features and plugins are tagged in CVS with the build timestamp. Once the build is completed, it is signed, (JUnit) tested, and made available in the | CDT download area .


Builds against older streams are available upon request.

Miscellaneous release checklist

This is a list of things that need to be done at some point before a release.

  • A release record must be created for the release (by project leads).
    • This can be done much in advance to notify users of upcoming releases
  • Update all the feature versions to the upcoming release number. All feature versions should match the release; on the other hand plugins are only bumped to their own next version if they have changes.
  • Update all p2.inf file to point to the p2 repo. Right now there is only one that has an update site: releng/org.eclipse.cdt-feature/p2.inf
  • Optionally copy the new and noteworthy to the user documentation in the git repo, doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
    • This makes the documentation grow substantially. Instead, we can opt to simply include the latest link to the N&N on the web
  • Add version to Bugzilla
  • Add next target milestone to Bugzilla (if known)
  • Add the documentation to the info center (http://help.eclipse.org). This is required every simulaneous release (June release) or if the documentation was updated in a service release. For an example of how to do it, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=436372#c18

How do we publish release builds?

Steps for the RC1 milestone

  1. Create a branch from master for the release e.g., cdt_8_5.
  2. Create a new location for the release on the build machine. E.g.,
    • Log on to build.eclipse.org
    • cd downloads/tools/cdt/builds
    • mkdir 8.5
  3. Modify releng/org.eclipse.cdt.repo/pom.xml to change 'cdt-download-dir' to point to a new location for the release. E.g.,
    • <cdt-download-dir>/home/data/httpd/download.eclipse.org/tools/cdt/builds/8.5/nightly</cdt-download-dir>
    • Commit this change to the release branch (not master)
  4. Make sure the simultaneous release cdt file, in the simrel git repo, points to the correct location
  5. Create a new HIPP job to build the new branch
    • Optionally re-use the oldest build branch if it is no longer needed
  6. Perform general milestones steps below
  7. Notify the cdt-dev list about the situation and mention that bug fixes should go in both master and the branch

Steps for milestones

  1. See if any steps of the miscellaneous release checklist needs to be done
  2. Log on to build.eclipse.org
    • full shell access is not granted to everyone, usually project-leads have that access
  3. cd downloads/tools/cdt/builds
    • this builds directory contains the nightly builds and is not mirrored
    • the nightly builds are put there by our Hudson jobs when using the 'production' maven profile (see releng/org.eclipse.cdt.repo/pom.xml)
  4. Copy the latest successful nightly build for the current planned release to its milestone location. E.g., for 8.5 RC3:
    • cp -R 8.5/nightly luna/milestones/sr1-rc3
  5. Update the two composite*.xml files to add the new milestone
    • This is essential for the new build to be picked up by the Simultaneous release
    • This will allow users to use the same update site (http://download.eclipse.org/tools/cdt/builds/luna/milestones) to access the new milestone
    • To allow users to downgrade in case of an issue, we keep the two latest milestones in that file
  6. Get the corresponding zip file from the HIPP build. This cannot be accessed from the drive so we use wget. E.g.,
  7. Notify the cdt-dev list that the build was posted. Mention the different addresses:

Steps during Quiet week

  • These steps assume that RC4 is available by the above steps

SHOULD ONLY BE DONE WITH RC4 AS THE MIRRORS WILL TRIGGER RIGHT AWAY
SHOULD BE DONE EARLY DURING QUIET WEEK TO ALLOW MIRRORS TO SYNC

  1. Log on to build.eclipse.org
  2. cd downloads/tools/cdt/
  3. Copy the RC4 build into the release location (releases/[release_name]). E.g., for 8.5:
    • mkdir releases/8.5
    • cp -R builds/luna/milestones/sr1-rc4 releases/8.5/r
    • mv releases/8.5/cdt-8.5rc4.zip releases/8.5/cdt-8.5.0.zip
    • mv releases/8.5/r/artifacts.jar releases/8.5/r/artifacts.jar.tmp
    • mv releases/8.5/r/content.jar releases/8.5/r/content.jar.tmp
      • The above two steps are to keep the release invisible until release day

Morning of the release

  1. Verify we get a GO on the cross-project-ussues-dev mailing list
  2. Make the release visible
    • Copy the two composite*.xml file of the previous release to this release and update them
      • cp releases/8.4/composite*.xml releases/8.5
      • Manually update both the files to change the name of the release ("repository name" entry")
    • mv releases/8.5/r/content.jar.tmp releases/8.5/r/content.jar
    • mv releases/8.5/r/artifacts.jar.tmp releases/8.5/r/artifacts.jar
  3. Tag the release (it is best to wait until the day of release in case of re-spins)
  4. Update the website (index.php, downloads.php), the website can be modified using this git repo: https://git.eclipse.org/c/www.eclipse.org/cdt.git/
  5. Update new and noteworthy on the wiki. Also update the link to it in the main CDT wiki page. And the new in CDT page.
  6. Update wiki pages if necessary:
  1. Insert the features into the update site’s site.xml and set categories as appropriate
  2. Run the optimize script that’s in the cdt/scripts directory to create packed jars
  3. Wait for the downloads site to update and test that the site.xml is correct (this could take a while)
  4. Update the cdt website, send mail to cdt-dev and cdt newsgroup announcing new build
  5. Tag the build in repository

Back to the top