[Swift-user] again about absolute and relative paths
Mihael Hategan
hategan at mcs.anl.gov
Fri Dec 7 16:18:28 CST 2012
I'm slightly confused.
You are saying that using @filename gives you an error. Can you be more
explicit about what that error is?
Without CDM, if you have file f<"/a/b/c/name">, your app will find that
file in "a/b/c/name". In other words, there will be a path "a/b/c/name"
in your work directory, so if your app only did "ls -al a/b/c/name" it
should succeed.
If you use CDM direct mode, it should know enough to put back the "/".
Mihael
On Fri, 2012-12-07 at 16:00 -0600, Lorenzo Pesce wrote:
> Hi Mihael,
>
> Thanks a lot for your quick reply.
>
> > Yes. You should not make assumptions about the location of files on the
> > remote side based on the way they are on the swift side. Pass that
> > location to your executable using @filename() instead.
>
> thanks and yes I am doing that.
>
> > Now the internal details. Swift restricts files on the app execution
> > side to the work directory. In order to do that for absolute files and
> > prevent clashes (to some extent), it does something equivalent to
> > chroot(workdir), effectively removing the first "/" from the absolute
> > path. The file is staged in to the new location before the app is run.
>
> So, how will it find the files if I use direct? would not the filename have the "/"
> chopped off and therefore point to the wrong location?
>
> (which is the last error message I have seen before I gave up and moved to using
> strings and not files, but that approach prevents me from using any form of staging
> without some complex machinery)
>
> I could conceivably use a relative path (not sure whether it works since it will go upwards, but I can try).
> Can I define a path relative to SWIFT_USERHOME or USER_HOME in swift?
>
>
> >
> > Mihael
> >
>
More information about the Swift-user
mailing list