Skip to content
Snippets Groups Projects
Commit aab79e50 authored by Patrick Godwin's avatar Patrick Godwin
Browse files

update O3 optimized Makefile package versions, get gcc version in sync

parent fda7c119
No related branches found
No related tags found
No related merge requests found
......@@ -33,9 +33,9 @@ else
endif
# Set package release versions
GDS=gds-2.18.10
LDASTOOLSFRAMECPP=ldas-tools-framecpp-2.6.2
LDASTOOLSAL=ldas-tools-al-2.6.0
GDS=gds-2.18.17
LDASTOOLSFRAMECPP=ldas-tools-framecpp-2.6.5
LDASTOOLSAL=ldas-tools-al-2.6.2
SWIG=swig-3.0.7
METAIO=metaio-8.5.1
LIBFRAME=libframe-8.30
......@@ -43,7 +43,7 @@ GSTPYTHON=gst-python-1.14.3
GSTPLUGINSGOOD=gst-plugins-good-1.14.3
GSTPLUGINSBASE=gst-plugins-base-1.14.3
GSTREAMER=gstreamer-1.14.3
GSL=gsl-2.3
GSL=gsl-1.16
ORC=orc-0.4.26
FFTW=fftw-3.3.8
......@@ -170,7 +170,7 @@ tarball:
# KAFKA
tarball/kafka_2.11-2.0.0.tgz: tarball
wget -nc -P tarball http://mirror.reverse.net/pub/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
wget -nc -P tarball https://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz
src/kafka_2.11-2.0.0: tarball/kafka_2.11-2.0.0.tgz src opt/bin opt/config opt/libs
cd src && tar -xzf ../tarball/kafka_2.11-2.0.0.tgz && cd .. && cp -r src/kafka_2.11-2.0.0/bin/* opt/bin/. && cp src/kafka_2.11-2.0.0/libs/* opt/libs/. && cp src/kafka_2.11-2.0.0/config/* opt/config/.
......
......@@ -38,9 +38,6 @@ DEPS_DIR:=/path/to/deps/dir
# Set to build from git (0 = tarball, 1 = git)
GSTLAL_GIT=1
LIGOSCALD_GIT=0
LIGOSEGMENTS_GIT=0
PYTHONLIGOLW_GIT=0
GLUE_GIT=0
LALSUITE_GIT=0
# Define which branch from git to build. Defaults to 'master', but the user can
......@@ -49,30 +46,26 @@ LALSUITE_GIT=0
#
GSTLAL_GIT_BRANCH="master"
LIGOSCALD_GIT_BRANCH="master"
LIGOSEGMENTS_GIT_BRANCH="master"
PYTHONLIGOLW_GIT_BRANCH="master"
GLUE_GIT_BRANCH="master"
LALSUITE_GIT_BRANCH="master"
# Set package release versions
GSTLALINSPIRAL=gstlal-inspiral-1.5.1
GSTLALCALIBRATION=gstlal-calibration-1.2.1
GSTLALBURST=gstlal-burst-0.0.5
GSTLALUGLY=gstlal-ugly-1.5.5
GSTLAL=gstlal-1.4.1
LIGOSCALD=ligo-scald-0.3.0
LIGOSEGMENTS=ligo-segments-1.1.1
PYTHONLIGOLW=python-ligo-lw-1.4.0
GLUE=lscsoft-glue-1.60.0
LALAPPS=lalapps-6.22.0
LALINFERENCE=lalinference-1.10.0
LALPULSAR=lalpulsar-1.17.0
LALINSPIRAL=lalinspiral-1.8.0
LALBURST=lalburst-1.5.0
LALSIMULATION=lalsimulation-1.8.0
LALMETAIO=lalmetaio-1.4.0
LALFRAME=lalframe-1.4.4
LAL=lal-6.19.0
GSTLALINSPIRAL=gstlal-inspiral-1.6.5
GSTLALCALIBRATION=gstlal-calibration-1.2.10
GSTLALBURST=gstlal-burst-0.1.1
GSTLALUGLY=gstlal-ugly-1.6.4
GSTLAL=gstlal-1.5.0
LIGOSCALD=ligo-scald-0.4.1
KAFKA_PYTHON=0.11.5
LIBRDKAFKA=0.11.5
LALAPPS=lalapps-6.24.0
LALINFERENCE=lalinference-1.11.0
LALPULSAR=lalpulsar-1.18.0
LALINSPIRAL=lalinspiral-1.9.0
LALBURST=lalburst-1.5.2
LALSIMULATION=lalsimulation-1.9.0
LALMETAIO=lalmetaio-1.5.1
LALFRAME=lalframe-1.4.5
LAL=lal-6.20.1
# Specify target/dependency files
GSTINSPIRAL_TARGET=$(INSTALL_DIR)/lib/libgstlalinspiral.so
......@@ -81,9 +74,6 @@ GSTLALBURST_TARGET=$(INSTALL_DIR)/lib/libgstlalburst.so
GSTLALUGLY_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstnds.so
GSTLAL_TARGET=$(INSTALL_DIR)/lib/libgstlal.so
LIGOSCALD_TARGET=$(INSTALL_DIR)/lib/python2.7/site-packages/ligo_scald-0.1.0-py2.7.egg
LIGOSEGMENTS_TARGET=$(INSTALL_DIR)/lib/python2.7/site-packages/ligo_segments-1.1.1-py2.7-linux-x86_64.egg
PYTHONLIGOLW_TARGET=$(INSTALL_DIR)/lib/python2.7/site-packages/python_ligo_lw-1.4.0-py2.7.egg-info
GLUE_TARGET=$(INSTALL_DIR)/bin/dmtdq_seg_insert
LALAPPS_TARGET=$(INSTALL_DIR)/bin/lalapps_psinject
LALINFER_TARGET=$(INSTALL_DIR)/lib/liblalinference.so
LALPULSAR_TARGET=$(INSTALL_DIR)/lib/liblalpulsar.so
......@@ -101,9 +91,6 @@ GSTLALBURST_TAR_TARGET=$(TAR_DIR)/$(GSTLALBURST).tar.gz
GSTLALUGLY_TAR_TARGET=$(TAR_DIR)/$(GSTLALUGLY).tar.gz
GSTLAL_TAR_TARGET=$(TAR_DIR)/$(GSTLAL).tar.gz
LIGOSCALD_TAR_TARGET=$(TAR_DIR)/$(LIGOSCALD).tar.gz
LIGOSEGMENTS_TAR_TARGET=$(TAR_DIR)/$(LIGOSEGMENTS).tar.gz
PYTHONLIGOLW_TAR_TARGET=$(TAR_DIR)/$(PYTHONLIGOLW).tar.gz
GLUE_TAR_TARGET=$(TAR_DIR)/$(GLUE).tar.gz
LALAPPS_TAR_TARGET=$(TAR_DIR)/$(LALAPPS).tar.xz
LALINFER_TAR_TARGET=$(TAR_DIR)/$(LALINFERENCE).tar.xz
LALPULSAR_TAR_TARGET=$(TAR_DIR)/$(LALPULSAR).tar.xz
......@@ -117,9 +104,6 @@ LAL_TAR_TARGET=$(TAR_DIR)/$(LAL).tar.xz
# git repos
GSTLAL_GIT_TARGET=$(GSTLAL_REPO)/TODO.md
LIGOSCALD_GIT_TARGET=$(LIGOSCALD_REPO)/README.md
LIGOSEGMENTS_GIT_TARGET=$(LIGOSEGMENTS_REPO)/README.rst
PYTHONLIGOLW_GIT_TARGET=$(PYTHONLIGOLW_REPO)/MANIFEST.in
GLUE_GIT_TARGET=$(GLUE_REPO)/README
LALSUITE_GIT_TARGET=$(LALSUITE_REPO)/lal/README
# Specify how many processors to run on
......@@ -258,10 +242,10 @@ $(GSTLAL_TARGET) : $(LIGOSCALD_TARGET)
# ligo-scald
ligo-scald : $(LOGS_DIR)/ligo-scald.txt
$(LOGS_DIR)/ligo-scald.txt : $(LOGS_DIR)/ligo-segments.txt $(LIGOSCALD_TARGET)
$(LOGS_DIR)/ligo-scald.txt : $(LOGS_DIR)/kafka-python.txt $(LIGOSCALD_TARGET)
@echo $^ | sed -e "s@ @\n@g" > $@
$(LIGOSCALD_TARGET) : $(LIGOSEGMENTS_TARGET)
$(LIGOSCALD_TARGET) : $(KAFKA_PYTHON_TARGET)
@echo $(GREEN)ligo-scald$(WHITE) 1>&2
if [ "${LIGOSCALD_GIT}" = "1" ]; then \
cd $(LIGOSCALD_REPO) && python setup.py install --prefix=$(INSTALL_DIR) ; \
......@@ -270,50 +254,28 @@ $(LIGOSCALD_TARGET) : $(LIGOSEGMENTS_TARGET)
cd $(SRC_DIR)/$(LIGOSCALD) && python setup.py install --prefix=$(INSTALL_DIR) ; \
fi ;
# ligo-segments
ligo-segments : $(LOGS_DIR)/ligo-segments.txt
# confluent-kafka-python
kafka-python : $(LOGS_DIR)/kafka-python.txt
$(LOGS_DIR)/ligo-segments.txt : $(LOGS_DIR)/python-ligo-lw.txt $(LIGOSEGMENTS_TARGET)
$(LOGS_DIR)/kafka-python.txt : $(LOGS_DIR)/librdkafka.txt $(KAFKA_PYTHON_TARGET)
@echo $^ | sed -e "s@ @\n@g" > $@
$(LIGOSEGMENTS_TARGET) : $(PYTHONLIGOLW_TARGET)
@echo $(GREEN)ligo-segments$(WHITE) 1>&2
if [ "${LIGOSEGMENTS_GIT}" = "1" ]; then \
cd $(LIGOSEGMENTS_REPO) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
else \
tar -xzf $(TAR_DIR)/$(LIGOSEGMENTS).tar.gz -C $(SRC_DIR) ; \
cd $(SRC_DIR)/$(LIGOSEGMENTS) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
fi ;
$(KAFKA_PYTHON_TARGET) : $(LIBRDKAFKA_TARGET)
@echo $(GREEN)kafka-python$(WHITE) 1>&2
tar -xzf $(TAR_DIR)/confluent-kafka-python-$(KAFKA_PYTHON).tar.gz -C $(SRC_DIR) ; \
cd $(SRC_DIR)/confluent-kafka-python-$(KAFKA_PYTHON) && CFLAGS="$(CFLAGS)" C_INCLUDE_PATH=$(INSTALL_DIR)/include LIBRARY_PATH=$(INSTALL_DIR)/lib python setup.py install --prefix=$(INSTALL_DIR) ; \
# python-ligo-lw
python-ligo-lw : $(LOGS_DIR)/python-ligo-lw.txt
# librdkafka
librdkafka : $(LOGS_DIR)/librdkafka.txt
$(LOGS_DIR)/python-ligo-lw.txt : $(LOGS_DIR)/glue.txt $(PYTHONLIGOLW_TARGET)
$(LOGS_DIR)/librdkafka.txt : $(LOGS_DIR)/lalsuite.txt $(LIBRDKAFKA_TARGET)
@echo $^ | sed -e "s@ @\n@g" > $@
$(PYTHONLIGOLW_TARGET) : $(GLUE_TARGET)
@echo $(GREEN)python-ligo-lw$(WHITE) 1>&2
if [ "${PYTHONLIGOLW_GIT}" = "1" ]; then \
cd $(PYTHONLIGOLW_REPO) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
else \
tar -xzf $(TAR_DIR)/$(PYTHONLIGOLW).tar.gz -C $(SRC_DIR) ; \
cd $(SRC_DIR)/$(PYTHONLIGOLW) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
fi ;
# glue
glue : $(LOGS_DIR)/glue.txt
$(LOGS_DIR)/glue.txt : $(LOGS_DIR)/lalsuite.txt $(GLUE_TARGET)
@echo $^ | sed -e "s@ @\n@g" > $@
$(GLUE_TARGET) : $(LALAPPS_TARGET)
@echo $(GREEN)glue$(WHITE) 1>&2
if [ "${GLUE_GIT}" = "1" ]; then \
cd $(GLUE_REPO) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
else \
tar -xzf $(TAR_DIR)/$(GLUE).tar.gz -C $(SRC_DIR) ; \
cd $(SRC_DIR)/$(GLUE) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
fi ;
$(LIBRDKAFKA_TARGET) : $(LALAPPS_TARGET)
@echo $(GREEN)librdkafka$(WHITE) 1>&2
tar -xzf $(TAR_DIR)/librdkafka-$(LIBRDKAFKA).tar.gz -C $(SRC_DIR) ; \
cd $(SRC_DIR)/librdkafka-$(LIBRDKAFKA) && ./configure --prefix=$(INSTALL_DIR) ; \
cd $(SRC_DIR)/librdkafka-$(LIBRDKAFKA) && make -j$(CORES) && make install -j$(CORES) ; \
# lalsuite
lalsuite : $(LOGS_DIR)/lalsuite.txt
......@@ -467,14 +429,9 @@ $(LAL_TARGET) : $(LOGS_DIR)/patch.txt
# patches
patch : $(LOGS_DIR)/patch.txt
$(LOGS_DIR)/patch.txt : $(LOGS_DIR) $(PATCH_DIR)/gst1.14.patch
$(LOGS_DIR)/patch.txt : $(LOGS_DIR)
echo $^ | sed -e "s@ @\n@g" > $@
$(PATCH_DIR)/gst1.14.patch : $(LOGS_DIR)
@echo $(GREEN)patches$(WHITE) 1>&2
cp $(GSTLAL_REPO)/gstlal-inspiral/share/O3/optimized/gst1.14.patch $(PATCH_DIR)
cd $(GSTLAL_REPO) && patch -p1 < $(PATCH_DIR)/gst1.14.patch
# git repos
$(LOGS_DIR) :
mkdir -p $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR)
......@@ -508,36 +465,6 @@ $(LOGS_DIR) :
wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALSTOCHASTIC).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALAPPS).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
fi ;
if [ "${GLUE_GIT}" = "1" ]; then \
if [ -f $@ ] ; then \
echo "Glue git repo exists" ; \
else \
mkdir -p $(GLUE_REPO) ; \
git clone -b $(GLUE_GIT_BRANCH) https://git.ligo.org/lscsoft/glue.git $(GLUE_REPO) ; \
fi ; \
else \
wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GLUE).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
fi ;
if [ "${PYTHONLIGOLW_GIT}" = "1" ]; then \
if [ -f $@ ] ; then \
echo "Python-ligo-lw git repo exists" ; \
else \
mkdir -p $(PYTHONLIGOLW_REPO) ; \
git clone -b $(PYTHONLIGOLW_GIT_BRANCH) https://git.ligo.org/kipp.cannon/python-ligo-lw.git $(PYTHONLIGOLW_REPO) ; \
fi ; \
else \
wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(PYTHONLIGOLW).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
fi ;
if [ "${LIGOSEGMENTS_GIT}" = "1" ]; then \
if [ -f $@ ] ; then \
echo "Ligo-segments git repo exists" ; \
else \
mkdir -p $(LIGOSEGMENTS_REPO) ; \
git clone -b $(LIGOSEGMENTS_GIT_BRANCH) https://git.ligo.org/lscsoft/ligo-segments.git $(LIGOSEGMENTS_REPO) ; \
fi ; \
else \
wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(LIGOSEGMENTS).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
fi ;
if [ "${GSTLAL_GIT}" = "1" ]; then \
if [ -f $@ ] ; then \
echo "Gstlal git repo exists" ; \
......
......@@ -54,24 +54,24 @@ LIGOSCALD_GIT_BRANCH="master"
LALSUITE_GIT_BRANCH="master"
# Set package release versions
GSTLALINSPIRAL=gstlal-inspiral-1.6.4
GSTLALCALIBRATION=gstlal-calibration-1.2.9
GSTLALINSPIRAL=gstlal-inspiral-1.6.5
GSTLALCALIBRATION=gstlal-calibration-1.2.10
GSTLALBURST=gstlal-burst-0.1.1
GSTLALUGLY=gstlal-ugly-1.6.3
GSTLALUGLY=gstlal-ugly-1.6.4
GSTLAL=gstlal-1.5.0
LIGOSCALD=ligo-scald-0.4.0
LIGOSCALD=ligo-scald-0.4.1
KAFKA_PYTHON=0.11.5
LIBRDKAFKA=0.11.5
LALAPPS=lalapps-6.23.0
LALINFERENCE=lalinference-1.10.2
LALPULSAR=lalpulsar-1.17.1
LALINSPIRAL=lalinspiral-1.8.1
LALBURST=lalburst-1.5.1
LALSIMULATION=lalsimulation-1.8.2
LALMETAIO=lalmetaio-1.5.0
LALFRAME=lalframe-1.4.4
LAL=lal-6.19.2
GDS=gds-2.18.14
LALAPPS=lalapps-6.24.0
LALINFERENCE=lalinference-1.11.0
LALPULSAR=lalpulsar-1.18.0
LALINSPIRAL=lalinspiral-1.9.0
LALBURST=lalburst-1.5.2
LALSIMULATION=lalsimulation-1.9.0
LALMETAIO=lalmetaio-1.5.1
LALFRAME=lalframe-1.4.5
LAL=lal-6.20.1
GDS=gds-2.18.17
LDASTOOLSFRAMECPP=ldas-tools-framecpp-2.6.5
LDASTOOLSAL=ldas-tools-al-2.6.2
SWIG=swig-3.0.7
......@@ -340,7 +340,6 @@ $(GSTLAL_TARGET) : $(LIGOSCALD_TARGET)
# ligo-scald
ligo-scald : $(LOGS_DIR)/ligo-scald.txt
#$(LOGS_DIR)/ligo-scald.txt : $(LOGS_DIR)/ligo-segments.txt $(LIGOSCALD_TARGET)
$(LOGS_DIR)/ligo-scald.txt : $(LOGS_DIR)/kafka-python.txt $(LIGOSCALD_TARGET)
@echo $^ | sed -e "s@ @\n@g" > $@
......
diff --git a/gstlal/gst/gst/Makefile.am b/gstlal/gst/gst/Makefile.am
index c3b3344a5..ce4494d28 100644
--- a/gstlal/gst/gst/Makefile.am
+++ b/gstlal/gst/gst/Makefile.am
@@ -1,6 +1,6 @@
AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_builddir)/lib
-plugin_LTLIBRARIES = libgstlal_adder.la libgstpythonplugin.la
+plugin_LTLIBRARIES = libgstlal_adder.la
libgstlal_adder_la_SOURCES = \
gstadder.h gstadder.c \
@@ -8,7 +8,3 @@ libgstlal_adder_la_SOURCES = \
libgstlal_adder_la_CFLAGS = $(AM_CFLAGS) $(ORC_CFLAGS) $(gstreamer_CFLAGS) $(gstreamer_audio_CFLAGS) -DGST_PACKAGE_NAME=\"gstlal\" -DGST_PACKAGE_ORIGIN=\"\"
libgstlal_adder_la_LIBADD = $(top_builddir)/lib/gstlal/libgstlal.la $(top_builddir)/lib/gstlal/libgstlaltypes.la
libgstlal_adder_la_LDFLAGS = $(AM_LDFLAGS) $(ORC_LIBS) $(gstreamer_LIBS) $(gstreamer_audio_LIBS) $(GSTLAL_PLUGIN_LDFLAGS)
-
-libgstpythonplugin_la_SOURCES = gstpythonplugin.c
-libgstpythonplugin_la_CFLAGS = $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS) $(PYGOBJECT_CFLAGS) $(gstreamer_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) -DPYTHON_VERSION="\"$(PYTHON_VERSION)\"" -DPY_LIB_LOC="\"$(PYTHON_LIB_LOC)\"" -DPY_ABI_FLAGS="\"$(PYTHON_ABI_FLAGS)\"" -DPY_LIB_SUFFIX="\"$(PYTHON_LIB_SUFFIX)\"" -DGST_API_VERSION="\"$(GSTREAMER_RELEASE)\"" -DPLUGINDIR="\"$(plugindir)\""
-libgstpythonplugin_la_LDFLAGS = $(AM_LDFLAGS) $(PYTHON_LIBS) $(gstreamer_LIBS) $(GSTLAL_PLUGIN_LDFLAGS) $(PYGOBJECT_LIBS)
diff --git a/gstlal/gst/gst/gstpythonplugin.c b/gstlal/gst/gst/gstpythonplugin.c
deleted file mode 100644
index f3b713db4..000000000
--- a/gstlal/gst/gst/gstpythonplugin.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/* gst-python
- * Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
- * 2005 Benjamin Otte <otte@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* include this first, before NO_IMPORT_PYGOBJECT is defined */
-#include <pygobject.h>
-#include <gst/gst.h>
-#include <gmodule.h>
-#include <Python.h>
-
-void *_PyGstElement_Type;
-
-GST_DEBUG_CATEGORY_STATIC (pyplugindebug);
-#define GST_CAT_DEFAULT pyplugindebug
-
-#define GST_ORIGIN "http://gstreamer.freedesktop.org"
-
-static PyObject *element;
-
-static gboolean
-gst_python_plugin_load_file (GstPlugin * plugin, const char *name)
-{
- PyObject *main_module, *main_locals;
- PyObject *elementfactory;
- PyObject *module;
- const gchar *facname;
- guint rank;
- PyObject *class;
-
- GST_DEBUG ("loading plugin %s", name);
-
- main_module = PyImport_AddModule ("__main__");
- if (main_module == NULL) {
- GST_WARNING ("Could not get __main__, ignoring plugin %s", name);
- PyErr_Print ();
- PyErr_Clear ();
- return FALSE;
- }
-
- main_locals = PyModule_GetDict (main_module);
- module =
- PyImport_ImportModuleEx ((char *) name, main_locals, main_locals, NULL);
- if (!module) {
- GST_DEBUG ("Could not load module, ignoring plugin %s", name);
- PyErr_Print ();
- PyErr_Clear ();
- return FALSE;
- }
-
- /* Get __gstelementfactory__ from file */
- elementfactory = PyObject_GetAttrString (module, "__gstelementfactory__");
- if (!elementfactory) {
- GST_DEBUG ("python file doesn't contain __gstelementfactory__");
- PyErr_Clear ();
- return FALSE;
- }
-
- /* parse tuple : name, rank, gst.ElementClass */
- if (!PyArg_ParseTuple (elementfactory, "sIO", &facname, &rank, &class)) {
- GST_WARNING ("__gstelementfactory__ isn't correctly formatted");
- PyErr_Print ();
- PyErr_Clear ();
- Py_DECREF (elementfactory);
- return FALSE;
- }
-
- if (!PyObject_IsSubclass (class, (PyObject *) & PyGObject_Type)) {
- GST_WARNING ("the class provided isn't a subclass of GObject.Object");
- PyErr_Print ();
- PyErr_Clear ();
- Py_DECREF (elementfactory);
- Py_DECREF (class);
- return FALSE;
- }
-
- if (!g_type_is_a (pyg_type_from_object (class), GST_TYPE_ELEMENT)) {
- GST_WARNING ("the class provided isn't a subclass of Gst.Element");
- PyErr_Print ();
- PyErr_Clear ();
- Py_DECREF (elementfactory);
- Py_DECREF (class);
- return FALSE;
- }
-
- GST_INFO ("Valid plugin");
- Py_DECREF (elementfactory);
-
- return gst_element_register (plugin, facname, rank,
- pyg_type_from_object (class));
-}
-
-static gboolean
-gst_python_load_directory (GstPlugin * plugin, gchar * path)
-{
- GDir *dir;
- const gchar *file;
- GError *error = NULL;
- gboolean ret = TRUE;
-
- dir = g_dir_open (path, 0, &error);
- if (!dir) {
- /*retval should probably be depending on error, but since we ignore it... */
- GST_DEBUG ("Couldn't open Python plugin dir: %s", error->message);
- g_error_free (error);
- return FALSE;
- }
- while ((file = g_dir_read_name (dir))) {
- /* FIXME : go down in subdirectories */
- if (g_str_has_suffix (file, ".py")) {
- gsize len = strlen (file) - 3;
- gchar *name = g_strndup (file, len);
- ret &= gst_python_plugin_load_file (plugin, name);
- g_free (name);
- }
- }
- return TRUE;
-}
-
-static gboolean
-gst_python_plugin_load (GstPlugin * plugin)
-{
- PyObject *sys_path;
- const gchar *plugin_path;
- gboolean ret = TRUE;
-
- sys_path = PySys_GetObject ("path");
-
- /* Mimic the order in which the registry is checked in core */
-
- /* 1. check env_variable GST_PLUGIN_PATH */
- plugin_path = g_getenv ("GST_PLUGIN_PATH");
- if (plugin_path) {
- char **list;
- int i;
-
- GST_DEBUG ("GST_PLUGIN_PATH set to %s", plugin_path);
- list = g_strsplit (plugin_path, G_SEARCHPATH_SEPARATOR_S, 0);
- for (i = 0; list[i]; i++) {
- gchar *sysdir = g_build_filename (list[i], "python", NULL);
- PyList_Insert (sys_path, 0, PyUnicode_FromString (sysdir));
- gst_python_load_directory (plugin, sysdir);
- g_free (sysdir);
- }
-
- g_strfreev (list);
- }
-
- /* 2. Check for GST_PLUGIN_SYSTEM_PATH */
- plugin_path = g_getenv ("GST_PLUGIN_SYSTEM_PATH");
- if (plugin_path == NULL) {
- char *home_plugins;
-
- /* 2.a. Scan user and system-wide plugin directory */
- GST_DEBUG ("GST_PLUGIN_SYSTEM_PATH not set");
-
- /* plugins in the user's home directory take precedence over
- * system-installed ones */
- home_plugins = g_build_filename (g_get_home_dir (),
- ".gstreamer-" GST_API_VERSION, "plugins", "python", NULL);
- PyList_Insert (sys_path, 0, PyUnicode_FromString (home_plugins));
- gst_python_load_directory (plugin, home_plugins);
- g_free (home_plugins);
-
- /* add the main (installed) library path */
- PyList_Insert (sys_path, 0, PyUnicode_FromString (PLUGINDIR "/python"));
- gst_python_load_directory (plugin, PLUGINDIR "/python");
- } else {
- gchar **list;
- gint i;
-
- /* 2.b. Scan GST_PLUGIN_SYSTEM_PATH */
- GST_DEBUG ("GST_PLUGIN_SYSTEM_PATH set to %s", plugin_path);
- list = g_strsplit (plugin_path, G_SEARCHPATH_SEPARATOR_S, 0);
- for (i = 0; list[i]; i++) {
- gchar *sysdir;
-
- sysdir = g_build_filename (list[i], "python", NULL);
-
- PyList_Insert (sys_path, 0, PyUnicode_FromString (sysdir));
- gst_python_load_directory (plugin, sysdir);
- g_free (sysdir);
- }
- g_strfreev (list);
- }
-
-
- return ret;
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- PyGILState_STATE state;
- PyObject *gi, *require_version, *args, *gst, *dict, *pyplugin;
- gboolean we_initialized = FALSE;
- GModule *libpython;
- gpointer has_python = NULL;
- PyObject *seq, *list;
- int i, len;
-
- GST_DEBUG_CATEGORY_INIT (pyplugindebug, "pyplugin", 0,
- "Python plugin loader");
-
- gst_plugin_add_dependency_simple (plugin,
- "HOME/.gstreamer-" GST_API_VERSION
- "/plugins/python:GST_PLUGIN_SYSTEM_PATH/python:GST_PLUGIN_PATH/python",
- PLUGINDIR "/python:HOME/.gstreamer-" GST_API_VERSION "/plugins/python:"
- "GST_PLUGIN_SYSTEM_PATH/python:GST_PLUGIN_PATH/python", NULL,
- GST_PLUGIN_DEPENDENCY_FLAG_NONE);
-
- GST_LOG ("Checking to see if libpython is already loaded");
- if (g_module_symbol (g_module_open (NULL, G_MODULE_BIND_LOCAL),
- "_Py_NoneStruct", &has_python) && has_python) {
- GST_LOG ("libpython is already loaded");
- } else {
- GST_LOG ("loading libpython");
- libpython =
- g_module_open (PY_LIB_LOC "/libpython" PYTHON_VERSION PY_ABI_FLAGS
- "." PY_LIB_SUFFIX, 0);
- if (!libpython) {
- g_critical ("Couldn't g_module_open libpython. Reason: %s",
- g_module_error ());
- return FALSE;
- }
- }
-
- if (!Py_IsInitialized ()) {
- GST_LOG ("python wasn't initialized");
- /* set the correct plugin for registering stuff */
- Py_Initialize ();
- we_initialized = TRUE;
- } else {
- GST_LOG ("python was already initialized");
- state = PyGILState_Ensure ();
- }
-
- GST_LOG ("initializing pygobject");
- if (!pygobject_init (3, 0, 0)) {
- g_critical ("pygobject initialization failed");
- return FALSE;
- }
-
- gi = PyImport_ImportModule ("gi");
- if (!gi) {
- g_critical ("can't find gi");
- return FALSE;
- }
-
-
- require_version = PyObject_GetAttrString (gi, (char *) "require_version");
- args = PyTuple_Pack (2, PyUnicode_FromString ("Gst"),
- PyUnicode_FromString ("1.0"));
- PyObject_CallObject (require_version, args);
- Py_DECREF (require_version);
- Py_DECREF (args);
- Py_DECREF (gi);
-
- gst = PyImport_ImportModule ("gi.repository.Gst");
- if (!gst) {
- g_critical ("can't find gi.repository.Gst");
- return FALSE;
- }
-
- if (we_initialized) {
- PyObject *tmp;
-
- dict = PyModule_GetDict (gst);
- if (!dict) {
- g_critical ("gi.repository.Gst is no dict");
- return FALSE;
- }
-
- tmp =
- PyObject_GetAttr (PyMapping_GetItemString (dict,
- "_introspection_module"), PyUnicode_FromString ("__dict__"));
-
- _PyGstElement_Type = PyMapping_GetItemString (tmp, "Element");
-
- if (!_PyGstElement_Type) {
- g_critical ("Could not get Gst.Element");
- return FALSE;
- }
-
- pyplugin = pygobject_new (G_OBJECT (plugin));
- if (!pyplugin || PyModule_AddObject (gst, "__plugin__", pyplugin) != 0) {
- g_critical ("Couldn't set __plugin__ attribute");
- if (pyplugin)
- Py_DECREF (pyplugin);
- return FALSE;
- }
- }
-
- gst_python_plugin_load (plugin);
-
- if (we_initialized) {
- /* We need to release the GIL since we're going back to C land */
- PyEval_SaveThread ();
- } else
- PyGILState_Release (state);
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR, python,
- "loader for plugins written in python",
- plugin_init, VERSION, "LGPL", PACKAGE_NAME, GST_ORIGIN)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment