[squeak-dev] Re: Splitting an existing package

Frank Shearar frank.shearar at gmail.com
Wed Jul 17 08:58:39 UTC 2013


On 17 July 2013 01:19, Chris Muller <asqueaker at gmail.com> wrote:
> Why should Files depend on anything in Compression?  The image I'm in
> now reveals just two puny little methods causing Files to depend on
> Compression.
>
> If you move CompressedSourceStream to Compression (hey that makes
> sense!), as well as FileStream class>>#fileIn:, then we could be rid
> of the cycle that way.

It's more complicated than that. FileDirectory class >>
#openSources:forImage: also uses CompressedSourceStream, so would get
pulled into Compression.

(This stuff happens because we try use Foo.sources.gz if we can't find
Foo.sources. I don't know if there's a nice way of writing a pluggable
thing where we segregate the fallback logic and let packages plug into
that. That kind of inversion's great for breaking dependencies because
higher layer packages just plug into lower layer ones.)

frank

> On Tue, Jul 16, 2013 at 6:52 PM, Chris Cunningham
> <cunningham.cb at gmail.com> wrote:
>> So, after step 1, you also need to hunt down the various extensions - in
>> FileStream and other places - that is part of the Compression package, and
>> move them to one of the new packages.  Otherwise you innadvertantly remove
>> those methods.  (Currently all of these are just under *Compression - no
>> sub-category...)
>>
>> -Chris
>>
>>
>> On Tue, Jul 16, 2013 at 2:39 PM, Frank Shearar <frank.shearar at gmail.com>
>> wrote:
>>>
>>> On 16 July 2013 22:30, Frank Shearar <frank.shearar at gmail.com> wrote:
>>> > I would like to split the Compression package into its two constituent
>>> > subpackages, Compression-Archives and Compression-Streams.
>>> >
>>> > Files depends on things in Compression-Archives, and
>>> > Compression-Streams depends on Files. If I can split the package and
>>> > replace it with the two subpackages, I can untangle this cyclic
>>> > dependency.
>>> >
>>> > But how would I actually do this? I've tried making two packages, for
>>> > instance. However, the classes still remain in Compression... as you
>>> > can see if you try to unload the old Compression package.
>>>
>>> One possible way goes something like this:
>>> * Add CompressionArchives and CompressionStream packages corresponding
>>> to the hyphenated system categories
>>> * Push a new config map with the "new" packages
>>> * Push the empty Compression package
>>> * Remove the Compression package using a config map
>>> * Rename CompressionArchives to Compression-Archives and same for Stream
>>> * Push a third config map removing Compression and adding
>>> Compression-Archives and Compression-Stream
>>>
>>> > frank
>>>
>>
>>
>>
>>
>


More information about the Squeak-dev mailing list