Skip to main content

Notice: This Wiki is now read only and edits are no longer 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?)
(Add checklist, update some things)
Line 14: Line 14:
 
# Add... in the master zip as an Archive...
 
# Add... in the master zip as an Archive...
 
# 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.
 
# 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.
# You can install other neat things, including the Mylyn bridge, from the CDT Optional Features category.
+
# You can install other neat things from the CDT Optional Features category.
  
  
Line 25: Line 25:
 
* 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.
 
* 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.
 
* 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.
* Mylyn Bridge - allows CDT to work with Mylyn.
 
 
* CDT Utilities - provides utilities for C/C++ Development Tools
 
* CDT Utilities - provides utilities for C/C++ Development Tools
 
* CDT Testing Feature - includes all test plugins required for running automated JUnit tests
 
* CDT Testing Feature - includes all test plugins required for running automated JUnit tests
Line 44: Line 43:
  
 
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'''
 
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'''
 
===Building EDC===
 
# First build CDT above.
 
# `pwd` ; # = cdt-releng
 
# git clone git://git.eclipse.org/gitroot/cdt/org.eclipse.cdt.edc.git
 
# svn co svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/ org.eclipse.tm.tcf
 
# #Build TCF
 
# pushd org.eclipse.tm.tcf
 
# mvn -Dmaven.test.skip clean install
 
# popd
 
# #Build EDC
 
# pushd org.eclipse.cdt.edc
 
# mvn -Dmaven.test.skip clean install
 
# popd
 
 
 
EDC depends on TCF and CDT.  The top-level EDC pom.xml builds against the snapshot p2 repositories generated for CDT and TCF.
 
 
The generated p2 repo lives under: '''org.eclipse.cdt.edc/org.eclipse.cdt.debug.edc.repo/target/'''
 
  
 
==How do we run the build? How often do we build?==
 
==How do we run the build? How often do we build?==
Line 72: Line 52:
 
! Script
 
! Script
 
! CDT version
 
! CDT version
! CVS stream
+
! Git branch
 
! Java JRE
 
! Java JRE
 
! Build schedule
 
! Build schedule
 +
|-
 +
| mvn clean install
 +
| CDT 8.5
 +
| master
 +
| Java 7
 +
| Hudson, [[https://hudson.eclipse.org/cdt/job/cdt-master/ nightly]]
 +
|-
 +
| mvn clean install
 +
| CDT 8.4
 +
| cdt_8_4
 +
| Java 7
 +
| Hudson, [[https://hudson.eclipse.org/cdt/job/cdt-8.4/ on demand]]
 +
|-
 +
| mvn clean install
 +
| CDT 8.3
 +
| cdt_8_3
 +
| Java 6
 +
| Hudson, [[https://hudson.eclipse.org/cdt/job/cdt-8.3/ 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
 
| mvn clean install
Line 80: Line 90:
 
| master
 
| master
 
| Java 5
 
| Java 5
| Hudson
+
|  
 
|-
 
|-
 
| cdtbuild
 
| cdtbuild
Line 86: Line 96:
 
| cdt_7_0
 
| cdt_7_0
 
| Java 5
 
| Java 5
| Every Friday at 8am Eastern time
+
|  
 
|-
 
|-
 
| cdtbuild6.0
 
| cdtbuild6.0
Line 92: Line 102:
 
| cdt_6_0
 
| cdt_6_0
 
| Java 5
 
| Java 5
| Available upon request
+
|  
 
|-
 
|-
 
| cdtbuild5.0
 
| cdtbuild5.0
Line 98: Line 108:
 
| cdt_5_0
 
| cdt_5_0
 
| Java 5
 
| Java 5
| Available upon request
+
|  
 
|}
 
|}
  
Line 120: Line 130:
 
# Update the cdt website, send mail to cdt-dev and cdt newsgroup announcing new build
 
# Update the cdt website, send mail to cdt-dev and cdt newsgroup announcing new build
 
# Tag the build in repository
 
# Tag the build in repository
 +
 +
==Miscellaneous release checklist==
 +
* Make sure all the feature versions make sense. Typically, the main features such as cdt.feature cdt.platform and cdt.sdk should have the same version number as the release.
 +
* Update all p2.inf file to point to the p2 repo. Right now there it only org.eclipse.cdt.autotools-feature/p2.inf
 +
* Update new and noteworthy on the wiki
 +
* Copy the new and noteworthy to the user documentation in the git repo, doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
 +
* 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 wiki pages if necessary:
 +
** [[Getting_started_with_CDT_development|Getting started]]
 +
** [[CDT/contributing|Contributing]]
 +
** [[CDT/policy|Policy (especially API tooling section)]]
 +
** [[CDT/git|Using Git with CDT]]
 +
* Tag the release
 +
* Add version to Bugzilla
 +
* Add next target milestone to Bugzilla (if known)

Revision as of 19:49, 1 July 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.5 master 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.

How do we publish release builds?

  1. Unzip the master zip into a temporary directory
  2. Move the plugin and feature jars into the update site (cdt/releases/[release_name])
  3. Insert the features into the update site’s site.xml and set categories as appropriate
  4. Run the optimize script that’s in the cdt/scripts directory to create packed jars
  5. Wait for the downloads site to update and test that the site.xml is correct (this could take a while)
  6. Update the cdt website, send mail to cdt-dev and cdt newsgroup announcing new build
  7. Tag the build in repository

Miscellaneous release checklist

  • Make sure all the feature versions make sense. Typically, the main features such as cdt.feature cdt.platform and cdt.sdk should have the same version number as the release.
  • Update all p2.inf file to point to the p2 repo. Right now there it only org.eclipse.cdt.autotools-feature/p2.inf
  • Update new and noteworthy on the wiki
  • Copy the new and noteworthy to the user documentation in the git repo, doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
  • 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/
  • Update wiki pages if necessary:
  • Tag the release
  • Add version to Bugzilla
  • Add next target milestone to Bugzilla (if known)

Back to the top