Package: simgear
Version: 2.4.0-1
Severity: normal
Tags: patch pending

Dear maintainer,

I've prepared an NMU for simgear (versioned as 2.4.0-1.1) and
uploaded it to DELAYED/10. Please feel free to tell me if I
should delay it longer.

In the diff, you'll notice that I chose to include the contents of
boost/pool/detail/singleton.hpp into Singleton.hxx instead of
installing and #including a new "singleton.hpp" as the upstream patch
set [1] did.  This is because upstream patch is for 2.6 which uses
cmake.  The equivalent change in 2.4 would involve changing
Makefile.am and rerunning automake, bloating the diff.

[1] 
https://www.gitorious.org/fg/simgear/commit/b261836f7182b5442b464907c8b084bde0bfded3

Regards.
-Steve
diff -u simgear-2.4.0/debian/copyright simgear-2.4.0/debian/copyright
--- simgear-2.4.0/debian/copyright
+++ simgear-2.4.0/debian/copyright
@@ -141,0 +142,27 @@
+
+The file /simgear/structure/boost_singleton.hpp is Copyright (C) 2000 Stephen
+ Cleary and distributed under the Boost Software License, Version 1.0:
+
+ Boost Software License - Version 1.0 - August 17th, 2003
+
+ Permission is hereby granted, free of charge, to any person or organization
+ obtaining a copy of the software and accompanying documentation covered by
+ this license (the "Software") to use, reproduce, display, distribute,
+ execute, and transmit the Software, and to prepare derivative works of the
+ Software, and to permit third-parties to whom the Software is furnished to
+ do so, all subject to the following:
+
+ The copyright notices in the Software and this entire statement, including
+ the above license grant, this restriction and the following disclaimer,
+ must be included in all copies of the Software, in whole or in part, and
+ all derivative works of the Software, unless such copies or derivative
+ works are solely in the form of machine-executable object code generated by
+ a source language processor.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+ SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+ FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
diff -u simgear-2.4.0/debian/changelog simgear-2.4.0/debian/changelog
--- simgear-2.4.0/debian/changelog
+++ simgear-2.4.0/debian/changelog
@@ -1,3 +1,13 @@
+simgear (2.4.0-1.1) unstable; urgency=low
+
+  * Non-Maintainer Upload.
+  
+  * simgear/structure/Singleton.hxx: Inline copy of
+    boost/pool/detail/singleton.hpp by copy of that file, since it is no
+    longer present in boost post 1.47.  Closes: #652788, #652775, #652797.
+
+ -- Steve M. Robbins <[email protected]>  Sun, 29 Jan 2012 23:19:58 -0600
+
 simgear (2.4.0-1) unstable; urgency=low
 
   * New upstream release.
only in patch2:
unchanged:
--- simgear-2.4.0.orig/simgear/structure/Singleton.hxx
+++ simgear-2.4.0/simgear/structure/Singleton.hxx
@@ -1,7 +1,120 @@
 #ifndef SIMGEAR_SINGLETON_HXX
 #define SIMGEAR_SINGLETON_HXX 1
 
-#include <boost/pool/detail/singleton.hpp>
+// ---- begin contents formerly in <boost/pool/detail/singleton.hpp> ----
+
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POOL_SINGLETON_HPP
+#define BOOST_POOL_SINGLETON_HPP
+
+// The following code might be put into some Boost.Config header in a later revision
+#ifdef __BORLANDC__
+# pragma option push -w-inl
+#endif
+
+//
+// The following helper classes are placeholders for a generic "singleton"
+//  class.  The classes below support usage of singletons, including use in
+//  program startup/shutdown code, AS LONG AS there is only one thread
+//  running before main() begins, and only one thread running after main()
+//  exits.
+//
+// This class is also limited in that it can only provide singleton usage for
+//  classes with default constructors.
+//
+
+// The design of this class is somewhat twisted, but can be followed by the
+//  calling inheritance.  Let us assume that there is some user code that
+//  calls "singleton_default<T>::instance()".  The following (convoluted)
+//  sequence ensures that the same function will be called before main():
+//    instance() contains a call to create_object.do_nothing()
+//    Thus, object_creator is implicitly instantiated, and create_object
+//      must exist.
+//    Since create_object is a static member, its constructor must be
+//      called before main().
+//    The constructor contains a call to instance(), thus ensuring that
+//      instance() will be called before main().
+//    The first time instance() is called (i.e., before main()) is the
+//      latest point in program execution where the object of type T
+//      can be created.
+//    Thus, any call to instance() will auto-magically result in a call to
+//      instance() before main(), unless already present.
+//  Furthermore, since the instance() function contains the object, instead
+//  of the singleton_default class containing a static instance of the
+//  object, that object is guaranteed to be constructed (at the latest) in
+//  the first call to instance().  This permits calls to instance() from
+//  static code, even if that code is called before the file-scope objects
+//  in this file have been initialized.
+
+namespace boost {
+
+namespace details {
+namespace pool {
+
+// T must be: no-throw default constructible and no-throw destructible
+template <typename T>
+struct singleton_default
+{
+  private:
+    struct object_creator
+    {
+      // This constructor does nothing more than ensure that instance()
+      //  is called before main() begins, thus creating the static
+      //  T object before multithreading race issues can come up.
+      object_creator() { singleton_default<T>::instance(); }
+      inline void do_nothing() const { }
+    };
+    static object_creator create_object;
+
+    singleton_default();
+
+  public:
+    typedef T object_type;
+
+    // If, at any point (in user code), singleton_default<T>::instance()
+    //  is called, then the following function is instantiated.
+    static object_type & instance()
+    {
+      // This is the object that we return a reference to.
+      // It is guaranteed to be created before main() begins because of
+      //  the next line.
+      static object_type obj;
+
+      // The following line does nothing else than force the instantiation
+      //  of singleton_default<T>::create_object, whose constructor is
+      //  called before main() begins.
+      create_object.do_nothing();
+
+      return obj;
+    }
+};
+template <typename T>
+typename singleton_default<T>::object_creator
+singleton_default<T>::create_object;
+
+} // namespace pool
+} // namespace details
+
+} // namespace boost
+
+// The following code might be put into some Boost.Config header in a later revision
+#ifdef __BORLANDC__
+# pragma option pop
+#endif
+
+#endif
+
+// ---- end contents formerly in <boost/pool/detail/singleton.hpp> ----
+
+
+
 
 #include <osg/Referenced>
 #include <osg/ref_ptr>

Attachment: signature.asc
Description: Digital signature

Reply via email to