Skip to content
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

Use Graphviz_jll #71

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

fingolfin
Copy link

@fingolfin fingolfin commented Oct 10, 2022

This removes the need to manually install Graphviz

Resolves #16

Seems to work fine for me on macOS. Did not test on Linux or Windows

This removes the need to manually install Graphviz
@fingolfin fingolfin mentioned this pull request Oct 10, 2022
Comment on lines 329 to 333
proc[] = pprof_jll.pprof() do pprof_path
open(pipeline(`$pprof_path -http=$webhost:$webport $relative_percentages_flag $file`))
Graphviz_jll.dot() do dot_path
open(pipeline(`$pprof_path -http=$webhost:$webport $relative_percentages_flag $file`))
end
end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this package requires Julia v1.6, you could use the recommended thread-safe syntax

run(`$(mungify_exe()) $arguments`)

instead of

mungify_exe() do exe
    run(`$exe $arguments`)
end

but I don't understand what this is doing: dot_path isn't used. Is it used only to merge the environments?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah we just need to instead dot into the path, since it is going to be called by pprof

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bit convoluted, but can do something like

pprof = addenv(pprof_jll.pprof(), Graphviz_jll.JLLWrappers.LIBPATH_env=>Graphviz_jll.LIBPATH[], "PATH"=>Graphviz_jll.PATH[])
open(pipeline(`$pprof -http=$webhost:$webport $relative_percentages_flag $file`))

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not enough to just modify PATH, because shared libs used by dot must also be found.

I did the change the way I did it because it was the easiest and quickest way for me to achieve what I needed. I was not aware of the new syntax. I simply extended what was there (in particular it seems to me that any thread safety issues are already present and not just introduced by this PR?)

the patch by @giordano seems interesting, but I don't understand it right now -- e.g. shouldn't the "LIBPATH" and PATH content be merged with what is already there instead of overriding it? Or perhaps this is somehow done automatically? This may be obvious to you, but sadly not me :-/.

As it is, I don't have the time and energy to understand and figure all this out, then test it again etc. So if you want it to use that method I think it makes more sense if someone else (@giordano?) opens a PR with it. Feel free to close this PR then!

In the meantime, this patch allowed me to use PProf.jl and that in turn allowed me to tune some code substantially using the Memory Allocation Profiler. Thanks !!!

@NHDaly
Copy link
Member

NHDaly commented Oct 20, 2022

Does JuliaPackaging/Yggdrasil#5652 supersede this PR? Does PProf now work even if you don't have graphviz installed? 🎉 thanks Valentin, btw!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ship graphviz?
4 participants