Metacello / metacello

Metacello is a package management system for Smalltalk
MIT License
87 stars 43 forks source link
gemstone pharo smalltalk squeak

Metacello

smalltalkCI

INSTALL Preview Version

GemStone

GsUpgrader works on all versions of GemStone against all Versions of GLASS:

Gofer new
  package: 'GsUpgrader-Core';
  url: 'http://ss3.gemtalksystems.com/ss/gsUpgrader';
  load.
(Smalltalk at: #GsUpgrader) upgradeMetacello.

Pharo6.1, Pharo7.0

Iceberg enableMetacelloIntegration: false.

Metacello new
    baseline: 'Metacello';
    repository: 'github://metacello/metacello:pharo-6.1_dev/repository';
    onConflict: [ :ex | ex allow ];
    load.

Pharo3.0, Pharo4.0, and Pharo5.0

Metacello Preview is pre-installed in Pharo3.0 the following installs the latest released version:

Metacello new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  get.
Metacello new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  onConflict: [:ex | ex allow];
  load

Pharo (older than Pharo3.0)

"Get the Metacello configuration"
Gofer new
  gemsource: 'metacello';
  package: 'ConfigurationOfMetacello';
  load.
"Bootstrap Metacello Preview, using mcz files (#'previewBootstrap' symbolic version"
((Smalltalk at: #ConfigurationOfMetacello) project 
  version: #'previewBootstrap') load.

"Load the Preview version of Metacello from GitHub"
(Smalltalk at: #Metacello) new
  configuration: 'MetacelloPreview';
  version: #stable;
  repository: 'github://Metacello/metacello:configuration';
  load.
"Now load latest version of Metacello"
Metacello new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  get.
Metacello new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  onConflict: [:ex | ex allow];
  load

Squeak5.2 (and newer)

Installer ensureRecentMetacello.

Squeak (older than Squeak5.2)

"Get the Metacello configuration (for Squeak users)"
Installer gemsource
    project: 'metacello';
    addPackage: 'ConfigurationOfMetacello';
    install.

"Bootstrap Metacello Preview, using mcz files (#'previewBootstrap' symbolic version"
((Smalltalk at: #ConfigurationOfMetacello) project 
  version: #'previewBootstrap') load.

"Load the Preview version of Metacello from GitHub"
(Smalltalk at: #Metacello) new
  configuration: 'MetacelloPreview';
  version: #stable;
  repository: 'github://Metacello/metacello:configuration';
  load.

"Now load latest version of Metacello"
(Smalltalk at: #Metacello) new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  get.
(Smalltalk at: #Metacello) new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  load.

See the .travis.yml file for list of supported platforms and versions.

If you are interested in using GitHub with the Metacello Preview, you should read The excellent chapter on Metacello in Deep Into Pharo, then check out Getting Started with GitHub, the Metacello User Guide, the Metacello Scripting API, Issue #136 detail, and Metacello API Reference.

Some things to ponder

Dear package managers: dependency resolution results should be in version control (twitter comment thread).

Interesting problem - non-reproducable builds when using non-exact dependent project versions. Wanders into the territory that Metacello locks for local git clones addresses ... but being able to communicate to others in some fashion is an interesting idea.

Contribution

See docs/Contribute.md.