New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nghttp2 => 1.24.0 + --enable-app #28376
Conversation
@ixmatus, thanks for your PR! By analyzing the history of the files in this pull request, we identified @c0bw3b, @wkennington and @edolstra to be potential reviewers. |
The PR Looks good but i recommend to squash the three commits into one which introduces the new feature and bumps the version number or rewrite the commits into:
The commit messages should be in accordance with the CONTRIBUTING document. |
03deacc
to
3efaa7a
Compare
Thanks for the feedback @makefu. |
Oh, technically my commit message still doesn't meet |
3efaa7a
to
8cec113
Compare
compiles and tested binaries, new 'app' related tools seem to be working. @Mic92 would you be so kind? 👍 |
Thanks for the verification @makefu. Is it still the case that the Travis build failures can be ignored like it was a few months ago? If not, I will go investigate... Otherwise, if we could get this merged that'd be nice so I can put up my PR for the CC: @domenkozar |
@@ -6,6 +6,7 @@ | |||
, enableAsioLib ? false, boost ? null | |||
, enableGetAssets ? false, libxml2 ? null | |||
, enableJemalloc ? false, jemalloc ? null | |||
, enableApp ? false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could alternatively put the apps into their own output. Adding bin to outputs might suffice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was trying to follow the derivation as it was as closely as possible but I'll admit I hadn't thought of your suggestion 😄.
I'll follow your suggestion and push a revision to the commit this evening. Thanks @fpletz.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, this made $out basically empty, as libs are in $lib, so it's maybe a little "oversplit". ($out isn't normally referenced)
8cec113
to
84ca88c
Compare
@fpletz I've addressed your feedback. |
I think we always have the bin output first in the list so that gets installed.. (@dezgeg?) |
@globin I'm confused. I tested it and all of the application binaries were installed into the bin output. Is that what you're talking about? |
No this ensures that you can do e.g |
I think you can also retarget staging for this one. nghttp2 -> curl -> quite a lot of packages. |
This change does three things: 1. Increases nghttp2's version from 1.20.0 to 1.24.0 2. Adds a `bin` output 3. Enables building of nghttp2's suite of applications
84ca88c
to
9dee190
Compare
I mean changing the target branch to |
@Mic92 oh, I understand. Okay. |
Don't merge yet. I have one more change to make to fix an issue I just noticed with |
@fpletz @globin @Mic92 I'd appreciate your feedback on a1c6bfe. I didn't squash it with the other commit because I'm not positive it's the right thing to do here. It fixes an issue I noticed with nghttpx by providing a python interpreter for ocsp stapling. However this means pulling in python for So I kept the commit separate in-case any of you have a really good reason for me to rethink how I'm solving this... |
|
||
nativeBuildInputs = [ pkgconfig ]; | ||
buildInputs = [ openssl libev zlib c-ares ] | ||
buildInputs = [ openssl libev zlib c-ares makeWrapper ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
makeWrapper is a nativeBuildInput.
... makeWrapper belongs in nativeBuildInputs
a1c6bfe
to
b0a28f5
Compare
Well, it would certainly be better to not to have build-time dependency Perhaps separate the wrapping into another derivation and pass only the unwrapped one to |
@vcunat thanks for taking a look. I'll try to address your concern this evening or tomorrow when I have some spare time. |
Also --enable-app and use a $bin output.
I merged the first commit to staging now, as it seems safe and there are many bugfixes within; we can improve later. |
@ixmatus Actually we were already building the apps even when it wasn't wanted. See the builds history of Moreover there is a confusion between nghttp2 the C library and nghttp2 apps suite. Trying to build both from one multi-outputs derivation just nurture that confusion. I agree with @vcunat that two different derivations would be much better.
FWIW Debian/Ubuntu/Arch/FreeBSD provides lib and apps as separate packages. I'm willing to work on that and come back with a proper PR in time for 18.03. |
|
Yes and no, I guess? 😼 [demo@nixos:~]$ nixos-version
17.09.1812.36a4dc392a (Hummingbird)
[demo@nixos:~]$ find /nix/store/ -name "nghttpx"
[demo@nixos:~]$ nix-env -iA nixos.curlFull
installing ‘curl-7.56.0’
these paths will be fetched (2.80 MiB download, 5.24 MiB unpacked):
/nix/store/3lg7jw4g54cy7l65bjk5qzwlb5m7cdxy-c-ares-1.13.0
/nix/store/4z1n838nkpy42ns4ks749cjldgs5z4l2-openldap-2.4.45-dev
/nix/store/a3ls83adr1dndnqm1r8d1rj50kq5rhl0-libev-4.24
/nix/store/chkpwifxfmbkm4sdky2kdlhi2wb7ndld-libssh2-1.8.0-dev
>>/nix/store/dq226ai0lcr5kcp7d978q3ma71l6972i-nghttp2-1.20.0
/nix/store/hsj75yi8k7m427xdg9xbb98qwc8xr92r-curl-7.56.0-devdoc
/nix/store/jfd7rlwrkahyql7caknnnxpr1mcrfx3s-curl-7.56.0-dev
/nix/store/kfiy6my66r0vl1kklwnb0q1x93mn04xq-nghttp2-1.20.0-dev
/nix/store/lmm7dxr0dip3c545xn4gadb9h4jvij0m-curl-7.56.0-man
/nix/store/pdlgahwrfx627ksx370difq2144y2wnz-curl-7.56.0-debug
/nix/store/phhy9mspjwgzm4nv0c5c1j0vkpp9zapn-libidn-1.33-bin
/nix/store/x03p60i19375ir9hsk6ac0wk1jiza30p-libidn-1.33-dev
[...]
[demo@nixos:~]$ tree /nix/store/dq226ai0lcr5kcp7d978q3ma71l6972i-nghttp2-1.20.0
/nix/store/dq226ai0lcr5kcp7d978q3ma71l6972i-nghttp2-1.20.0
├── bin
│ ├── h2load
│ ├── nghttp
│ ├── nghttpd
│ └── nghttpx
└── share
├── doc
│ └── nghttp2
│ └── README.rst
├── man
│ └── man1
│ ├── h2load.1.gz
│ ├── nghttp.1.gz
│ ├── nghttpd.1.gz
│ └── nghttpx.1.gz
└── nghttp2
└── fetch-ocsp-response
7 directories, 10 files
[demo@nixos:~]$ find /nix/store/ -name "nghttpx"
/nix/store/dq226ai0lcr5kcp7d978q3ma71l6972i-nghttp2-1.20.0/bin/nghttpx |
I agree, at this point I think separating the derivations will make things clearer. I still have yet to contribute my nghttpx nixos module so when I have some free time to work on that, if no one has tackled this, I will. |
That's just |
@GrahamcOfBorg build nghttp2 |
No attempt on x86_64-darwin (full log) The following builds were skipped because they don't evaluate on x86_64-darwin: nghttp2 Partial log (click to expand)
|
No attempt on x86_64-linux (full log) The following builds were skipped because they don't evaluate on x86_64-linux: nghttp2 Partial log (click to expand)
|
No attempt on aarch64-linux (full log) The following builds were skipped because they don't evaluate on aarch64-linux: nghttp2 Partial log (click to expand)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See infinite recursion from @GrahamcOfBorg
I think we got what we wanted out of this. A few improvements were made (and merged) in subsequent commits too. I will close this. |
This change updates nghttp2 to the latest stable released version,
1.24.0
. Additionally, a boolean argument,enableApp
, is added to build nghttp2's applications (e.g:nghttpx
,nghttpd
,h2load
, etc.)Motivation for this change
The motivation for this change is two-fold:
nghttp2
.nghttp2
, which is a prerequisite for a follow-on PR adding a new NixOS module fornghttpx
.Things done
(nix.useSandbox on NixOS,
or option
build-use-sandbox
innix.conf
on non-NixOS)
nix-shell -p nox --run "nox-review wip"
./result/bin/
)