On 08/02/20 1:59 AM, David T. Lewis wrote:
> To say it another way, if I have Cog installed on my Linux box, and > then I install 32-bit Spur, it overwrites the /usr/local/bin/squeak > file. And if I then isntall 64-bit Spur, it overwrites the one for > 32-bit Spur. They also conflict with the original /usr/local/bin/squeak. +1 for fixing this. Currently, I am using a hack to support different squeak VMs on a single (non-root) session. I install all products in /opt/share/squeak but create a symlink based on the image format number. My directory looks like something like this (edited for brevity) : /opt/share/squeak$ ls -n 6* lrwxrwxrwx ... 6502 -> sqtrunklinux lrwxrwxrwx ... 6504 -> sqcoglinuxht lrwxrwxrwx ... 6505 -> sqcoglinuxht lrwxrwxrwx ... 6521 -> sqcogspurlinuxht lrwxrwxrwx ... 68019 -> sqcogspur64linuxht lrwxrwxrwx ... 68021 -> sqcogspur64linuxht I use the attached run script (installed in /opt/share/bin/run and included in $PATH) to launch any given image. The script extracts the image format from the given image and then picks up the right VM through these symlinks. I propose two changes to the official VM download : * Squeak VM is a personal app, so it need not use the conventional /usr/local path. The Official VM unix build can set its prefix to a non-root directory, so that Linux/Unix downloads don't need root permission to install. Package maintainers do their own builds, so they can override the prefix path to suit their distros. * Include the image format in the binary path so that we don't overwrite binaries that handle other format numbers. e.g. $HOME/.squeak/68019/.... We could insert an conf/ini/plist file inside this directory for the name (e.g. cog, spur, sista etc.), word size (32, 64) or optional features. Regards .. Subbu run.sh (1K) Download Attachment |
I suggest that what we would like to achieve is a way to run either 32 or 64 bit images on all our platforms with minimal fiddling. I mean sure, fiddling is fun but that isn't the sort of fun fiddling we like to have fun with, right?
David has long had a unix script that uses his imageformat program to test the image file format and work out the right vm to use and then launch the image with that vm. I'm not sure right now if it also checks for the latest version of the relevant vm (a loosely equivalent script we use for the Pi NuScratch system makes use of some trickery - ` # find the latest vm VM=`ls /usr/lib/squeak/5.0-20*/squeak|sort -r | head -1` # and thus its directory BIN=`/usr/bin/dirname $VM` - to find the most recently date-named vm and I assume we could do the same. We could of course go full-nutter and make use of the amazing trick discussed around 6 May 2019 in some fascinating messages from Subbu (subject: [squeak-dev] Running Squeak fro ma unix shell script file with #! squeak...) to put the vm name to use in the image header like a shebangbinbash. I guess we would make that refer to a script that still did the latest-vm-lookup trick. For other platforms we might have to use a different approach, though I suspect Mac OS could just use the same unix ideas if not actual scripts. Windows ... no idea and probably something annoying but it must be able to do sometihng equivalent. The only thing we have to be careful about is not deciding on an option that makes it hard to use other platforms in the future. For deployment/downloads we'd likely want to just bundle both 32&64 bit vms in a package set up to use the script(s) -after all the executables are not particularly large. Err, it's too late at night for me to care about looking it up, but are we also going to get problems from wanting to run 32 bit images on a 64 bit OS where the OS insists on 64 form executables? Of course we are, silly question... tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim Oxymorons: Exact estimate |
In reply to this post by Tobias Pape
Hi Tobias, On Sat, Feb 8, 2020 at 10:22 AM Tobias Pape <[hidden email]> wrote:
OK, cool. Sorry, I was triggered. Right now only Nicolas is putting in significant effort alongside me. I'm angry with the "PharoiVM" gang and their extremely unethical behaviour. So I'm a bit touchy. _,,,^..^,,,_ best, Eliot |
In reply to this post by K K Subbu
> On Feb 8, 2020, at 4:28 AM, K K Subbu <[hidden email]> wrote:
> > On 08/02/20 12:37 AM, David T. Lewis wrote: >> As long as each flavor of VM is installed in a distict directory under >> /usr/local/lib/squeak, and as long as the run scripts that point to >> those directories have distinct names in /usr/local/bin, then the >> selection of a correct VM executable for any given image format is >> handled from a single shell script. I call it /usr/local/bin/run on >> my PC, hence "$ run squeak.image" for any flavor of squeak.image. > > The default prefix path should be changed to something like $HOME/.squeak or $HOME/.config/squeak so that default installations will not require root permission. +1000. But this is not really the prefix path, but the default installation. Can’t we easily compute the correct prefix path in the squeak launch script based on its path (i.e. from a combination of $0 and $PATH ?). See > > Package maintainers can always override this default to distro-specific paths while building system-wide installable packages. > > Regards .. Subbu > |
In reply to this post by David T. Lewis
Hi David, Hi Release Manager, Hi All, On Thu, Feb 6, 2020 at 6:03 PM David T. Lewis <[hidden email]> wrote: On Thu, Feb 06, 2020 at 05:02:36PM -0800, Eliot Miranda wrote: I got this working this morning. See Cog-eem.398. So to use, - clone or update an opensmalltalk-vm repository - cd to the image directory and create a VMMaker image via either buildspurtrunkvmmaker64image.sh or buildspurtrunkvmmakerimage.sh - run a converter, e.g. Spur32to64BitImageConverter new bootstrapImage: 'trunk6'. (produces trunk6-64.image & trunk6-64.changes) Spur64to32BitImageConverter new bootstrapImage: 'trunk6-64'. (produces trunk6-64-32.image & trunk6-64-32.changes) Converting a 28Mb 64-bit image into a 22Mb 32-bit image takes 9 seconds on my 2.9GHz Core i9 MacBook Pro So let's try releasing by converting the 64-bit image into a 32-bit one. _,,,^..^,,,_ best, Eliot |
Update - I resolved my library problem, and can run the traced image.
However, it opens with an empty black window (but no VM crash or error messages). The image that I converted was Squeak5.3beta-19335-64bit.image. I'll try some others later. Meanwhile if anyone else can give this a try, please do :-) Dave On Tue, Feb 11, 2020 at 09:09:53AM -0500, David T. Lewis wrote: > I need some help on this, can someone please test the converted 32-bit > image on Linux and/or Windows? I'm have problems with my 32-bit libraries > (I think) and I don't have any time to follow up on it today. Thanks! > > The actual image conversion seems to work fine, and it's fast. But I > don't have a 32-bit VM at the moment, probably due to Linux runtime > library issues that I don't have time to sort out this morning. > > Thanks! > Dave > > On Mon, Feb 10, 2020 at 08:47:34PM -0500, David T. Lewis wrote: > > On Mon, Feb 10, 2020 at 08:48:49AM -0800, Eliot Miranda wrote: > > > > > > Hi David, Hi Release Manager, Hi All, > > > > > > On Thu, Feb 6, 2020 at 6:03 PM David T. Lewis <[hidden email]> wrote: > > > > > > > > A 64-bit to 32-bit image converter would be a very good thing to have > > > > in our toolkit :-) > > > > > > I got this working this morning. See Cog-eem.398. So to use, > > > - clone or update an opensmalltalk-vm repository > > > - cd to the image directory and create a VMMaker image via either > > > buildspurtrunkvmmaker64image.sh or buildspurtrunkvmmakerimage.sh > > > - run a converter, e.g. > > > Spur32to64BitImageConverter new bootstrapImage: 'trunk6'. > > > (produces trunk6-64.image & trunk6-64.changes) > > > Spur64to32BitImageConverter new bootstrapImage: 'trunk6-64'. > > > (produces trunk6-64-32.image & trunk6-64-32.changes) > > > > > > Converting a 28Mb 64-bit image into a 22Mb 32-bit image takes 9 seconds on > > > my 2.9GHz Core i9 MacBook Pro > > > > > > > > > So let's try releasing by converting the 64-bit image into a 32-bit one. > > > > > > > Bravo! I am away now but will try doing an image conversion as soon as > > I can tomorrow. > > > > Thanks Eliot, > > > > > > > > > |
In reply to this post by timrowledge
Hi David,
> On Feb 11, 2020, at 6:09 AM, David T. Lewis <[hidden email]> wrote: > > I need some help on this, can someone please test the converted 32-bit > image on Linux and/or Windows? I'm have problems with my 32-bit libraries > (I think) and I don't have any time to follow up on it today. Thanks! You don’t need to test on multiple platforms. It is in the nature of the beast that if the 32-bit result of a conversion starts up at all then it is correct and will function on all platforms. The image conversion does not do anything special which could possibly affect cross-platform behaviour. Its effects are entirely below that level, simply changing the width of all pointers and mapping out-of-range immediate into their boxed equivalents (SmallFloat64 => BoxedFloat64, SmallInteger=>LargePositiveInteger & LargeNegaitiveInteger). Just as the 64-bit product goes the other way. Nothing else is changed. > > The actual image conversion seems to work fine, and it's fast. But I > don't have a 32-bit VM at the moment, probably due to Linux runtime > library issues that I don't have time to sort out this morning. > > Thanks! > Dave > >> On Mon, Feb 10, 2020 at 08:47:34PM -0500, David T. Lewis wrote: >>> On Mon, Feb 10, 2020 at 08:48:49AM -0800, Eliot Miranda wrote: >>> >>> Hi David, Hi Release Manager, Hi All, >>> >>> On Thu, Feb 6, 2020 at 6:03 PM David T. Lewis <[hidden email]> wrote: >>>> >>>> A 64-bit to 32-bit image converter would be a very good thing to have >>>> in our toolkit :-) >>> >>> I got this working this morning. See Cog-eem.398. So to use, >>> - clone or update an opensmalltalk-vm repository >>> - cd to the image directory and create a VMMaker image via either >>> buildspurtrunkvmmaker64image.sh or buildspurtrunkvmmakerimage.sh >>> - run a converter, e.g. >>> Spur32to64BitImageConverter new bootstrapImage: 'trunk6'. >>> (produces trunk6-64.image & trunk6-64.changes) >>> Spur64to32BitImageConverter new bootstrapImage: 'trunk6-64'. >>> (produces trunk6-64-32.image & trunk6-64-32.changes) >>> >>> Converting a 28Mb 64-bit image into a 22Mb 32-bit image takes 9 seconds on >>> my 2.9GHz Core i9 MacBook Pro >>> >>> >>> So let's try releasing by converting the 64-bit image into a 32-bit one. >>> >> >> Bravo! I am away now but will try doing an image conversion as soon as >> I can tomorrow. >> >> Thanks Eliot, >> > > > > > > > |
In reply to this post by David T. Lewis
> On Feb 11, 2020, at 6:48 AM, David T. Lewis <[hidden email]> wrote: > > Update - I resolved my library problem, and can run the traced image. > However, it opens with an empty black window (but no VM crash or error > messages). > > The image that I converted was Squeak5.3beta-19335-64bit.image. I'll > try some others later. And the 64-bit image opens correctly? > > Meanwhile if anyone else can give this a try, please do :-) Shall do. > > Dave > > >> On Tue, Feb 11, 2020 at 09:09:53AM -0500, David T. Lewis wrote: >> I need some help on this, can someone please test the converted 32-bit >> image on Linux and/or Windows? I'm have problems with my 32-bit libraries >> (I think) and I don't have any time to follow up on it today. Thanks! >> >> The actual image conversion seems to work fine, and it's fast. But I >> don't have a 32-bit VM at the moment, probably due to Linux runtime >> library issues that I don't have time to sort out this morning. >> >> Thanks! >> Dave >> >>> On Mon, Feb 10, 2020 at 08:47:34PM -0500, David T. Lewis wrote: >>> On Mon, Feb 10, 2020 at 08:48:49AM -0800, Eliot Miranda wrote: >>>> >>>> Hi David, Hi Release Manager, Hi All, >>>> >>>> On Thu, Feb 6, 2020 at 6:03 PM David T. Lewis <[hidden email]> wrote: >>>>> >>>>> A 64-bit to 32-bit image converter would be a very good thing to have >>>>> in our toolkit :-) >>>> >>>> I got this working this morning. See Cog-eem.398. So to use, >>>> - clone or update an opensmalltalk-vm repository >>>> - cd to the image directory and create a VMMaker image via either >>>> buildspurtrunkvmmaker64image.sh or buildspurtrunkvmmakerimage.sh >>>> - run a converter, e.g. >>>> Spur32to64BitImageConverter new bootstrapImage: 'trunk6'. >>>> (produces trunk6-64.image & trunk6-64.changes) >>>> Spur64to32BitImageConverter new bootstrapImage: 'trunk6-64'. >>>> (produces trunk6-64-32.image & trunk6-64-32.changes) >>>> >>>> Converting a 28Mb 64-bit image into a 22Mb 32-bit image takes 9 seconds on >>>> my 2.9GHz Core i9 MacBook Pro >>>> >>>> >>>> So let's try releasing by converting the 64-bit image into a 32-bit one. >>>> >>> >>> Bravo! I am away now but will try doing an image conversion as soon as >>> I can tomorrow. >>> >>> Thanks Eliot, >>> >> >> >> >> >> >> >> > |
In reply to this post by David T. Lewis
Hi David, Hi Bert, Paul, Craig, Chris & Fabio (authors of the squeak start script), On Tue, Feb 11, 2020 at 6:48 AM David T. Lewis <[hidden email]> wrote: Update - I resolved my library problem, and can run the traced image. This is nothing to do with the conversion. It is just an inability to write to the changes, and in fact looks like a show stopper for the Mac. When I open the Mac .app bundle on macOS High Sierra 10.13.6 it gives this error message: Squeak cannot write to the changes file named /private/var/folders/1m/5bw4gx414j95y7gmn19bcrvc0000gn/T/AppTranslocation/AF936F9C-D399-44BA-A75D-2B6B530BE339/d/Squeak5.3beta-19337-64bit-All-in-One.app/Contents/Resources/Squeak5.3beta-19337-6 Please check you have write permission for this file. You won't be able to save this image correctly until you fix this. So we can't (yet) lunch the release out-of-the-box on Mac. This launching things in a translocated folder is (bad) news to me. How are we supposed to establish write permission? If the image explicitly tries to change permissions it will transgress on valid attempt to make the changes file read-only. And anyway the files look readable when one uses ls to read permissions: $ ls -l /private/var/folders/1m/5bw4gx414j95y7gmn19bcrvc0000gn/T/AppTranslocation/AF936F9C-D399-44BA-A75D-2B6B530BE339/d/Squeak5.3beta-19337-64bit-All-in-One.app/Contents/Resources/ total 191096 drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 B3DAcceleratorPlugin.bundle drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 CameraPlugin.bundle drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 CroquetPlugin.bundle drwxr-xr-x@ 5 eliot staff 160 Feb 11 2020 English.lproj drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 Mpeg3Plugin.bundle -rw-r--r--@ 1 eliot staff 334260 Feb 11 2020 Squeak.icns drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 Squeak3D.bundle -rw-r--r--@ 1 eliot staff 17502632 Feb 11 2020 Squeak5.3beta-19337-64bit.changes -rw-r--r--@ 1 eliot staff 44108920 Feb 11 2020 Squeak5.3beta-19337-64bit.image -rwxr-xr-x@ 1 eliot staff 55656 Feb 11 2020 SqueakChanges.icns drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 SqueakFFIPrims.bundle -rwxr-xr-x@ 1 eliot staff 52976 Feb 11 2020 SqueakGeneric.icns -rwxr-xr-x@ 1 eliot staff 334260 Feb 11 2020 SqueakImage.icns -rwxr-xr-x@ 1 eliot staff 61719 Feb 11 2020 SqueakPlugin.icns -rwxr-xr-x@ 1 eliot staff 63636 Feb 11 2020 SqueakProject.icns drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 SqueakSSL.bundle -rwxr-xr-x@ 1 eliot staff 63636 Feb 11 2020 SqueakScript.icns -rwxr-xr-x@ 1 eliot staff 55332 Feb 11 2020 SqueakSources.icns -rw-r--r--@ 1 eliot staff 35184983 Feb 11 2020 SqueakV50.sources drwxr-xr-x@ 3 eliot staff 96 Feb 11 2020 UnixOSProcessPlugin.bundle drwxr-xr-x@ 58 eliot staff 1856 Feb 11 2020 locale drwxr-xr-x@ 9 eliot staff 288 Feb 11 2020 release-notes
_,,,^..^,,,_ best, Eliot |
In reply to this post by David T. Lewis
Hi David, On Tue, Feb 11, 2020 at 6:48 AM David T. Lewis <[hidden email]> wrote: Update - I resolved my library pro> blem, and can run the traced image. "This is nothing to do with the conversion. It is just an inability to write to the changes, and in fact looks like a show stopper for the Mac. When I open the Mac .app bundle on macOS High Sierra 10.13.6 it gives this error message:" UndefinedObject(Object)>>doesNotUnderstand: #resume Context>>return: SmalltalkImage>>lowSpaceWatcher [] in SmalltalkImage>>installLowSpaceWatcher I do apologize for my premature response. I'm taking a look now. There are assert failures long before the error so I should b able to fix the issue quickly. >
_,,,^..^,,,_ best, Eliot |
In reply to this post by Eliot Miranda-2
On 10/02/20 10:09 PM, Eliot Miranda wrote:
>> The default prefix path should be changed to something like >> $HOME/.squeak or $HOME/.config/squeak so that default installations >> will not require root permission. > +1000. But this is not really the prefix path, but the default > installation. Can’t we easily compute the correct prefix path in > the squeak launch script based on its path (i.e. from a combination > of $0 and $PATH ?). The prefix path gets recorded in the build directory Makefile, so the install step in http://wiki.squeak.org/squeak/6177 $ make install will fail because it requires a sudo. My proposal is to change the default so that install will proceed smoothly for non-root users. Package maintainers for distros can override this prefix in the configure step. Once installed, the squeakvm does compute the correct path for plugins etc. from its installed location. Regards .. Subbu |
In reply to this post by Eliot Miranda-2
> On 2020-02-11, at 9:12 AM, Eliot Miranda <[hidden email]> wrote: > > Squeak cannot write to the changes file named /private/var/folders/1m/5bw4gx414j95y7gmn19bcrvc0000gn/T/AppTranslocation/AF936F9C-D399-44BA-A75D-2B6B530BE339/d/Squeak5.3beta-19337-64bit-All-in-One.app/Contents/Resources/Squeak5.3beta-19337-6 > > Please check you have write permission for this file. It's been my belief for a long while that what we should be doing in the all-in-one and other packages is to copy the default image/changes out of the package bundle to the enclosing directory (on the grounds that it's pretty close to certain to be a user's directory to do what they want with) and then run those copies. The supplied default image/changes should never be over written. This is in line with a fairly common trope of starting any sort of editor program and getting a suitable 'blank' file. Obviously firing up a particular image via UI clicks etc would simply start the right image. tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim Oxymorons: Exact estimate |
In reply to this post by David T. Lewis
Hi David, On Tue, Feb 11, 2020 at 6:48 AM David T. Lewis <[hidden email]> wrote: Update - I resolved my library problem, and can run the traced image. Oops. My image converter correctly voids Smalltalk classPool at: #WordSize iff the image is 32-bit. If the image is 32-bit it does not void and so process terminate is broken because attempts to compute initialPCs are incorrect <blush>. The fix will be in in a few minutes.
_,,,^..^,,,_ best, Eliot |
In reply to this post by Eliot Miranda-2
Hi David, On Tue, Feb 11, 2020 at 6:09 AM David T. Lewis <[hidden email]> wrote: I need some help on this, can someone please test the converted 32-bit I can confirm that using Cog-eem.400 to convert the 64-bit to 32-bit image results in a functional result.
_,,,^..^,,,_ best, Eliot |
In reply to this post by K K Subbu
On Tue, Feb 11, 2020 at 9:32 AM K K Subbu <[hidden email]> wrote: On 10/02/20 10:09 PM, Eliot Miranda wrote: Ugh. This does not describe the standard VM build :-( $ make install The Cog VM build scripts install to a local directory, opensmalltalk-vm.git.products So there's no issue with the standard VM, AFAIA
_,,,^..^,,,_ best, Eliot |
In reply to this post by Eliot Miranda-2
Holy shit, on such a slow machine! What would it take on a machine for mere mortals?My MacBook Pro is only 2.4gHz. Cant really test it out since MacOS Catalina is 64 bit only, and I ‘upgraded’ all my Macs because a flaw was supposed to be fixed in Catalina. /————————————————————/ For encrypted mail use [hidden email] Get a free account at ProtonMail.com Web: https://objectnets.net and https://objectnets.org https://datascilv.com https://datascilv.org On Feb 10, 2020, at 08:49, Eliot Miranda <[hidden email]> wrote:
|
When I ran it, it took about ten seconds.
Time millisecondsToRun: [converter bootstrapImage: 'Squeak5.3beta-19335-64bit.image'] "==> 10031" This is on a fairly old Linux laptop PC with "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz" CPU. Converting a full image from one image format to another is not a frequent operation. I would be more than happy if it could be done in about a minute, so seeing it completed in ten seconds looks pretty darn good to me. Maybe somebody can report results on a Raspberry Pi :-) Dave On Tue, Feb 11, 2020 at 05:17:54PM -0800, John Pfersich via Squeak-dev wrote: > Holy shit, on such a slow machine! What would it take on a machine for mere mortals?My MacBook Pro is only 2.4gHz. Cant really test it out since MacOS Catalina is 64 bit only, and I ???upgraded??? all my Macs because a flaw was supposed to be fixed in Catalina. > > /????????????????????????????????????????????????????????????/ > For encrypted mail use [hidden email] > Get a free account at ProtonMail.com > Web: https://objectnets.net and https://objectnets.org > https://datascilv.com https://datascilv.org > > > >> On Feb 10, 2020, at 08:49, Eliot Miranda <[hidden email]> wrote: > > Converting a 28Mb 64-bit image into a 22Mb 32-bit image takes 9 seconds on my 2.9GHz Core i9 MacBook Pro |
In reply to this post by Eliot Miranda-2
> On 13.02.2020, at 01:32, Ronie Salgado <[hidden email]> wrote: > > There is a way to untranslocate an application an access to content outside the read-only mount: https://objective-see.com/blog/blog_0x15.html This part looks promising: > › creating a signed DMG > Apple tells us that App translocation does not apply to disk images (DMGs) that are signed. So instead of using a ZIP archive to distribute the application, I looked into using a signed DMG. To create a signed DMG I used the following make file (kindly provided by one of Objective-See's users -mahalo Clayton!!): > VERSION="1.5.0" > PROJECT="TaskExplorer" > CODESIGN_IDENTITY="Developer ID Application: Objective-See, LLC (VBG97UB4TA)" > >> ## dmg >> dmg: >> rm -f ./${PROJECT}*.dmg >> rm -rf /tmp/${PROJECT}-build >> mkdir -p /tmp/${PROJECT}-build/ >> cp -R ./TaskExplorer.app /tmp/${PROJECT}-build >> hdiutil create -srcfolder /tmp/${PROJECT}-build -volname "${PROJECT}" -format UDZO >> -o ${PROJECT}-${VERSION}.dmg >> >> xattr -rc ${PROJECT}-${VERSION}.dmg >> codesign -s ${CODESIGN_IDENTITY} -v ${PROJECT}-${VERSION}.dmg >> rm -rf /tmp/${PROJECT}-build The untranslocate part relies on Apple Private APIs. We should not do that. Best regards -Tobias |
Free forum by Nabble | Edit this page |