hpi-swa / Squot

Squeak Object Tracker - Version control for arbitrary objects, currently with Git storage
Other
61 stars 29 forks source link

Feature Request: Include SAR into releases #290

Open LinqLover opened 4 years ago

LinqLover commented 4 years ago

Right now, Metacello has broken again which makes it impossible to install Squot into a fresh image even if you can use a SAR file to install Metacello. Thus I wonder whether it would be a good idea to include a SAR file into every release on this repository? They could be created automatically via CI.

j4yk commented 4 years ago

Would be a good idea, yes. Can you write the script that will create the archive, please?

LinqLover commented 4 years ago

So gave this a try, but I had to find out that all this Metacello-/preamble-related stuff is much more complex than I would have assumed.

I wrote a small class SARGenerator (I'd like to propose it for the trunk as well), which you can use like this to create the SAR:

SARGenerator storeArchiveNamed: 'Squot' do: [:gen |
    (SquitPackageChooser new packagesIn: SquitBrowser selfUpdateFindWorkingCopy "accessor for UpdateWorkingCopy") do: [:package |
        gen addPackage: package]]

However, this ignores all the dependencies defined in the BaselineOfSquot. It seems to require much more time than I have at the moment to study the Metacello source in detail to find out how all depended packages can be identified as well and be sorted in a topological order.

Of course, the package names could be hard-coded, but this would probably be an instabile solution. As a workaround, we could also list all packages in the CI job and reject those packages that belong to the trunk repository, but this would be a hack again.

Am I missing any super easy way? What do you think?

LinqLover commented 4 years ago

PS: Turns out there is already an existing SARBuilder package on SqueakMap. We probably don't need to reinvent the wheel ...