<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body>
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p>> <span style="font-size: 12pt;">In other words, your shared pool should indeed be a class. It doesnít matter for using it, but it does matter for loading it reliably.  </span></p>
<div><br>
</div>
<p></p>
<p><span style="font-size: 12pt;">Hmm, I am pretty sure that this would confuse Squot (which is also based on Monticello) ...</span></p>
<p><span style="font-size: 12pt;"><br>
</span></p>
<p><span style="font-size: 12pt;">For now, I have defined the shared pool in question as a Smalltalk global in my baseline preload script. Still, I don't think this solution is optimal. But I'll note it down for later. :-)</span></p>
<p><span style="font-size: 12pt;"><br>
</span></p>
<p><span style="font-size: 12pt;">Best,</span></p>
<p><span style="font-size: 12pt;">Christoph</span></p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div>
<div class="_rp_T4" id="Item.MessagePartBody">
<div class="_rp_U4 ms-font-weight-regular ms-font-color-neutralDark rpHighlightAllClass rpHighlightBodyClass" id="Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="divtagdefaultwrapper"><font face="Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="Signature">
<div style="margin:0px"><font style="font-family:Calibri,Arial,Helvetica,sans-serif,serif,EmojiFont">
<div><font size="3" color="black"><span style="font-size:12pt"><a href="http://www.hpi.de/" target="_blank" rel="noopener noreferrer" id="LPNoLP"><font size="2"><span id="LPlnk909538"><font color="#757B80"></font></span></font></a></span></font></div>
</font></div>
</div>
</font></div>
</div>
</div>
</div>
</div>
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Vanessa Freudenberg <vanessa@codefrau.net><br>
<b>Gesendet:</b> Dienstag, 18. Mai 2021 19:02:37<br>
<b>An:</b> The general-purpose Squeak developers list<br>
<b>Betreff:</b> Re: [squeak-dev] Unable to load class with pool dictionary using Monticello</font>
<div> </div>
</div>
<div>
<div dir="auto"></div>
<div dir="auto">Iím certain we had a good reason to turn loadable shared pools into classes. I think (but Iím not entirely sure) it had to do with ensuring they had been properly initialized before executing code that depended on the constants declared in that
 pool. Class initialization of a designated class was TSTTCPW. </div>
<div dir="auto"><br>
</div>
<div dir="auto">In other words, your shared pool should indeed be a class. It doesnít matter for using it, but it does matter for loading it reliably.  </div>
<div dir="auto"><br>
</div>
<div dir="auto">I admit I could be misremembering, itís been quite a while. </div>
<div dir="auto"><br>
</div>
<div dir="auto">ĖVanessaĖ<br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto"><br>
<div class="gmail_quote" dir="auto">
<div dir="ltr" class="gmail_attr">On Tue, May 18, 2021 at 05:42 Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div id="m_-7545725793461642422__MailbirdStyleContent" style="font-size:10pt;font-family:Arial;text-align:left;color:rgb(0,0,0)" dir="ltr">
Hi Christoph,
<div style="font-family:Arial"><br>
</div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px">> This error message does not make sense to me since MyPool is not a class > but a pool dictionary.</span><br>
</div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px"><br>
</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px">You can use classes and global dictionaries as a shared pool.  From the system's perspective, it does not make any difference as long as #bindingOf: etc. is
 implemented. See class-side of SharedPool class. If you use a class as a shared pool in another class, the class variables will be shared. :-)</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px"><br>
</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px">***</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px"><br>
</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px">Yet, I think you found a bug. Maybe this was the reason why "FFI-Pools" exists in the first place. So that it can be loaded before "FFI-Kernel" xD</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px"><br>
</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px">Best,</span></div>
<div style="font-family:Arial"><span style="font-family:Calibri,Helvetica,sans-serif;font-size:16px">Marcel</span></div>
</div>
<div id="m_-7545725793461642422__MailbirdStyleContent" style="font-size:10pt;font-family:Arial;text-align:left;color:rgb(0,0,0)" dir="ltr">
<div style="font-family:Arial"></div>
<blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px;min-width:500px;font-family:Arial">
<p style="margin-top:10px;font-family:Arial;color:rgb(170,170,170)">Am 18.05.2021 13:21:34 schrieb Thiede, Christoph <<a href="mailto:christoph.thiede@student.hpi.uni-potsdam.de" target="_blank" style="font-family:Arial">christoph.thiede@student.hpi.uni-potsdam.de</a>>:</p>
<div style="font-family:Arial,Helvetica,sans-serif">
<div id="m_-7545725793461642422divtagdefaultwrapper" style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif;color:rgb(0,0,0)" dir="ltr">
<p style="font-family:Calibri,Helvetica,sans-serif">Hi all,</p>
<p style="font-family:Calibri,Helvetica,sans-serif"><br>
</p>
<p style="font-family:Calibri,Helvetica,sans-serif">while loading a class (MyClass) with an attached pool dictionary (MyPool) today using Monticello, I encountered an error from MCPackageLoader which states:</p>
<p style="font-family:Calibri,Helvetica,sans-serif"><br>
</p>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;min-width:500px;font-family:Calibri,Helvetica,sans-serif">
<p style="font-family:Calibri,Helvetica,sans-serif"></p>
<div style="font-family:Calibri,Helvetica,sans-serif">Warning: This package depends on the following classes:</div>
<p style="font-family:Calibri,Helvetica,sans-serif"></p>
<p style="font-family:Calibri,Helvetica,sans-serif"></p>
<div style="font-family:Calibri,Helvetica,sans-serif">MyPool</div>
<p style="font-family:Calibri,Helvetica,sans-serif"></p>
</blockquote>
<p style="font-family:Calibri,Helvetica,sans-serif"></p>
<div style="font-family:Calibri,Helvetica,sans-serif"><br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif">This error message does not make sense to me since MyPool is not a class but a pool dictionary. But in MCClassDefinition >> #requirements, all #<span style="font-family:Calibri,Helvetica,sans-serif">poolDictionaries
 are explicitly added to the list of required items. If I exclude them from this list, I get a warning "</span><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif">The pool dictionary MyPool does not exist. </span><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif">Do
 you want it automatically created?" later from Class >> #sharing:. Is this a bug?</span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif"><br>
</span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif">I also tried to manually add the pool dictionary initialization (<span style="font-family:Calibri,Helvetica,sans-serif">Smalltalk at:
 #MyPool put: Dictionary new) into the preamble of the package, but this preamble is also evaluated too late (i.e., not before the dependency warning is raised. Also, this feels a bit too redundant to me.</span></span><span style="font-family:Calibri,Helvetica,sans-serif"></span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif"><span style="font-family:Calibri,Helvetica,sans-serif"><br>
</span></span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif"><span style="font-family:Calibri,Helvetica,sans-serif">Do we need a new subclass of MCDefinition to create pool dictionaries automatically?
 Or could we just remove the confirmation dialog in Class >> #sharing: so that new pools will automatically be created, especially in non-interactive CI contexts?</span></span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-family:Calibri,Helvetica,sans-serif"><br>
</span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-family:Calibri,Helvetica,sans-serif">Best,</span></div>
<div style="font-family:Calibri,Helvetica,sans-serif"><span style="font-family:Calibri,Helvetica,sans-serif">Christoph</span></div>
<p style="font-family:Calibri,Helvetica,sans-serif"></p>
<div id="m_-7545725793461642422Signature" style="font-family:Calibri,Helvetica,sans-serif">
<div id="m_-7545725793461642422divtagdefaultwrapper" dir="ltr" style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;color:rgb(0,0,0)">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div id="m_-7545725793461642422Item.MessagePartBody" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div id="m_-7545725793461642422Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div id="m_-7545725793461642422divtagdefaultwrapper" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div id="m_-7545725793461642422Signature" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div style="margin:0px;font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<font size="3" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;color:rgb(0,0,0)"><span style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols"><a href="http://www.hpi.de/" rel="noopener noreferrer" id="m_-7545725793461642422LPNoLP" target="_blank" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols"><font size="2" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;color:rgb(66,133,244)"><span id="m_-7545725793461642422LPlnk909538" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols"><font style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;color:rgb(117,123,128)"></font></span></font></a></span></font></div>
</span></div>
</div>
</span></div>
</div>
</div>
</div>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<span style="font-size:10pt;font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;color:rgb(128,128,128)"></span></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</blockquote>
</div>
</div>
</div>
</body>
</html>