[ANN] stable package universe for 3.9

Lex Spoon lex at cc.gatech.edu
Tue Nov 21 10:14:59 UTC 2006

"J J" <azreal1977 at hotmail.com> writes:
> >Pier and Seaside can be just loaded from Monticello, as it should be.
> >Nothing else is possible since they are developed using Monticello.
> >
> >However:
> >- They get updated regularly, sometimes several times a week.
> >- The loading might include some gui interaction (asking for passwords
> >and stuff)
> >- They have a large list of depencies, that's what the scripts are for.
> It is this last one that made me think these packages could benefit
> greatly from being part of the universe system.  Then instead of
> having to keep your dependencies up to date with a script you could do
> it in the universe system and perhaps that system could help manage it
> a bit.  It's not that I think the current method is broken, just that
> it could be easier.

Yes, if there are a lot of dependencies, then I would think setting up
a package universe would really help you.  You can either use the main
public universe, or you could set up a server of your own.  Note that
universes combine nicely: you can very well pull packages from the
union of a private universe and a public one.

Back on the original question, let me mention two things that make it
easier to post new releases than you might think.

First, once you post a package the first time, you do not have to fill
in all the fields again.  There is a button "new package version"
which lets you just change the parts that have changed.  Usually, you
can simply change the version number and the download URL.

Second, it is only a little bit of code to post, so you can automate
it if you like.  Here is the relevant code (I'll go post this on the
wiki, too):

newPackage _ UPackage new.
newPackage name: 'FFFPackage'.
newPackage depends: #('dependency1' 'dependency2').
newPackage description: 'here''s an example package'.
newPackage homepage: 'http://www.squeak.org' asUrl.
newPackage url: 'http://www.squeaksource.com/whatever' asUrl.
newPackage version: (UVersion readFromString: '1.0').
newPackage maintainer: 'Joe Blow <joe at blow.net>'.

client _ UUniverseClient forUniverse: UUniverse developmentUniverse.
client sendMessage: (UMAddPackage username: 'USERNAME' password: 'PASSWORD' package: newPackage).

[true] whileTrue: [ client receivedMessagesDo: [ :m | m inspect.  (m class == UMPackageAdded or: [ m class == UMError ]) ifTrue: [ ^self ] ]. (Delay forSeconds: 1) wait. ].

You can put this in a workspace, or in a class method somewhere, so
that you can invoke it whenever you are ready to make a release.

Stepping back, I don't see how it can be much easier.  I mean, even
during heavy development, is there not a difference between a
release and a Monticello commit?


More information about the Squeak-dev mailing list