Wireshark mailing list archives

Re: [Wireshark-commits] master 43a81b6: Add some information on running from the build directory.


From: Guy Harris <guy () alum mit edu>
Date: Fri, 1 Aug 2014 10:54:15 -0700


On Aug 1, 2014, at 2:00 AM, Peter Wu <peter () lekensteyn nl> wrote:

On Thursday 31 July 2014 16:40:53 Guy Harris wrote:
On Jul 31, 2014, at 3:11 PM, Peter Wu <peter () lekensteyn nl> wrote:
[..] 
Oh my, that filesystem.c code is really ugly and relying on a lot of
assumptions. Why does it need to distinguish build dirs from other dirs in
the first place?

So that you can just type "./wireshark" or "./tshark" after you've done a
build, and have it Just Work, rather than having to install Wireshark or
TShark before you can run it.  Note that we run TShark to generate some man
pages.

The binaries themselves already Just Work(tm) without libtool because CMake 
sets RPATH.

Presumably by "the binaries themselves already Just Work" you mean "the binaries are, at least, capable of finding the 
relevant shared libraries, even if the code *in* those binaries, and the shared libraries in question, fails to find 
the data files such as RADIUS dictionaries, DIAMETER dictionaries, FIX field description files, etc., and thus doesn't 
Just Work", as that's a more precise description of the situation.

I.e., the problem has nothing to do with finding the *shared libraries*, it has to to with finding the *data files*.

For autotools builds, the data files *are* found, without any need for the user to specify anything themselves, for 
in-tree builds; the code determines the location of those data files based on the location of the executable image, so 
that it picks up the data files from the source tree.

For out-of-tree builds, however, that obviously doesn't work, as the executable isn't in the source tree.

I would like to get rid of the WIRESHARK_RUN_FROM_BUILD_DIRECTORY if 
possible, not treating it specially and instead rely on environment variables 
to configure stuff.

As long as the user has to set precisely none of those environment variables themselves when running from the build 
directory, that would be OK.

If the user has to set any of them himself or herself, that no longer Just Works.

Setting WIRESHARK_DATA_DIR should work without surprises

Note that the source tree doesn't have exactly the same layout as the directory tree of global configuration files; if 
we're not going to have the code know whether we're running from the build directory or not, the build process will 
probably have to collect all the files that would be installed as global configuration files (RADIUS dictionaries, 
DIAMETER dictionaries, Lua files, AUTHOR-SHORT file, etc., etc.) and copy them to a tree with that layout, with 
WIRESHARK_DATA_DIR pointed at the root of that tree.

(this behavior is not even documented, only root/setuid should have this special behavior).

The fact that we ignore environment variables when run with special privileges isn't documented?  Yes, it should be, 
although we should perhaps extend the notion of "special privileges" to include, for example, process capabilities.

rundir=$(cd "$(dirname "$0")" && pwd)
#rundir=$(dirname "$(readlink -f "$0")")
export WIRESHARK_DATA_DIR=$rundir
export WIRESHARK_PLUGIN_DIR=$rundir

Either

        1) those would need to set those to the *source* directory, *and* the code would need to know that some files 
(such as init.lua) aren't in their normal locations (i.e., that we're running from the build directory)

or

        2) the build process will need to make a copy of the data files, in the same fashion that installation does, 
and the script should point to the copied tree.

If this approach is taken, an option must be added to support the use of GDB / 
valgrind.

.../otool/etc., along the lines of "./libtool --mode=execute {command} {program}".

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: