Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 868702 - dev-python/Frozen-Flask-0.18-r1 fails tests
Summary: dev-python/Frozen-Flask-0.18-r1 fails tests
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Python Gentoo Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-09-06 10:30 UTC by Agostino Sarubbo
Modified: 2024-03-11 19:18 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log,108.18 KB, text/plain)
2022-09-06 10:30 UTC, Agostino Sarubbo
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Agostino Sarubbo gentoo-dev 2022-09-06 10:30:12 UTC
https://blogs.gentoo.org/ago/2020/07/04/gentoo-tinderbox/

Issue: dev-python/Frozen-Flask-0.18-r1 fails tests (lto).
Discovered on: amd64 (internal ref: lto_tinderbox)

NOTE:
This machine uses lto with CFLAGS=-flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing

Here is a bit of explanation:

-Werror=lto-type-mismatch:
User to find possible runtime issues in packages. It likely means the package is unsafe to build & use with LTO.
For projects using the same identifier but with different types across different files, they must be fixed to be consistent across the codebase.

-Werror=odr:
Used to find possible runtime issues in packages. These bugs are a problem anyway but may be even worse when combined with LTO. C++ code must comply with the One Definition Rule (ODR) - see https://en.cppreference.com/w/cpp/language/definition#One_Definition_Rule.

-Werror=strict-aliasing:
Used to find possible runtime issues in packages. These bugs are a problem anyway but may be even worse when combined with LTO.

Workarounds:
- If upstream is friendly and still active, file a bug upstream. For emulators, codecs, games, or multimedia packages, it may be worth just applying a workaround instead, as upstreams sometimes aren't receptive to these bugs (VALID FOR ALL).
- Use the new 'filter-lto' from flag-o-matic.eclass as it's likely to be unsafe with LTO (VALID FOR lto-type-mismatch - odr).
- Fix it yourself if interested, of course (VALID FOR ALL).
- Append-flags -fno-strict-aliasing (VALID FOR strict-aliasing).
- Use memcpy() but a union is sometimes suitable too (VALID FOR strict-aliasing).
- -fstrict-aliasing is implied by -O2, so this must be addressed in some form (VALID FOR strict-aliasing).

See also: https://marc.info/?l=gentoo-dev&m=165639574126280&w=2
Comment 1 Agostino Sarubbo gentoo-dev 2022-09-06 10:30:14 UTC
Created attachment 803386 [details]
build.log

build log and emerge --info
Comment 2 Agostino Sarubbo gentoo-dev 2022-09-06 10:30:17 UTC
Error(s) that match a know pattern:


AssertionError: Popped wrong app context. (<flask.ctx.AppContext object at 0x00007fe34e2f6138> instead of <flask.ctx.AppContext object at 0x00007fe34cbf4170>)
FAILED (errors=1)
RuntimeError: Working outside of request context.
Comment 3 Eli Schwartz 2024-03-11 19:18:31 UTC
Logs clearly indicate the problem has nothing to do with LTO. Indeed, the package does not compile any code to begin with.

======================================================================
ERROR: test_ignore_pattern (flask_frozen.tests.TestWithoutUrlForLog)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pypy3.9/site-packages/flask/ctx.py", line 399, in pop
    self.app.do_teardown_request(exc)
  File "/usr/lib/pypy3.9/site-packages/flask/app.py", line 2370, in do_teardown_request
    for name in chain(request.blueprints, (None,)):
  File "/usr/lib/pypy3.9/site-packages/werkzeug/local.py", line 316, in __get__
    obj = instance._get_current_object()  # type: ignore[misc]
  File "/usr/lib/pypy3.9/site-packages/werkzeug/local.py", line 513, in _get_current_object
    raise RuntimeError(unbound_message) from None
RuntimeError: Working outside of request context.

This typically means that you attempted to use functionality that needed
an active HTTP request. Consult the documentation on testing for
information about how to avoid this problem.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/tmp/portage/dev-python/Frozen-Flask-0.18-r1/work/Frozen-Flask-0.18/flask_frozen/tests.py", line 238, in test_ignore_pattern
    self._extra_files(ignore=['extr*'], removed=False)   # Match
  File "/var/tmp/portage/dev-python/Frozen-Flask-0.18-r1/work/Frozen-Flask-0.18/flask_frozen/tests.py", line 255, in _extra_files
    freezer.freeze()
  File "/var/tmp/portage/dev-python/Frozen-Flask-0.18-r1/work/Frozen-Flask-0.18/flask_frozen/__init__.py", line 205, in freeze
    return set(page.url for page in self.freeze_yield())
  File "/var/tmp/portage/dev-python/Frozen-Flask-0.18-r1/work/Frozen-Flask-0.18/flask_frozen/__init__.py", line 205, in <genexpr>
    return set(page.url for page in self.freeze_yield())
  File "/var/tmp/portage/dev-python/Frozen-Flask-0.18-r1/work/Frozen-Flask-0.18/flask_frozen/__init__.py", line 183, in freeze_yield
    for url, endpoint, last_modified in self._generate_all_urls():
  File "/var/tmp/portage/dev-python/Frozen-Flask-0.18-r1/work/Frozen-Flask-0.18/flask_frozen/__init__.py", line 274, in _generate_all_urls
    yield url, endpoint, last_modified
  File "/usr/lib/pypy3.9/site-packages/flask/ctx.py", line 432, in __exit__
    self.pop(exc_value)
  File "/usr/lib/pypy3.9/site-packages/flask/ctx.py", line 405, in pop
    ctx = _cv_request.get()
  File "/usr/lib/pypy3.9/_contextvars.py", line 130, in get
    raise LookupError
LookupError

----------------------------------------------------------------------
Ran 187 tests in 23.020s

FAILED (errors=1)
 * ERROR: dev-python/Frozen-Flask-0.18-r1::gentoo failed (test phase):
 *   Tests failed with pypy3