[RTC] Merge m2migration (functional m2 build) to trunk
------------------------------------------------------
Key: GERONIMO-2219
URL: http://issues.apache.org/jira/browse/
GERONIMO-2219
Project: Geronimo
Issue Type: RTC
Security Level: public(Regular issues)
Components: buildsystem
Affects Versions: 1.2
Reporter: Jason Dillon
Priority: Critical
Fix For: 1.2
h3. Overview
For the past few weeks we have been busy at work getting Geronimo
1.2-SNAPSHOT to build with Maven 2. As I have noted before in
email,
the process is almost complete. At this point the work done so far
results in a functional server for the following assemblies:
* geronimo-jetty-j2ee
* geronimo-jetty-minimal
* geronimo-tomcat-j2ee
* geronimo-tomcat-minimal
The work to implement has been applied to a branch in the sandbox,
and includes many submitted patches from those contributors and
commiters that had been helping with the effort.
My recommendation is that we _merge_ this change to trunk and not
generate a diff and then patch. There are a few changes which
patch
does not handle well and will cause failed chunks when applied, and
there are a few files moved and copied, which when patched will
cause
loss of that history.
As I mentioned this work is _almost complete_, there are still a
few
pending issues, please see the section below for more details.
h3. Recommend Action Post RTC
Once we have the required RTC +1's to allow this work to be merged,
this is what I recommend:
# Merge m2migration to trunk as described below
# Deprecate the Maven1 build; meaning leave the m1 files, but
strongly urge developers to use the m2 build
# Enable the TCK _automated_ testing in GBuild using the m2 build
# Remove the m1 build (and related files)
These steps will probably take a few weeks post-merge to complete.
h3. About the Branch
The main branch which should be used for review is:
*
https://svn.apache.org/repos/asf/geronimo/sandbox/svkmerge/
m2migration
I have been using SVK ( http://svk.elixus.org/ ) to keep this
m2migration branch up to date with the latest changes that have
been
made to trunk (with a few exceptions). I have been staging the
merge
as follows:
* merge from {{trunk}} to {{sandbox/svkmerge/trunk}}
* merge from {{sandbox/svkmerge/trunk}}
{{sandbox/svkmerge/m2migration}}
This has worked out very well and I have found that using SVK
dramatically reduces to complexity of performing full tree (or
partial tree merges). I have been verifying that the SVK
{{smerge}}
is indeed doing the right thing and I have a good deal of
confidence
in it at this point.
The idea is to merge m2migration back to trunk using SVK as
follows:
* merge from {{sandbox/svkmerge/m2migration}} to
{{sandbox/svkmerge/trunk}}
* merge from {{sandbox/svkmerge/trunk}} to {{trunk}}
This is the opposite of what I am performing now on a regular basis
to sync this development branch. Normally the additional branch
(svkmerge/trunk) would not be needed, but it exists to help ensure
that the merge is indeed _doing the right thing_.
h3. Recommended Review Steps
{noformat}
svn co
https://svn.apache.org/repos/asf/geronimo/sandbox/svkmerge/
m2migration
cd m2migration
./bootstrap
gunzip -c
m2-assemblies/geronimo-jetty-j2ee/target/geronimo-jetty-j2ee-1.2-
SNAPSHOT-bin.tar.gz
| tar xf -
./geronimo-jetty-j2ee/bin/startup.sh && tail -f
geronimo-jetty-j2ee/var/log/geronimo.out
....
./geronimo-jetty-j2ee/bin/shutdown.sh --user system --password
manager
{noformat}
*NOTE:* Windows users need to run {{bootstrap}} from a Cygwin
environment and should probably run these steps from the root of a
drive (c:, d:, etc) to better ensure that the long filename problem
is not an issue when testing.
*WARNING:* The {{bootstrap}} script will remove your local Maven2
repository cache and will take maybe 30 minutes or so to run...
more
or less depending on how fast your network connection is.
You should define a mirror for the {{central}} m2 repository before
running... otherwise you will almost certainly get repository
failures downloading from ibiblio. This is what I am using (in
~/.m2/settings.xml):
{code:xml}
<?xml version="1.0"?>
<settings>
<mirrors>
<mirror>
<id>repo.mergere.com</id>
<url>http://repo.mergere.com/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
{code}
Also, due to the coupling of Geronimo and OpenEJB2, OpenEJB2
must be
checked out and built in the middle of the bootstrapping. Once
G is
hooked up to CI and snapshots are being automatically deployed, we
can also hook up OpenEJB2 to do the same... but until then OpenEJB2
needs to be built in the bootstrap.
h4. Testing Caveats
Currently the test from the timer module may fail on systems
that are
slow or are low on cpu resources when the test is run. If you run
into this, you may need to disable the tests for that module by
adding this to the pom:
{code:xml}
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
{code}
Since the tests appear to normal work, I am uncomfortable turning
them off by default... and we will eventually fix them. Tracked
by:
* https://issues.apache.org/jira/browse/GERONIMO-2183
You may run into problems downloading artifacts while
bootstrapping,
specifically I have seen the Apache m1 repos reject connections and
cause the build to fail. Re-running will resolve. Make sure you
have a mirror configured for central.
h3. Pending Issues
There are still a few remaining issues which need to be sorted out.
Rick's JavaMail changes (#421872) which remove the javamail-
transport
module have yet to be applied due to the lack of the deployed
dependency.
Some use of version properties in pom.xml files are inconsistent
due
to selective use by child pom's that can not easily make use of the
{{<dependencyManagement>}} section; which is the desired end
result.
It will take some time to refactor to get this really finished.
https://issues.apache.org/jira/browse/GERONIMO-2206
Some minor work is needed to get the jsp/servlet examples happy.
Also need to resolve the geronimo-samples groupId (and more so
where
that source comes from).
Some (2 actually) test failures need to have some attention
given to
them, tracked be:
* https://issues.apache.org/jira/browse/GERONIMO-2210
* https://issues.apache.org/jira/browse/GERONIMO-2211
Some more work also needs to be done on the Maven-2 generated site,
but there is most of it here already:
* http://geronimo.apache.org/maven/
h3. What if 'bootstrap' Fails?
So far, most of the failures that people run into are due to
environmental causes and not because of anything broken with the
branch or build configuration.
If you run into any failure, please mail dev@ and include the
bootstrap.log, which should be generated automatically and captures
all output.