| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
In the Profpatsch universe, execline reigns surpreme. Therefore we must
bow to its (understandable) rejection of POSIX and use 100 as the user
error instead of the 64 of sysexits.h. This makes a lot of sense, as we
are already using execline conventions for the other exit codes.
|
|
|
|
|
|
|
|
| |
We want to discourage scripting with nman, as we may want to tweak the
user interface or internal behavior of nman in the future without
maintaining backwards compatibilty.
In other words: You have been warned.
|
| |
|
|
|
|
| |
(as suggested by Profpatsch)
|
| |
|
|
|
|
|
| |
Just copy path instead of having a harder to maintain reset mechanism.
Copying strings is not really a performance concern in this case.
|
|
|
|
|
|
|
| |
We reuse std::io::Error's Display trait to print precisely the error
that occurred to the user as well. This will probably help a lot if an
IO error should ever occurr, as they will only ever occurr in very weird
situations (mktemp(3) failed or share/man is not a readable directory).
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We can't really do normal unit tests, since they'd be integration tests
requiring nix. Recursive nix is also a bad idea in normal derivations,
so we add a NixOS test for nman.
Here we are also somewhat limited since we already need to have all
store paths used by nman in /nix/store otherwise we'd need to access the
network which would fail. However we can verify that nman only builds
specific store paths before finding the desired man page this way.
|
|
|
|
| |
Proof-reading would be very welcome!
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sometimes share/man contains directories that are not of the form
man<section> which we are checking in build_man_page. However, this
check can't deal with directories that are shorter than 3 characters due
to the use of split_at() which panics if the index is out of range (for
somer reason…).
In nixpkgs it is relatively common to have directories like "de" in
share/man.
This has been resolved.
|
|
|
|
|
|
|
|
|
| |
The path field wasn't used in DrvWithOutput as we only ever needed
rendered. rendered however is a bit of a confusing name as it is not in
fact fully rendered in all cases. Since we can pass rendered to
nix-store --realise without preprocessing in all cases we rename it to
path and add a note in the documentation. The old path field is removed
for this without replacement.
|
|
|
|
|
| |
* parse_drv_output → DrvOutput::parse
* parse_drv_path → DrvWithOutput::parse
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we would always assume section 1 was requested if no section
was given on the command line. Now the section is treated as if it was
unknown and we search for a matching man page by looking through the sub
directories of $output/share/man.
This means the following invokation works as expected:
nman libunwind unw_getcontext
instead of requiring
nman libunwind 3 unw_getcontext
|
|
|
|
|
| |
temp is essentially the old TempDir code from nman, but using libc's
mkdtemp(3) directly instead of mktemp(1) and a slightly better API.
|
|
|
|
|
| |
Most notably stderr produced by nix-instantiate and nix-store will now
be printed on an error.
|
| |
|
|
|
|
| |
Should save on copying a bit.
|
| |
|
|
|
|
|
|
|
|
| |
man pages are usually pretty small and therefore often also included in
out whereas doc seems to seldomly contain any man pages.
TODO: confirm this and get a better overview over man pages in doc
outputs
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
nix-instantiate unfortunately prints the plain .drv path for <attr>.out
wheras it prints <name>.drv!<output> for all non-default outputs. If we
realise the plain .drv path, _all_ outputs are realised which is not
desireable since we may not need extra store path being created by this,
e. g. for a derivation with outputs = [ "out" "lib" "dev" ] we only need
to realise "out" if the man pages are located in there, saving a bit of
time and disk space.
We implement this better behavior by adding the render function to
DrvWithOutput which converts a DrvWithOutput (at the cost of copying) to
an OsString. If the output is out, "!out" is appended to the path
meaning nix-store will only realise the default output.
|
| |
|
|
|
|
|
|
| |
* make exit code determination nicer syntactically by using an impl
* add .msg() function which returns an appropriate error message for
every error type.
|
|
|
|
|
|
|
|
|
|
| |
Unfortunately, nix-instantiate prints only the drv path for the `out`
output which causes nix-store to realise all drv outputs. This of course
breaks build_man_page since it expects the output to be just one path.
We fix this (for now) by using split(). Ideally we would use
<drv_path>!out for realising the default output which only builds the
output we need. However this is a bit annoying to solve since it means
we have to allocate a bit of memory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a complete and user interface compatible rewrite of nman.go in
Rust which aleviates a few flaws of the previous implementation:
* Garbage collector roots for both the derivation and the build outputs
are created in a temporary directory which is cleaned afterwards. This
prevents a race condition between nman and nix-store --gc and doesn't
pollute the user's working directory.
* Instead of building just one build output, nman now checks every
output for the requested man page which fixes nman for derivations
which have their man pages split between multiple outputs, e. g. man
and devman.
Future work:
* Improve error messages reported to the user
* Man page
* Implement man page search heuristics if no section is specified:
Instead of falling back to section 1, all sections should be checked
for the desired page (in an ascending order?)
|
|
|
|
| |
No more Brother crap.
|
|
|
|
| |
I don't know what I'm doing, but it's fun.
|
| |
|
| |
|
|
|
|
|
| |
So, turns out that enp6s0f3u1 sometimes also is initialised as
enp6s0f4u1. Why? WHyyyyyyyyy?????
|
|
|
|
|
| |
Reminder to myself to never check in TODO files since you always end up
forgetting to update them in the right commits.
|
| |
|
| |
|
|
|
|
| |
Dunno why I thought it was the former.
|
| |
|
|
|
|
|
|
| |
Another convenience feature you'd want virtually always want is to
automatically commit the changed release.nix which is added in this
commit.
|
|
|
|
|
| |
The T14s is an awesome machine, but unfortunately it needs an Ethernet
dongle.
|
|
|
|
|
| |
This is not really to inform anybody about anything, but mostly to get
rid of the warning generated by `nix-build -A manual release.nix`.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This started with pull request #43, which was about disabling the
command-not-found handler. The follow-up pull request, which is what I'm
merging now, however re-uses the programs.sqlite that is shipped as part
of the official nixpkgs channels.
While ideally the programs.sqlite would be in par with the jobset input
for nixpkgsSrc on Hydra, it's not easily possible since we'd need extra
configuration on Hydra, which in turn would make it harder to reproduce
the configuration on other systems. There also is no "tarball" jobset
input, which would at least make it easier to do via declarative
jobsets.
So until we have a definitive solution to this, we currently use
fetchurl to get the programs.sqlite based on a fixed snapshots and in
addition to that, @sternenseeman also wrote a handy updater to make
updating a breeze.
While I didn't test this on one of my machines yet, I did however add a
Hydra jobset for the branch and it so far didn't introduce new eval
errors or build failures, so I consider this safe to merge.
Thanks to @sternenseeman for implementing both #43 and #49.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This script downloads the latest nixos-unstable nixexprs.tar.xz,
extracts programs.sqlite, figures out its hash and updates version and
hash in the given release.nix.
Accessible as pkgs.sternenseemann.vuizvui-update-programs-sqlite for a
lack of a better place to put it. Maybe we should add something?
build-support doesn't feel right.
Future work: run this automatically once in a while via GitHub actions.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Since we now distribute the programs.sqlite database with the vuizvui
channel, we can make use of it in programs.command-not-found. We change
the default path used to use the nixpkgs sub directory of the vuizvui
channel (by default it expects a channel named nixos containing the
database).
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
programs.command-not-found requires a database containing an index of
all of nixpkgs. Since this is pretty expensive to create we fetch the
database from the nixos-unstable channel. Unfortunately it is not
available via git, so we need to use the tarball which also means hydra
can't automatically update it.
One improvement to this change that would be possible is to also index
vuizvui and merge that with the database from upstream. This should
probably be investigated in the future, but probably affects less people
as the nix tool will only be usable with vuizvui packages as
commond-not-found suggests if vuizvui.modifyNixPath = true.
|
|
|
|
| |
gh pr checkout sure is extremely convenient.
|
|
|
|
|
|
|
|
|
| |
Apparently (probably since GNU came along) there are manuals for
different languages than english in share/man/$language. This adds
support for this in my mandoc module by allowing the user to freely
specify the manpath entries under $out.
> nmap(1) - Netzwerk-Analysewerkzeug und Sicherheits-/Portscanner
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GnuPG version 2.2.26 got a refactor of the option parser and now no
longer preserves options set via command line flags when sending the HUP
signal.
I think this is an upstream regression and ideally we should submit a
bug report and or patch upstream, so this should be treated as a
workaround since I currently have limited time and just wanted fix our
integration module.
Since the config file is actually reloaded on HUP, we're now simply
passing the same options via file rather than via arguments.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
| |
This is pure screenshot-bliss.
|
|
|
|
|
| |
This means we don't need the -common machinery anymore and can remove
the -tests attribute altogether.
|