Fix usage of JLIB_log_levels to set log level deltas from command line#58
Open
rmelotte wants to merge 3 commits intoArtifexSoftware:masterfrom
Open
Fix usage of JLIB_log_levels to set log level deltas from command line#58rmelotte wants to merge 3 commits intoArtifexSoftware:masterfrom
rmelotte wants to merge 3 commits intoArtifexSoftware:masterfrom
Conversation
Building using JLIB_log_levels for filenames only currently fails.
For example, building with the following command:
make JLIB_log_levels=cpp.py=-5 python
... leads to the following trace:
File "/home/rme/Documents/mupdf/scripts/jlib.py", line 427, in log
level += log_levels_find( caller)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/rme/Documents/mupdf/scripts/jlib.py", line 350, in log_levels_find
if item_filename and not filename.startswith( item_filename):
This is because ffl is always a list (unpacked in case len==2), and
the filename is the first element of this list.
To fix it, only keep the first element of ffl when there is exactly
one.
Signed-off-by: Raphaël Mélotte <[email protected]>
Currently, setting a log level through the JLIB_log_levels environment
fails in this way:
File "/home/rme/Documents/mupdf/scripts/jlib.py", line 185, in __call__
ret += ' (+%s)' % time_duration( time.time() - self.t0, s_format='%.1f')
^^^^^^^^^^^^^
This is because at the time log_levels_add_env() is invoked,
time_duration is not defined yet.
To fix it, just move the invocation further down, after time_duration
is defined.
Signed-off-by: Raphaël Mélotte <[email protected]>
This fixes the following issue when log_levels_find() is used (for
example when setting a log level delta using JLIB_log_levels):
[...]
scripts/jlib.py:424:log(): level += log_levels_find( caller)
scripts/jlib.py:334:log_levels_find(): tb = traceback.extract_stack( None, 1+caller)
TypeError: unsupported operand type(s) for +: 'int' and 'FrameInfo'
Note that this fix get JLIB_log_levels working, but it might be
incorrect.
Signed-off-by: Raphaël Mélotte <[email protected]>
a568ae5 to
cc668dc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains multiple fixes to be able to make use of JLIB_log_levels from the command line.
This is useful for example to be able to get libclang's diagnostics on stdout based on the environment variable's content.
Please review the last commit with caution ("jlib: fix unsupported operand type when setting log level"), as I'm not sure it is entirely correct.
log_levels_find()can be called with a FrameInfo caller, but it wasn't clear to me whatextract_stack()'s limit should be in that case.Any thought?