Commit graph

298 commits

Author SHA1 Message Date
Noah Fontes
a7f5e8321e
autoPatchelfHook: fix packages that use stdenvNoCC
autoPatchelfHook actually doesn't depend on stdenv and only needs
bintools (with its wrapper). This change uses $NIX_BINTOOLS instead of
$NIX_CC and makes the dependency on bintools explicit.
2021-09-18 21:58:02 -07:00
Noah Fontes
4765a3e153
autoPatchelfHook: improve arch/ABI compatibility
Fully enabling crossSystem support for autoPatchelfHook came with some
perhaps unintended consequences of being a bit more aggressive about
patching ELF files from architectures/ABIs that differ from the target
(previously, those files would be ignored because ldd usually couldn't
handle them).

This change adds architecture and rough OS ABI detection to the script
so that it doesn't try to blindly replace the interpreter of files that
can't possibly use that interpreter, and also makes sure it doesn't
accidentally use libraries of other architectures/ABIs.
2021-09-18 21:57:08 -07:00
github-actions[bot]
0f78d9c4b7
Merge staging-next into staging 2021-09-15 00:02:12 +00:00
github-actions[bot]
728f30ca03
Merge master into staging-next 2021-09-15 00:01:33 +00:00
Noah Fontes
b79483d2b7
autoPatchelfHook: fix detection under crossSystem
In #84415, autoPatchelfHook was taught to use the correct path to the
readelf binary when a crossSystem is specified. Unfortunately, the
remainder of the functionality in the script depended on ldd, which only
reads ELF files of its own architecture. It has the further unfortunate
quality of not reporting any useful error, but rather that the file is
not a dynamic executable.

This change uses patchelf to directly analyze the DT_NEEDED tags in the
target files instead, which correctly works across architectures. It
also updates the use of objdump to be prefix-aware $OBJDUMP (which would
have been required in the PR mentioned above, but we never made it that
far into the script execution).
2021-09-12 15:07:15 -07:00
Artturi
fb2781ff0a
Merge pull request #134881 from OmnipotentEntity/dont-compress-xz
setup-hooks: compress-man-pages.sh: Do not attempt to compress .xz files
2021-09-11 04:03:12 +03:00
Martin Weinelt
7f732aca66 Revert "Merge remote-tracking branch 'origin/python-unstable' into staging-next"
This reverts commit b041b2e1b2, reversing
changes made to 5b6c2380ad.
2021-09-05 15:02:25 +02:00
happysalada
5b86e637d7 move-docs.sh: simplify redundant conditional
remove impossible check for empty variable after it's been set twice
2021-08-30 10:27:45 +09:00
Michael Reilly
51f21e91e8 setup-hooks: compress-man-pages.sh: Do not attempt to compress .xz files 2021-08-19 17:13:05 -04:00
Sandro
f6b209b891
Merge pull request #132800 from deliciouslytyped/separatedebuginfo-extraneous-local
setup-hooks: separate-debug-info.sh: Remove extraneous local variable…
2021-08-07 11:53:29 +02:00
deliciouslytyped
0e6b107cac setup-hooks: separate-debug-info.sh: Remove extraneous local variable originally used in ec5b66eb 2021-08-05 17:52:27 +02:00
happysalada
0900850680 stdenv: conservative undefined variables 2021-08-03 12:43:34 +09:00
happysalada
f3d9711f05 stdenv: add link to clarify 2021-07-19 14:50:01 +09:00
Andrew Childs
c696fcdacb fixDarwinDylibNames: set name of install_name_tool 2021-05-17 00:27:01 +09:00
Andrew Childs
ca156a66b7 stdenv/patchShebangs: fix off by one reading old interpreter
This caused shebangs that were already store paths to be rewritten.

Introduced by ab4c359822 in #94642

Example difference:

    $ echo "hello world" | tail -c+3
    llo world

    $ str="hello world"; echo ${str:3}
    lo world
2021-02-09 13:05:38 +09:00
Andrew Childs
2bd3aa4bc2 Revert "Revert "stdenv/patchShebangs: avoid temporary time reference file""
This reverts commit df21fb8afa.
2021-02-09 12:57:21 +09:00
Martin Weinelt
df21fb8afa Revert "stdenv/patchShebangs: avoid temporary time reference file"
This reverts commit 6e3f4c9079.

This apparently breaks the x86_64 darwin stdenv. Details in #112417.
2021-02-09 01:33:33 +01:00
Jörg Thalheim
2dcc858efc
Merge pull request #94642 from Mic92/patch-shebangs 2021-02-04 21:20:40 +00:00
Jörg Thalheim
6e3f4c9079
stdenv/patchShebangs: avoid temporary time reference file
less commands -> faster
2021-01-14 20:00:58 +01:00
Jörg Thalheim
cb1654ff92
stdenv/patchShebangs: consistent conditional tests
according to shellcheck [[ foo == "bla" ]] && [[ ... ]] has better posix
semantics over [ foo = "bla" -a ... ]. It is also easier to read.
2021-01-14 20:00:57 +01:00
Jörg Thalheim
ab4c359822
stdenv/patchShebangs: use builtins where possible
builtins for small input sizes should be faster due to less forking.
2021-01-14 20:00:54 +01:00
Sandro
7ff9b3699d
Merge pull request #108081 from SuperSandro2000/silence-file-format-not-recognized
setup-hooks/strip: silence 'File format not recognized' errors again
2021-01-07 00:49:44 +01:00
Andreas Rammhold
c2884c4011
Merge pull request #106954 from r-burns/randomseed
[staging] stdenv: trim random seed to avoid reference cycles
2021-01-02 11:01:34 +01:00
Sandro Jäckel
03ba885fa2
setup-hooks/strip: silence 'File format not recognized' errors again
This got lost in e4d17dc558.
2021-01-02 10:46:27 +01:00
DavHau
2efcf6dc26 autoPatchelf: add comment why ignore failing ldd/sed 2020-12-25 12:13:03 +01:00
DavHau
2fde1e63ba autoPatchelfHook: fix shellcheck errors 2020-12-25 12:13:03 +01:00
DavHau
4ac5d22654 autoPatchelfHook: fix bug introduced by #101142 2020-12-25 12:13:03 +01:00
Ryan Burns
61a6d1aae2 stdenv: trim random seed to avoid reference cycles
Using the full store hash as the random seed occasionally caused
reference cycles when the invocation was stored in output artifacts.
For example, cross-compiled gcc was failing due to this:
https://hydra.nixos.org/eval/1631713#tabs-now-fail

Simply truncating the hash is sufficient to avoid this.
2020-12-23 16:46:39 -08:00
Emery Hemingway
e4d17dc558 setup-hooks/strip: more robust stripping
Use "find -exec" to strip rather than "find … | xargs …". The former
ensures that stripping is attempted for each file, whereas the latter
will stop stripping at the first failure. Unstripped files can fool
runtime dependency detection and bloat closure sizes.
2020-12-08 05:35:48 +01:00
Anderson Torres
cef4502feb
Merge pull request #105818 from raboof/symlink-compressed-manpages-deterministically
compress-man-pages: symlink compressed manpages deterministically
2020-12-07 23:37:35 -03:00
Arnout Engelen
777cb35eb8
compress-man-pages: symlink compressed manpages deterministically
For example graphviz has chained symlinked manpages: dot2gxl.1 is
a symlink to gv2gxl.1 which is a symlink to gxl2gv.1

The second loop replaces each non-compressed symlink to a compressed
symlink. The target is determined with 'readlink -f', which follows
links recursively until the first name that is not a link (so either
the 'target name' or the first 'dangling' symlink).

This means that if the loop converted dot2gxl.1 before converting
gv2gxl.1 it would add a symlink `dot2gxl.1.gz->gxl2gv.1.gz`. When
it converted gv2gxl.1 first, it would then add a
`dot2gxl.1.gz->gv2gxl.1.gz` symlink.

Both are 'correct', but it's weird the result depends on the order
in which 'find' returns the files. This PR makes the behaviour
deterministic.

fixes #104708
2020-12-04 09:24:37 +01:00
Frederik Rietdijk
c7843cf6a2
Merge pull request #101142 from DavHau/improve-autopatchelf
autoPatchelfHook: optimize performance; better error handling
2020-12-03 12:34:05 +01:00
Frederik Rietdijk
05d1c49209 Merge staging-next into staging 2020-11-29 13:51:33 +01:00
Frederik Rietdijk
0d8491cb2b Merge master into staging-next 2020-11-29 13:51:10 +01:00
Fabian Möller
50f54c5ca7 copyDesktopItems: add new setup-hook 2020-11-29 04:03:38 +01:00
Jan Tojnar
136152af80
Merge pull request #101537 from jtojnar/gtk-tracker 2020-11-28 01:37:37 +01:00
Jan Tojnar
acfc45bacc
wrapGAppsNoGuiHook: init 2020-11-26 14:06:07 +01:00
DavHau
05fa0f1a2e improve things shellcheck complains about 2020-11-07 18:08:48 +07:00
Andreas Rammhold
83f0bccc89 stdenv: add -frandom-seed to NIX_CFLAGS_COMPILE for reproducibility
This adds -frandom-seed to each compiler invocation in stdenv. The
object here is to make the compierl invocations produce the same output
every time they are called (for the same derivation). When the
-frandom-seed option is not set the compiler will use a combination of
random numbers (in GCC's case from /dev/urandom) and the durrent time to
produce a "random" input per file. This can (among other things) lead to
different ordering of symbols in the produced object files.

For reason of reproducibility we prefer having the same derivation
produce the exact same outputs. This is not a silver bullet but one way
to tame the compiler.
2020-11-01 19:40:12 +01:00
DavHau
112f275f4d
autoPatchelfHook: fix typos in comments 2020-10-26 17:17:07 +07:00
Vladimír Čunát
89023c38fc
Recover the complicated situation after my bad merge
I made a mistake merge.  Reverting it in c778945806 undid the state
on master, but now I realize it crippled the git merge mechanism.
As the merge contained a mix of commits from `master..staging-next`
and other commits from `staging-next..staging`, it got the
`staging-next` branch into a state that was difficult to recover.

I reconstructed the "desired" state of staging-next tree by:
 - checking out the last commit of the problematic range: 4effe769e2
 - `git rebase -i --preserve-merges a8a018ddc0` - dropping the mistaken
   merge commit and its revert from that range (while keeping
   reapplication from 4effe769e2)
 - merging the last unaffected staging-next commit (803ca85c20)
 - fortunately no other commits have been pushed to staging-next yet
 - applying a diff on staging-next to get it into that state
2020-10-26 09:01:04 +01:00
Vladimír Čunát
336bc8283b
Re-Revert "Merge #101508: libraw: 0.20.0 -> 0.20.2"
This reverts commit c778945806.

I believe this is exactly what brings the staging branch into
the right shape after the last merge from master (through staging-next);
otherwise part of staging changes would be lost
(due to being already reachable from master but reverted).
2020-10-26 08:19:17 +01:00
Vladimír Čunát
c778945806
Revert "Merge #101508: libraw: 0.20.0 -> 0.20.2"
I'm sorry; I didn't notice it contained staging commits.

This reverts commit 17f5305b6c, reversing
changes made to a8a018ddc0.
2020-10-25 09:41:51 +01:00
DavHau
b9d2541a37
autoPatchelfHook: store dependant for dependency 2020-10-23 13:21:08 +07:00
DavHau
f833f0406f
autoPatchelfHook: print dependant for missing deps 2020-10-23 13:16:23 +07:00
DavHau
11a08bcfad
Apply suggestions from code review
Co-authored-by: symphorien <symphorien@users.noreply.github.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2020-10-22 10:15:42 +07:00
Frederik Rietdijk
23890fc236 Merge staging-next into staging 2020-10-20 20:55:46 +02:00
DavHau
5c382b7f0e autoPatchelfHook: optimize performance, better error handling 2020-10-20 19:09:32 +07:00
Daniël de Kok
48a20e9337 validatePkgConfig: fix variable scope
validatePkgConfig failed due to a wrong variable scope, as reported in
issue #100834. This change corrects the variable scoping.
2020-10-18 14:00:05 +02:00
Lily Ballard
866a7de409 Fix doc comment for installManPage 2020-10-08 15:08:40 -07:00