[Cuis-dev] Fwd: Missing parserClass preference
Mariano Montone
marianomontone at gmail.com
Mon Sep 19 12:18:05 PDT 2022
El 19/9/22 a las 16:01, Mariano Montone escribió:
> El 19/9/22 a las 15:32, Mariano Montone escribió:
>> El 19/9/22 a las 14:24, Hilaire Fernandes via Cuis-dev escribió:
>>>
>>> Hi,
>>>
>>> The issue occurs on my development image, freshly installed, but
>>> involving a lot of packages. I try to install Erudit, but it happens
>>> with other package.
>>>
>>> The Cuis image is #5485.
>>>
>>> class argument is #Preference. The receiver of #parserClass is a
>>> PreferenceSet
>>>
>>> Here is an image from where you can review with the debugger open:
>>> https://www.dropbox.com/s/rdvqfxn0m5n4xxq/Bug.zip?dl=0
>>>
>> Looks like this could be related to Erudite package, that received
>> some updates. I'll have a look.
>>
> I know what is going on. The PackageDownloader asks the
> PackageInstaller to scan for the current list of packages. To
> determine the current list of packages every Cuis package file on disk
> is scanned. That scanning involves loading its changesets somehow. The
> changeset of some of the packages reference the Preferences class,
> that does not exist anymore. That triggers an error. (Actually, it is
> a bit weirder than that, since the problematic code is: (Smalltalk at:
> class ifAbsent: [Object class]) parserClass), but Smalltalk at:
> #Preferences gives a PreferenceSet instance! (I have no explanation
> for that part ...)
>
> That is the problem.
>
> Some solutions:
>
> - Remove those packages from disk (if you empty your download
> directory there are changes that the PackageInstaller and downloader
> work for you.)
>
> - Update those packages.
>
> - Use Feature require instead of the installer (Erudite loads fine
> with Feature require btw).
>
>
> I'm thinking of if something else can be done about it...
>
>
> Mariano
>
The solution in my opinion is to handle errors when the PackageInstaller
scans packages; print a warning and ignore the package.
Like this:
PackageInstaller>>collectPackagesFromDirectory: aDirectory
"Create a collection of PackageSpec with package files found in
aDirectory."
|packageFiles|
packageFiles _ aDirectory fileNamesMatching: '*.pck.st'.
packageFiles do: [:packageFile | | codePackage |
[codePackage _ CodePackageFile onFileEntry: (aDirectory //
packageFile).
self addPackage: codePackage]
on: Error
do: [:e | Transcript nextPutAll: 'Warning: Error scanning the
package ', packageFile, '. Ignoring ...'; newLine]]
You can also use that. I'll submit the patch later.
Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220919/268a3abd/attachment.htm>
More information about the Cuis-dev
mailing list