Commit e94df82d authored by Łukasz Nowak's avatar Łukasz Nowak

- init integration of https://svn.erp5.org/repos/public/experimental/mysqlsenna.buildout/trunk

This is very disliked end-of-day-commit. Even worse - this is mostly copy & paste
from original. Work in progress.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@31890 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent dcc93a7e
......@@ -2,4 +2,5 @@
extends = official.cfg
parts +=
mysql-instance
zope-instance
This diff is collapsed.
Introduction
============
This is a buildout to create instance for MySQL Tritonn
Usage
=======
Afterwards, type:
$ bin/supervisord -e debug -n
If everything looks good:
$ bin/supervisord
Configure
=========
You can change the default ports by editing buildout.cfg:
[ports]
supervisor = 9001
mysql = 3306
Then rerun buildout:
$ bin/buildout
# This is data only part of buildout for mysql with senna
# made by Leonardo Rochael Almeida <leorochael@gmail.com> (thanks!)
# Original place: https://svn.erp5.org/repos/public/experimental/mysqlsenna.buildout/
[buildout]
parts =
ports
env
mysql-bin
mysql-admin
mysql_install_db
mycnf
supervisor
pidproxy
[ports]
recipe = plone.recipe.command
command =
echo The following configuration items are active for this buildout
echo Supervisor: ${:supervisor}
echo MySQL: ${:mysql}
supervisor = 10000
mysql = 10002
[env]
recipe = gocept.recipe.env
[mysql-bin]
recipe = collective.recipe.template
input = ${buildout:directory}/mysql-tritonn-5.0-instance/templates/mysql.in
output = ${buildout:directory}/bin/mysql
[mysql-admin]
recipe = collective.recipe.template
input = ${buildout:directory}/mysql-tritonn-5.0-instance/templates/mysqladmin.in
output = ${buildout:directory}/bin/mysqladmin[mysql_install_db]
[mysql_install_db]
recipe = plone.recipe.command
command =
${mysql-tritonn-5.0:location}/parts/bin/mysql_install_db --datadir=${mycnf:datadir}
echo
echo After starting supervisord, you may want to run:
echo ${buildout:directory}/parts/mysql/bin/mysqladmin -u root password 'new-password'
echo
update-command = ${mysql_install_db:command}
[mycnf]
recipe = plone.recipe.command
command =
echo
echo These options are passed to mysqld_safe: ${mycnf:opt}
echo
basedir=${mysql-tritonn-5.0:location}
datadir=${buildout:directory}/var
pid=${mycnf:datadir}/mysql.pid
err = ${mycnf:datadir}/log/mysql.err
sock = ${mycnf:datadir}/mysql.sock
opt = --port=${ports:mysql} --pid-file=${mycnf:pid} --log-error=${mycnf:err} --basedir=${mycnf:basedir} --datadir=${mycnf:datadir} --socket=${mycnf:sock}
[pidproxy]
# this should've been provided by collective.recipe.supervisor itself
recipe = zc.recipe.egg
eggs = supervisor
scripts = pidproxy
[supervisor]
recipe = collective.recipe.supervisor
port = ${ports:supervisor}
serverurl = http://127.0.0.1:${ports:supervisor}
pp = ${buildout:directory}/eggs/supervisor-3.0a7-py2.5.egg/supervisor/pidproxy.py
programs =
10 mysql ${buildout:bin-directory}/pidproxy [ ${mycnf:pid} ${mysql-tritonn-5.0:location}/bin/mysqld_safe ${mycnf:opt} ]
#!/bin/sh
${mysql-tritonn-5.0:location}/bin/mysql -P ${ports:mysql} -S ${mycnf:sock} -u root -p $*
#!/bin/sh
${mysql-tritonn-5.0:location}/bin/mysqladmin -P ${ports:mysql} -S ${mycnf:sock} -u root -p $*
This diff is collapsed.
Introduction
============
This is a buildout to compile MySQL with Senna
# This is software only part of buildout for mysql with senna
# made by Leonardo Rochael Almeida <leorochael@gmail.com> (thanks!)
# Original place: https://svn.erp5.org/repos/public/experimental/mysqlsenna.buildout/
#
# Original notes:
# This buildout Compiles senna and mysql 5.0.87 patched for senna.
# There are no patches for senna for mysql versions later than that.
#
# This buildout is extensively inspired on the LAMP buildout found on:
# http://aclark.net/team/aclark/blog/a-lamp-buildout-for-wordpress-and-other-php-apps
#
# dependencies: lib64termcap-devel lib64ncurses-devel flex bison
[buildout]
# adapt https://svn.erp5.org/repos/public/experimental/mysqlsenna.buildout/
parts =
senna
mysql-tritonn-5.0
[senna]
recipe = hexagonit.recipe.cmmi
url = http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fsenna%2F33763%2Fsenna-1.1.4.tar.gz
configure-options = --without-mecab --enable-nfkc=no
[mysql-tritonn-5.0]
recipe = hexagonit.recipe.cmmi
#url = http://mysql.mirrors.hoobly.com/Downloads/MySQL-5.1/mysql-5.1.35.tar.gz
url = http://downloads.mysql.com/archives/mysql-5.0/mysql-5.0.87.tar.gz
pre-configure-hook = ${buildout:directory}/mysql-tritonn-5.0/src/mysql_pre_configure.py:hook
configure-options = --with-senna --without-mecab
patch-options = -p1
# XXX: maybe download patches and use downloads directory?
patches =
# would be nice if the Senna or Tritonn folks released patches for more
# recent versions of MySQL
# ${buildout:directory}/patches/mysql-5.0.67-add-ylwrap.diff is really required?
${buildout:directory}/mysql-tritonn-5.0/patches/tritonn-1.0.12-mysql-5.0.87.diff
environment =
PATH =${senna:location}/bin:%(PATH)s
diff -Nru mysql-5.0.67-orig/ylwrap mysql-5.0.67/ylwrap
--- mysql-5.0.67-orig/ylwrap 1970-01-01 01:00:00.000000000 +0100
+++ mysql-5.0.67/ylwrap 2009-10-11 23:58:20.000000000 +0200
@@ -0,0 +1,223 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2007-11-22.22
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
+# 2007 Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case "$1" in
+ '')
+ echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
+ exit 1
+ ;;
+ --basedir)
+ basedir=$2
+ shift 2
+ ;;
+ -h|--h*)
+ cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+ INPUT is the input file
+ OUTPUT is one file PROG generates
+ DESIRED is the file we actually want instead of OUTPUT
+ PROGRAM is program to run
+ ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v|--v*)
+ echo "ylwrap $scriptversion"
+ exit $?
+ ;;
+esac
+
+
+# The input.
+input="$1"
+shift
+case "$input" in
+ [\\/]* | ?:[\\/]*)
+ # Absolute path; do nothing.
+ ;;
+ *)
+ # Relative path. Make it absolute.
+ input="`pwd`/$input"
+ ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+ if test "$1" = "--"; then
+ shift
+ break
+ fi
+ pairlist="$pairlist $1"
+ shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+ [\\/]* | ?:[\\/]*) ;;
+ *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines. But that might take us over the 14-char limit.
+dirname=ylwrap$$
+trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+ 0) "$prog" "$input" ;;
+ *) "$prog" "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+ set X $pairlist
+ shift
+ first=yes
+ # Since DOS filename conventions don't allow two dots,
+ # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+ # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+ y_tab_nodot="no"
+ if test -f y_tab.c || test -f y_tab.h; then
+ y_tab_nodot="yes"
+ fi
+
+ # The directory holding the input.
+ input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
+ # Quote $INPUT_DIR so we can use it in a regexp.
+ # FIXME: really we should care about more than `.' and `\'.
+ input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
+
+ while test "$#" -ne 0; do
+ from="$1"
+ # Handle y_tab.c and y_tab.h output by DOS
+ if test $y_tab_nodot = "yes"; then
+ if test $from = "y.tab.c"; then
+ from="y_tab.c"
+ else
+ if test $from = "y.tab.h"; then
+ from="y_tab.h"
+ fi
+ fi
+ fi
+ if test -f "$from"; then
+ # If $2 is an absolute path name, then just use that,
+ # otherwise prepend `../'.
+ case "$2" in
+ [\\/]* | ?:[\\/]*) target="$2";;
+ *) target="../$2";;
+ esac
+
+ # We do not want to overwrite a header file if it hasn't
+ # changed. This avoid useless recompilations. However the
+ # parser itself (the first file) should always be updated,
+ # because it is the destination of the .y.c rule in the
+ # Makefile. Divert the output of all other files to a temporary
+ # file so we can compare them to existing versions.
+ if test $first = no; then
+ realtarget="$target"
+ target="tmp-`echo $target | sed s/.*[\\/]//g`"
+ fi
+ # Edit out `#line' or `#' directives.
+ #
+ # We don't want the resulting debug information to point at
+ # an absolute srcdir; it is better for it to just mention the
+ # .y file with no path.
+ #
+ # We want to use the real output file name, not yy.lex.c for
+ # instance.
+ #
+ # We want the include guards to be adjusted too.
+ FROM=`echo "$from" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+ TARGET=`echo "$2" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+ sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
+ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+ # Check whether header files must be updated.
+ if test $first = no; then
+ if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+ echo "$2" is unchanged
+ rm -f "$target"
+ else
+ echo updating "$2"
+ mv -f "$target" "$realtarget"
+ fi
+ fi
+ else
+ # A missing file is only an error for the first file. This
+ # is a blatant hack to let us support using "yacc -d". If -d
+ # is not specified, we don't want an error when the header
+ # file is "missing".
+ if test $first = yes; then
+ ret=1
+ fi
+ fi
+ shift
+ shift
+ first=no
+ done
+else
+ ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
import os
# the comand below assumes there is only one sub-directory under the
# 'compile-directory', which is why the cd .../* would work.
CMDS = """
cd %s/*
libtoolize -c -f
aclocal-1.9
autoheader
automake-1.9 -c -a -i
autoconf
touch sql/sql_yacc.yy
""".strip()
def hook(options, buildout):
os.system(CMDS % options['compile-directory'])
......@@ -6,6 +6,7 @@ extends =
erp5-products/buildout.cfg
haproxy/buildout.cfg
mysql-tritonn-5.0/buildout.cfg
mysql-tritonn-5.0-instance/buildout.cfg
oood/buildout.cfg
imagemagick/buildout.cfg
openoffice/buildout.cfg
......
......@@ -2,4 +2,5 @@
extends = official.cfg
parts +=
mysql-instance
zope-instance
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment