royale-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com.INVALID>
Subject Repos and Releases
Date Fri, 01 Dec 2017 18:45:00 GMT
Hi,

The CI servers are reporting that the feature/rename branch is building
and passing tests.  Theoretically, this means that there is a way to build
the compiler, typedefs and framework without any Adobe code (Flash
playerglobal.swc or AIR SDK), and without a Flex SDK.  I think we need
some volunteers to try it to make sure there aren't places that still
require Flash/Flex/AIR.

The goal of this effort was not only to prove independence from the Adobe
code, but also to make it easier for folks to get started with
contributing to Royale.  In theory, you don't need any environment
variables any more for both the Ant and Maven builds.  You should be able
to clone the repos and run Ant or Maven in each of the repos.

There are still a few rough spots with Maven.  I think I finally found out
why we have to do two Maven runs in the royale-compiler repo.  There is
this issue [1] that the Maven folks say they won't fix that affects us
(and other users).  We use our own plugins in building the compiler and
those plugins have to be built separately before the main Maven build.

We could move the plugin code to a separate repo and do a quick and
separate release of the two plugin artifacts, but I am tempted to just
leave the Maven build as is and require the two Maven runs for the first
Royale release.  In subsequent releases, if we don't change the code in
the plugins (and they probably won't change), folks won't need to run
Maven twice because the future builds will use the plugins from the first
Royale release.  I think we can be "brave" and give those two plugins
1.0.0 version numbers.

Also some parts of the Maven build (mostly the examples) still have a
dependency on Flash/AIR.  I left that in for now because I think for most
folks, Maven will automatically bring down the Flash/AIR artifacts.
Otherwise, I think we have to set up profiles for building the
Flash/AIR-dependent artifacts, which I think is doable, I just don't know
if it is worth it.

The last thing to consider is what our source release packaging should
look like.  In the past, we've done things like tuck a copy of
flex-typedefs into a subfolder in the flex-falcon package.  In an earlier
thread, folks said they'd prefer a single release package instead of a
separate compiler package.  However, I would rather not try to stuff the
compiler source into a subfolder of the asjs sources and get all of that
to build.  Maven knows how to create source packages per repo.  It might
be possible to create an aggregator project in yet another repo, but I'm
not sure I want to spend the time to figure that out.  It might mean that
this aggregator repo could launch Maven in all of the other repos which
some folks have asked for.  But I think that the fastest way to get a
release out is to have the Ant build aggregate the 3 repos just like if
you zipped the parent folder of royale-compiler, royale-typedefs and
royale-asjs.

Then, I think the release process is:
1) start the Maven release process on each repo
2) take the tags generated by Maven release process and have Ant use those
tags to build the source package that we vote on.
3) voters would unzip the source package and run Maven in each of the 3
subfolders or run "ant all" from the royale-asjs folder to build all of
the sources.

One issue with this kind of release packaging is that the IDE package is
in a subfolder.  So, when you unzip the binary package, you don't point
your IDE to the binary package, but rather, to the royale-asjs folder
inside it.

Anyway, I know that a lot of things to think about.  I'm going to poke at
the code a bit more to make sure things are working and look into merging
feature/rename into develop.

Thoughts?
-Alex

[1] https://issues.apache.org/jira/browse/MNG-1911

Mime
View raw message