People
Repo info
Activity
    Joseph Hejderup
    @jhejderup
    Welcome! Feel free to ask anything on this gitter channel
    Jacob Finkelman
    @Eh2406
    2 quick things.
    1, can you add an example of the difference between a dependency graph and a call-based dependency graph to the readme. I had to read the paper to find out what you were talking about.
    2, I am a maintainer of cargos dependency resolution code. If emulating that algorithm is part of this project, I would be willing to help. Ping me on github or discord.
    Joseph Hejderup
    @jhejderup
    Thanks for the suggestion @Eh2406, I will add a section about it to the readme file :)
    That would be extremely helpful to us, I will ping you when we will revisit/rework on the resolution algorithm, many thanks for reaching out!
    Jacob Finkelman
    @Eh2406
    How does it work now? How do you guarantee that the dependency tree you are using is the one cargo will generate?
    / do you make that generate?
    Joseph Hejderup
    @jhejderup
    @Eh2406 We basically generate the dependency tree using cargo (since we need to compile the package anyway). To ensure consistent dependency resolution, we configured cargo to point to a local non-updatable crates.io-index repo (e.g basically clone a local copy of the index, remove remote fetch and then edit the local cargo installation (.cargo/cargo) to read it registry = "file:///data/prazi/crates.io-index")
    Pietro Albini
    @pietroalbini
    whoa, this looks great!
    @jhejderup how did you manage native dependencies?

    To ensure consistent dependency resolution, we configured cargo to point to a local non-updatable crates.io-index repo

    by the way, you can pass the -Zno-index-update flag to cargo to get the same behavior (it requires nightly)

    Joseph Hejderup
    @jhejderup
    @pietroalbini we did this on a trial and error basis by aggregating all the error compile logs and then installed the top 5-10 most missing native dependencies (only on Linux though)
    On the LLVM call graph, we can identify C calls, but currently we don't handle it so it is not shown in the final Präzi graph
    @pietroalbini ah very nice, wasn't aware of it, thanks :)
    Pietro Albini
    @pietroalbini
    and also, you should probably look into https://github.com/rust-ops/crates-build-env :)
    basically we also have the same native deps problem in crater/docs.rs, so that's a docker image with most* of the dependencies needed to build rust crates
    it was created by the docs.rs developer (adding new packages every time people complained their crate wasn't in the site), and crater is going to use it soon
    Joseph Hejderup
    @jhejderup
    and also, you should probably look into https://github.com/rust-ops/crates-build-env :)
    wow, fantastic, we will for sure this next time when we build crates.io
    Pietro Albini
    @pietroalbini
    (oh, nice, I'm not the only one misunderstanding how the quotes work in gitter :D)
    Joseph Hejderup
    @jhejderup
    haha, I am new to gitter so I am also struggling a bit ;)
    Pietro Albini
    @pietroalbini
    if you have any question about how we do things in crater, I'm in the crater channel on the rust discord ;)
    oh, yeah, I have another question
    how do you cache dependencies between builds?
    Joseph Hejderup
    @jhejderup
    This is something we don't do yet; we just do clean installs (although, we should maybe try do that)
    Pietro Albini
    @pietroalbini
    if you don't do parallel builds you should get some speedups with things like sccache
    unfortunately sccache doesn't really like multiple builds on the same cache directory, so we can't use it for crater
    the (horrible) solution we have right now is to just build everything inside a big target directory (one for each thread)
    the "only" downside of that solution is like the 4tb disk usage for each run
    Joseph Hejderup
    @jhejderup
    ah I see, we do build in parallels, I will have a look at sccache
    if you have any question about how we do things in crater, I'm in the crater channel on the rust discord ;)
    thanks a lot, I think we have a lot to learn from the crater project
    (arrgg, these quotes :) )
    Pietro Albini
    @pietroalbini
    you need to put a blank line in between ;)
    bye o/
    Joseph Hejderup
    @jhejderup
    oh thanks, bye :)
    Moritz Beller
    @Inventitech_twitter
    @Eh2406 I have added an example between PDN and CDN, basically the figure from the paper with a short explanation