avalon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leo Simons <leosim...@apache.org>
Subject Re: Excalibur-* Directories on the dist site
Date Fri, 06 Jun 2003 16:15:22 GMT
Berin Loritsch wrote:
> Recently one of Leos added a bunch of Excalibur-** directories on the
> dist site.

that'd be me!

> It appears that they are used in conjunction with an
> automatic download type of functionality.

yep, among other things. I outlined all of that in the "[PROPOSAL] 
follow apache mirror layout convention" thread. That was a long e-mail; 
I can repost if you want.

----

> Is this one of the steps to have Merlin integration?

Uhm, the new structure among other things has

/dist/avalon/${groupId}/jars/${artifactId}-${version}.jar

which means www.apache.org/dist/avalon/ is now usable as a maven "remote 
repository". I've been writing a forrest plugin for maven, and so far it 
seems to be working rather well. IIUC, RuperTask and Centipede can work 
with the same layout. This is nice because merlin (which builds using 
maven) can use our own repository.

That's not the only goal: In addition, we're now following the layout 
conventions as decided on by the infrastructure team and agreed upon on 
the repository list.

----

> If so, could
> you explain a little on how to set those up for all the new libraries?

basically, you will want to symlink to the latest files replacing the 
version with 'latest', to provide for easy access to the latest version 
(like 
http://www.apache.org/dist/avalon/framework/Avalon-latest-bin.zip). And 
you want to follow the maven convention of 
${groupId}/jars/${artifactId}-${version}.jar. This might deserve to go 
on the wiki:

= Supporting the new-style URLS =

I'm in the process of getting components built by maven. In that case 
all that's needed is some info in project.xml and the command 
`maven:deploy -Dversion=1.1.1 -Dtag=MYCOMP_1_1_1`. However this is work 
in progress, so right now some manual steps are involved. This is a 
basic explanation of what you need to do:

*WARNING*: all scripts and commands are *untested*!

= Adding a new component =

Two basic options:

== 1) keep supporting placing the new libraries in 
http://www.apache.org/dist/avalon/excalibur/components/, and symlink ==

This works like:

# first put files up at avalon/excalibur/components/ like you're used to

ssh www.apache.org

# symlink to the component location as excalibur-$COMP_NAME/source and
# excalibur-$COMP_NAME/binaries
umask 0002

export COMP_NAME="xmlutil" # example, edit this!
export VERSION="1.1" # example, edit this!

cd /www/www.apache.org/dist/avalon/
mkdir excalibur-$COMP_NAME
cd excalibur-$COMP_NAME
ln -s ../excalibur/components/$COMP_NAME source
ln -s source binaries

# extract jarfiles into the 'jars' directory
mkdir jars
unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars

useful might be a script like this:

=== export-component.sh ====

#!/bin/sh
#
# Make linking a little easier
#
# usage: export-component.sh componentname version
#
export COMP_NAME=$1
export VERSION=$2

echo building new-style structure for $COMP_NAME version $VERSION ...

cd /www/www.apache.org/dist/avalon/
mkdir excalibur-$COMP_NAME
cd excalibur-$COMP_NAME
ln -s ../excalibur/components/$COMP_NAME source
ln -s source binaries

# extract jarfiles into the 'jars' directory
mkdir jars
unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars

# cleanup
unset COMP_NAME
unset VERSION

== 2) just place the files in the new location ==

ssh www.apache.org
cd /www/www.apache.org/dist/avalon/
mkdir -p excalibur-$COMP_NAME/source
cd excalibur-$COMP_NAME
ln -s source binaries
mkdir jars
unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars

= New release for an existing component =

in the event that you're doing a new release of something that was 
already released, life is a bit easier. You'll likely just want to 
upload the files like before to avalon/excalibur/components/, then do

cd /www/www.apache.org/dist/avalon/excalibur-$COMP_NAME
unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars

= Easy urls for the latest distro's =

Not yet implemented for excalibur, but we should. For a particular 
subproject, have a symlink to the latest distribution files in binaries/ 
and source/ in the base directory, then symlink to those files, 
replacing the version with 'latest':

=== basiclink.sh ===

#!/bin/sh
#
# usage: basiclink.sh groupname distname version
export GROUPNAME=$1
export DISTNAME=$2
export VERSION=$3

cd /www/www.apache.org/dist/avalon/$GROUPNAME
ln -s binaries/$DISTNAME-$VERSION-bin* .
ln -s source/$DISTNAME-$VERSION-src* .
ln -s $DISTNAME-$VERSION-src.zip $DISTNAME-latest-src.zip
ln -s $DISTNAME-$VERSION-bin.zip $DISTNAME-latest-bin.zip
ln -s $DISTNAME-$VERSION-src.zip.asc $DISTNAME-latest-src.zip.asc
ln -s $DISTNAME-$VERSION-bin.zip.asc $DISTNAME-latest-bin.zip.asc
ln -s $DISTNAME-$VERSION-src.tar.gz $DISTNAME-latest-src.tar.gz
ln -s $DISTNAME-$VERSION-bin.tar.gz $DISTNAME-latest-bin.tar.gz
ln -s $DISTNAME-$VERSION-src.tar.gz.asc $DISTNAME-latest-src.tar.gz.asc
ln -s $DISTNAME-$VERSION-bin.tar.gz.asc $DISTNAME-latest-bin.tar.gz.asc

==== Sample usage ====

ssh www.apache.org
umask 0002
basiclink.sh framework Avalon 4.1.5

----

Hope that's enough info!

----

> Lastly, do we want to simply organize everything this way?

yes! All existing distributions we have now support the new-style urls 
(and the old-style as well, since I didn't move any files). For example, 
the following maven project.xml snippet now works as expected:

<dependency>
	<groupId>phoenix</groupId>
	<version>4.0.4</version>
	<id>phoenix-bsh-commands</id>
</dependency>

providing you add

maven.repo.remote=http://www.apache.org/dist/avalon/,http://www.ibiblio.org/maven/

to your project.properties.

----

cheers!

- LSD



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Mime
View raw message