Metacello / metacello

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

metacello-work: GemStone 3.5.2, Metacello package working copies not correct #519

Open dalehenrich opened 4 years ago

dalehenrich commented 4 years ago

In Tode, when I look at the packages associated with Metacello project, I get some bogus entries (Metacello ()):

aTDWorkingCopyBrowser
--------------------
BaselineOfMetacello (BaselineOfMetacello-EstebanLorenzano.97)
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
* Metacello ()
Metacello-Base (Metacello-Base-topa.124)
Metacello-Bitbucket (Metacello-Bitbucket-topa.6)
Metacello-Core (Metacello-Core-EstebanLorenzano.832)
Metacello-Cypress (Metacello-Cypress-CyrilFerlicot.8)
Metacello-FileTree (Metacello-FileTree-dkh.36)
Metacello-GitBasedRepository (Metacello-GitBasedRepository-dkh.21)
Metacello-GitHub (Metacello-GitHub-topa.46)
Metacello-GS3x-Platform (Metacello-GS3x-Platform-dkh.1)
Metacello-MC (Metacello-MC-EstebanLorenzano.735)
Metacello-Platform (Metacello-Platform.gemstone-dkh.68)
Metacello-ToolBox (Metacello-ToolBox-EstebanLorenzano.149)

while the list of packages extracted from the baseline is correct:

Inspect anOrderedCollection[225007361]( spec name: 'Metacello-Base', spec 
    name: 'Metacello-Core';
    requires: #('Metacello-Base' );
    includes: #...
--------------------
.            -> anOrderedCollection[225007361]( spec name: 'Metacello-Base', spec name: 'Metacello-Core'; requires: #('Metacello-Base' ); includes: #...
(class)@     -> OrderedCollection
(oop)@       -> 225007361
(committed)@ -> true
(size)@      -> 25
1@           -> spec name: 'Metacello-Base'
2@           -> spec name: 'Metacello-Core'; requires: #('Metacello-Base' ); includes: #('Metacello-MC' 'Metacello-Platform' ).
3@           -> spec name: 'Metacello-MC'; requires: #('Metacello-Core' 'Gofer' ).
4@           -> spec name: 'Metacello-Platform'; requires: #('Metacello-MC' ); includes: #('Metacello-GS3x-Platform' ); file: 'Metacello-Platform.ge...
5@           -> spec name: 'Metacello-ToolBox'; requires: #('Metacello-Base' 'Metacello-Core' ).
6@           -> spec name: 'Metacello-Cypress'; requires: #('Metacello-Core' ).
7@           -> spec name: 'Metacello-Tutorial'; requires: #('Metacello-Core' ).
8@           -> spec name: 'Metacello-TestsCore'; requires: #('Metacello-Core' ).
9@           -> spec name: 'Metacello-TestsMCResources'; requires: #('Metacello-Core' ); includes: #('Metacello-TestsCommonMC' ); postLoadDoIt: #'te...
10@          -> spec name: 'Metacello-TestsCommonMC'; requires: #('Metacello-TestsMCResources' ); file: 'Metacello-TestsCommonMC.common'.
11@          -> spec name: 'Metacello-TestsMCCore'; requires: #('Metacello-Core' 'Metacello-TestsCore' 'Metacello-ToolBox' 'Metacello-TestsMCResources...
12@          -> spec name: 'Metacello-TestsTutorial'; requires: #('Metacello-Tutorial' 'Metacello-TestsMCResources' ).
13@          -> spec name: 'Metacello-GS3x-Platform'; requires: #('Metacello-Platform' ).
14@          -> spec name: 'Metacello-FileTree'; requires: #('Metacello-MC' 'FileTree' ).
15@          -> spec name: 'Metacello-GitBasedRepository'; requires: #('Metacello-MC' 'Metacello-FileTree' ).
16@          -> spec name: 'Metacello-GitHub'; requires: #('Metacello-GitBasedRepository' ).
17@          -> spec name: 'Metacello-Bitbucket'; requires: #('Metacello-GitBasedRepository' ).
18@          -> spec name: 'Metacello-Reference'; requires: #('Metacello-MC' ).
19@          -> spec name: 'Metacello-TestsReference'; requires: #('Metacello-Reference' ).
20@          -> spec name: 'Metacello-TestsMC'; requires: #('Metacello-MC' 'Metacello-ToolBox' 'Metacello-GitHub' 'Metacello-Bitbucket' 'Metacello-Tes...
21@          -> spec name: 'Metacello-TestsMCB'; requires: #('Metacello-TestsMC' ).
22@          -> spec name: 'Metacello-TestsCypress'; requires: #('Metacello-Cypress' 'Metacello-TestsMCB' ).
23@          -> spec name: 'Metacello-TestsMCA'; requires: #('Metacello-TestsMC' ).
24@          -> spec name: 'Metacello-TestsPlatform'; requires: #('Metacello-Platform' ); file: 'Metacello-TestsPlatform.gemstone'.
25@          -> spec name: 'Metacello-GemStone-TestsMCB'; requires: #('Metacello-TestsMCB' ).

Things look correct in 3.4.5 and will need to track back to see where things have broken down ...

dalehenrich commented 4 years ago

a reload of the project seems to clear up the package corruption ...

this does not work ...

dalehenrich commented 4 years ago

because of the way that Monticello is defined, there is no practical way to patch this particular bug ... it has been introduced during the bootstrapping process and the package Monticello.v3 in $GEMSTONE/seaside/monticello/repository/Monticello.v3-dkh.457.mcz in 3.5.3 ... which is part of the 3.5.x release ... so the best bet is to delete the packages. Here's an example using tODE:

mc delete Metacello
mc delete Tonel

Then using the project list, revert the Metacello project to reload ...

dalehenrich commented 4 years ago

This bug will be fixed in 3.5.4 and 3.6.0 ... (above patch will have to be used for 3.5.0, 3.5.1. and 3.5.2)