nixpkgs/pkgs/servers/x11/xorg/imake.patch
Sergei Trofimovich 6073831a11 imake: do not skip Linux* vendor definitions
Initial build failure is onserved on `staging` branch:

```
$ nix-build -A transfig
...
make[1]: Entering directory '/build/transfig.3.2.4'
Imakefile.c:20:2: Include file Imake.tmpl not found
imake: Exit code 1.
  Stop.
```

This happened after 8675ca0 ("xorg.xorgcffiles: 1.0.6 -> 1.0.7")
bump which exposed an old bug in `imake.patch`. `imake.patch`
dropped by accident definiton of `LinuxRedHat` enum and changed
evaluation of the following code:

```
 #if LinuxDistribution == LinuxRedHat
 ...
 # define ProjectRoot /usr
 #endif
```

References to `/usr` were addded in d47131ed97.

Before this change `LinuxDistribution == LinuxRedHat` evaluated to true.
After this change `LinuxDistribution == LinuxRedHat` evaluates to false.

Mechanically I moved `#if 0` right after enum definitions but still
before system autodetection.

Now `transfig` builds successfully.

Closes: https://github.com/NixOS/nixpkgs/issues/135337
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
2021-09-06 07:46:13 +01:00

42 lines
1.2 KiB
Diff

Disable imake autodetection for:
- LinuxDistribution to avoid injection of /usr paths
- gcc to avoid use uf /usr/bin/gcc
https://github.com/NixOS/nixpkgs/issues/135337
--- a/imake.c
+++ b/imake.c
@@ -1065,6 +1065,7 @@ get_distrib(FILE *inFile)
fprintf (inFile, "%s\n", "#define LinuxWare 11");
fprintf (inFile, "%s\n", "#define LinuxYggdrasil 12");
+#if 0 /* disable system autodetection. Fall through to LinuxUnknown. */
# ifdef CROSSCOMPILE
if (CrossCompiling) {
fprintf (inFile, "%s\n",
@@ -1090,6 +1091,7 @@ get_distrib(FILE *inFile)
* at the content of /etc/debian_version */
return;
}
+#endif
/* what's the definitive way to tell what any particular distribution is? */
fprintf (inFile, "%s\n", "#define DefaultLinuxDistribution LinuxUnknown");
@@ -1337,6 +1339,7 @@ get_gcc_version(FILE *inFile, char *name)
static boolean
get_gcc(char *cmd)
{
+#if 0 /* disable gcc autodetection. Fall through to explicitly set. */
struct stat sb;
static const char* gcc_path[] = {
#if defined(linux) || \
@@ -1385,6 +1388,9 @@ get_gcc(char *cmd)
}
}
return FALSE;
+#endif
+ strcpy (cmd, IMAKE_COMPILETIME_CPP);
+ return TRUE;
}
#ifdef CROSSCOMPILE