I want to configure BabyIDE with a number of examples into a package
that interested Squeakers can install with a minimum of fuss. I chose MonticelloConfigurations because it looked much simpler than Metacello. Being utterly confused after reading code, the documentation I could find. Also trying what I could guess at. The configuration is at http://www.squeaksource.com/DCI/BBAllInOne-TRee.1.mcz and at http://www.squeaksource.com/DCI/BBAllInOne-TRee.18.mcm I have defined a SqueakMap package 'BabyIdeAllInOne' with 3 versions for loading the configuration. None of them work: I open a fresh image and use the SqueakMap Package Loader to load BabyIdeAllInOne 1.2. I get an error 'No package release found with version TRee.1' ----- The question appears to be: Where did SMSqueakMap look when it didn't find a release? I have tried these scripts (among many): SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.1' and SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.18' May be I shouldn't have used a script at all, but relied on some unknown convention? I'm completely lost and badly need help. --Trygve |
The desirable properties of a SqueakMap-based configuration are:
- Load the application if it isn't already loaded, including any required dependencies first, as necessary. - Update the package to the latest version if older version(s) are already loaded in the image. - Don't lose any local changes I may have made when updating the package. - Load exact versions for production released versions of Squeak - Load the latest code for the current trunk version of Squeak Take a look at a working example; say, the "Ma client server" package, which meets all of the above requirements with a simple script. It depends on OSProcess but loads that automatically if you don't already have it. The "1.6" version is designated for Squeak 4.4 while "head" version loads the currently latest code using McmUpdater, the same process we use for trunk. Here is some documentation: http://wiki.squeak.org/squeak/779 http://wiki.squeak.org/squeak/6181 http://wiki.squeak.org/squeak/2726 HTH On Tue, Jan 13, 2015 at 11:08 AM, Trygve Reenskaug <[hidden email]> wrote: > I want to configure BabyIDE with a number of examples into a package that > interested Squeakers can install with a minimum of fuss. I chose > MonticelloConfigurations because it looked much simpler than Metacello. > Being utterly confused after reading code, the documentation I could find. > Also trying what I could guess at. > > The configuration is at > http://www.squeaksource.com/DCI/BBAllInOne-TRee.1.mcz > and at > http://www.squeaksource.com/DCI/BBAllInOne-TRee.18.mcm > > I have defined a SqueakMap package 'BabyIdeAllInOne' with 3 versions for > loading the configuration. None of them work: > I open a fresh image and use the SqueakMap Package Loader to load > BabyIdeAllInOne 1.2. I get an error > 'No package release found with version TRee.1' > ----- > The question appears to be: > Where did SMSqueakMap look when it didn't find a release? > I have tried these scripts (among many): > SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.1' > and > SMSqueakMap default installPackageNamed: 'BBallInOne' version: > 'TRee.18' > > May be I shouldn't have used a script at all, but relied on some unknown > convention? > > I'm completely lost and badly need help. > --Trygve > |
In reply to this post by Trygve
> On 13.01.2015, at 18:08, Trygve Reenskaug <[hidden email]> wrote: > > I want to configure BabyIDE with a number of examples into a package that interested Squeakers can install with a minimum of fuss. I chose MonticelloConfigurations because it looked much simpler than Metacello. > Being utterly confused after reading code, the documentation I could find. Also trying what I could guess at. > > The configuration is at > http://www.squeaksource.com/DCI/BBAllInOne-TRee.1.mcz > and at > http://www.squeaksource.com/DCI/BBAllInOne-TRee.18.mcm > > I have defined a SqueakMap package 'BabyIdeAllInOne' with 3 versions for loading the configuration. None of them work: > I open a fresh image and use the SqueakMap Package Loader to load BabyIdeAllInOne 1.2. I get an error > 'No package release found with version TRee.1' > ----- > The question appears to be: > Where did SMSqueakMap look when it didn't find a release? > I have tried these scripts (among many): > SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.1' > and > SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.18' > > May be I shouldn't have used a script at all, but relied on some unknown convention? > > I'm completely lost and badly need help. 'BBAllInOne' ~= 'BBallInOne'. I have not tried with SqueakMap but this appears to work: (Installer squeaksource project: 'DCI') install: 'BBAllInOne' - Bert - smime.p7s (5K) Download Attachment |
In reply to this post by Chris Muller-3
Chris,
Many, many thanks. I finally got it right and BBAllInOne now loads correctly. The working script reads SMSqueakMap default loadUpdates. (Installer repository: 'http://www.squeaksource.com/DCI') install: 'BBAllInOne-TRee.18' . Is there a simpler way? Most SqueakMap packages do not have a script; they only have a "Download URL". AwesomAtom is one example. BabyIDE-1.2.9 is another. I made it 6 years ago. It still works. I cannot remember how I specified the URL at the time and cannot find any user interface to edit it. Has it been removed? Again, many thanks for your help. --Trygve On 13.01.2015 18:36, Chris Muller
wrote:
The desirable properties of a SqueakMap-based configuration are: - Load the application if it isn't already loaded, including any required dependencies first, as necessary. - Update the package to the latest version if older version(s) are already loaded in the image. - Don't lose any local changes I may have made when updating the package. - Load exact versions for production released versions of Squeak - Load the latest code for the current trunk version of Squeak Take a look at a working example; say, the "Ma client server" package, which meets all of the above requirements with a simple script. It depends on OSProcess but loads that automatically if you don't already have it. The "1.6" version is designated for Squeak 4.4 while "head" version loads the currently latest code using McmUpdater, the same process we use for trunk. Here is some documentation: http://wiki.squeak.org/squeak/779 http://wiki.squeak.org/squeak/6181 http://wiki.squeak.org/squeak/2726 HTH On Tue, Jan 13, 2015 at 11:08 AM, Trygve Reenskaug [hidden email] wrote:I want to configure BabyIDE with a number of examples into a package that interested Squeakers can install with a minimum of fuss. I chose MonticelloConfigurations because it looked much simpler than Metacello. Being utterly confused after reading code, the documentation I could find. Also trying what I could guess at. The configuration is at http://www.squeaksource.com/DCI/BBAllInOne-TRee.1.mcz and at http://www.squeaksource.com/DCI/BBAllInOne-TRee.18.mcm I have defined a SqueakMap package 'BabyIdeAllInOne' with 3 versions for loading the configuration. None of them work: I open a fresh image and use the SqueakMap Package Loader to load BabyIdeAllInOne 1.2. I get an error 'No package release found with version TRee.1' ----- The question appears to be: Where did SMSqueakMap look when it didn't find a release? I have tried these scripts (among many): SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.1' and SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.18' May be I shouldn't have used a script at all, but relied on some unknown convention? I'm completely lost and badly need help. --Trygve --
Trygve Reenskaug [hidden email] Morgedalsvn. 5A http://folk.uio.no/trygver/ N-0378 Oslo http://fullOO.info Norway Tel: (+47) 22 49 57 27 Save our in-boxes! http://emailcharter.org/ |
On Wed, Jan 14, 2015 at 7:34 AM, Trygve Reenskaug <[hidden email]> wrote:
> Chris, > Many, many thanks. I finally got it right and BBAllInOne now loads > correctly. The working script reads > SMSqueakMap default loadUpdates. > (Installer repository: 'http://www.squeaksource.com/DCI') install: > 'BBAllInOne-TRee.18' . > > Is there a simpler way? Well, as in the above, you only had to give the bare minimum information the system would absolutely require to fulfill the requirement: 1) The repository and 2) MCVersion to #install. It's hard for me to imagine what could possibly be simpler than that.. > Most SqueakMap packages do not have a script; they > only have a "Download URL". They /all/ have a Download URL. What varies is what type of file is found at that url. When you entered the script above and clicked "Save" in the Release Editor browser, it saved it as a ".st" file on the SM server, with the "Download URL" field pointing to it. SqueakMap will still interpret .mcz, .sar, as well as .st files and "do the right thing" for each type. So you actually are using Download URL, just with the .st file which loading it from SS. But, yes, you could log into your SM account on the web and manually upload a copy of single .mcz file and be done that way. But since you have the script now done once, now for future versions it might be easier simply to select "Edit Release", update the version #, and click "Save". Done. That's easier than a manual upload and the code itself resides only in one place, SqueakSource. > AwesomAtom is one example. BabyIDE-1.2.9 is > another. I made it 6 years ago. It still works. I cannot remember how I > specified the URL at the time and cannot find any user interface to edit it. Plus, the coolest thing about SqueakMap is that it is an on-line resource which let's us "borrow" each other's /Smalltalk compiler/ in order to show each other how to run our software. It's a on-line catalog of Smalltalk code-snippets. This is very powerful. Maybe you would like BabyIDE to open up some sort of Welcome panel when installed from SqueakMap. That's easy with the .st script or .sar file. Not with just an uploaded .mcz. Cheers. > Has it been removed? > > Again, many thanks for your help. > --Trygve > > > > On 13.01.2015 18:36, Chris Muller wrote: > > The desirable properties of a SqueakMap-based configuration are: > > - Load the application if it isn't already loaded, including any > required dependencies first, as necessary. > - Update the package to the latest version if older version(s) are > already loaded in the image. > - Don't lose any local changes I may have made when updating the package. > - Load exact versions for production released versions of Squeak > - Load the latest code for the current trunk version of Squeak > > Take a look at a working example; say, the "Ma client server" package, > which meets all of the above requirements with a simple script. It > depends on OSProcess but loads that automatically if you don't already > have it. The "1.6" version is designated for Squeak 4.4 while "head" > version loads the currently latest code using McmUpdater, the same > process we use for trunk. > > Here is some documentation: > > http://wiki.squeak.org/squeak/779 > http://wiki.squeak.org/squeak/6181 > http://wiki.squeak.org/squeak/2726 > > HTH > > On Tue, Jan 13, 2015 at 11:08 AM, Trygve Reenskaug <[hidden email]> > wrote: > > I want to configure BabyIDE with a number of examples into a package that > interested Squeakers can install with a minimum of fuss. I chose > MonticelloConfigurations because it looked much simpler than Metacello. > Being utterly confused after reading code, the documentation I could find. > Also trying what I could guess at. > > The configuration is at > http://www.squeaksource.com/DCI/BBAllInOne-TRee.1.mcz > and at > http://www.squeaksource.com/DCI/BBAllInOne-TRee.18.mcm > > I have defined a SqueakMap package 'BabyIdeAllInOne' with 3 versions for > loading the configuration. None of them work: > I open a fresh image and use the SqueakMap Package Loader to load > BabyIdeAllInOne 1.2. I get an error > 'No package release found with version TRee.1' > ----- > The question appears to be: > Where did SMSqueakMap look when it didn't find a release? > I have tried these scripts (among many): > SMSqueakMap default installPackageNamed: 'BBallInOne' version: 'TRee.1' > and > SMSqueakMap default installPackageNamed: 'BBallInOne' version: > 'TRee.18' > > May be I shouldn't have used a script at all, but relied on some unknown > convention? > > I'm completely lost and badly need help. > --Trygve > > > > > -- > > Trygve Reenskaug mailto: [hidden email] > Morgedalsvn. 5A http://folk.uio.no/trygver/ > N-0378 Oslo http://fullOO.info > Norway Tel: (+47) 22 49 57 27 > > Save our in-boxes! http://emailcharter.org/ > |
On 14.01.2015, at 21:32, Chris Muller <[hidden email]> wrote:
> >> Most SqueakMap packages do not have a script; they >> only have a "Download URL". > > They /all/ have a Download URL. What varies is what type of file is > found at that url. When you entered the script above and clicked > "Save" in the Release Editor browser, it saved it as a ".st" file on > the SM server, with the "Download URL" field pointing to it. > SqueakMap will still interpret .mcz, .sar, as well as .st files and > "do the right thing" for each type. - Bert - smime.p7s (5K) Download Attachment |
On Thu, Jan 15, 2015 at 4:02 AM, Bert Freudenberg <[hidden email]> wrote:
> On 14.01.2015, at 21:32, Chris Muller <[hidden email]> wrote: >> >>> Most SqueakMap packages do not have a script; they >>> only have a "Download URL". >> >> They /all/ have a Download URL. What varies is what type of file is >> found at that url. When you entered the script above and clicked >> "Save" in the Release Editor browser, it saved it as a ".st" file on >> the SM server, with the "Download URL" field pointing to it. >> SqueakMap will still interpret .mcz, .sar, as well as .st files and >> "do the right thing" for each type. > > Curious, does it handle .mcm directly nowadays? It appears not but could be done by adding new subclass of SMSimpleInstaller. |
I've had quite an odyssey to come to my present understanding of the
SqueakMap package loader. The way I now understand it is as follows:
This is as far as I've got. I hope somebody will correct the explanation where it is wrong so that other people may make use of it. I would have been spared considerable time and frustration if I had seen it a couple of weeks ago. Cheers --Trygve On 15.01.2015 20:52, Chris Muller
wrote:
On Thu, Jan 15, 2015 at 4:02 AM, Bert Freudenberg [hidden email] wrote:On 14.01.2015, at 21:32, Chris Muller [hidden email] wrote:Most SqueakMap packages do not have a script; they only have a "Download URL".They /all/ have a Download URL. What varies is what type of file is found at that url. When you entered the script above and clicked "Save" in the Release Editor browser, it saved it as a ".st" file on the SM server, with the "Download URL" field pointing to it. SqueakMap will still interpret .mcz, .sar, as well as .st files and "do the right thing" for each type.Curious, does it handle .mcm directly nowadays?It appears not but could be done by adding new subclass of SMSimpleInstaller. --
The essence of object orientation is
that |
> I've had quite an odyssey to come to my present understanding of the
> SqueakMap package loader. The way I now understand it is as follows: > > SqueakMap packages can be seen in the middle-left list pane of SqueakMap > Package Loader. The context menu in this pane filters which packages to > show. The bottom-left list pane appears to be another selection filter. I > deselect all to avoid surprises. Yea that sounds right. Honestly I really do not like the hierarchical list I would prefer a more Smalltalk-like browser approach with packages in left pane, releases in middle pane, details in bottom pane, etc. > Details about the selected package are shown in the right pane. > A selected SqueakMap package can contain releases. Available releases are > listed below the package name in the SqueakMap Package Loader. A new > release can be created though the context menu of a selected package: > "Create new Release". (There are more alternatives that I haven't > investigated.) > Details about a selected release are shown in the right pane. One detail > shown for every release is called "Download: <URL>". The URL identifies a > file that specifies the installation. I have seen an .st file that will be > executed as a doIt, and a .sar file that contains 3 .st files: a preamble, > an installation file, and a postscript. A .sar file would also contain whatever /resources/ were needed for that application to run. Many catalog entries do not need resources, but the ones that do, can use SAR files as a means of one-click deployment. Otherwise, a plain .st script can be used to download resources from some location (along with code packages for a correct configuration). Normally each correct configuration script is specified for a specific version of Squeak. > One command available for a selected release is "Edit release". This opens > a "fill-in-the-form" called a Release browser. Most fields are explained by > hovering the mouse above the field. The exception is the bottom field; it > can contain a script for the installation. I haven't found a good > explanation for this script anywhere. Yes it's the .st script which performs the installation. There is a detailed description with example here: It explains the two kinds of scripts that should be written for each SqueakMap catalog entry, 1) the fixed-configuration (for specific Squeak version) and 2) the head release (latest code). It explains the rationale for when you would want just #1, or both #1 + #2. > I first thought it wasn't important > because most releases shown in the package loader leave the script empty. That's only because most packages on SM are from before the time this ability to "Edit Release" was written in 2012. At that time, I started trying to encourage people to use SM as a Catalog and not a SCM tool. IOW, use .st scripts only (unless embedded resources are needed, then a SAR). I personally am not going to store any more .mcz's on SqueakMap. I only want my .mcz's in the SCM repository (SqueakSource, SS3, etc.). The rationale for this is in those wiki pages linked together. > I > now see the field as an input field. Fill it with executable Squeak code and > save it. It will then be transformed into file, stored somewhere, and become > retrievable through the URL in the "Download: <URL>". This scheme seems > extremely powerful but only for the person who knows the various > installation mechanisms. That's true but all catalog entry's can generally follow the same format of script, so you can clone pretty easily one and get all the great features like dependencies for literally just a few lines of code. The format of every "fixed-configuration" script is: (check if first required dependency is already loaded) ifFalse: [ SMSqueakMap default installPackageNamed: 'The Dependent Package' version: '1.1' ]. (check if 2nd required dependency is already loaded) ifFalse: [ SMSqueakMap default installPackageNamed: 'The Dependent Package' version: '1.1' ]. #('My-Core-Package-cmm.123' 'My-Tests-Package-cmm.123') do: [ : each | (Installer repository: 'http://ss3.gemstone.com/ss/Ma-Client-Server') install: each ] The way I check for the presence of required dependencies is simply (Smalltalk hasClassNamed: #SomeClass) where I know SomeClass only exists in that other package. I know this is not ideal but the good news everyone can do precisely what's ideal for each project. See an example on SM for an example of a proper "head" script. It's basically the same except instead of loading specific package versions it uses McmUpdater, the same mechanism we use for trunk, so that each SM project can have community features too. > Chris pointed me to a script statement for downloading a SqueakSource > package known by its URL. e.g., > (Installer repository: 'http://www.squeaksource.com/DCI') install: > 'BBAllInOne-TRee.18' . > this happens to be an Monticello configuration file, > BBAllInOne-TRee.18.mcm. Installer can install .mcm file fine. > Another statement I have seen is > SMSqueakMap default installPackageNamed: '<name>' version: > '<version>' > I couldn't make it work for me, but suspect that the package shall be stored > as a versioned file in SqueakMap itself. That should work as long as '<version>' of '<name>' exists -- it will simply run that file at Download URL for that package and this is how pre-reqs are done. I tested it yesterday and it worked, which one is not working fo ryou? > This is as far as I've got. I hope somebody will correct the explanation > where it is wrong so that other people may make use of it. I would have > been spared considerable time and frustration if I had seen it a couple of > weeks ago. Good that you persevered since you now can easily publish packages that can use any SCM technology with resources, demos, etc. Cheers. > Cheers > --Trygve > > > > On 15.01.2015 20:52, Chris Muller wrote: > > On Thu, Jan 15, 2015 at 4:02 AM, Bert Freudenberg <[hidden email]> > wrote: > > On 14.01.2015, at 21:32, Chris Muller <[hidden email]> wrote: > > Most SqueakMap packages do not have a script; they > only have a "Download URL". > > They /all/ have a Download URL. What varies is what type of file is > found at that url. When you entered the script above and clicked > "Save" in the Release Editor browser, it saved it as a ".st" file on > the SM server, with the "Download URL" field pointing to it. > SqueakMap will still interpret .mcz, .sar, as well as .st files and > "do the right thing" for each type. > > Curious, does it handle .mcm directly nowadays? > > It appears not but could be done by adding new subclass of > SMSimpleInstaller. > > > > > -- > > The essence of object orientation is that > objects collaborate to achieve a goal. > The class hierarchy is in the nature of a comment; > it has no run time significance. > --- > Trygve Reenskaug mailto: [hidden email] > Morgedalsvn. 5A http://folk.uio.no/trygver/ > N-0378 Oslo http://fullOO.info > Norway Tel: (+47) 22 49 57 27 > > > > |
In reply to this post by Trygve
On Sat, Jan 17, 2015 at 02:53:52PM +0100, Trygve Reenskaug wrote:
> I've had quite an odyssey to come to my present understanding of the > SqueakMap package loader. The way I now understand it is as follows: > > 1. SqueakMap packages can be seen in the middle-left list pane of > SqueakMap Package Loader. The context menu in this pane filters > which packages to show. The bottom-left list pane appears to be > another selection filter. I deselect all to avoid surprises. > 2. Details about the selected package are shown in the right pane. > 3. A selected SqueakMap package can contain releases. Available > releases are listed below the package name in the SqueakMap Package > Loader. A new release can be created though the context menu of a > selected package: "Create new Release". (There are more alternatives > that I haven't investigated.) > 4. Details about a selected release are shown in the right pane. One > detail shown for every release is called "/Download: <URL>/". The > URL identifies a file that specifies the installation. I have seen > an .st file that will be executed as a doIt, and a .sar file that > contains 3 .st files: a preamble, an installation file, and a > postscript. > 5. One command available for a selected release is "Edit release". > This opens a "fill-in-the-form" called a Release browser. Most > fields are explained by hovering the mouse above the field. The > exception is the bottom field; it can contain a script for the > installation. I haven't found a good explanation for this script > anywhere. I first thought it wasn't important because most releases > shown in the package loader leave the script empty. I now see the > field as an input field. Fill it with executable Squeak code and > save it. It will then be transformed into file, stored somewhere, > and become retrievable through the URL in the "/Download: <URL>///". > This scheme seems extremely powerful but only for the person who > knows the various installation mechanisms. > > * Chris pointed me to a script statement for downloading a > SqueakSource package known by its URL. e.g., > (Installer repository: > 'http://www.squeaksource.com/DCI') install: 'BBAllInOne-TRee.18' . > this happens to be an Monticello configuration file, > BBAllInOne-TRee.18.mcm. > * Another statement I have seen is > SMSqueakMap default installPackageNamed: '<name>' > version: '<version>' > I couldn't make it work for me, but suspect that the package > shall be stored as a versioned file in SqueakMap itself. > > This is as far as I've got. I hope somebody will correct the explanation > where it is wrong so that other people may make use of it. I would have > been spared considerable time and frustration if I had seen it a couple > of weeks ago. > > Cheers > --Trygve > This looks like useful information. There is a "Help" button on the SqueakMap Package Loader that does not seem to do anything very helpful any more. Maybe we could capture Trygve's summary there? And/or in the help browser? Dave |
Free forum by Nabble | Edit this page |