Bug 2169892

Summary: blueprint-compiler not working in rawhide (f39)
Product: [Fedora] Fedora Reporter: Yaakov Selkowitz <yselkowi>
Component: blueprint-compilerAssignee: Lyes Saadi <fedora>
Status: ASSIGNED --- QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 39CC: 0xmrtt, dan, dhorak, fedora, gnome-sig
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 467765    

Description Yaakov Selkowitz 2023-02-15 00:22:19 UTC
Description of problem:

The rawhide (f39) build of whatip failed despite the f38 build succeeding:

https://kojipkgs.fedoraproject.org//work/tasks/4470/97484470/build.log

/usr/bin/blueprint-compiler batch-compile data/. ../data ../data/ui/shortcutsWindow.blp ../data/ui/headerbar.blp ../data/ui/lan_listbox_row.blp ../data/ui/listbox_with_empty_state.blp ../data/ui/net_iface_listbox_row.blp ../data/ui/net_port_listbox_row.blp
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/main.py", line 58, in main
    opts.func(opts)
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/main.py", line 106, in cmd_batch_compile
    xml, warnings = self._compile(data)
                    ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/main.py", line 141, in _compile
    if len(ast.errors):
           ^^^^^^^^^^
  File "/usr/lib64/python3.11/functools.py", line 1001, in __get__
    val = self.func(instance)
          ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/ast_utils.py", line 78, in errors
    return list(self._get_errors())
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/ast_utils.py", line 90, in _get_errors
    yield from child._get_errors()
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/ast_utils.py", line 90, in _get_errors
    yield from child._get_errors()
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/ast_utils.py", line 90, in _get_errors
    yield from child._get_errors()
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/ast_utils.py", line 83, in _get_errors
    validator(self)
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/ast_utils.py", line 149, in inner
    func(self)
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/language/gtkbuilder_child.py", line 53, in parent_can_have_child
    if gir_class.assignable_to(parent_type):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/gir.py", line 398, in assignable_to
    elif self.parent and self.parent.assignable_to(other):
         ^^^^^^^^^^^
  File "/usr/lib64/python3.11/functools.py", line 1001, in __get__
    val = self.func(instance)
          ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/gir.py", line 374, in parent
    return self.get_containing(Repository)._resolve_dir_entry(entry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/blueprintcompiler/gir.py", line 603, in _resolve_dir_entry
    return self.lookup_namespace(ns).get_type(dir_entry.DIR_ENTRY_NAME)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get_type'
Arguments: ['/usr/bin/blueprint-compiler', 'batch-compile', 'data/.', '../data', '../data/ui/shortcutsWindow.blp', '../data/ui/headerbar.blp', '../data/ui/lan_listbox_row.blp', '../data/ui/listbox_with_empty_state.blp', '../data/ui/net_iface_listbox_row.blp', '../data/ui/net_port_listbox_row.blp']
***** COMPILER BUG *****
The blueprint-compiler program has crashed. Please report the above stacktrace,
along with the input file(s) if possible, on GitLab:
https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/new?issue
ninja: build stopped: subcommand failed.


Version-Release number of selected component (if applicable):
blueprint-compiler-0.6.0-2.fc38 (in f39-build)

How reproducible:
Multiple times in rawhide, but not in stable branches

Comment 1 Lyes Saadi 2023-02-15 11:05:02 UTC
Hello !

It's an annoying bug that only happens on s390x builders. 0.6.0 wasn't even meant to be pushed, but I let the commit sit in rawhide by error, as I thought the bug was going to be fixed by upstream quickly, but they didn't. I ended up forgetting about it until today, and it was pushed with the mass rebuild.

I am aware this breaks the guideline about SCM needing to be ready to be functional at any time. So, I'll revert this with an epoch, unless you know of a way to instruct noarch packages to be built on any builder except s390x? (I asked about it on matrix fedora-devel, but my question wasn't answered...)

Since blueprint-compiler would still produce usable ui files for s390x, I'd prefer to keep this update, but just make sure Fedora wouldn't build it and its dependent packages on s390x.

Comment 2 Lyes Saadi 2023-02-15 11:11:27 UTC
(Just to be clear, if I end up having to revert the update, I'll still keep this issue open and try to look into the bug myself)

Comment 3 Lyes Saadi 2023-02-15 11:39:22 UTC
Ok, I think I got an idea where the bug could be (I think it's in this function, if you want to look further: https://gitlab.gnome.org/jwestman/blueprint-compiler/-/blob/main/blueprintcompiler/typelib.py#L229). Although, I am unfortunately not able to look at it right now, and it's s390x, an arch I know nothing about. So, I'll try to look at it tomorrow!

Comment 4 Yaakov Selkowitz 2023-02-15 16:17:25 UTC
The odd thing is that 0.6.0 includes a supposed big-endian fix at that spot: https://gitlab.gnome.org/jwestman/blueprint-compiler/-/merge_requests/76

Let's try to get some help here, blocking the s390x tracker.

Comment 5 Lyes Saadi 2023-02-23 21:48:10 UTC
blueprint-compiler 0.4.0 also fails on s390x, I somehow never bothered to check, and it was never built on s390x at the time by some kind of luck:
https://copr.fedorainfracloud.org/coprs/lyessaadi/blueprint-compiler-0.6.0/build/5561735/

And since it was noarch, it didn't get tested for every arch at review/import...

So, downgrading by increasing the Epoch is out of the question :/.

Anyway, while the bug is solved, there are two paths forward since it doesn't seem that we can have the infra build on everything except a specific arch for noarch ?

Options:
- Wait for a fix, blocking multiple apps and introducing surprise failures from time to time in updates.
- Turn blueprint-compiler to an arch-specific package, but would be kind of playing with guidelines? I think if this path forward is chosen, asking fesco for a guideline exception might be preferable.

Anyway, would like to hear about your opinion to move forward, as I am quite conflicted between both options, as we do not know how long this bug might last...

Comment 6 Yaakov Selkowitz 2023-03-01 03:27:50 UTC
Dan this looks like an endianness issue, any chance you could help?

Comment 7 Dan HorĂ¡k 2023-03-01 09:02:17 UTC
Hi Yaakov, how urgent is it? I could probably find some spare cycles in next weeks.

As I know nothing about blueprimnt-compiler, is there a minimal test case that exposes the failure on s390x?

Comment 8 Lyes Saadi 2023-03-01 11:40:54 UTC
Yes, there is. blueprint-compiler's builds on s390x also fail in the test section.

You can also find more about the bug here : https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/96

Comment 9 Fedora Release Engineering 2023-08-16 07:06:57 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 39 development cycle.
Changing version to 39.