|
From: | Daniel J Sebald |
Subject: | lt-octave and libtool run at first Octave invocation (was Re: Strange Permission denied error, JIT related?) |
Date: | Sun, 26 Aug 2012 04:18:30 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16 |
On 08/26/2012 03:39 AM, Max Brister wrote:
On Sun, Aug 26, 2012 at 2:01 AM, Daniel J Sebald<address@hidden> wrote:Max, I just started seeing a strange error from the most recent code. I compiled as root, then run octave from a user account and get a permission denied error. I ran twice and got this: [sebald ~]$ /usr/local/src/octave/octave/build-nogui/run-octave /usr/bin/ld: cannot open output file /usr/local/src/octave/octave/build-nogui/src/.libs/19012-lt-octave: Permission denied collect2: ld returned 1 exit statusn[sebald ~]$ /usr/local/src/octave/octave/build-nogui/run-octave /usr/bin/ld: cannot open output file /usr/local/src/octave/octave/build-nogui/src/.libs/19205-lt-octave: Permission denied collect2: ld returned 1 exit statusn[sebald ~]$ Notice that the error message looks to be missing a backslash. It says "statusn" and then the command line begins. I think that is supposed to be "status\n". Notice that the library that Octave is looking for changed between attempts. In one case it is 19012-lt-octave, in the other it is 19205-lt-octave. Neither of these files are present in src/.libs. All I see in that directory is "octave" and "octave-cli". The two different file names make me think JIT. Now here's the strange part. I launch ./run-octave from the build directory as root and Octave runs as normal (not surprising, I suppose). But then I try again as a user and now Octave runs as normal (surprising?). DanDan, I think something odd happened when you were linking. I do not see how JIT could be directly related to this issue as JIT does not generate any temporary files, and nothing is kept across multiple invocations of Octave. When I look in my src/.libs folder I see lt-octave octave octave-cli
OK, sorry. I must have never run from "user" without having run from "root" first. Running octave from root (i.e., the first invocation) creates the "lt-octave" file.
I've looked at "run-octave", and not much... oh wait, I think I see it now: OCTAVE_DEFAULT_QT_SETTINGS="$top_srcdir/gui/default-qt-settings" \ exec $builddir/libtool --mode=execute $driver \ "$octave_executable" --no-init-path --path="$LOADPATH" \ --image-path="$IMAGEPATH" --doc-cache-file="$DOCFILE" \ --texi-macros-file="$TEXIMACROSFILE" --info-file="$INFOFILE" "$@" I did a simple grep: [sebald octave]$ grep OCTAVE_DEFAULT_QT_SETTINGS */*/*libgui/src/resource-manager.cc: std::string dsf = octave_env::getenv ("OCTAVE_DEFAULT_QT_SETTINGS");
IF I'm understanding this correctly, the first time Octave is launched, it looks for OCTAVE_DEFAULT_QT_SETTINGS and runs that script? That means the "lt-octave" comes from the "libtool" invocation at first launch.
A couple things about this:1) I indicated the option "--disable-gui", so I would think OCTAVE_DEFAULT_QT_SETTINGS wouldn't have any bearing.
2) If my interpretation is correct, I think neither will this run for someone who compiles and then installs to a system directory. To do that install would require being root (or if it asks for a root password, then enter the root password). So once it is installed at the system level and a user tries to run, the same thing will happen as I described.
I'm not sure what the intended behavior is. Can someone please clear up the sequence of events.
Thanks, Dan
[Prev in Thread] | Current Thread | [Next in Thread] |