The Inbox: Installer-Core-dtl.425.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Installer-Core-dtl.425.mcz

commits-2
A new version of Installer-Core was added to project The Inbox:
http://source.squeak.org/inbox/Installer-Core-dtl.425.mcz

==================== Summary ====================

Name: Installer-Core-dtl.425
Author: dtl
Time: 7 November 2018, 9:24:32.82223 pm
UUID: 6a5d8822-147f-460a-9aac-b17f02399538
Ancestors: Installer-Core-cmm.424

In the case of a repository containing both 'Chronology-Core-dtl.3' and
'Chronology-Core-dtl.30', the following will incorrectly load version 30 rather
than version 3.

  (Installer ss project: 'UTCDateAndTime') install: 'Chronology-Core-dtl.3'

A workaround is to reverse the order of sorting in InstallerMonticello>>mcSortFileBlock, such that 'Chronology-Core-dtl.3' will be detected before 'Chronology-Core-dtl.30' in InstallerMonticello>>mcThing.

A possibly better fix is to change InstallerMonticello>>mcDetectFileBlock: to do string equality checks rather than #beginsWith: comparisons. This appears to be correct, but might have side effects, since I do not know the original rationale for using #beginsWith:.

This change implements the possibly better fix.

=============== Diff against Installer-Core-cmm.424 ===============

Item was changed:
  ----- Method: InstallerMonticello>>mcDetectFileBlock: (in category 'monticello') -----
  mcDetectFileBlock: pkg
 
  pkg isString ifTrue: [  ^ [ :aMCVersionName |
+ (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = pkg ] ] ].
- (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: pkg ] ] ].
 
  (pkg isKindOf: Array)
  ifTrue: [  ^  [ :aMCVersionName | pkg anySatisfy: [ :item |
+ (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = item ] ] ] ].
- (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: item ] ] ] ].
 
  pkg isBlock ifTrue: [ ^ pkg ].
   !


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-dtl.425.mcz

Tobias Pape

> On 08.11.2018, at 03:25, [hidden email] wrote:
>
> A new version of Installer-Core was added to project The Inbox:
> http://source.squeak.org/inbox/Installer-Core-dtl.425.mcz
>
> ==================== Summary ====================
>
> Name: Installer-Core-dtl.425
> Author: dtl
> Time: 7 November 2018, 9:24:32.82223 pm
> UUID: 6a5d8822-147f-460a-9aac-b17f02399538
> Ancestors: Installer-Core-cmm.424
>
> In the case of a repository containing both 'Chronology-Core-dtl.3' and
> 'Chronology-Core-dtl.30', the following will incorrectly load version 30 rather
> than version 3.
>
>  (Installer ss project: 'UTCDateAndTime') install: 'Chronology-Core-dtl.3'
>
> A workaround is to reverse the order of sorting in InstallerMonticello>>mcSortFileBlock, such that 'Chronology-Core-dtl.3' will be detected before 'Chronology-Core-dtl.30' in InstallerMonticello>>mcThing.
>
> A possibly better fix is to change InstallerMonticello>>mcDetectFileBlock: to do string equality checks rather than #beginsWith: comparisons. This appears to be correct, but might have side effects, since I do not know the original rationale for using #beginsWith:.

Isn't the rationale that you cat do

Installer squeaksource
        project: 'UTCDateAndTime';
        install: 'Chronology-Core'.

and get just the latest one ?

Best regards
        -Tobias

>
> This change implements the possibly better fix.
>
> =============== Diff against Installer-Core-cmm.424 ===============
>
> Item was changed:
>  ----- Method: InstallerMonticello>>mcDetectFileBlock: (in category 'monticello') -----
>  mcDetectFileBlock: pkg
>
>   pkg isString ifTrue: [  ^ [ :aMCVersionName |
> + (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = pkg ] ] ].
> - (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: pkg ] ] ].
>
>   (pkg isKindOf: Array)
>   ifTrue: [  ^  [ :aMCVersionName | pkg anySatisfy: [ :item |
> + (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = item ] ] ] ].
> - (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: item ] ] ] ].
>
>   pkg isBlock ifTrue: [ ^ pkg ].
>   !
>
>


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-dtl.425.mcz

David T. Lewis
On Thu, Nov 08, 2018 at 08:55:06AM +0100, Tobias Pape wrote:

>
> > On 08.11.2018, at 03:25, [hidden email] wrote:
> >
> > A new version of Installer-Core was added to project The Inbox:
> > http://source.squeak.org/inbox/Installer-Core-dtl.425.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Installer-Core-dtl.425
> > Author: dtl
> > Time: 7 November 2018, 9:24:32.82223 pm
> > UUID: 6a5d8822-147f-460a-9aac-b17f02399538
> > Ancestors: Installer-Core-cmm.424
> >
> > In the case of a repository containing both 'Chronology-Core-dtl.3' and
> > 'Chronology-Core-dtl.30', the following will incorrectly load version 30 rather
> > than version 3.
> >
> >  (Installer ss project: 'UTCDateAndTime') install: 'Chronology-Core-dtl.3'
> >
> > A workaround is to reverse the order of sorting in InstallerMonticello>>mcSortFileBlock, such that 'Chronology-Core-dtl.3' will be detected before 'Chronology-Core-dtl.30' in InstallerMonticello>>mcThing.
> >
> > A possibly better fix is to change InstallerMonticello>>mcDetectFileBlock: to do string equality checks rather than #beginsWith: comparisons. This appears to be correct, but might have side effects, since I do not know the original rationale for using #beginsWith:.
>
> Isn't the rationale that you cat do
>
> Installer squeaksource
> project: 'UTCDateAndTime';
> install: 'Chronology-Core'.
>
> and get just the latest one ?
>

Ah yes of course. So this proposed fix is wrong.

We still do need a way for an explicit version to be loaded reliably. hmmm...

Dave


> Best regards
> -Tobias
>
> >
> > This change implements the possibly better fix.
> >
> > =============== Diff against Installer-Core-cmm.424 ===============
> >
> > Item was changed:
> >  ----- Method: InstallerMonticello>>mcDetectFileBlock: (in category 'monticello') -----
> >  mcDetectFileBlock: pkg
> >
> >   pkg isString ifTrue: [  ^ [ :aMCVersionName |
> > + (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = pkg ] ] ].
> > - (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: pkg ] ] ].
> >
> >   (pkg isKindOf: Array)
> >   ifTrue: [  ^  [ :aMCVersionName | pkg anySatisfy: [ :item |
> > + (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = item ] ] ] ].
> > - (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: item ] ] ] ].
> >
> >   pkg isBlock ifTrue: [ ^ pkg ].
> >   !
> >
> >
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-dtl.425.mcz

Levente Uzonyi
On Thu, 8 Nov 2018, David T. Lewis wrote:

> On Thu, Nov 08, 2018 at 08:55:06AM +0100, Tobias Pape wrote:
>>
>> > On 08.11.2018, at 03:25, [hidden email] wrote:
>> >
>> > A new version of Installer-Core was added to project The Inbox:
>> > http://source.squeak.org/inbox/Installer-Core-dtl.425.mcz
>> >
>> > ==================== Summary ====================
>> >
>> > Name: Installer-Core-dtl.425
>> > Author: dtl
>> > Time: 7 November 2018, 9:24:32.82223 pm
>> > UUID: 6a5d8822-147f-460a-9aac-b17f02399538
>> > Ancestors: Installer-Core-cmm.424
>> >
>> > In the case of a repository containing both 'Chronology-Core-dtl.3' and
>> > 'Chronology-Core-dtl.30', the following will incorrectly load version 30 rather
>> > than version 3.
>> >
>> >  (Installer ss project: 'UTCDateAndTime') install: 'Chronology-Core-dtl.3'
>> >
>> > A workaround is to reverse the order of sorting in InstallerMonticello>>mcSortFileBlock, such that 'Chronology-Core-dtl.3' will be detected before 'Chronology-Core-dtl.30' in InstallerMonticello>>mcThing.
>> >
>> > A possibly better fix is to change InstallerMonticello>>mcDetectFileBlock: to do string equality checks rather than #beginsWith: comparisons. This appears to be correct, but might have side effects, since I do not know the original rationale for using #beginsWith:.
>>
>> Isn't the rationale that you cat do
>>
>> Installer squeaksource
>> project: 'UTCDateAndTime';
>> install: 'Chronology-Core'.
>>
>> and get just the latest one ?
>>
>
> Ah yes of course. So this proposed fix is wrong.
>
> We still do need a way for an explicit version to be loaded reliably. hmmm...

I think the best solution would be if the code tried to find an exact
match first and when there was none, use the current code: sort by
versionNames and find the first that matches by prefix.

Levente

>
> Dave
>
>
>> Best regards
>> -Tobias
>>
>> >
>> > This change implements the possibly better fix.
>> >
>> > =============== Diff against Installer-Core-cmm.424 ===============
>> >
>> > Item was changed:
>> >  ----- Method: InstallerMonticello>>mcDetectFileBlock: (in category 'monticello') -----
>> >  mcDetectFileBlock: pkg
>> >
>> >   pkg isString ifTrue: [  ^ [ :aMCVersionName |
>> > + (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = pkg ] ] ].
>> > - (pkg beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: pkg ] ] ].
>> >
>> >   (pkg isKindOf: Array)
>> >   ifTrue: [  ^  [ :aMCVersionName | pkg anySatisfy: [ :item |
>> > + (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName = item ] ] ] ].
>> > - (item beginsWith: aMCVersionName packageAndBranchName) and: [aMCVersionName beginsWith: item ] ] ] ].
>> >
>> >   pkg isBlock ifTrue: [ ^ pkg ].
>> >   !
>> >
>> >
>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-dtl.425.mcz

David T. Lewis
On Thu, Nov 08, 2018 at 11:48:50PM +0100, Levente Uzonyi wrote:

> On Thu, 8 Nov 2018, David T. Lewis wrote:
>
> >On Thu, Nov 08, 2018 at 08:55:06AM +0100, Tobias Pape wrote:
> >>
> >>> On 08.11.2018, at 03:25, [hidden email] wrote:
> >>>
> >>> A new version of Installer-Core was added to project The Inbox:
> >>> http://source.squeak.org/inbox/Installer-Core-dtl.425.mcz
> >>>
> >>> ==================== Summary ====================
> >>>
> >>> Name: Installer-Core-dtl.425
> >>> Author: dtl
> >>> Time: 7 November 2018, 9:24:32.82223 pm
> >>> UUID: 6a5d8822-147f-460a-9aac-b17f02399538
> >>> Ancestors: Installer-Core-cmm.424
> >>>
> >>> In the case of a repository containing both 'Chronology-Core-dtl.3' and
> >>> 'Chronology-Core-dtl.30', the following will incorrectly load version
> >>30 rather
> >>> than version 3.
> >>>
> >>>  (Installer ss project: 'UTCDateAndTime') install:
> >>'Chronology-Core-dtl.3'
> >>>
> >>> A workaround is to reverse the order of sorting in
> >>InstallerMonticello>>mcSortFileBlock, such that 'Chronology-Core-dtl.3'
> >>will be detected before 'Chronology-Core-dtl.30' in
> >>InstallerMonticello>>mcThing.
> >>>
> >>> A possibly better fix is to change
> >>InstallerMonticello>>mcDetectFileBlock: to do string equality checks
> >>rather than #beginsWith: comparisons. This appears to be correct, but
> >>might have side effects, since I do not know the original rationale for
> >>using #beginsWith:.
> >>
> >>Isn't the rationale that you cat do
> >>
> >>Installer squeaksource
> >> project: 'UTCDateAndTime';
> >> install: 'Chronology-Core'.
> >>
> >>and get just the latest one ?
> >>
> >
> >Ah yes of course. So this proposed fix is wrong.
> >
> >We still do need a way for an explicit version to be loaded reliably.
> >hmmm...
>
> I think the best solution would be if the code tried to find an exact
> match first and when there was none, use the current code: sort by
> versionNames and find the first that matches by prefix.
>
> Levente

That sounds right to me. I put Installer-Core-dtl.426 in the inbox,
which hopefully implements this correctly.

Dave