diff options
author | Koen Kooi <koen@openembedded.org> | 2005-06-30 08:19:37 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-06-30 08:19:37 +0000 |
commit | c8e5702127e507e82e6f68a4b8c546803accea9d (patch) | |
tree | 00583491f40ecc640f2b28452af995e3a63a09d7 /packages/gtk-webcore | |
parent | 87ec8ca4d2e2eb4d1c1e1e1a6b46a395d56805b9 (diff) |
import clean BK tree at cset 1.3670
Diffstat (limited to 'packages/gtk-webcore')
-rw-r--r-- | packages/gtk-webcore/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/gtk-webcore/files/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/gtk-webcore/files/gdk-colorspace.diff | 25 | ||||
-rw-r--r-- | packages/gtk-webcore/files/libm.patch | 13 | ||||
-rw-r--r-- | packages/gtk-webcore/files/no-pedantic.patch | 11 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-browser-0.5.0/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-browser-0.5.0/no-pedantic.patch | 11 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-jscore-0.5.0/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-jscore-0.5.0/libm.patch | 13 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-jscore-0.5.0/missing-includes.patch | 10 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-jscore_20050430.bb | 35 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-nrcore-0.5.0/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-nrcore-0.5.0/KWQDictImpl.patch | 375 | ||||
-rw-r--r-- | packages/gtk-webcore/osb-nrcore_20050430.bb | 39 |
14 files changed, 532 insertions, 0 deletions
diff --git a/packages/gtk-webcore/.mtn2git_empty b/packages/gtk-webcore/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/gtk-webcore/.mtn2git_empty diff --git a/packages/gtk-webcore/files/.mtn2git_empty b/packages/gtk-webcore/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/gtk-webcore/files/.mtn2git_empty diff --git a/packages/gtk-webcore/files/gdk-colorspace.diff b/packages/gtk-webcore/files/gdk-colorspace.diff index e69de29bb2..f225bc937d 100644 --- a/packages/gtk-webcore/files/gdk-colorspace.diff +++ b/packages/gtk-webcore/files/gdk-colorspace.diff @@ -0,0 +1,25 @@ +Index: src/ImageRenderer.cpp +=================================================================== +RCS file: /cvsroot/gtk-webcore/NRCit/src/ImageRenderer.cpp,v +retrieving revision 1.1.1.1 +diff -u -r1.1.1.1 ImageRenderer.cpp +--- NRCit.orig/src/ImageRenderer.cpp 16 Feb 2005 09:33:16 -0000 1.1.1.1 ++++ NRCit/src/ImageRenderer.cpp 27 May 2005 23:36:28 -0000 +@@ -297,7 +297,7 @@ + wantedSize.height, + GDK_INTERP_BILINEAR); + +- gdk_pixbuf_render_pixmap_and_mask(scaledbuf, &pixmap, &alpha, 100); ++ gdk_pixbuf_render_pixmap_and_mask_for_colormap(scaledbuf,gdk_colormap_get_system(), &pixmap, &alpha, 100); + + buf = scaledbuf; + if (iter) { +@@ -312,7 +312,7 @@ + } else { + + //correct size +- gdk_pixbuf_render_pixmap_and_mask(buf, &pixmap, &alpha, 100); ++ gdk_pixbuf_render_pixmap_and_mask_for_colormap(buf, gdk_colormap_get_system(),&pixmap, &alpha, 100); + } + + assert(gdk_pixbuf_get_has_alpha(buf) == (alpha != NULL)); diff --git a/packages/gtk-webcore/files/libm.patch b/packages/gtk-webcore/files/libm.patch index e69de29bb2..b0c0cc6af2 100644 --- a/packages/gtk-webcore/files/libm.patch +++ b/packages/gtk-webcore/files/libm.patch @@ -0,0 +1,13 @@ +Index: osb-jscore-0.5.0/configure.in +=================================================================== +--- osb-jscore-0.5.0.orig/configure.in 2004-10-18 11:39:43.000000000 -0400 ++++ osb-jscore-0.5.0/configure.in 2005-02-02 17:36:36.551550088 -0500 +@@ -18,6 +18,8 @@ + AC_CHECK_HEADERS(string.h strings.h float.h) + + ++# isnan & friends generally come from libm, so link to it if its available ++AC_CHECK_LIB(m, sin) + + AC_CHECK_FUNCS(isnan,[ + AC_DEFINE(HAVE_FUNC_ISNAN,[],[Define to 1 if you have isnan function.]) diff --git a/packages/gtk-webcore/files/no-pedantic.patch b/packages/gtk-webcore/files/no-pedantic.patch index e69de29bb2..faabbbf15f 100644 --- a/packages/gtk-webcore/files/no-pedantic.patch +++ b/packages/gtk-webcore/files/no-pedantic.patch @@ -0,0 +1,11 @@ +--- osb-browser-0.5.0.orig/configure.in 2004-10-18 17:40:28.000000000 +0200 ++++ osb-browser-0.5.0/configure.in 2004-10-24 01:23:26.000000000 +0200 +@@ -54,7 +54,7 @@ + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; +- *) CFLAGS="$CFLAGS -Wall -Werror -ansi -pedantic" ;; ++ *) CFLAGS="$CFLAGS -Wall -Werror -ansi" ;; + esac + fi + changequote([,])dnl diff --git a/packages/gtk-webcore/osb-browser-0.5.0/.mtn2git_empty b/packages/gtk-webcore/osb-browser-0.5.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/gtk-webcore/osb-browser-0.5.0/.mtn2git_empty diff --git a/packages/gtk-webcore/osb-browser-0.5.0/no-pedantic.patch b/packages/gtk-webcore/osb-browser-0.5.0/no-pedantic.patch index e69de29bb2..faabbbf15f 100644 --- a/packages/gtk-webcore/osb-browser-0.5.0/no-pedantic.patch +++ b/packages/gtk-webcore/osb-browser-0.5.0/no-pedantic.patch @@ -0,0 +1,11 @@ +--- osb-browser-0.5.0.orig/configure.in 2004-10-18 17:40:28.000000000 +0200 ++++ osb-browser-0.5.0/configure.in 2004-10-24 01:23:26.000000000 +0200 +@@ -54,7 +54,7 @@ + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; +- *) CFLAGS="$CFLAGS -Wall -Werror -ansi -pedantic" ;; ++ *) CFLAGS="$CFLAGS -Wall -Werror -ansi" ;; + esac + fi + changequote([,])dnl diff --git a/packages/gtk-webcore/osb-jscore-0.5.0/.mtn2git_empty b/packages/gtk-webcore/osb-jscore-0.5.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/gtk-webcore/osb-jscore-0.5.0/.mtn2git_empty diff --git a/packages/gtk-webcore/osb-jscore-0.5.0/libm.patch b/packages/gtk-webcore/osb-jscore-0.5.0/libm.patch index e69de29bb2..b0c0cc6af2 100644 --- a/packages/gtk-webcore/osb-jscore-0.5.0/libm.patch +++ b/packages/gtk-webcore/osb-jscore-0.5.0/libm.patch @@ -0,0 +1,13 @@ +Index: osb-jscore-0.5.0/configure.in +=================================================================== +--- osb-jscore-0.5.0.orig/configure.in 2004-10-18 11:39:43.000000000 -0400 ++++ osb-jscore-0.5.0/configure.in 2005-02-02 17:36:36.551550088 -0500 +@@ -18,6 +18,8 @@ + AC_CHECK_HEADERS(string.h strings.h float.h) + + ++# isnan & friends generally come from libm, so link to it if its available ++AC_CHECK_LIB(m, sin) + + AC_CHECK_FUNCS(isnan,[ + AC_DEFINE(HAVE_FUNC_ISNAN,[],[Define to 1 if you have isnan function.]) diff --git a/packages/gtk-webcore/osb-jscore-0.5.0/missing-includes.patch b/packages/gtk-webcore/osb-jscore-0.5.0/missing-includes.patch index e69de29bb2..42d6ebc9f8 100644 --- a/packages/gtk-webcore/osb-jscore-0.5.0/missing-includes.patch +++ b/packages/gtk-webcore/osb-jscore-0.5.0/missing-includes.patch @@ -0,0 +1,10 @@ +--- osb-jscore-0.5.0.orig/kjs/lookup.h 2004-09-23 10:27:54.000000000 +0200 ++++ osb-jscore-0.5.0/kjs/lookup.h 2004-10-23 22:09:47.000000000 +0200 +@@ -24,6 +24,7 @@ + #define _KJSLOOKUP_H_ + + #include "identifier.h" ++#include "object.h" + #include "value.h" + #include <stdio.h> + diff --git a/packages/gtk-webcore/osb-jscore_20050430.bb b/packages/gtk-webcore/osb-jscore_20050430.bb index e69de29bb2..9ac9daa836 100644 --- a/packages/gtk-webcore/osb-jscore_20050430.bb +++ b/packages/gtk-webcore/osb-jscore_20050430.bb @@ -0,0 +1,35 @@ +DESCRIPTION = "Gtk+ WebCore - JavaScriptCore" +HOMEPAGE = "http://gtk-webcore.sourceforge.net/" +LICENSE = GPL +PRIORITY = "optional" +MAINTAINER = "Rene Wagner <rw@handhelds.org>" +SECTION = "gpe" + +FIXEDCVSDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}" +PV = "0.5.0+cvs${FIXEDCVSDATE}" + +SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gtk-webcore;module=JavaScriptCore;date=${FIXEDCVSDATE} \ + file://libm.patch;patch=1" +S = "${WORKDIR}/JavaScriptCore" + +inherit autotools pkgconfig + +do_configure () { + autotools_do_configure + cd ${S} + + # prevent libtool from linking libs against libstdc++, libgcc, ... + cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp + mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool +} + +do_stage () { + oe_libinstall -so -C kjs libjscore ${STAGING_LIBDIR} + + autotools_stage_includes + + install -d ${STAGING_INCDIR}/osb/JavaScriptCore + for i in ${S}/kjs/*.h ${S}/kjs/new; do + install -m 0644 $i ${STAGING_INCDIR}/osb/JavaScriptCore + done +} diff --git a/packages/gtk-webcore/osb-nrcore-0.5.0/.mtn2git_empty b/packages/gtk-webcore/osb-nrcore-0.5.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/gtk-webcore/osb-nrcore-0.5.0/.mtn2git_empty diff --git a/packages/gtk-webcore/osb-nrcore-0.5.0/KWQDictImpl.patch b/packages/gtk-webcore/osb-nrcore-0.5.0/KWQDictImpl.patch index e69de29bb2..8f43d00a38 100644 --- a/packages/gtk-webcore/osb-nrcore-0.5.0/KWQDictImpl.patch +++ b/packages/gtk-webcore/osb-nrcore-0.5.0/KWQDictImpl.patch @@ -0,0 +1,375 @@ +Index: NRCore/kwiq/KWQDictImpl.cpp +=================================================================== +--- NRCore/kwiq/KWQDictImpl.cpp 2004/10/18 18:39:48 1.3 ++++ NRCore/kwiq/KWQDictImpl.cpp 2004/10/25 10:08:30 +@@ -30,26 +30,90 @@ + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ ++#include <string.h> + + #include "KWQDictImpl.h" ++#include "KWQAssertions.h" ++#include "KWQMap.h" + #include <CoreFoundation/CoreFoundation.h> ++ ++typedef void (* DeleteFunction) (void *); ++ ++class KWQDictPrivate ++{ ++public: ++ KWQDictPrivate(int size, bool caseSensitive, DeleteFunction); ++ KWQDictPrivate(const KWQDictPrivate &dp); ++ ~KWQDictPrivate(); ++ ++ QMap<QString,void*> map; ++ DeleteFunction deleteFunc; ++ bool modifyCase; ++ KWQDictIteratorPrivate *iterators; ++}; ++ ++class KWQDictIteratorPrivate ++{ ++public: ++ KWQDictIteratorPrivate(KWQDictPrivate *); ++ ~KWQDictIteratorPrivate(); ++ ++ void remove(const QString &key); ++ void dictDestroyed(); ++ ++ uint count; ++ uint pos; ++ QString **keys; ++ void **values; ++ KWQDictPrivate *dict; ++ KWQDictIteratorPrivate *next; ++ KWQDictIteratorPrivate *prev; ++}; ++ ++KWQDictPrivate::KWQDictPrivate(int size, bool caseSensitive, ++ DeleteFunction _deleteFunc) ++ : deleteFunc(_deleteFunc), ++ modifyCase(!caseSensitive), ++ iterators(0) ++{ ++} ++ ++KWQDictPrivate::KWQDictPrivate(const KWQDictPrivate &dp) ++ : map(dp.map), ++ deleteFunc(dp.deleteFunc), ++ modifyCase(dp.modifyCase), ++ iterators(0) ++{ ++} ++ ++KWQDictPrivate::~KWQDictPrivate() ++{ ++ for (KWQDictIteratorPrivate *it = iterators; it; it = it->next) { ++ it->dictDestroyed(); ++ } ++} ++ ++ + /* + * No KWQDictImpl::~KWQDictImpl() because QDict::~QDict calls KWQDictImpl::clear() + * on + */ + KWQDictImpl::KWQDictImpl(int size, bool caseSensitive, void (*deleteFunc_)(void *)) +- : deleteFunc(deleteFunc_) +- , modifyCase(!caseSensitive) ++ : d(new KWQDictPrivate(size, caseSensitive, deleteFunc_)) + { ++} + ++KWQDictImpl::~KWQDictImpl() ++{ ++ delete d; + } + + void KWQDictImpl::insert(const QString &key, const void *value) + { +- if (modifyCase) +- map.insert(key.lower(), const_cast<void*>(value)); ++ if (d->modifyCase) ++ d->map.insert(key.lower(), const_cast<void*>(value)); + else +- map.insert(key, const_cast<void*>(value) ); ++ d->map.insert(key, const_cast<void*>(value) ); + } + + bool KWQDictImpl::remove(const QString &key, bool deleteItem) +@@ -57,21 +121,26 @@ + QMapIterator<QString, void*> i; + void* data; + +- if (modifyCase) +- i = map.find(key.lower()); ++ if (d->modifyCase) ++ i = d->map.find(key.lower()); + else +- i = map.find(key); ++ i = d->map.find(key); + +- if (i == map.end()) ++ if (i == d->map.end()) + return false; + + data = *i; + +- map.remove(i); +- if (deleteItem && deleteFunc) { +- deleteFunc(data); ++ d->map.remove(i); ++ if (deleteItem && d->deleteFunc) { ++ d->deleteFunc(data); + return true; + } ++ ++ for (KWQDictIteratorPrivate *it = d->iterators; it; it = it->next) { ++ it->remove(key); ++ } ++ + return false; + } + +@@ -79,71 +148,159 @@ + { + if (deleteItem) + { +- QMapIterator<QString,void*> i = map.begin(); +- QMapIterator<QString,void*> end = map.end(); ++ QMapIterator<QString,void*> i = d->map.begin(); ++ QMapIterator<QString,void*> end = d->map.end(); + void *data; + while (i!=end) + { + data=*i; +- if (deleteFunc) deleteFunc(data); ++ if (d->deleteFunc) d->deleteFunc(data); + ++i; + } + } + +- map.clear(); ++ d->map.clear(); + } + + uint KWQDictImpl::count() const + { +- return map.count(); ++ return d->map.count(); + } + + void *KWQDictImpl::find(const QString &key) const + { + QMapConstIterator<QString,void*> i; +- if (modifyCase) +- i = map.find(key.lower()); ++ if (d->modifyCase) ++ i = d->map.find(key.lower()); + else +- i = map.find(key); ++ i = d->map.find(key); + +- if (i == map.end()) ++ if (i == d->map.end()) + return 0; + return *i; + } + ++void KWQDictImpl::swap(KWQDictImpl &di) ++{ ++ KWQDictPrivate *tmp; ++ ++ tmp = di.d; ++ di.d = d; ++ d = tmp; ++} ++ ++KWQDictImpl &KWQDictImpl::assign(const KWQDictImpl &di, bool deleteItems) ++{ ++ KWQDictImpl tmp(di); ++ ++ if (deleteItems) { ++ clear(true); ++ } ++ ++ swap(tmp); ++ ++ return *this; ++} ++ ++ ++KWQDictIteratorImpl::KWQDictIteratorImpl(const KWQDictImpl &di) ++ : d(new KWQDictIteratorPrivate(di.d)) ++{ ++} ++ + uint KWQDictIteratorImpl::count() const + { +- return dict->map.count(); ++ return d->count; + } + + void* KWQDictIteratorImpl::current() const + { +- if (i == dict->map.end()) +- return 0; +- return *i; ++ if (d->pos >= d->count) { ++ return NULL; ++ } ++ return d->values[d->pos]; + } + + void* KWQDictIteratorImpl::toFirst() + { +- i=dict->map.begin(); +- if (i == dict->map.end()) +- return 0; +- +- return *i; ++ d->pos = 0; ++ return current(); + } ++ + void* KWQDictIteratorImpl::operator++() + { +- ++i; +- if (i==dict->map.end()) +- return 0; +- return *i; ++ ++d->pos; ++ return current(); + } + + QString KWQDictIteratorImpl::currentStringKey() const ++{ ++ if (d->pos >= d->count) { ++ return QString(); ++ } ++ return QString(*d->keys[d->pos]); ++} ++ ++ ++KWQDictIteratorPrivate::KWQDictIteratorPrivate(KWQDictPrivate *d) : ++ count(d->map.count()), ++ pos(0), ++ keys(new QString * [count]), ++ values(new void * [count]), ++ dict(d), ++ next(d->iterators), ++ prev(0) ++{ ++ d->iterators = this; ++ if (next) { ++ next->prev = this; ++ } ++ ++ unsigned int i = 0; ++ QMap<QString,void*>::Iterator it = d->map.begin(); ++ QMap<QString,void*>::Iterator end = d->map.end(); ++ while (it != end) { ++ keys[i] = new QString(it.key()); ++ values[i] = it.data(); ++ ++i; ++ ++it; ++ } ++ ASSERT(i==count); ++} ++ ++KWQDictIteratorPrivate::~KWQDictIteratorPrivate() + { +- if (i == dict->map.end() ) +- return QString(); ++ if (prev) { ++ prev->next = next; ++ } else if (dict) { ++ dict->iterators = next; ++ } ++ if (next) { ++ next->prev = prev; ++ } ++ ++ delete [] keys; ++ delete [] values; ++} + +- return QString(i.key()); ++void KWQDictIteratorPrivate::remove(const QString &key) ++{ ++ for (uint i = 0; i < count; ) { ++ if (*keys[i] != key) { ++ ++i; ++ } else { ++ --count; ++ if (pos > i) { ++ --pos; ++ } ++ memmove(&keys[i], &keys[i+1], sizeof(keys[i]) * (count - i)); ++ memmove(&values[i], &values[i+1], sizeof(values[i]) * (count - i)); ++ } ++ } + } + ++void KWQDictIteratorPrivate::dictDestroyed() ++{ ++ count = 0; ++ dict = 0; ++} +Index: NRCore/kwiq/KWQDictImpl.h +=================================================================== +--- NRCore/kwiq/KWQDictImpl.h 2004/09/23 08:27:53 1.1.1.1 ++++ NRCore/kwiq/KWQDictImpl.h 2004/10/25 10:08:30 +@@ -29,36 +29,42 @@ + #include "KWQMap.h" + #include "KWQString.h" + ++class KWQDictPrivate; ++class KWQDictIteratorPrivate; ++ + class KWQDictImpl { + public: + KWQDictImpl(int size, bool caseSensitive, void (*deleteFunc)(void *)); ++ ~KWQDictImpl(); + void insert(const QString &key, const void *value); + bool remove(const QString &key, bool deleteItems); + + void *find(const QString &key) const; + void clear(bool deleteItem); + uint count() const; +- private: +- void (*deleteFunc)(void*); +- QMap<QString,void*> map; +- bool modifyCase; ++ ++ KWQDictImpl &assign(const KWQDictImpl &pdi, bool deleteItems); ++private: ++ void swap(KWQDictImpl &di); ++ KWQDictPrivate *d; + friend class KWQDictIteratorImpl; + }; + + class KWQDictIteratorImpl { +- const KWQDictImpl *dict; +- QMapConstIterator<QString,void*> i; + public: +- KWQDictIteratorImpl(const KWQDictImpl &di) :dict(&di), i(di.map.begin()) { } ++ KWQDictIteratorImpl(const KWQDictImpl &di); + uint count() const ; + void *current() const; ++ ++ void* toFirst(); + +- void* toFirst(); +- + void *operator++(); + + + QString currentStringKey() const; ++private: ++ KWQDictIteratorPrivate *d; ++ + }; + + #endif diff --git a/packages/gtk-webcore/osb-nrcore_20050430.bb b/packages/gtk-webcore/osb-nrcore_20050430.bb index e69de29bb2..74698ff512 100644 --- a/packages/gtk-webcore/osb-nrcore_20050430.bb +++ b/packages/gtk-webcore/osb-nrcore_20050430.bb @@ -0,0 +1,39 @@ +DESCRIPTION = "Gtk+ WebCore - rendering engine" +HOMEPAGE = "http://gtk-webcore.sourceforge.net/" +LICENSE = GPL +PRIORITY = "optional" +MAINTAINER = "Rene Wagner <rw@handhelds.org>" +SECTION = "gpe" + +FIXEDCVSDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}" +PV = "0.5.0+cvs${FIXEDCVSDATE}" + +DEPENDS = "glib-2.0 gtk+ pango osb-jscore" + +SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gtk-webcore;module=NRCore;date=${FIXEDCVSDATE}" +S = "${WORKDIR}/NRCore" + +LEAD_SONAME = "libnrcore.so" + +inherit autotools pkgconfig + +do_configure () { + autotools_do_configure + cd ${S} + + # prevent libtool from linking libs against libstdc++, libgcc, ... + cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp + mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool +} + +do_stage () { + oe_libinstall -so libnrcore ${STAGING_LIBDIR} + oe_libinstall -so -C kwiq libnrcore_kwiq_gtk ${STAGING_LIBDIR} + + autotools_stage_includes + + install -d ${STAGING_INCDIR}/osb/NRCore + for i in ${S}/kwiq/WebCore*.h ${S}/kwiq/KWIQ*.h; do + install -m 0644 $i ${STAGING_INCDIR}/osb/NRCore + done +} |