View Issue Details

IDProjectCategoryView StatusLast Update
0003801GNUnetbuild processpublic2018-06-07 00:24
ReporterlynX Assigned ToChristian Grothoff  
PriorityhighSeveritytweakReproducibilityalways
Status closedResolutionwon't fix 
Product Version0.10.1 
Target Version0.11.0pre66Fixed in Version0.11.0pre66 
Summary0003801: gnunet-arm looks for config.d in architecture-dependent installation prefix
Description"gnunet-arm -s" terminates with:

May 29 13:20:16-925022 util-28125 WARNING `stat' failed on file `<linux-specific-prefix>/share/gnunet/config.d' at disk.c:1215 with error: No such file or directory
May 29 13:20:16-925130 gnunet-arm-28125 ERROR Malformed configuration, exit ...

configuration was:

./configure --prefix=<architecture-independent-prefix> --exec-prefix=<linux-specific-prefix>

explanation:

GNUnet should use the architecture-independent prefix when looking for architecture-independent configuration files.
TagsNo tags attached.

Activities

Christian Grothoff

2015-05-29 14:13

manager   ~0009160

I'm honestly not sure HOW to fix this. The issue is that if exec-prefix and prefix differ, we obviously cannot derive prefix from exec-prefix. OTOH, we must not hard-code paths into the binaries as some package managers require us to install to /foo and later run from /bar -- which is why we have this crazy os_installation.c logic that figures out exec-prefix, and then determine the rest of the locations relative from there.

Christian Grothoff

2015-05-29 14:15

manager   ~0009161

So lynX, if you look at the GNUNET_OS_IPK_-enum values (IPK = installation path kind) and the os_installation.c-logic, I'd be very interested in a portable, generic and clean method that would support different prefix and exec-prefix and also work with different package managers and other nuisances out there. I would be happy to help with hacking it up, I'm just not even sure what the code should look like to do this right.

lynX

2015-05-29 14:45

developer   ~0009169

The generated Makefile has lines like…

bindir = ${exec_prefix}/bin
datarootdir = ${prefix}/share
exec_prefix = <arch-dependent-path>
prefix = <shared-path>

You can cheat by passing both of these prefixes into os_installation.c and have it look for the stuff in there – just expect that binaries may not be in the same path with text files.

It's probably actually a historical relict. It was considered good software design style in the 90's, when sysadmins had separate NFS partitions for the architecture dependent and the shared architecture-independent application data. Since disk space was expensive, this actually mattered.

Admins typically had to manage a plethora of Sun, IBM, DEC etc systems which would share the same network file system protocol and text file format, but not the executables. I by habit still maintain my software this way as I still have some BSDs under my governance, but I could actually stop this anachronistic behaviour.

I'm not surprised that newer software administration systems completely disregard this past tradition and pose new challenges to software packages.
So it is up to you. Do you want to support an ages old tradition that lingers on in the default GNU configure settings, or do you prefer to postpone this bug to see if anybody else will ever even notice?

Now that I know that it isn't just a tweak on your side I can easily move the shared data into the architecture-dependent depot and forget about the old habits.

Christian Grothoff

2015-05-29 14:52

manager   ~0009172

Right, that's the problem, I can grab those from Makefile, but IIRC with dpkg and/or rpm this won't work because they do use prefix=/foo and then run from /bar (and thus rely on relocatable binaries unless the maintainer jumps through extra hoops). So given the choice between making life hell for modern distributions or supporting 'ancient' shared-arch app-data, I so far picked the 'modernist' style. Doing both would of course be better...

Or, maybe the fix is to disallow --exec-prefix in configure somehow...

lynX

2016-05-20 04:11

developer   ~0010694

I was able to use DESTDIR instead, since 0003900. The old architecture-independent-prefix semantics is probably not needed by anyone.

lynX

2016-05-20 04:12

developer   ~0010695

Probably not going to be needed by anyone alive.

Issue History

Date Modified Username Field Change
2015-05-29 13:26 lynX New Issue
2015-05-29 14:06 Christian Grothoff Assigned To => Christian Grothoff
2015-05-29 14:06 Christian Grothoff Status new => assigned
2015-05-29 14:08 Christian Grothoff Priority low => high
2015-05-29 14:08 Christian Grothoff Target Version => 0.11.0pre66
2015-05-29 14:13 Christian Grothoff Note Added: 0009160
2015-05-29 14:14 Christian Grothoff Target Version 0.11.0pre66 =>
2015-05-29 14:15 Christian Grothoff Note Added: 0009161
2015-05-29 14:15 Christian Grothoff Status assigned => feedback
2015-05-29 14:45 lynX Note Added: 0009169
2015-05-29 14:45 lynX Status feedback => assigned
2015-05-29 14:52 Christian Grothoff Note Added: 0009172
2015-05-31 21:49 Christian Grothoff View Status private => public
2016-05-20 04:11 lynX Note Added: 0010694
2016-05-20 04:12 lynX Note Added: 0010695
2016-05-20 04:12 lynX Status assigned => resolved
2016-05-20 04:12 lynX Resolution open => won't fix
2017-02-26 02:18 Christian Grothoff Fixed in Version => 0.11.0pre66
2017-02-26 02:18 Christian Grothoff Target Version => 0.11.0pre66
2018-06-07 00:24 Christian Grothoff Status resolved => closed