"Identifier not used" is weird, replace it by "unknown identifier" and
give the search identifier name in the header.
Also improve the autocomplete comment. Make it human-friendly and
explain why people got autocompleted to a symbol that does not exist.
Also, only show it if the symbol actually exists. That way we only
tell "maybe autocomplete lead you here" only in cases where
autocomplete can actually lead you here.
To test this feature:
- search for any random symbol, you'll see "Unknown identifier '...'"
- search for a symbol that exists in another version as the selected
one. For example __NR_epoll_pwait2 appeared in musl v1.2.5. You'll
see the same header message plus a comment about how the symbol
exists in another version.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Instead, start from $0 and move back up two times. So, something like:
./elixir/utils/index
./elixir/utils
./elixir
./elixir/update.py
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Stop writing a global file when initializing projects. This can cause
permission issues. We instead pass the option manually for each Git
process call using:
git -c safe.directory=...
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Previously, to start an indexing from scratch:
./utils/index /srv/elixir-data musl https://git.musl-libc.org/git/musl
This is annoying as the script already has the remote URLs for all known
projects. Now, a call without remote will automatically add the remote
URLs matching the project name:
./utils/index /srv/elixir-data musl
This copies the behavior that was previously only implemented for --all.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
utils/pack-repositories did the following on repos which have a gc.log
file existing (created when GC fails):
git prune
git gc --aggressive
git prune
git gc --aggressive
Here we:
- Delete utils/pack-repositories; we don't want that detection to be
done manually. Instead, we integrate the gc.log detection into
utils/index that should be called often.
- Create a hidden flag ($ELIXIR_GC) to allow manual trigger.
- Replace the above sequence with a simpler `git gc --aggressive`.
Let's trust Git.
- Do a `git gc --auto` in the default case. This call is automatically
done by porcelain commands but we don't run any so let's give Git an
opportunity to cleanup from time to time (heuristic based).
- Replace the gc.log detection from:
find . -name gc.log
To:
test -e $data/$project/repo/gc.log
It should be more reliable. With the first approach we risk projects
that contain a file gc.log to trigger the detection on each run.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Avoid the following Git warning:
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Previously:
LXR_PROJ_DIR=/srv/elixir-data ./utils/update-elixir-data
Now:
./utils/index /srv/elixir-data --all
The impact is slightly different: it also has the side-effect of
creating all known projects (Linux, U-Boot, etc.) if they didn't exist.
We have asked around and we are not aware of any other Elixir instance.
To keep the previous behavior, if people don't want to index all
supported projects:
x=/srv/elixir-data
find $x -mindepth 1 -maxdepth 1 -printf "%f\n | \
xargs -L1 -r ./utils/index $x
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Allow calling like:
./utils/index musl
That will do the same thing as before (fetch+index).
It works only if a previous call was made to add remotes.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
$ELIXIR_THREADS fallback to nproc is straight forward code, much more
than the incantation to find the path to the Elixir install path.
Remove the incantation and replace by simple code:
if test -z "$ELIXIR_THREADS"; then
ELIXIR_THREADS="$(nproc)"
fi
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Make utils/index-repository idempotent, meaning we can call it multiple
times on the same repo and same remotes without issues.
Also allow adding new remotes to an existing repo.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Simplify the script. We never `cd` into the directory, we instead use
`git -C`. Avoid repeating it by creating a $git variable.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
This is pretty useful as update-elixir-data gets called often to check
for new updates. Most often, there are none, so checking all remotes at
the same time is useful. This only applies to the kernel, that is the
only project using multiple (three) remotes.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Linux is the only currently supported project for which we want three
remote URLs; see index-all-repositories for the list.
We could optimise the fetching by doing a single fetch call to all
remotes at the same time using --jobs (or fetch.parallel config).
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
* Remove repository indexing from Dockerfile
* Copy Elixir code from the context instead of cloning it from Github
* Move Dockerfile from docker/debian/Dockerfile to docker/Dockerfile
* Add docs for the new Dockerfile
* Add an utility script that allows easier repository configuration
* Add .dockerignore
* Use relative paths in Docker section in README
Instead of all projects in parallel.
Each indexing task runs parallel jobs anyway.
This makes errors easier to spot and the whole process easier to stop.
Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
This add support for linux 0.01 to 2.6.12-rc1
Some versions are missing like 0.02 to 0.10 (not included) but it looks like
they have been deleted over time.
Signed-off-by: Maxime Chretien <maxime.chretien@bootlin.com>