Commit Graph

2037 Commits

Author SHA1 Message Date
Jehan cb1f01a42b tools: update the build-only tool compute-svg-viewbox.
It now uses rsvg_handle_get_geometry_for_layer() instead of
rsvg_handle_get_(position|dimensions)_sub() which have been deprecated
in favor of the new function which returns accurate (double) positioning
and size.

Back when I first made this build tool, librsvg had several blocking
bugs to make icon extraction work properly. This seems to improve
nicely.

Nevertheless I still don't build this tool because after testing, more
bugs remain and icon extraction is still not right. Just updating the
code to undeprecate it but leave the build commented out for now. ;-(

See librsvg#134, librsvg#128 and librsvg#250 for bug reports following
these issues.
2020-08-28 20:25:40 +02:00
Ell 76f9e5feaf tools: add performance-log-progressive-coalesce.py; use in performance-log-viewer
Add a new performance-log-progressive-coalesce.py tool, which
coalesces partial address maps in progressive performacne logs into
a single global address map, suitable for processing by the rest of
the tools.

Use the new tool as part of the pipeline in performance-log-viewer.
2020-07-30 01:04:40 +03:00
Ell e5fe1ef152 tools: add performance-log-close-tags.py, use in performance-log-viewer
Add a new performance-log-close-tags.py tool, which closes unclosed
tags in incomplete performance logs, allowing the rest of the
perofmance-log tools to process them.  This is necessary for
unfinished progressive logs.

Use the new tool as part of the pipeline in performance-log-viewer.
2020-07-30 01:03:38 +03:00
Ell 84ff130e18 tools: in performance-log-viewer.py, handle markers with > INT_MAX timestamps 2020-03-06 12:37:06 +02:00
lillolollo bed5fe37d8 tools, fix implicit declaration of function atoi warning
(cherry picked from commit 1ca3d99fbc)
2019-12-11 21:59:11 +01:00
luzpaz 44d10e458c Fix various typos
Found via `codespell` (v1.17.0.dev0)
2019-09-21 17:10:46 +00:00
Jehan 8fa7b5bc74 tools: clean up patch from merge request !36.
Commit 283ec1da0f previously pushed had some coding style bugs, which
unfortunately couldn't be fixed before pushing because the platform
doesn't allow it and the original contributor is not available lately.
Let's fix these.
2019-09-16 09:53:24 +02:00
Sergio Jiménez Herena 283ec1da0f issue #2221: gimptool should install plug-ins into subfolders 2019-09-16 07:26:56 +00:00
Jehan 8e74a22ce7 tools: improve the install-* meson targets.
Continue installing the list of files to install even if a failure
occured. In particular, I encountered a problem where script-fu was
failing to install because the installed binary was being executed (and
its memory probably mmap-ed). Hence the copy failed with:

> [Errno 26] Text file busy: '/my/prefix/lib64/gimp/2.99/plug-ins/script-fu/script-fu'

Yet trying to reinstall plug-ins while GIMP is being run, hence
script-fu is being executed, is a very common development trick (for me
at least). So instead, when such an error occurs, I simply save it and
output all the exceptions in the end (where these warnings are properly
visible), instead of failing everything.

Of course, ideally the subtarget should not even try to install
script-fu as it is unchanged. This is why I changed shutil.copy() by
shutil.copy2() to install metadata, which include last access timestamp.
Maybe this could be used to decide whether the installed file is already
the last one, thus not retry, though I am actually unsure if this is
enough (on the other hand, the ultimate check of bit-to-bit comparison
may obviously be too much/slow which is counter-productive), which is
why I am not doing this change right now.
2019-09-15 00:00:35 +02:00
Ell f0a8a5b67b tools: add mnemonic-clashes to EXTRA_DIST 2019-09-12 18:16:37 +03:00
Ell a2a7fc993c tools: add mnemonic-clashes tool
Add a new mnemonic-clashes tool, which checks for mnemonic clashes
in menus.  This tool can be invoked directly from the shell.  It
takes an optional parameter which limits the search to a specific
type of menus, according to their xml tag (in particular, "menu"
for regular menus, and "popup" for popup menus).
2019-09-12 17:56:45 +03:00
Jehan 3bfbf9972a tools: fix install-* meson targets.
We should not rely on the current working directory, as it looks like
meson sets it to be the source directory (even when actually in the
build dir) when running custom target (so it fails).

Instead meson explicitly sets MESON_SOURCE_ROOT and MESON_BUILD_ROOT
environment variables for us. We should use these. This should work in
every cases (whether calling from the source or build dir).

Also removing the special-casing for a _build/ directory. This updated
version is generic and won't assume that you used some generic naming or
direct subdir under the source (even if many people might use this path
and name; I, for one, certainly don't!).

See: https://mesonbuild.com/Run-targets.html
2019-09-11 18:43:34 +02:00
Félix Piédallu db8922738f Add meson_install_subdir script 2019-09-11 16:42:04 +02:00
Félix Piédallu 65eff6f150 Meson port. 2019-09-11 16:42:04 +02:00
Jehan 863c0849c8 desktop, plug-ins, tools: update various .gitignore. 2019-08-07 19:20:52 +02:00
Jehan 94b7348777 tools: port defcheck.py to Python 3.
This build-only file could theoretically still run with Python 2, but
since now we use Python 3, better not our build to require both Python 2
and 3.
2019-07-28 23:19:05 +02:00
Michael Natterer a9b36245c9 tools: fix windows file handling in gimp-test-clipboard.c
Use g_open() for proper filename encoding and _O_BINARY to avoid line
ending conversions.
2019-06-11 19:32:28 +02:00
Ell b1077a903e tools: in performance-log-viewer.py, fix deprecation warnings 2019-05-01 15:34:42 -04:00
Salamandar fc657184a0 Undo some (unnecessary) changes. 2019-01-25 19:08:28 +00:00
Félix Piédallu fc8303dd0a (source modifs) Fix: Rename macros as it conflicts with Mingw headers.
* DATADIR -> GIMPDATADIR
* SYSCONFDIR -> GIMPSYSCONFDIR
* DATADIR -> SYSDATADIR (tools/)
2019-01-25 19:08:28 +00:00
Ell dafb63fd66 tools: in performance-log-viewer.py, add markers view
Add a "markers" page to the performance-log viewer, which lists
the event markers contained in the log, and allows navigating
between them.

Update docs accordingly.
2019-01-23 16:33:25 -05:00
Ell 5a6548a4b6 tools: in performance-log-viewer.py, some cleanup 2019-01-23 16:33:24 -05:00
Ell b74c33db5c tools: in performance-log-viewer.py, allow inverting selection
In the perofmance-log viewer, add header-bar buttons to clear and
invert the selection, and allow inverting the selection by ctrl-
right-clicking on the sample-selection area.

Update the docs.
2019-01-16 03:58:44 -05:00
Ell f246a0197b tools: in performane-log-viewer.py, change sample-selection icon 2019-01-16 03:58:44 -05:00
Michael Natterer 24233bc4ec tools: fix perl warning about unescaped left brace in gimp-mkenums
Simply use "\{" instead of "{" for matching a literal "{".

(cherry picked from commit 4a294f6d6a)
2019-01-03 15:22:43 +01:00
Ell 84227fbfec tools: in performance-log-viewer.py, fix "function()" predicate ...
... when not specifying a thread-ID
2018-11-10 02:52:32 -05:00
Ell c61138f8f0 tools: add performance-log-coalesce.py to EXTRA_DIST 2018-11-09 02:23:13 -05:00
Ell 0b2d41635a tools: a few improvements in performance-log-viewer.py
In sample-search predicates, remove the "exclusive" parameter of
the "function()" function, and replace it with optional "id" and
"state" parameters, which limit the match to the call-stacks of
matching threads, as per the "thread()" function.

Sort the backtrace thread-list by thread ID.
2018-11-07 14:26:16 -05:00
Ell fb95d3b86e tools: in performance-log-expand.py, preserve threads with empty stacks
... which can be present in logs since last commit.
2018-11-07 14:26:16 -05:00
Ell 21b36cd864 tools: in performance-log-viewer.py, show variable descriptions
In the preformance-log viewer, show instrumentation-variable
descriptions as tooltips for the corresponding treeview rows.
2018-11-03 04:17:49 -04:00
Ell 4664fa73fb tools: in performance-log-viewer.py, allow sorting profile by function name
In the performance-log viewer's profile view, allow sorting the
call-graph tree-views by function name, in addition to the
inclusive/exclusive frequencies.
2018-10-21 03:36:48 -04:00
Ell 27dc9b815d tools: in performance-log-viewer.py, fix percentage cell renderer 2018-10-20 10:56:36 -04:00
luz.paz ac282f2045 Misc. typos
Found via `codespell`
2018-10-19 15:30:27 +00:00
Ell 26ea334825 tools: in performance-log-viewer.py, visualize percentage in profile viewer
In the performance-log viewer's profile view, displasy in-line bar-
chart-like visualization of function and source-line sample
percentages, as part of the corresponding tree-view cells.
2018-10-19 10:10:57 -04:00
Ell 43b492ff83 tools: fix performance-log viewer profile thread-filter
In performance-log-viewer.py, fix thread-state toggling in the
profile-view thread-filter popover, when not all threads are
included in the current selection.
2018-10-11 08:23:16 -04:00
Ell cb51ea981a tools: add performance-log-coalesce.py; use in performance-log-viewer
Add a new performance-log-coalesce.py tool, which groups together
performance-log address-map entries belonging to the same function
into a single symbol, by filling-in missing base symbol addresses.
The addresses are grouped such that each set of addresses
corresponding to a symbol of the same name, in the same source
file, are given the same (unique, but arbitrary) base address.
See the previous commit for why this is necessary.

This should work fine in most cases, however, for logs produced on
Windows, it can over-coalesce addresses belonging to different C++
lambda-functions in the same source file, since they all seem to be
given the same _FUN symbol name.

Use the new tool as part of the pipeline in performance-log-viewer.
2018-10-10 15:32:14 -04:00
Ell 88438c5055 tools: in performance-log-viewer.py, add annotated source view
Add an annotated source view to the performance-log viewer's
profile view.  When selecting the [Self] entry of a function's
profile, for which source information is available and whose source
is found locally, a new column opens, showing the function's
source, annotated with sample statistics.  Header-bar buttons allow
navigation through the annotated lines, selection of all the
samples corresponding to a given line, and opening the text editor
at the current line.
2018-09-30 09:01:12 -04:00
Ell b672f20075 tools: in performance-log-view.py, don't change call-graph path ...
... when selecting a function's samples

Since we now preserve the call-graph path across state changes,
there's no need to explictly set the path after selecting a
function's samples in the profile view.
2018-09-30 09:01:12 -04:00
Ell 97498017c0 tools: in performance-log-viewer.py, cache source file lookups
In the performance-log viewer, cache the results of source-file
lookups, to speed up future lookups.
2018-09-30 05:36:49 -04:00
Ell 0f38709259 tools: in performance-log-viewer.py, allow viewing source files ...
... in backtraces

In the performance-log viewer's backtrace viewer, show a document
icon next to stack frames with source-location information, whose
source file is found locally.  Clicking the icon opens the source
file in a text editor at the relevant line.

Two environment variables control this feature:

  - PERFORMANCE_LOG_VIEWER_PATH is a list of colon-separated
    directories in which to look for source files.  If this
    variable is undefined, the current directory is used.

  - PERFORMANCE_LOG_VIEWER_EDITOR is the command to use to launch
    the text editor, for editing a specific file at a specific
    line.  The special strings "{file}" and "{line}" are replaced
    with the filename and line-number, respectively.  If this
    variable is undefined, "xdg-open {file}" is used.
2018-09-30 05:10:47 -04:00
Ell 46e5e4d478 tools: in performance-log-viewer.py, handle infinities in sample graph
Don't take infinite values into account when calculating the
vertical scale of sample graphs, and rather display infinite values
as dashed lines at the top of the graph.
2018-09-29 15:43:46 -04:00
Ell fca05065e1 tools: in performance-log-viewer.py, retain call-graph path
In the performance-log viewer's profile view, retain the current
call-graph path across state changes.
2018-09-29 00:16:20 -04:00
Ell 6ad3dbdb17 app: in performance-log-viewer.py, add undo support
Add undo functionality to the performance-log viewer, which allows
undoing/redoing changes to the sample selection, and the call-graph
state.
2018-09-28 16:30:57 -04:00
Ell d33fb0e7b8 tools: various improvements in gimp-performance-log-viewer.py
Fix int-ratio variable formatting when the input is NaN, which can
happen when calculating the standard deviation, if all the values
are infinite.

Fix keyboard sample-range selection.

Deselect all samples when right-clicking a sample graph.
2018-09-27 01:13:04 -04:00
Ell 51d9934942 tools: in performance-log-viewer.py, right-align backtrace frame number column 2018-09-23 01:38:09 -04:00
Ell 407e9f36ca tools: in performance-log-viewer.py, set thread filter search column 2018-09-23 01:17:52 -04:00
Ell 3f630378b0 tools: in performance-log-viewer.py, add thread filter to profile
In the performance-log viewer, add an option to filter which
threads, and which states of each thread, are included in the
profile.  By default, all threads in the RUNNING state are
included.
2018-09-23 00:53:20 -04:00
Ell a7afbe13ec tools: in performance-log-viewer.py, defer UI updates util needed
In the performance-log viewer, defer updates to the various UI
elements when the selection changes until they're actually shown.
This improves responsiveness when changing the selection.
2018-09-23 00:53:20 -04:00
Ell 2c8e3f8e0a tools: only show object/source basename in performance-log backtraces
... to reduce their verbosity.  Show the full path in the
corresponding tooltip.
2018-09-21 09:29:10 -04:00
Ell c7a4eb4602 tools: replace performance-log viewer call-graph direction icons
Use the less-ambiguous, if just as clumsy,
"format-indent-more/less" icons, to stand for the
caller -> callee, and callee -> caller, directions, respectively.
2018-09-21 07:45:14 -04:00