[squeak-dev] Re: Splitting an existing package

H. Hirzel hannes.hirzel at gmail.com
Wed Jul 17 12:03:19 UTC 2013


On 7/17/13, Frank Shearar <frank.shearar at gmail.com> wrote:
> On 17 July 2013 09:58, Frank Shearar <frank.shearar at gmail.com> wrote:
>> 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.)
>
> Actually, the whole "system start up" category in FileDirectory is
> miscategorised. This has nothing to do with generic file stuff. It's
> specific to handling the sources file on startup and shutdown of an
> image. Sounds like it belongs in something like System-Files!

Having this in 'System-Files' makes a lot of sense.

-- Hannes


> That small change makes the whole problem go away.
>
> 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