Discussion:
3.11.3.2135 for Unix
(too old to reply)
Ian Piumarta
2012-01-28 12:28:33 UTC
Permalink
Dear Unix Squeakers,

3.11.3.2135 for Unix is now available at squeakvm.org/unix (sources
plus binaries for MacOS/Darwin, Linux, NetBSD, FreeBSD and Solaris,
on Intel and, occasionally, PowerPC hardware). Some important stuff
has changed in this release (see notes below) so please consider it a
BETA release even though there is no beta tag on the version number.

As usual: comments, suggestions, bug fixes (as whole files please
*not* diffs) and any unwanted vinyl LPs sitting in your attic can be
sent directly to me. Thanks.

Enjoy!
Ian


Changes since 3.10-6:

Numbering scheme changed to X.Y.Z.R where X.Y.Z = VMMaker version used
to generate the Interpreter and R is the subversion revision of the
platform support code.

VMMaker and plugins updated to most recent versions; generated source
regenerated:

Balloon3D-Plugins-ar.4.mcz
DBus-Plugin-bf.32.mcz
GStreamer-Plugins-JMM.16.mcz
Kedama-Plugins-yo.1.mcz
Rome-Plugin-yo.39.mcz
OSProcessPlugin-dtl.16.mcz
VMConstruction-Plugins-AioPlugin-dtl.9.mcz
VMConstruction-Plugins-XDisplayControlPlugin-dtl.7.mcz
VMMaker-dtl.138.mcz

Build system rewritten using CMake instead of autotools. Big
THANK-YOU to Bert, Subbu and Dave Lewis for providing invaluable
feedback.

Any plugin can now be turned off in configure with the option
'--without-<pluginName>'.

Experimental PulseAudio driver (vm-sound-pulse) added, thanks to Derek
O'Connell. Default is still OSS on Linux; if you want pulse you have
to ask for it in one of the usual ways.

FFI tweaked on Linux to avoid a potential FPU stack overflow.

ClipboardExtendedPlugin will no longer try to build if you don't have
X11 development headers and libs.

FileCopyPlugin made resilient to EINTR.

VM renamed to 'squeakvm'. 'squeak' is now a script that looks for
'squeakvm', figures out if you need any obscure command-line options,
and then launches 'squeakvm' for you. This in turn allows...

Plugin search stretegy rationalised and simplified. Default location
is now the executable directory (where 'squeakvm' is installed). The
-plugins argument can be a colon-separated list of locations to
search, just like PATH. Plugins are named 'so.plugin' to make
interference with FFI libraries less likely.

NOTE: FFI libraries are no longer searched for in every single nook
and cranny, which means you might have to set LD_LIBRARY_PATH (or
your local equivalent) for FFI-based programs to work properly.

Failure to load a plugin because of unresolved symbols is now always
reported on the terminal.

Another script 'squeak.sh' is provided for launching squeak from a
menu. This isn't finished and suggestions are welcome.

Default path and text encoding is now UTF-8.

X11 driver no longer reports SHIFT pressed when CAPS LOCK engaged.

SerialPlugin now supports named ports.

All occurences of dprintf() renamed to avoid a name conflict with a
less-than-stellar decision by POSIX to introduce a standard function
of the same name.

RomePlugin is no longer built if cairo was built without Pango
support.

iconv_open() no longer spams you with thousands of error messages if
you are missing conversion tables.

Valid unicode characters that have no corresponding keycode are
reported with keycode zero to avoid an invalid index error in the
image.

XImmPlugin should now work on MacOS X/Darwin too.

Sound driver on MacOS X now works on Intel as well as PowerPC.

Various changes to make the VM compile and run on GNU/Linux running on
DEC Alpha.

vm-sound-Sun now uses asynchronous i/o.

Various changes to fix compilation on Solaris.
Damien Cassou
2012-01-28 12:28:34 UTC
Permalink
Dear Ian,
3.11.3.2135 for Unix is now available at squeakvm.org/unix (sources plus
binaries for MacOS/Darwin, Linux, NetBSD, FreeBSD and Solaris, on Intel and,
occasionally, PowerPC hardware). ?Some important stuff has changed in this
release (see notes below) so please consider it a BETA release even though
there is no beta tag on the version number.
As usual: comments, suggestions, bug fixes (as whole files please *not*
diffs) and any unwanted vinyl LPs sitting in your attic can be sent directly
to me. ?Thanks.
thank you very much for your work on the VM. Compilation worked fine.
I have a problem however. I added 'set -xv' to see what's happening.
$ ./squeak -version
bindir=/home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/bld
plgdir=/home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/lib/squeak/3.11.3-2135
vm=/home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/bld/squeakvm
plugins=/home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/bld/%n
pulseaudio --check
sound=-vm-sound-oss
padsp true
wrapper=padsp
test -z /home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/bld/%n
set -x
exec padsp /home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/bld/squeakvm
-pathenc UTF-8 -encoding UTF-8 -plugins
/home/cassou/Documents/squeak/vm/Squeak-3.11.3.2135-src/bld/%n
-vm-sound-oss -version
could not find module vm-sound-OSS
Aborted


What is this %n added to $plugins?
Why does the script tries to use OSS when it was explicitly
deactivated by configure?
!! vm-sound-OSS disabled

Thank you
--
Damien Cassou
http://damiencassou.seasidehosting.st

"Lambdas are relegated to relative obscurity until Java makes them
popular by not having them." James Iry
Ian Piumarta
2012-01-28 12:28:34 UTC
Permalink
Hi Damien,
Post by Damien Cassou
What is this %n added to $plugins?
The %n is replaced with the name of the plugin when the VM tries to
load it. If the VM is run wth "-plugins $PWD/bld/%n" then when it
tries to load "vm-sound-OSS" it will look for the file "$PWD/bld/vm-
sound-OSS/so.vm-sound-OSS". Running out of the build directory is
the real motivation behind the feature.
Post by Damien Cassou
Why does the script tries to use OSS when it was explicitly
deactivated by configure?
Because I failed to anticipate that situation. I think it's fixed in
the trunk now. It would be very helpful if you would update and
recompile and let me know what still doesn't work.

Thanks!
Ian
Damien Cassou
2012-01-28 12:28:35 UTC
Permalink
Hi Ian,
Why does the script tries to use OSS when it was explicitly deactivated by
configure?
Because I failed to anticipate that situation. ?I think it's fixed in the
trunk now. ?It would be very helpful if you would update and recompile and
let me know what still doesn't work.
the sound problem is now gone and Squeak launches properly. However, I
can't symlink the binary to a path directory:

$ cd /usr/bin
$ ln -sf /home/cassou/.../squeak-svn/bld/squeak
$ cd /path/of/the/image
$ squeak file.image
/usr/bin/squeak: 41: error: not found

The 'error' executable is not found.
--
Damien Cassou
http://damiencassou.seasidehosting.st

"Lambdas are relegated to relative obscurity until Java makes them
popular by not having them." James Iry
Stéphane Rollandin
2012-01-28 12:28:34 UTC
Permalink
is there a working MIDIPlugin now ?

regards,

Stef
Bert Freudenberg
2012-01-28 12:28:34 UTC
Permalink
Post by Stéphane Rollandin
is there a working MIDIPlugin now ?
There is some ALSA MIDI support I think.

- Bert -
Markus Lampert
2012-01-28 12:28:34 UTC
Permalink
Hi Ian,

Two minor comments:

I've attached a modified version of the script squeak which allows for symbolic links to be resolved correctly (line 12-14). I've also changed 'error' in line 37 to 'echo ...> /dev/stderr', error doesn't exist on my Debian machine.

If you start the VM with an image and it can't find the SqueakV39.sources it will pop up a confirmation box saying the sources file does not exist in the 'VM directory'. Creating a symlink to the sources file in the VM directory does not quite resolve the problem. A menu is brought up on startup saying that SqueakV39.sources does not exist giving several options of choosing another name and so on. It seems the VM expects SqueakV39.sources to be in the same directory as the image file, not the VM itself (doesn't make a big difference but the dialog box is misleading).


Great work; seems more responsive than 3.10-6; can't wait to get home and try out the new serial port ....

Have fun,
Markus



----- Original Message ----
From: Ian Piumarta <***@gmail.com>
To: The general-purpose Squeak developers list <squeak-***@lists.squeakfoundation.org>
Sent: Wednesday, September 16, 2009 7:36:01 PM
Subject: [squeak-dev] 3.11.3.2135 for Unix

Dear Unix Squeakers,

3.11.3.2135 for Unix is now available at squeakvm.org/unix (sources plus binaries for MacOS/Darwin, Linux, NetBSD, FreeBSD and Solaris, on Intel and, occasionally, PowerPC hardware). Some important stuff has changed in this release (see notes below) so please consider it a BETA release even though there is no beta tag on the version number.

As usual: comments, suggestions, bug fixes (as whole files please *not* diffs) and any unwanted vinyl LPs sitting in your attic can be sent directly to me. Thanks.

Enjoy!
Ian


Changes since 3.10-6:

Numbering scheme changed to X.Y.Z.R where X.Y.Z = VMMaker version used
to generate the Interpreter and R is the subversion revision of the
platform support code.

VMMaker and plugins updated to most recent versions; generated source
regenerated:

Balloon3D-Plugins-ar.4.mcz
DBus-Plugin-bf.32.mcz
GStreamer-Plugins-JMM.16.mcz
Kedama-Plugins-yo.1.mcz
Rome-Plugin-yo.39.mcz
OSProcessPlugin-dtl.16.mcz
VMConstruction-Plugins-AioPlugin-dtl.9.mcz
VMConstruction-Plugins-XDisplayControlPlugin-dtl.7.mcz
VMMaker-dtl.138.mcz

Build system rewritten using CMake instead of autotools. Big
THANK-YOU to Bert, Subbu and Dave Lewis for providing invaluable
feedback.

Any plugin can now be turned off in configure with the option
'--without-<pluginName>'.

Experimental PulseAudio driver (vm-sound-pulse) added, thanks to Derek
O'Connell. Default is still OSS on Linux; if you want pulse you have
to ask for it in one of the usual ways.

FFI tweaked on Linux to avoid a potential FPU stack overflow.

ClipboardExtendedPlugin will no longer try to build if you don't have
X11 development headers and libs.

FileCopyPlugin made resilient to EINTR.

VM renamed to 'squeakvm'. 'squeak' is now a script that looks for
'squeakvm', figures out if you need any obscure command-line options,
and then launches 'squeakvm' for you. This in turn allows...

Plugin search stretegy rationalised and simplified. Default location
is now the executable directory (where 'squeakvm' is installed). The
-plugins argument can be a colon-separated list of locations to
search, just like PATH. Plugins are named 'so.plugin' to make
interference with FFI libraries less likely.

NOTE: FFI libraries are no longer searched for in every single nook
and cranny, which means you might have to set LD_LIBRARY_PATH (or
your local equivalent) for FFI-based programs to work properly.

Failure to load a plugin because of unresolved symbols is now always
reported on the terminal.

Another script 'squeak.sh' is provided for launching squeak from a
menu. This isn't finished and suggestions are welcome.

Default path and text encoding is now UTF-8.

X11 driver no longer reports SHIFT pressed when CAPS LOCK engaged.

SerialPlugin now supports named ports.

All occurences of dprintf() renamed to avoid a name conflict with a
less-than-stellar decision by POSIX to introduce a standard function
of the same name.

RomePlugin is no longer built if cairo was built without Pango
support.

iconv_open() no longer spams you with thousands of error messages if
you are missing conversion tables.

Valid unicode characters that have no corresponding keycode are
reported with keycode zero to avoid an invalid index error in the
image.

XImmPlugin should now work on MacOS X/Darwin too.

Sound driver on MacOS X now works on Intel as well as PowerPC.

Various changes to make the VM compile and run on GNU/Linux running on
DEC Alpha.

vm-sound-Sun now uses asynchronous i/o.

Various changes to fix compilation on Solaris.

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: squeak
Type: application/octet-stream
Size: 1910 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090917/4c922f74/squeak.obj
Bert Freudenberg
2012-01-28 12:28:35 UTC
Permalink
Post by Markus Lampert
If you start the VM with an image and it can't find the
SqueakV39.sources it will pop up a confirmation box saying the
sources file does not exist in the 'VM directory'. Creating a
symlink to the sources file in the VM directory does not quite
resolve the problem. A menu is brought up on startup saying that
SqueakV39.sources does not exist giving several options of choosing
another name and so on. It seems the VM expects SqueakV39.sources to
be in the same directory as the image file, not the VM itself
(doesn't make a big difference but the dialog box is misleading).
This has nothing to do with the VM, the image is looking for the
sources.

- Bert -
Markus Lampert
2012-01-28 12:28:35 UTC
Permalink
Post by Markus Lampert
If you start the VM with an image and it can't find the SqueakV39.sources it will pop up a confirmation box saying the sources file does not exist in the 'VM directory'. Creating a symlink to the sources file in the VM directory does not quite resolve the problem. A menu is brought up on startup saying that SqueakV39.sources does not exist giving several options of choosing another name and so on. It seems the VM expects SqueakV39.sources to be in the same directory as the image file, not the VM itself (doesn't make a big difference but the dialog box is misleading).
This has nothing to do with the VM, the image is looking for the sources.
Interesting, using the same image (trunk about 1 week old) with the 3.10-6 vm it expects the sources in the vm directory. May the difference in behaviour be related to resolving symbolic links?

Have fun,
Markus

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Markus Lampert
2012-01-28 12:28:35 UTC
Permalink
To clarify, my setup looks like this:

/home/mlampert/.squeak/ ... images and changes
vms ... all VMs I have installed
Squeak-3.10-6/...
Squeak-3.11.3.2135-linux_i386/...
vm-3.10-6 -> vms/Squeak-3.10-6/i686-pc-linux-gnu/usr/local/lib/squeak/3.10-6/
vm-3.11.3 -> vms/Squeak-3.11.3.2135-linux_i386/bin
vm -> vm-3.11.3 .... (or -> vm-3.10.6)

Additionally I added a symlink 'vms/Squeak-3.10-6/SqueakV39.sources -> /usr/lib/squeak/SqueakV39.sources'. So far vm pointed to vm-3.10-6 and the image found the sources file.

When I added the 3.11.3 vm I added the symlink 'vms/Squeak-3.11.3.2135-linux_i386/lib/SqueakV39.source -> /usr/lib/squeak/SqueakV39.sources'. After pointing vm to vm-3.11.3 I encountered the problems described below. (well, of course I forgot to create the sources symlink initially ...).

Only after creating the symlink '/home/mlampert/.squeak/SqueakV39.sources -> /usr/lib/squeak/SqueakV39.sources' is the trunk image/vm-3.11.3 combination happy.

Have fun,
Markus



----- Original Message ----
From: Markus Lampert <***@yahoo.com>
To: The general-purpose Squeak developers list <squeak-***@lists.squeakfoundation.org>
Sent: Thursday, September 17, 2009 12:47:13 PM
Subject: Re: [squeak-dev] 3.11.3.2135 for Unix
Post by Markus Lampert
If you start the VM with an image and it can't find the SqueakV39.sources it will pop up a confirmation box saying the sources file does not exist in the 'VM directory'. Creating a symlink to the sources file in the VM directory does not quite resolve the problem. A menu is brought up on startup saying that SqueakV39.sources does not exist giving several options of choosing another name and so on. It seems the VM expects SqueakV39.sources to be in the same directory as the image file, not the VM itself (doesn't make a big difference but the dialog box is misleading).
This has nothing to do with the VM, the image is looking for the sources.
Interesting, using the same image (trunk about 1 week old) with the 3.10-6 vm it expects the sources in the vm directory. May the difference in behaviour be related to resolving symbolic links?

Have fun,
Markus
Bert Freudenberg
2012-01-28 12:28:35 UTC
Permalink
What I meant is that teh image looks in the image directory too, not
just the VM dir.

But now that you mention it I remember seeing problems with resolving
symlinks. Not in this VM but an older one, but under Linux, yes.

- Bert -
Post by Markus Lampert
/home/mlampert/.squeak/ ... images and changes
vms ... all VMs I have installed
Squeak-3.10-6/...
Squeak-3.11.3.2135-linux_i386/...
vm-3.10-6 -> vms/Squeak-3.10-6/i686-pc-linux-gnu/usr/local/lib/
squeak/3.10-6/
vm-3.11.3 -> vms/Squeak-3.11.3.2135-linux_i386/bin
vm -> vm-3.11.3 .... (or -> vm-3.10.6)
Additionally I added a symlink 'vms/Squeak-3.10-6/SqueakV39.sources -
Post by Markus Lampert
/usr/lib/squeak/SqueakV39.sources'. So far vm pointed to vm-3.10-6
and the image found the sources file.
When I added the 3.11.3 vm I added the symlink 'vms/
Squeak-3.11.3.2135-linux_i386/lib/SqueakV39.source -> /usr/lib/
squeak/SqueakV39.sources'. After pointing vm to vm-3.11.3 I
encountered the problems described below. (well, of course I forgot
to create the sources symlink initially ...).
Only after creating the symlink '/home/mlampert/.squeak/
SqueakV39.sources -> /usr/lib/squeak/SqueakV39.sources' is the trunk
image/vm-3.11.3 combination happy.
Have fun,
Markus
----- Original Message ----
Sent: Thursday, September 17, 2009 12:47:13 PM
Subject: Re: [squeak-dev] 3.11.3.2135 for Unix
Post by Markus Lampert
Post by Markus Lampert
If you start the VM with an image and it can't find the
SqueakV39.sources it will pop up a confirmation box saying the
sources file does not exist in the 'VM directory'. Creating a
symlink to the sources file in the VM directory does not quite
resolve the problem. A menu is brought up on startup saying that
SqueakV39.sources does not exist giving several options of
choosing another name and so on. It seems the VM expects
SqueakV39.sources to be in the same directory as the image file,
not the VM itself (doesn't make a big difference but the dialog
box is misleading).
This has nothing to do with the VM, the image is looking for the sources.
Interesting, using the same image (trunk about 1 week old) with the
3.10-6 vm it expects the sources in the vm directory. May the
difference in behaviour be related to resolving symbolic links?
Have fun,
Markus
Markus Lampert
2012-01-28 12:28:35 UTC
Permalink
From: Bert Freudenberg
What I meant is that teh image looks in the image directory too, not just the VM
dir.
Makes sense, thanks for the clarification.
But now that you mention it I remember seeing problems with resolving symlinks.
Not in this VM but an older one, but under Linux, yes.
If I wanted to look into that and contribute the changes, where and how would I start?

Have fun,
Markus
- Bert -
Post by Markus Lampert
/home/mlampert/.squeak/ ... images and changes
vms ... all VMs I have installed
Squeak-3.10-6/...
Squeak-3.11.3.2135-linux_i386/...
vm-3.10-6 ->
vms/Squeak-3.10-6/i686-pc-linux-gnu/usr/local/lib/squeak/3.10-6/
Post by Markus Lampert
vm-3.11.3 -> vms/Squeak-3.11.3.2135-linux_i386/bin
vm -> vm-3.11.3 .... (or -> vm-3.10.6)
Additionally I added a symlink 'vms/Squeak-3.10-6/SqueakV39.sources ->
/usr/lib/squeak/SqueakV39.sources'. So far vm pointed to vm-3.10-6 and the image
found the sources file.
Post by Markus Lampert
When I added the 3.11.3 vm I added the symlink
'vms/Squeak-3.11.3.2135-linux_i386/lib/SqueakV39.source ->
/usr/lib/squeak/SqueakV39.sources'. After pointing vm to vm-3.11.3 I encountered
the problems described below. (well, of course I forgot to create the sources
symlink initially ...).
Post by Markus Lampert
Only after creating the symlink '/home/mlampert/.squeak/SqueakV39.sources ->
/usr/lib/squeak/SqueakV39.sources' is the trunk image/vm-3.11.3 combination
happy.
Post by Markus Lampert
Have fun,
Markus
----- Original Message ----
From: Markus Lampert
To: The general-purpose Squeak developers list
Sent: Thursday, September 17, 2009 12:47:13 PM
Subject: Re: [squeak-dev] 3.11.3.2135 for Unix
Post by Markus Lampert
If you start the VM with an image and it can't find the SqueakV39.sources it
will pop up a confirmation box saying the sources file does not exist in the 'VM
directory'. Creating a symlink to the sources file in the VM directory does not
quite resolve the problem. A menu is brought up on startup saying that
SqueakV39.sources does not exist giving several options of choosing another name
and so on. It seems the VM expects SqueakV39.sources to be in the same directory
as the image file, not the VM itself (doesn't make a big difference but the
dialog box is misleading).
Post by Markus Lampert
This has nothing to do with the VM, the image is looking for the sources.
Interesting, using the same image (trunk about 1 week old) with the 3.10-6 vm
it expects the sources in the vm directory. May the difference in behaviour be
related to resolving symbolic links?
Post by Markus Lampert
Have fun,
Markus
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Ross Boylan
2012-01-28 12:28:36 UTC
Permalink
I had some possibly related problems with symlinks (also finding the
sources) under Linux. This was with pharo-vm-0.15.2d-linux.zip.

Though I ran from a top level directory, squeak seemed
to think it was running in a subdirectory. The image I ran against was
a symlinked to that subdirectory.

Original setup
proj/sub/x.image
proj/sub/x.changes

Create proj/x.image and proj/x.changes as symlinks to the corresponding
files under sub.
Create proj/SqueakV39.sources as a symlink to the real one.

Invoke squeak from proj/ (squeak executable under proj/sub2/).

This gave me an error that I needed the sources file in the same
directory as my image file. However, the path it gave was the directory
of the squeak executable.

The cache directory for downloading packages ended up in
proj/sub/cache
and save as saved to proj/sub.
This suggests it may have been looking for sources in proj/sub, where
they weren't, rather than proj/, where they were.

This was with pharo's
http://gforge.inria.fr/frs/download.php/23087/pharo1.0-10440-BETAdev09.09.1.zip and http://gforge.inria.fr/frs/download.php/22745/pharo-vm-0.15.2d-linux.zip.
Both unzipped into subdirectories. I ran
pharo-vm-0.15.2d-linux/squeak pharo1.0-10418-BETAdev09.08.3.image &

I'm not sure of the ultimate cause of the problems, or the extent to
which it is a vm issue.
Ian Piumarta
2012-01-28 12:28:35 UTC
Permalink
Hi Markus,

Unfortunately GNU/Linux doesn't agree with the rest of the world
about the flags (including -f) understood by readlink (and Solaris
doesn't have it at all) so your suggestion isn't going to work.

How about this instead?

readlink="`which readlink`"
test -x "${readlink}" || readlink=echo

canonic () {(
cd "`dirname \"$1\"`"
dir="`basename \"$1\"`"
cd "`${readlink} \"${dir}\"`"
pwd
)}

bindir="`dirname \"$0\"`"
bindir="`canonic \"${bindir}\"`"
prefix="`dirname \"${bindir}\"`"
[...rest of file the same...]

Cheers,
Ian
Eliot Miranda
2012-01-28 12:28:35 UTC
Permalink
Skipped content of type multipart/alternative-------------- next part --------------
A non-text attachment was scrubbed...
Name: readlink.c
Type: application/octet-stream
Size: 2319 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090917/00223526/readlink.obj
Markus Lampert
2012-01-28 12:28:35 UTC
Permalink
Ian,

your changes work (for me), if you add the following loop:

...
bindir="`dirname \"$0\"`"
bindir="`canonic \"${bindir}\"`"
while test -L "${bindir}"; do
bindir="`canonic \"${bindir}\"`"
done
...

The '-L' could also be a '-h'. Unfortunately I only have access to Linux, so I don't know about the portability of this. My problem here seems to be that I have a link to a link ...

Eliot,

tried your implementation and ran into the same problem, it only resolves the first layer. So I guess do_readlink would have to be run in a loop to resolve the whole cascade.

I realize that this is probably not the place for this discussion. Where should I have posted initially?

Have fun,
Markus
Sent: Thursday, September 17, 2009 2:22:04 PM
Subject: Re: [squeak-dev] 3.11.3.2135 for Unix
Hi Ian,
if it'll help you're welcome to add the attached to Squeak under the MIT license. I wrote it for my own use years ago and it is all my own work, etc, etc. Its pretty portable and more flexible than e.g. the Mac OS readlink.
Post by Ian Piumarta
Hi Markus,
Unfortunately GNU/Linux doesn't agree with the rest of the world about the flags (including -f) understood by readlink (and Solaris doesn't have it at all) so your suggestion isn't going to work.
How about this instead?
readlink="`which readlink`"
test -x "${readlink}" || readlink=echo
canonic () {(
cd "`dirname \"$1\"`"
dir="`basename \"$1\"`"
cd "`${readlink} \"${dir}\"`"
pwd
)}
bindir="`dirname \"$0\"`"
bindir="`canonic \"${bindir}\"`"
prefix="`dirname \"${bindir}\"`"
[...rest of file the same...]
Cheers,
Ian
Eliot Miranda
2012-01-28 12:28:35 UTC
Permalink
Post by Ian Piumarta
Ian,
...
bindir="`dirname \"$0\"`"
bindir="`canonic \"${bindir}\"`"
while test -L "${bindir}"; do
?bindir="`canonic \"${bindir}\"`"
done
...
The '-L' could also be a '-h'. Unfortunately I only have access to Linux, so I don't know about the portability of this. My problem here seems to be that I have a link to a link ...
Eliot,
tried your implementation and ran into the same problem, it only resolves the first layer. So I guess do_readlink would have to be run in a loop to resolve the whole cascade.
Oops, didn't pay enough attention first time around. ?The attached
takes a -f flag to follow links. ?Its not bery tested. ?It also makes
the -s option more useful, enclosing paths that contain separators and
other characters meaningful to the shell in quotes, but it doesn't
bother to escape embedded quotes correctly.
Post by Ian Piumarta
I realize that this is probably not the place for this discussion. Where should I have posted initially?
Have fun,
Markus
Sent: Thursday, September 17, 2009 2:22:04 PM
Subject: Re: [squeak-dev] 3.11.3.2135 for Unix
Hi Ian,
? ?if it'll help you're welcome to add the attached to Squeak under the MIT license. ?I wrote it for my own use years ago and it is all my own work, etc, etc. ?Its pretty portable and more flexible than e.g. the Mac OS readlink.
Post by Ian Piumarta
Hi Markus,
Unfortunately GNU/Linux doesn't agree with the rest of the world about the flags (including -f) understood by readlink (and Solaris doesn't have it at all) so your suggestion isn't going to work.
How about this instead?
readlink="`which readlink`"
test -x "${readlink}" || readlink=echo
canonic () {(
? ?cd ?"`dirname ? ? \"$1\"`"
? ?dir="`basename ? ?\"$1\"`"
? ?cd ?"`${readlink} \"${dir}\"`"
? ?pwd
)}
bindir="`dirname \"$0\"`"
bindir="`canonic \"${bindir}\"`"
prefix="`dirname \"${bindir}\"`"
[...rest of file the same...]
Cheers,
Ian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: readlink.c
Type: application/octet-stream
Size: 2652 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090917/0f17695d/readlink.obj
Ian Piumarta
2012-01-28 12:28:35 UTC
Permalink
Markus,
Thanks. I'll adopt this, but put the loop in the canonic() function
instead. I think keeping the logic in the script is preferable to
bundling a binary program whose only purpose is to emulate realpath().

Cheers,
Ian
Eliot Miranda
2012-01-28 12:28:35 UTC
Permalink
Post by Ian Piumarta
Markus,
Thanks. ?I'll adopt this, but put the loop in the canonic() function
instead. ?I think keeping the logic in the script is preferable to bundling
a binary program whose only purpose is to emulate realpath().
I wasn't imagining bundling a binary but was imagining compiling
readlink.c as part of the build process. But if the script can do
just as well then it's to be preferred.
Post by Ian Piumarta
Cheers,
Ian
Ian Piumarta
2012-01-28 12:28:35 UTC
Permalink
Hi Eliot,
Post by Eliot Miranda
I wasn't imagining bundling a binary but was imagining compiling
readlink.c as part of the build process.
Resolving the symlinks has to happen at run time, not at compile or
install (which might not happen) time. There's also a catch-22 in
where such a binary would live: the only reasonable place to put a
dedicated 'symlink resolver' program would be in the squeak lib dir,
which cannot be found in Markus's case except by first resolving the
symlinks.

Cheers,
Ian
Damien Cassou
2012-01-28 12:28:41 UTC
Permalink
Hi Ian,
As usual: comments, suggestions, bug fixes (as whole files please *not*
diffs) and any unwanted vinyl LPs sitting in your attic can be sent directly
to me. ?Thanks.
where can I get the free type plugin? It was in the latest exupery VM
but is not on your trunk.

Thank you
--
Damien Cassou
http://damiencassou.seasidehosting.st

"Lambdas are relegated to relative obscurity until Java makes them
popular by not having them." James Iry
radoslav hodnicak
2012-01-28 12:28:43 UTC
Permalink
I've tried the latest OSX version from squeakvm.org and it doesn't start
with the error

dyld: unknown required load command 0x80000022

some light googling indicates that this error means the software requires
Snow Leopard (which I don't have).

rado
Ian Piumarta
2012-01-28 12:28:44 UTC
Permalink
Post by radoslav hodnicak
I've tried the latest OSX version from squeakvm.org and it doesn't
start with the error
dyld: unknown required load command 0x80000022
This should be compatible with 10.5.6 and later. People have
reported that this error goes away on 10.5 after upgrading.

I will look for a way of linking with more aggressive backward
compatibility.

Cheers,
Ian

Ian Piumarta
2012-01-28 12:28:43 UTC
Permalink
Hi Damien,
Post by Damien Cassou
where can I get the free type plugin?
I have absolutely no idea. Google turns up lots of references to a
pre-compiled binary but the source remains a mystery.

Anyone know where to get this?
Post by Damien Cassou
It was in the latest exupery VM
How other people repackage the Unix VM is beyond my control.
Post by Damien Cassou
but is not on your trunk.
If the author provides me with the plugin source files, or better
places it on squeaksource, then I will be happy to include it in the
repo and source/binary releases.

Cheers,
Ian
Continue reading on narkive:
Loading...