Bug 1028665 - Unstable, unreleased glfw is packaged instead of a stable release
Unstable, unreleased glfw is packaged instead of a stable release
Status: CLOSED DUPLICATE of bug 966983
Product: Fedora
Classification: Fedora
Component: glfw (Show other bugs)
19
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: MERCIER Jonathan
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2013-11-09 03:49 EST by D. Stimits
Modified: 2014-03-10 17:22 EDT (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 966983
Environment:
Last Closed: 2014-03-10 17:22:25 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description D. Stimits 2013-11-09 03:49:50 EST
+++ This bug was initially created as a clone of Bug #966983 +++

glfw has had no stable upstream release of the 3.x branch, yet glfw 3.0 unstable from git is packaged in Fedora 18. What is the rationale for that? Why are we packaging unstable git release when glfw 2.7.x works just fine?

There are API changes between the 2 major releases, so on top of everything, this questionable decision breaks stable released code of other projects depending on glfw.

If there really is solid rationale for bringing glfw 3 into Fedora, I suggest packaging it separately as glfw3. It is very likely that people will depend on glfw2 for quite a long time.

Installed Packages
Name        : glfw
Arch        : x86_64
Version     : 3.0
Release     : 0.7.20120812gita9ed5b1.fc18
Size        : 122 k
Repo        : installed
From repo   : fedora
Summary     : A cross-platform multimedia library
URL         : http://www.glfw.org/index.html
License     : zlib
Description : GLFW is a free, Open Source, multi-platform library for OpenGL
            : application development that provides a powerful API for handling
            : operating system specific tasks such as opening an OpenGL window,
            : reading keyboard, mouse, joystick and time input, creating
            : threads, and more.

Available Packages
Name        : glfw
Arch        : i686
Version     : 3.0
Release     : 0.7.20120812gita9ed5b1.fc18
Size        : 50 k
Repo        : fedora/18/x86_64
Summary     : A cross-platform multimedia library
URL         : http://www.glfw.org/index.html
License     : zlib
Description : GLFW is a free, Open Source, multi-platform library for OpenGL
            : application development that provides a powerful API for handling
            : operating system specific tasks such as opening an OpenGL window,
            : reading keyboard, mouse, joystick and time input, creating
            : threads, and more.

--- Additional comment from MERCIER Jonathan on 2013-06-26 17:12:12 EDT ---

I agree glfw3 api change often. I provide glfw3 mainly because derelict need it. We could think a way to provide glfw 2.7 and 3

--- Additional comment from D. Stimits on 2013-11-06 16:51:57 EST ---

Please note that I am looking at Fedora 19, actual rpm:
glfw-3.0-0.18.20130517git673d5b5.fc19.x86_64.

It looks like the existing fedora version glfw3 package differs from the actual version 3 glfw (via glfw.org). Compilation errors imply that the existing header file also differs from the dynamic library,
/usr/lib64/libglfw.so.3.0

Specifically, header from the RPM version 3 provides
/usr/include/GL/glfw3.h,
...and within this, provides the following declaration:
typedef void (* GLFWkeyfun)(GLFWwindow*,int,int);

If the actual glfw3 source is downloaded from glfw.org for version 3.0.3:
http://www.glfw.org/download.html
http://sourceforge.net/projects/glfw/files/glfw/3.0.3/glfw-3.0.3.zip/download

...the glfw.org header glfw-3.0.3/include/GLFW/glfw3.h instead uses this declaration:
typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int);

This latter definition is supported as correct via the glfw.org documentation under the version 3 API:
http://www.glfw.org/docs/latest/group__input.html#ga592dd1919f8a1dc7576b13cdd8b7b695

Note that official source for version 2.7.9 (prior API) has the exact definition of GLFWkeyfun used in the fedora rpm for version 3...part of the glfw3 package in the fedora rpm incorrectly mixes version 2 API.

Compiler errors lead me to believe that fedora dynamic library /usr/lib64/libglfw.so.3.0, provided by glfw-3.0-0.18.20130517git673d5b5.fc19.x86_64, fails to match the /usr/include/GL/glfw3.h header (provided by the same RPM). Odds are high that the installed library follows version 3 API, causing mismatched declaration/implementation compile failure (I have not verified this difference for the actual libglfw.so.3.0, symbols are stripped).

This software is important, and is replacing GLUT in many OpenGL applications. For myself, I am developing on both nVidia x86 and nVidia Tegra embedded, and the SDK has moved away from GLUT and specifically replaced it with glfw. nVidia comments here:
https://developer.nvidia.com/content/introducing-new-opengl-sdk-samples
Comment 1 D. Stimits 2013-11-10 10:32:06 EST
Looks like this is fixed in Fedora 20. Fedora 19 would benefit from a back port.

Additional supporting information:

Fedora 19 SRPM:
  glfw-3.0-0.18.20130517git673d5b5.fc19.src.rpm

Fedora 19 git refers to glfw:
  http://www.mail-archive.com/package-announce@lists.fedoraproject.org/msg74548.html

Fedora 19 git repository:
  http://pkgs.fedoraproject.org/cgit/

glfw.org source:
  glfw-3.0.3.zip

INSTALLED:
  rpm -qva | egrep '(20130517git673d5b5)'
    glfw-debuginfo-3.0-0.18.20130517git673d5b5.fc19.x86_64
    glfw-devel-3.0-0.18.20130517git673d5b5.fc19.x86_64
    glfw-3.0-0.18.20130517git673d5b5.fc19.x86_64

Fedora 19 git provides:
  rpmbuild/SOURCES/glfw-20130517git673d5b5.tar.xz
  rpmbuild/SPECS/glfw.spec

THIS UNCOMPRESSES rpmbuild/SOURCES/glfw-20130517git673d5b5.tar.xz AS:
  glfw-20130517git673d5b5.tar

CURRENT Fedora 19 COMPILER:
  gcc version 4.8.2 20131017 (Red Hat 4.8.2-1) (GCC)

GLFW.ORG API DOCUMENTATION:
  http://www.glfw.org/docs/latest/group__input.html

  GLFWkeyfun OFFICIAL DOCUMENTATION:
  http://www.glfw.org/docs/latest/group__input.html#ga592dd1919f8a1dc7576b13cdd8b7b695

  GLFWmousebuttonfun OFFICIAL DOCUMENTATION:
  http://www.glfw.org/docs/latest/group__input.html#ga1e008c7a8751cea648c8f42cc91104cf

API DEVIATIONS:
  GLFWkeyfun OFFICIAL DECLARATION:  typedef void(* GLFWkeyfun)(GLFWwindow *, int, int, int, int)
  GLFWkeyfun FEDORA 19 DECLARATION: typedef void (* GLFWkeyfun)(GLFWwindow*,int,int)

  GLFWmousebuttonfun OFFICIAL DECLARATION:  typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int)
  GLFWmousebuttonfun FEDORA 19 DECLARATION: typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int)

Fedora 19 BUG REPORT:
  https://bugzilla.redhat.com/show_bug.cgi?id=1028665

Fedora 20 Devel SRPM Link:
  http://mirrors.cat.pdx.edu/fedora/linux/development/20/source/SRPMS/g/glfw-3.0-0.27.20130807git735bc2d.fc20.src.rpm

Fedora 20 Devel Provides Header:
  rpmbuild/SOURCES/glfw-20130807git735bc2d/include/GLFW/glfw3.h

Fedora 20 Devel Header Correctly Declares:
  typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int)
  typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int)
Comment 2 MERCIER Jonathan 2014-03-10 17:22:25 EDT

*** This bug has been marked as a duplicate of bug 966983 ***

Note You need to log in before you can comment on or make changes to this bug.