aboutsummaryrefslogtreecommitdiff
path: root/buildtools
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2011-10-19 00:33:20 +0000
committerRob Austein <sra@hactrn.net>2011-10-19 00:33:20 +0000
commit4175936042112fb797481dc5a23a153572f08b8b (patch)
tree6a31c56d71e547e0b70c84a72ac737243aed4d81 /buildtools
parente35e9b57df45c8dc8ef00f43efc3c0e0b6ab88c7 (diff)
Wrap SQL schemas up so rpki-sql-setup doesn't have to be run in the
build tree (see #8). This appears to work properly but needs more testing, leaving ticket open for now. Also cleaned up a few things that should have moved from scripts/ to buildtools/ a long time ago. svn path=/trunk/; revision=4056
Diffstat (limited to 'buildtools')
-rw-r--r--buildtools/graphviz-sql.sh41
-rw-r--r--buildtools/make-relaxng.py54
-rw-r--r--buildtools/make-sql-schemas.py52
-rw-r--r--buildtools/pylint.rc201
4 files changed, 348 insertions, 0 deletions
diff --git a/buildtools/graphviz-sql.sh b/buildtools/graphviz-sql.sh
new file mode 100644
index 00000000..21a81146
--- /dev/null
+++ b/buildtools/graphviz-sql.sh
@@ -0,0 +1,41 @@
+#!/bin/sh -
+# $Id$
+
+# Copyright (C) 2007--2008 American Registry for Internet Numbers ("ARIN")
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# This uses the SQL::Translator package (aka "SQL Fairy") to parse
+# a MYSQL schema and diagram the result using GraphViz.
+#
+# SQL::Translator appears to be pretty good at analyzing SQL, but is
+# badly confused about how to format record labels in the "dot"
+# language. I should send the author a patch, but simplest solution
+# for now is just to whack sqlt-graph's broken output into shape.
+#
+# On FreeBSD, SQL Fairy is /usr/ports/databases/p5-SQL-Translator.
+
+sqlt-graph --db MySQL --output-type canon --show-datatypes --show-constraints $1 |
+SOURCE="$1" perl -0777 -pe '
+ s/\\\n//g;
+ s/ +/ /g;
+ s/\\\|/|/g;
+ s/\\{([a-z0-9_]+)\|/${1}|{/gi;
+ s/-\\ +//g;
+ s/\\ \\l/|/g;
+ s/\|\\l \\}/}/g;
+ s/\|\\}/}/g;
+ s/{\n/{\n\tedge [arrowtail=none, arrowhead=crow];\n/;
+ s/\[arrowhead=normal\]/[arrowtail=none, arrowhead=crow]/g;
+ s=^=// Automatically generated from $ENV{SOURCE}\n\n=;
+'
diff --git a/buildtools/make-relaxng.py b/buildtools/make-relaxng.py
new file mode 100644
index 00000000..62decbae
--- /dev/null
+++ b/buildtools/make-relaxng.py
@@ -0,0 +1,54 @@
+"""
+Script to generate rpki/relaxng.py.
+
+$Id$
+
+Copyright (C) 2009 Internet Systems Consortium ("ISC")
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Portions copyright (C) 2007--2008 American Registry for Internet Numbers ("ARIN")
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+"""
+
+schemas = ("left_right", "up_down", "publication")
+
+format_1 = """\
+# Automatically generated, do not edit.
+
+import lxml.etree
+"""
+
+format_2 = """\
+## @var %(name)s
+## Parsed RelaxNG %(name)s schema
+%(name)s = lxml.etree.RelaxNG(lxml.etree.fromstring('''%(rng)s'''))
+"""
+
+print format_1
+
+for name in schemas:
+ print format_2 % {
+ "name" : name,
+ "rng" : open(name.replace("_", "-") + "-schema.rng").read() }
diff --git a/buildtools/make-sql-schemas.py b/buildtools/make-sql-schemas.py
new file mode 100644
index 00000000..700d2b9c
--- /dev/null
+++ b/buildtools/make-sql-schemas.py
@@ -0,0 +1,52 @@
+"""
+Script to generate rpki/relaxng.py.
+
+$Id$
+
+Copyright (C) 2009-2011 Internet Systems Consortium ("ISC")
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Portions copyright (C) 2007--2008 American Registry for Internet Numbers ("ARIN")
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+"""
+
+schemas = ("rpkid", "irdbd", "pubd")
+
+format_1 = """\
+# Automatically generated, do not edit.
+"""
+
+format_2 = """\
+## @var %(name)s
+## SQL schema %(name)s
+%(name)s = '''%(sql)s'''
+"""
+
+print format_1
+
+for name in schemas:
+ print format_2 % {
+ "name" : name,
+ "sql" : open(name + ".sql").read() }
diff --git a/buildtools/pylint.rc b/buildtools/pylint.rc
new file mode 100644
index 00000000..5e555f45
--- /dev/null
+++ b/buildtools/pylint.rc
@@ -0,0 +1,201 @@
+# $Id$
+#
+# Preliminary experiment with pylint. Its default coding style
+# differs enough from mine that it's not really usable without
+# customization. Useful options: --help, --generate-rcfile.
+
+[MASTER]
+
+profile=no
+ignore=.svn
+persistent=yes
+cache-size=500
+load-plugins=
+
+[MESSAGES CONTROL]
+
+# Enable only checker(s) with the given id(s). This option conflicts with the
+# disable-checker option
+#enable-checker=
+
+# Enable all checker(s) except those with the given id(s). This option
+# conflicts with the enable-checker option
+#disable-checker=
+
+# Enable all messages in the listed categories (IRCWEF).
+#enable-msg-cat=
+
+# Disable all messages in the listed categories (IRCWEF).
+disable-msg-cat=
+
+# Enable the message(s) with the given id(s).
+#enable-msg=
+
+# Disable the message(s) with the given id(s).
+disable-msg=R0801,R0903,R0913,C0321,R0904,W0201,E1101,W0614,C0301,R0901,C0302,R0902,R0201,W0613,R0912,R0915,W0703,W0212,R0914,W0603
+
+[REPORTS]
+
+output-format=parseable
+include-ids=yes
+files-output=no
+reports=no
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+comment=no
+
+[VARIABLES]
+
+# Tells wether we should check for unused import in __init__ files.
+init-import=no
+
+# A regular expression matching names used for dummy variables (i.e. not used).
+dummy-variables-rgx=ignored
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+additional-builtins=
+
+[TYPECHECK]
+
+# Tells wether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=no
+
+# List of classes names for which member attributes should not be checked
+# (useful for classes with attributes dynamicaly set).
+ignored-classes=SQLObject
+
+# When zope mode is activated, add a predefined set of Zope acquired attributes
+# to generated-members.
+zope=no
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E0201 when accessed.
+generated-members=
+
+[BASIC]
+
+# Required attributes for module, separated by a comma
+required-attributes=
+
+# Regular expression which should only match functions or classes name which do
+# not require a docstring
+no-docstring-rgx=__.*__|usage
+
+# Regular expression which should only match correct module names
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Regular expression which should only match correct module level names
+const-rgx=(([a-zA-Z_][a-zA-Z0-9_]*)|(__.*__))$
+
+# Regular expression which should only match correct class names
+class-rgx=[a-zA-Z_][a-zA-Z0-9_]+$
+
+# Regular expression which should only match correct function names
+function-rgx=[a-zA-Z_][a-zA-Z0-9_]+$
+
+# Regular expression which should only match correct method names
+method-rgx=[a-zA-Z_][a-zA-Z0-9_]+$
+
+# Regular expression which should only match correct instance attribute names
+attr-rgx=[a-zA-Z_][a-zA-Z0-9_]*$
+
+# Regular expression which should only match correct argument names
+argument-rgx=[a-zA-Z_][a-zA-Z0-9_]*$
+
+# Regular expression which should only match correct variable names
+variable-rgx=[a-zA-Z_][a-zA-Z0-9_]*$
+
+# Regular expression which should only match correct list comprehension /
+# generator expression variable names
+inlinevar-rgx=[a-zA-Z_][a-zA-Z0-9_]*$
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=
+
+# List of builtins function names that should not be used, separated by a comma
+bad-functions=map,filter,apply,input
+
+[IMPORTS]
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
+
+# Create a graph of every (i.e. internal and external) dependencies in the
+# given file (report R0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report R0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report R0402 must
+# not be disabled)
+int-import-graph=
+
+[DESIGN]
+
+# Maximum number of arguments for function / method
+max-args=5
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branchs=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+[CLASSES]
+
+# List of interface methods to ignore, separated by a comma.
+ignore-iface-methods=
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,__new__,setUp
+
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=80
+
+# Maximum number of lines in a module
+max-module-lines=1000
+
+# String used as indentation unit.
+indent-string=' '
+
+[SIMILARITIES]
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
+
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,XXX,TODO