X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=config%2Fpandora-plugin;h=91302914c3c1c40fbb251ceae52d40ed809f5e33;hb=b175c6025c67cb8fa756750d53fb96fd888076de;hp=3ffcaafff77009ee277654e34fe56aa9b9cdac67;hpb=3cc0dd0ea0b37e346bbc187042c76149f2870ebf;p=awesomized%2Flibmemcached diff --git a/config/pandora-plugin b/config/pandora-plugin index 3ffcaaff..91302914 100755 --- a/config/pandora-plugin +++ b/config/pandora-plugin @@ -1,6 +1,6 @@ #!/usr/bin/python -# Copyright (C) 2009 Sun Microsystems +# Copyright (C) 2009 Sun Microsystems, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,6 +25,7 @@ import subprocess plugin_am_file=None plugin_ac_file=None +plugin_doc_index=None class ChangeProtectedFile(object): @@ -130,9 +131,16 @@ VERSION=$(PANDORA_RELEASE_VERSION) pkgplugindir=%(pkgplugindir)s EXTRA_DIST = plugin.ini +noinst_HEADERS= +nobase_include_HEADERS= +check_PROGRAMS= +noinst_LTLIBRARIES= +bin_PROGRAMS= + + """ % plugin) if plugin['headers'] != "": - plugin_file.write("noinst_HEADERS = %(headers)s\n" % plugin) + plugin_file.write("noinst_HEADERS += %(headers)s\n" % plugin) if plugin['install_headers'] != "": plugin_file.write("nobase_include_HEADERS += %(install_headers)s\n" % plugin) if plugin['testsuite']: @@ -191,8 +199,16 @@ def write_plugin(plugin, plugin_ini_list): write_plugin_ac(plugin, plugin_ac_file) write_plugin_am(plugin, plugin_am_file) + write_plugin_docs(plugin, plugin_doc_index) plugin['writing_status'] = 'done' +def write_plugin_docs(plugin, doc_index): + if plugin['docs'] is not None and os.path.isdir("docs/plugins"): + if not os.path.exists(os.path.join("docs/plugins",plugin["name"])): + os.symlink(os.path.abspath(plugin["docs"]), os.path.join("docs/plugins",plugin["name"])) + doc_index.write(""" + %(name)s/index""" % plugin) + def write_plugin_ac(plugin, plugin_ac): # # Write plugin config instructions into plugin.ac file. @@ -229,8 +245,8 @@ AS_HELP_STRING([--without-%(name_with_dashes)s-plugin],[Disable building %(title ]) AC_ARG_ENABLE([%(name_with_dashes)s-plugin],[ dnl indented wierd to make the help output correct -AS_HELP_STRING([--enable-%(name_with_dashes)s-plugin],[Build %(title)s. @<:@default=%(default_yesno)s@:>@]) -AS_HELP_STRING([--disable-%(name_with_dashes)s-plugin],[Disable building %(title)s]) +AS_HELP_STRING([--enable-%(name_with_dashes)s-plugin],[Enable loading %(title)s by default. @<:@default=%(default_yesno)s@:>@]) +AS_HELP_STRING([--disable-%(name_with_dashes)s-plugin],[Disable loading %(title)s by default.]) ], [enable_%(name)s_plugin="$enableval"], [enable_%(name)s_plugin=%(default_yesno)s]) @@ -271,11 +287,13 @@ AS_IF([test "x$with_%(name)s_plugin" = "xyes"], if plugin['static']: plugin_ac.write(""" AS_IF([test "x$enable_%(name)s_plugin" = "xyes"],[ - pandora_builtin_list="%(module_name)s,${pandora_builtin_list}" - pandora_builtin_symbols_list="_drizzled_%(module_name)s_plugin_,${pandora_builtin_symbols_list}" - pandora_plugin_libs="${pandora_plugin_libs} \${top_builddir}/%(root_plugin_dir)s/%(libname)s.la" + pandora_builtin_load_list="%(module_name)s,${pandora_builtin_load_list}" + pandora_builtin_load_symbols_list="_drizzled_%(module_name)s_plugin_,${pandora_builtin_load_symbols_list}" PANDORA_PLUGIN_DEP_LIBS="${PANDORA_PLUGIN_DEP_LIBS} %(plugin_dep_libs)s" ]) + pandora_builtin_list="%(module_name)s,${pandora_builtin_list}" + pandora_builtin_symbols_list="_drizzled_%(module_name)s_plugin_,${pandora_builtin_symbols_list}" + pandora_plugin_libs="${pandora_plugin_libs} \${top_builddir}/%(root_plugin_dir)s/%(libname)s.la" """ % plugin) else: @@ -320,11 +338,14 @@ def expand_plugin_ini(plugin): plugin['tests']= fix_file_paths(plugin, plugin['tests']) # Make a yes/no version for autoconf help messages - if plugin['load_by_default'] or plugin['static']: + if plugin['load_by_default']: plugin['default_yesno']="yes" else: plugin['default_yesno']="no" + if plugin.has_key('extra_dist'): + plugin['extra_dist']=" ".join([os.path.join(plugin['rel_path'],f) for f in plugin['extra_dist'].split()]) + plugin['build_conditional_tag']= "BUILD_%s_PLUGIN" % plugin['name'].upper() plugin['name_with_dashes']= plugin['name'].replace('_','-') @@ -348,18 +369,24 @@ def find_testsuite(plugin_dir): return "" return None +def find_docs(plugin_dir): + if os.path.isfile(os.path.join(plugin_dir, "docs", "index.rst")): + return os.path.join(plugin_dir, "docs") + def read_plugin_ini(plugin_dir): + sources_default="" if plugin_dir == ".": plugin_name="**OUT-OF-TREE**" + module_name="**OUT-OF-TREE**" else: - short_name=os.path.basename(plugin_dir) + sources_default="%s.cc" % os.path.basename(plugin_dir) plugin_name = plugin_dir[plugin_dir.index(config['root_plugin_dir']) + len(config['root_plugin_dir']) + 1:] module_name = plugin_name.replace("/", config['module_name_separator']).replace("\\", config['module_name_separator']) plugin_name = plugin_name.replace("/", config['plugin_name_separator']).replace("\\", config['plugin_name_separator']) plugin_file= os.path.join(plugin_dir,config['plugin_ini_fname']) - plugin_defaults= dict(sources="%s.cc" % short_name, + plugin_defaults= dict(sources=sources_default, headers="", install_headers="", cflags="", @@ -394,7 +421,6 @@ def read_plugin_ini(plugin_dir): sys.exit(1) if not plugin.has_key('version'): plugin['version'] = config['default_plugin_version'] - if plugin.has_key('load_by_default'): plugin['load_by_default']=parser.getboolean('plugin','load_by_default') if plugin.has_key('disabled'): @@ -404,12 +430,19 @@ def read_plugin_ini(plugin_dir): else: plugin['enabled']="yes" if plugin.has_key('static'): - plugin['static']= parser.getboolean('plugin','static') + try: + plugin['static']= parser.getboolean('plugin','static') + except: + if plugin['static'][:5] == os.sys.platform[:5]: + plugin['static']= True + else: + plugin['static']= False if plugin.has_key('install'): plugin['install']= parser.getboolean('plugin','install') if plugin.has_key('testsuite'): if plugin['testsuite'] == 'disable': plugin['testsuite']= False + plugin['dist_testsuite']= find_testsuite(plugin_dir) else: plugin_testsuite= find_testsuite(plugin_dir) plugin['testsuitedir']=plugin_testsuite @@ -417,6 +450,7 @@ def read_plugin_ini(plugin_dir): plugin['testsuite']=True else: plugin['testsuite']=False + plugin['docs']= find_docs(plugin_dir) plugin['cflags']+= ' ' + config['extra_cflags'] plugin['cppflags']+= ' ' + config['extra_cppflags'] @@ -471,6 +505,8 @@ EXTRA_DIST += %(rel_path)s/plugin.ini %(rel_path)s/plugin.ini: """ % plugin) + if plugin.has_key('extra_dist') and plugin['extra_dist'] != "": + plugin_am.write("EXTRA_DIST += %(extra_dist)s\n" % plugin) if plugin['headers'] != "": plugin_am.write("noinst_HEADERS += %(headers)s\n" % plugin) if plugin['install_headers'] != "": @@ -478,6 +514,10 @@ EXTRA_DIST += %(rel_path)s/plugin.ini if plugin['testsuite']: if plugin.has_key('testsuitedir') and plugin['testsuitedir'] != "": plugin_am.write("EXTRA_DIST += %(rel_path)s/%(testsuitedir)s\n" % plugin) + if plugin.has_key('dist_testsuite') and plugin['dist_testsuite'] != "": + plugin_am.write("EXTRA_DIST += %(rel_path)s/%(dist_testsuite)s\n" % plugin) + if plugin['docs'] is not None: + plugin_am.write("EXTRA_DIST += ${top_srcdir}/%(rel_path)s/docs/*.rst\n" % plugin) if plugin['static']: plugin_am.write(""" %(root_plugin_dir)s_%(plugin_prefix)s%(name)s_dir=${top_srcdir}/%(rel_path)s @@ -593,7 +633,6 @@ os.path.walk(os.path.join(config['top_srcdir'], accumulate_plugins, plugin_list) - if not os.path.exists("config/pandora-plugin.am") or "write" in actions: plugin_am_file = ChangeProtectedFile(os.path.join('config', 'pandora-plugin.am')) plugin_am_file.write(""" @@ -624,6 +663,17 @@ if not os.path.exists("config/pandora-plugin.ac") or "write" in actions: plugin_ac_file = ChangeProtectedFile(os.path.join('config', 'pandora-plugin.ac')) plugin_ac_file.write("dnl Generated file, run make to rebuild\n") +if os.path.exists("docs/plugins"): + if not os.path.exists("docs/plugins/list.rst") or "write" in actions: + plugin_doc_index = ChangeProtectedFile("docs/plugins/list.rst") + plugin_doc_index.write(""" +Plugin Documentation +==================== + +.. toctree:: + :maxdepth: 2 +""") + if os.path.exists('plugin.ini'): # Are we in a plugin dir which wants to have a self-sufficient build system? @@ -665,3 +715,5 @@ if plugin_am_file is not None: plugin_am_file.close() if plugin_ac_file is not None: plugin_ac_file.close() +if plugin_doc_index is not None: + plugin_doc_index.close()