Closed Bug 1027000 Opened 8 years ago Closed 8 years ago

Using system pixman requires 0.25.2

Categories

(Firefox Build System :: General, defect)

All
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
mozilla33

People

(Reporter: glandium, Assigned: glandium)

References

Details

Attachments

(2 files)

Bug 845874 added a use of pixman_region32_clear, which, according to http://upstream-tracker.org was added in 0.25.2. Configure checks pixman is >= 0.19.2.

This may or may not be fine, depending what systems we consider the GTK3 builds should aim to support support. Pixman 0.26.0, the first stable release after 0.25.2, was released in may 2012.
Flags: needinfo?(karlt)
Flags: needinfo?(jmuizelaar)
Initial data point: the first Debian release with gtk3, Wheezy, has pixman 0.26.
We could always do something like this to avoid the dependency
Flags: needinfo?(jmuizelaar)
Other data points, from scraping FTPs and release notes:
- The first Fedora with Gtk+3 looks like it was Fedora 16 (nov 2011), and it had pixman 0.22. Fedora 17 (may 2012) had pixman 0.24. Fedora 18 (jan 2013) came with pixman 0.26.
- The first Redhat release with Gtk+3 is RHEL7, which just came out. I didn't look up what version of pixman it has, but if it has something older than 0.26, then Redhat has serious problems in how they work.
- The first OpenSuSE release with Gtk+3 I found was 11.4 (nov 2012) and it had pixman 0.20. But I guess older 11.x releases had something similar. 12.1 (may 2013) had pixman 0.22, 12.2 (jan 2014) had 0.24, 12.3 (sep 2014) will have 0.28.

Looks like suse is the drag.
Dates for openSuse are off, they are:
11.4 -> mar 2011
12.1 -> nov 2011
12.2 -> jul 2012
12.3 -> mar 2013
Ah, the previous times I was giving for opensuse are their EOL.
RHEL7/Centos7 have 0.32.
Well, the test slaves don't have a recent enough pixman, that more or less settles it:
https://tbpl.mozilla.org/php/getParsedLog.php?id=41976124&tree=Try
Blocks: try-gtk3
Comment on attachment 8442129 [details] [diff] [review]
Avoid using region_clear()

Review of attachment 8442129 [details] [diff] [review]:
-----------------------------------------------------------------

::: gfx/src/nsRegion.h
@@ +42,5 @@
>  
>  class nsRegion
>  {
> +  static inline void
> +  clear_region_workaround(pixman_region32_t *region)

Could call that pixman_region32_clear and make the function itself #ifdef MOZ_TREE_PIXMAN.
(In reply to Mike Hommey [:glandium] from comment #7)
> Well, the test slaves don't have a recent enough pixman, that more or less
> settles it:
> https://tbpl.mozilla.org/php/getParsedLog.php?id=41976124&tree=Try

Ubuntu 12.04 LTS is what we have on those machines, and that comes with 0.24, although precise-updates has 0.30. 13.04 has 0.28.
I'm sceptical about the quality of early GTK+3 libraries, so the main reason for the workaround would be to build on our (old) build machines.

_fini and _init should work fine, yes.
Flags: needinfo?(karlt)
(In reply to Mike Hommey [:glandium] from comment #8)
> Comment on attachment 8442129 [details] [diff] [review]
> Avoid using region_clear()
> 
> Review of attachment 8442129 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: gfx/src/nsRegion.h
> @@ +42,5 @@
> >  
> >  class nsRegion
> >  {
> > +  static inline void
> > +  clear_region_workaround(pixman_region32_t *region)
> 
> Could call that pixman_region32_clear and make the function itself #ifdef
> MOZ_TREE_PIXMAN.

Wouldn't that break if you were building against a recent pixman?
(In reply to Jeff Muizelaar [:jrmuizel] from comment #11)
> Wouldn't that break if you were building against a recent pixman?

That function would be a static member of nsRegion, it wouldn't conflict with pixman's definition.
Assignee: nobody → mh+mozilla
Status: NEW → ASSIGNED
Comment on attachment 8442494 [details] [diff] [review]
Allow binary compatibility with libpixman versions between 0.19.2 and 0.25.2 when building against system libpixman

Review of attachment 8442494 [details] [diff] [review]:
-----------------------------------------------------------------

::: gfx/src/nsRegion.h
@@ +261,5 @@
>    nsCString ToString() const;
>  private:
>    pixman_region32_t mImpl;
>  
> +#ifndef MOZ_TREE_PIXMAN

Add a comment like:

// This is needed for versions of pixman older than 0.25.2
Attachment #8442494 - Flags: review?(jmuizelaar) → review+
https://hg.mozilla.org/mozilla-central/rev/c55157c6286c
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla33
Blocks: 1034064
No longer blocks: 1034064
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.