GNU bug report logs -
#27235
[PATCH] gnu: Add openscenegraph.
Previous Next
Reported by: manolis837 <at> gmail.com
Date: Sun, 4 Jun 2017 14:59:03 UTC
Severity: normal
Tags: patch
Done: Alex Kost <alezost <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 27235 in the body.
You can then email your comments to 27235 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Sun, 04 Jun 2017 14:59:03 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
manolis837 <at> gmail.com
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Sun, 04 Jun 2017 14:59:03 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Manolis Ragkousis <manolis837 <at> gmail.com>
* gnu/packages/graphics.scm (openscenegraph): New variable.
* gnu/packages/patches/openscenegraph-ffmpeg3.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
---
gnu/local.mk | 1 +
gnu/packages/graphics.scm | 42 ++++++
gnu/packages/patches/openscenegraph-ffmpeg3.patch | 156 ++++++++++++++++++++++
3 files changed, 199 insertions(+)
create mode 100644 gnu/packages/patches/openscenegraph-ffmpeg3.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 389f45bfa..bd9761a5b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -862,6 +862,7 @@ dist_patch_DATA = \
%D%/packages/patches/ocaml-findlib-make-install.patch \
%D%/packages/patches/omake-fix-non-determinism.patch \
%D%/packages/patches/ola-readdir-r.patch \
+ %D%/packages/patches/openscenegraph-ffmpeg3.patch \
%D%/packages/patches/openexr-missing-samples.patch \
%D%/packages/patches/openjpeg-CVE-2016-9850-CVE-2016-9851.patch \
%D%/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch \
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index cc1497cb8..449ec46d4 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado <at> elephly.net>
;;; Copyright © 2016 Efraim Flashner <efraim <at> flashner.co.il>
;;; Copyright © 2016 Andreas Enge <andreas <at> enge.fr>
+;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837 <at> gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -54,6 +55,7 @@
#:use-module (gnu packages image)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages photo)
+ #:use-module (gnu packages pth)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
@@ -318,6 +320,46 @@ visual effects work for film.")
(home-page "http://www.openimageio.org")
(license license:bsd-3)))
+(define-public openscenegraph
+ (package
+ (name "openscenegraph")
+ (version "3.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://trac.openscenegraph.org/downloads/developer_releases/"
+ "OpenSceneGraph-" version ".zip"))
+ (sha256
+ (base32
+ "03h4wfqqk7rf3mpz0sa99gy715cwpala7964z2npd8jxfn27swjw"))
+ (patches (search-patches "openscenegraph-ffmpeg3.patch"))
+ (file-name (string-append name "-" version ".zip"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ;; No test target available.
+ #:configure-flags
+ (list (string-append "-DCMAKE_INSTALL_RPATH="
+ (assoc-ref %outputs "out") "/lib:"
+ (assoc-ref %outputs "out") "/lib64"))))
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (inputs
+ `(("giflib", giflib)
+ ("jasper", jasper)
+ ("librsvg", librsvg)
+ ("pth", pth)
+ ("qtbase", qtbase)
+ ("ffmpeg", ffmpeg)
+ ("mesa", mesa)))
+ (synopsis "High performance real-time graphics toolkit")
+ (description
+ "The OpenSceneGraph is an open source high performance 3D graphics toolkit,
+used by application developers in fields such as visual simulation, games,
+virtual reality, scientific visualization and modelling.")
+ (home-page "http://www.openscenegraph.org")
+ ;; The 'LICENSE' file explains that the source is licensed under
+ ;; LGPL 2.1, but with 4 exceptions. This version is called OSGPL.
+ (license license:lgpl2.1)))
+
(define-public rapicorn
(package
(name "rapicorn")
diff --git a/gnu/packages/patches/openscenegraph-ffmpeg3.patch b/gnu/packages/patches/openscenegraph-ffmpeg3.patch
new file mode 100644
index 000000000..02c04a558
--- /dev/null
+++ b/gnu/packages/patches/openscenegraph-ffmpeg3.patch
@@ -0,0 +1,156 @@
+Description: Replace deprecated FFmpeg API
+Author: Andreas Cadhalpun <Andreas.Cadhalpun <at> googlemail.com>
+See <http://forum.openscenegraph.org/viewtopic.php?t=15832>.
+--- a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp
++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp
+@@ -71,7 +71,7 @@ void FFmpegDecoderVideo::open(AVStream *
+ findAspectRatio();
+
+ // Find out whether we support Alpha channel
+- m_alpha_channel = (m_context->pix_fmt == PIX_FMT_YUVA420P);
++ m_alpha_channel = (m_context->pix_fmt == AV_PIX_FMT_YUVA420P);
+
+ // Find out the framerate
+ m_frame_rate = av_q2d(stream->avg_frame_rate);
+@@ -91,20 +91,19 @@ void FFmpegDecoderVideo::open(AVStream *
+ throw std::runtime_error("avcodec_open() failed");
+
+ // Allocate video frame
+- m_frame.reset(avcodec_alloc_frame());
++ m_frame.reset(av_frame_alloc());
+
+ // Allocate converted RGB frame
+- m_frame_rgba.reset(avcodec_alloc_frame());
+- m_buffer_rgba[0].resize(avpicture_get_size(PIX_FMT_RGB24, width(), height()));
++ m_frame_rgba.reset(av_frame_alloc());
++ m_buffer_rgba[0].resize(avpicture_get_size(AV_PIX_FMT_RGB24, width(), height()));
+ m_buffer_rgba[1].resize(m_buffer_rgba[0].size());
+
+ // Assign appropriate parts of the buffer to image planes in m_frame_rgba
+- avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], PIX_FMT_RGB24, width(), height());
++ avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], AV_PIX_FMT_RGB24, width(), height());
+
+ // Override get_buffer()/release_buffer() from codec context in order to retrieve the PTS of each frame.
+ m_context->opaque = this;
+- m_context->get_buffer = getBuffer;
+- m_context->release_buffer = releaseBuffer;
++ m_context->get_buffer2 = getBuffer;
+ }
+
+
+@@ -263,8 +262,8 @@ int FFmpegDecoderVideo::convert(AVPictur
+ #ifdef USE_SWSCALE
+ if (m_swscale_ctx==0)
+ {
+- m_swscale_ctx = sws_getContext(src_width, src_height, (PixelFormat) src_pix_fmt,
+- src_width, src_height, (PixelFormat) dst_pix_fmt,
++ m_swscale_ctx = sws_getContext(src_width, src_height, (AVPixelFormat) src_pix_fmt,
++ src_width, src_height, (AVPixelFormat) dst_pix_fmt,
+ /*SWS_BILINEAR*/ SWS_BICUBIC, NULL, NULL, NULL);
+ }
+
+@@ -311,14 +310,14 @@ void FFmpegDecoderVideo::publishFrame(co
+ AVPicture * const dst = (AVPicture *) m_frame_rgba.get();
+
+ // Assign appropriate parts of the buffer to image planes in m_frame_rgba
+- avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], PIX_FMT_RGB24, width(), height());
++ avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], AV_PIX_FMT_RGB24, width(), height());
+
+ // Convert YUVA420p (i.e. YUV420p plus alpha channel) using our own routine
+
+- if (m_context->pix_fmt == PIX_FMT_YUVA420P)
++ if (m_context->pix_fmt == AV_PIX_FMT_YUVA420P)
+ yuva420pToRgba(dst, src, width(), height());
+ else
+- convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width(), height());
++ convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width(), height());
+
+ // Wait 'delay' seconds before publishing the picture.
+ int i_delay = static_cast<int>(delay * 1000000 + 0.5);
+@@ -345,7 +344,7 @@ void FFmpegDecoderVideo::publishFrame(co
+
+ void FFmpegDecoderVideo::yuva420pToRgba(AVPicture * const dst, AVPicture * const src, int width, int height)
+ {
+- convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width, height);
++ convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width, height);
+
+ const size_t bpp = 4;
+
+@@ -363,31 +362,28 @@ void FFmpegDecoderVideo::yuva420pToRgba(
+ }
+ }
+
+-
+-
+-int FFmpegDecoderVideo::getBuffer(AVCodecContext * const context, AVFrame * const picture)
++int FFmpegDecoderVideo::getBuffer(AVCodecContext * const context, AVFrame * const picture, int flags)
+ {
++ AVBufferRef *ref;
+ const FFmpegDecoderVideo * const this_ = reinterpret_cast<const FFmpegDecoderVideo*>(context->opaque);
+
+- const int result = avcodec_default_get_buffer(context, picture);
++ const int result = avcodec_default_get_buffer2(context, picture, flags);
+ int64_t * p_pts = reinterpret_cast<int64_t*>( av_malloc(sizeof(int64_t)) );
+
+ *p_pts = this_->m_packet_pts;
+ picture->opaque = p_pts;
+
++ ref = av_buffer_create((uint8_t *)picture->opaque, sizeof(int64_t), FFmpegDecoderVideo::freeBuffer, picture->buf[0], flags);
++ picture->buf[0] = ref;
++
+ return result;
+ }
+
+-
+-
+-void FFmpegDecoderVideo::releaseBuffer(AVCodecContext * const context, AVFrame * const picture)
++void FFmpegDecoderVideo::freeBuffer(void *opaque, uint8_t *data)
+ {
+- if (picture != 0)
+- av_freep(&picture->opaque);
+-
+- avcodec_default_release_buffer(context, picture);
++ AVBufferRef *ref = (AVBufferRef *)opaque;
++ av_buffer_unref(&ref);
++ av_free(data);
+ }
+
+-
+-
+ } // namespace osgFFmpeg
+--- a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp
++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp
+@@ -94,8 +94,8 @@ private:
+ int src_pix_fmt, int src_width, int src_height);
+
+
+- static int getBuffer(AVCodecContext * context, AVFrame * picture);
+- static void releaseBuffer(AVCodecContext * context, AVFrame * picture);
++ static int getBuffer(AVCodecContext * context, AVFrame * picture, int flags);
++ static void freeBuffer(void * opaque, uint8_t *data);
+
+ PacketQueue & m_packets;
+ FFmpegClocks & m_clocks;
+--- a/src/osgPlugins/ffmpeg/FFmpegParameters.cpp
++++ b/src/osgPlugins/ffmpeg/FFmpegParameters.cpp
+@@ -19,7 +19,7 @@ extern "C"
+ #include <libavutil/pixdesc.h>
+ }
+
+-inline PixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); }
++inline AVPixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); }
+
+
+ namespace osgFFmpeg {
+--- a/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp 2016-02-18 21:25:39.627923629 +0000
++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp 2016-02-18 21:26:17.071140100 +0000
+@@ -227,8 +227,7 @@
+ if (avcodec_open2(m_context, p_codec, NULL) < 0)
+ throw std::runtime_error("avcodec_open() failed");
+
+- m_context->get_buffer = avcodec_default_get_buffer;
+- m_context->release_buffer = avcodec_default_release_buffer;
++ m_context->get_buffer2 = avcodec_default_get_buffer2;
+
+ }
+
--
2.13.0
Information forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Sun, 04 Jun 2017 17:46:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 27235 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Sun, Jun 04, 2017 at 05:57:28PM +0300, manolis837 <at> gmail.com wrote:
> From: Manolis Ragkousis <manolis837 <at> gmail.com>
>
> * gnu/packages/graphics.scm (openscenegraph): New variable.
> * gnu/packages/patches/openscenegraph-ffmpeg3.patch: New file.
> * gnu-system.am (dist_patch_DATA): Add it.
LGTM, thanks
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Sun, 04 Jun 2017 19:01:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 27235 <at> debbugs.gnu.org (full text, mbox):
Pushed to master.
Thank you Leo,
Manolis
Information forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Tue, 06 Jun 2017 20:00:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 27235 <at> debbugs.gnu.org (full text, mbox):
manolis837 <at> gmail.com (2017-06-04 17:57 +0300) wrote:
> +(define-public openscenegraph
> + (package
> + (name "openscenegraph")
> + (version "3.4.0")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "http://trac.openscenegraph.org/downloads/developer_releases/"
> + "OpenSceneGraph-" version ".zip"))
Isn't this version old? I see 3.5.6 here:
https://github.com/openscenegraph/OpenSceneGraph/releases
--
Alex
Information forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Wed, 07 Jun 2017 06:30:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 27235 <at> debbugs.gnu.org (full text, mbox):
Hey Alex,
On 06/06/17 22:59, Alex Kost wrote:
> manolis837 <at> gmail.com (2017-06-04 17:57 +0300) wrote:
>
>> +(define-public openscenegraph
>> + (package
>> + (name "openscenegraph")
>> + (version "3.4.0")
>> + (source (origin
>> + (method url-fetch)
>> + (uri (string-append "http://trac.openscenegraph.org/downloads/developer_releases/"
>> + "OpenSceneGraph-" version ".zip"))
>
> Isn't this version old? I see 3.5.6 here:
>
> https://github.com/openscenegraph/OpenSceneGraph/releases
>
I was following this [1] and chose 3.4.0.
The github release is a developer version and according to [2]: "Our
developer releases are made more regularily than our stable releases and
are simply tags of the latest source code under version control. The
developer releases do not under any dedicated testing prior to release
and are meant to be snapshots of the latest development work that is
going into the next stable release. The versioning for stable release is
major.minor.patch where the minor release is odd number signifying that
it's developer release."
For this reason I think we should go with 3.4.0 for now.
Thank you,
Manolis
[1] http://www.openscenegraph.org/index.php/download-section/stable-releases
[2]
http://www.openscenegraph.org/index.php/download-section/developer-releases
Information forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Wed, 07 Jun 2017 09:48:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 27235 <at> debbugs.gnu.org (full text, mbox):
Manolis Ragkousis (2017-06-07 09:29 +0300) wrote:
> Hey Alex,
Hi!
> On 06/06/17 22:59, Alex Kost wrote:
>> manolis837 <at> gmail.com (2017-06-04 17:57 +0300) wrote:
>>
>>> +(define-public openscenegraph
>>> + (package
>>> + (name "openscenegraph")
>>> + (version "3.4.0")
>>> + (source (origin
>>> + (method url-fetch)
>>> + (uri (string-append "http://trac.openscenegraph.org/downloads/developer_releases/"
>>> + "OpenSceneGraph-" version ".zip"))
>>
>> Isn't this version old? I see 3.5.6 here:
>>
>> https://github.com/openscenegraph/OpenSceneGraph/releases
>
> I was following this [1] and chose 3.4.0.
>
> The github release is a developer version and according to [2]: "Our
> developer releases are made more regularily than our stable releases and
> are simply tags of the latest source code under version control. The
> developer releases do not under any dedicated testing prior to release
> and are meant to be snapshots of the latest development work that is
> going into the next stable release. The versioning for stable release is
> major.minor.patch where the minor release is odd number signifying that
> it's developer release."
>
> For this reason I think we should go with 3.4.0 for now.
Ah, OK, thanks for explaining! I failed to find this web page :-)
BTW, I see that you also packaged "unshield". Since unshield and
openscenegraph are the dependencies of "OpenMW", I wonder, is packaging
OpenMW your goal?
> [1] http://www.openscenegraph.org/index.php/download-section/stable-releases
> [2] http://www.openscenegraph.org/index.php/download-section/developer-releases
--
Alex
Information forwarded
to
guix-patches <at> gnu.org
:
bug#27235
; Package
guix-patches
.
(Wed, 07 Jun 2017 10:07:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 27235 <at> debbugs.gnu.org (full text, mbox):
On 06/07/2017 12:47 PM, Alex Kost wrote:
> Ah, OK, thanks for explaining! I failed to find this web page :-)
>
> BTW, I see that you also packaged "unshield". Since unshield and
> openscenegraph are the dependencies of "OpenMW", I wonder, is packaging
> OpenMW your goal?
Guilty as charged :)
I hope that by the end of this week I will find time to finish it.
Btw for anyone not familiar with OpenMW, it's a free software
re-implementation of the Morrowind engine (GPLv3), which can be used to
create completely libre games. You don't need anything from the
proprietary game Morrowind.
Quoting from their website[1]: "OpenMW is a complete game engine. It is
possible for other projects to use OpenMW and OpenMW-CS to create their
own game game. There are several projects currently underway such as:
OpenMW-Template: A bare-bone template “game” with everything necessary
to run OpenMW. It can be extended, improved and further developed using
OpenMW-CS.
OpenMW-Example-Suite: This uses the OpenMW-Template as a starting part
and is OpenMW’s first official “game”, used to show off the OpenMW
engine and give content creators an idea on what they can do with the
engine."
[1]https://openmw.org/faq/
Reply sent
to
Alex Kost <alezost <at> gmail.com>
:
You have taken responsibility.
(Wed, 07 Jun 2017 19:55:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
manolis837 <at> gmail.com
:
bug acknowledged by developer.
(Wed, 07 Jun 2017 19:55:01 GMT)
Full text and
rfc822 format available.
Message #28 received at 27235-done <at> debbugs.gnu.org (full text, mbox):
Manolis Ragkousis (2017-06-07 13:05 +0300) wrote:
> On 06/07/2017 12:47 PM, Alex Kost wrote:
>> Ah, OK, thanks for explaining! I failed to find this web page :-)
>>
>> BTW, I see that you also packaged "unshield". Since unshield and
>> openscenegraph are the dependencies of "OpenMW", I wonder, is packaging
>> OpenMW your goal?
>
> Guilty as charged :)
> I hope that by the end of this week I will find time to finish it.
Woohoo! This is so cool, thank you for your great efforts!
P.S. I sent this message to <27235-done <at> debbugs.gnu.org> to make this
"bug" closed; I also closed bug#26625 ("unshield" patch).
--
Alex
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 06 Jul 2017 11:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 7 years and 346 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.