Bug 90981

Summary: Building spice-vdagent fails on RHEL6 with build warnings
Product: Spice Reporter: Christophe Fergeau <teuf>
Component: unix agentAssignee: Spice Bug List <spice-bugs>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Christophe Fergeau 2015-06-15 13:10:24 UTC
Moved from downstream private bug:



Description of problem:

Building spice-vdagent fails on RHEL6. 

<snip>
        spice-vdagent 0.15.0
        ====================

        prefix:                   /usr
        c compiler:               gcc

        session-info:             console-kit
        pciaccess:                yes
        static uinput:            no
        vdagentd pie + relro:     yes

        install RH initscript:    yes
        install systemd service:  no

        Now type 'make' to build spice-vdagent


Running 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/share/pkgconfig:/usr/lib:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/lib/pkg-config: make'
  CC     src/src_spice_vdagent-vdagent.o
  CC     src/src_spice_vdagent-vdagent-x11.o
  CC     src/src_spice_vdagent-vdagent-x11-randr.o
cc1: warnings being treated as errors
src/vdagent-x11-randr.c: In function ‘vdagent_x11_randr_handle_event’:
src/vdagent-x11-randr.c:499: error: dereferencing pointer ‘sce’ does break strict-aliasing rules
src/vdagent-x11-randr.c:499: error: dereferencing pointer ‘sce’ does break strict-aliasing rules
src/vdagent-x11-randr.c:498: note: initialized from here
make: *** [src/src_spice_vdagent-vdagent-x11-randr.o] Error 1
Return code: 512! make failed! Exiting!
</snip>

Version-Release number of selected component (if applicable):
latest upstream spice-vdagent

How reproducible:
100%

Steps to Reproduce:
1. Get the latest upstream git repo
2. Run 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/share/pkgconfig:/usr/lib:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/lib/pkg-config: /tmp/vd_agent/autogen.sh --prefix="/usr" --libdir=/usr/lib64 --sysconfdir=/etc'
3. Run 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/share/pkgconfig:/usr/lib:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/lib/pkg-config: make'

Actual results:
Building fails

Expected results:
Building vdagent passes

Additional info:

--- Additional comment from Marc-Andre Lureau on 2015-04-15 11:12:58 EDT ---

The build passes on f21+&rhel7, so I suppose this is a declaration issue in Xrandr headers. moving to libXrandr.

(fwiw, we considered XORG_CWARNFLAGS, for no-strict-aliasing, but that macro is now explicitely deprecated for usage of that flag)

--- Additional comment from Christophe Fergeau on 2015-04-15 11:26:42 EDT ---

I believe
XRRScreenChangeNotifyEvent *sce = (XRRScreenChangeNotifyEvent *) &event;
really is breaking strict aliasing rules. I don't know what is the proper way of avoiding this though, save of using an 
union {
    XRRScreenChangeNotifyEvent rr_event; 
    XEvent base_event;
};
or -fno-strict-aliasing, which is what the RHEL6 package is doing.

Upstream compilation failures do not belong in here though.

--- Additional comment from RHEL Product and Program Management on 2015-04-15 11:30:48 EDT ---

Since this bug report was entered in bugzilla, the release flag has been
set to ? to ensure that it is properly evaluated for this release.

--- Additional comment from Benjamin Tissoires on 2015-05-26 14:40:52 EDT ---

It looks like the problem is not a libXrandr one, but a spice one. Re-assigning.
Comment 1 Christophe Fergeau 2015-06-15 14:32:24 UTC
http://lists.freedesktop.org/archives/spice-devel/2015-June/020334.html should avoid this.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.