diff --git a/CHANGES.txt b/CHANGES.txt index 7c7a38458e224a4f4c423db31c427649ee1cfc25..24aa9f7da384819c5e306962ccac970b37d0ca34 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,11 +1,21 @@ Changes ======= -0.46 (Unreleased) +0.48 (Unreleased) ----------------- * No change yet. +0.47 (2012-04-19) +----------------- + + * Slap Test Agent [Yingjie Xu] + +0.46 (2012/04/12) +----------------- + + * xvfb and firefox initial release [Romain Courteaud] + 0.45 (2012-03-29) ----------------- diff --git a/component/firefox/buildout.cfg b/component/firefox/buildout.cfg index b55f70653aa8868102cf284871f62e3dfeabd41b..dc1160d3cb8468e10b6ce7b52bf8279eab79da57 100644 --- a/component/firefox/buildout.cfg +++ b/component/firefox/buildout.cfg @@ -6,6 +6,8 @@ extends = ../dbus/buildout.cfg ../gtk-2/buildout.cfg ../libpng/buildout.cfg + ../dash/buildout.cfg + ../openssl/buildout.cfg parts = firefox @@ -30,11 +32,11 @@ script = self.copyTree(workdir, "%(location)s") wrapper_location = os.path.join("%(location)s", "firefox-slapos") wrapper = open(wrapper_location, 'w') - wrapper.write("""#!/bin/sh + wrapper.write("""#!${dash:location}/bin/dash cd %(location)s - export LD_LIBRARY_PATH=${libXrender:location}/lib/:${fontconfig:location}/lib/:${dbus:location}/lib/:${dbus-glib:location}/lib/:${pango:location}/lib:${cairo:location}/lib:${glib:location}/lib:${gtk-2:location}/lib:${atk:location}/lib:${gdk-pixbuf:location}/lib:${libXt:location}/lib:${libpng:location}/lib:${libSM:location}/lib:${libICE:location}/lib:${alsa:location}/lib:%(location)s + export LD_LIBRARY_PATH=%(location)s:${libXrender:location}/lib/:${freetype:location}/lib/:${fontconfig:location}/lib/:${libX11:location}/lib/:${bzip2:location}/lib/:${libXext:location}/lib/:${libXt:location}/lib/:${zlib:location}/lib/:${libXcursor:location}/lib/:${gtk-2:location}/lib/:${cairo:location}/lib/:${pango:location}/lib/:${glib:location}/lib/:${atk:location}/lib/:${gdk-pixbuf:location}/lib/:${alsa:location}/lib/:${libpng:location}/lib/:${libSM:location}/lib/:${libICE:location}/lib:${libxml2:location}/lib:${openssl:location}/lib export PATH=${fontconfig:location}/bin:$PATH - %(location)s/firefox $*""") + exec %(location)s/firefox $*""") wrapper.close() os.chmod(wrapper_location, 0777) diff --git a/component/fontconfig/buildout.cfg b/component/fontconfig/buildout.cfg index 37eb1d0bae94764c5701fcd10445d6ec62ce216c..228953fa4da14a3782e212448956e46e11eb3475 100644 --- a/component/fontconfig/buildout.cfg +++ b/component/fontconfig/buildout.cfg @@ -6,6 +6,7 @@ extends = ../pkgconfig/buildout.cfg ../bzip2/buildout.cfg ../zlib/buildout.cfg + ../bzip2/buildout.cfg parts = fontconfig diff --git a/component/gnutls/buildout.cfg b/component/gnutls/buildout.cfg index 4bb35dd949bbca6932c0385928880cca3f4998e3..8e92bfc932f8bd7c8b39380e7dc7f1ec4ae34162 100644 --- a/component/gnutls/buildout.cfg +++ b/component/gnutls/buildout.cfg @@ -13,13 +13,13 @@ md5sum = 7c2710ef439f82ac429b88fec88e9a4c [gcrypt] recipe = hexagonit.recipe.cmmi -url = ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.4.6.tar.gz -md5sum = bfd45922eefb8a24d598af77366220d4 +url = ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.gz +md5sum = 78f8f8bec4580f75b25816f7896d0389 configure-options = --with-gpg-error-prefix=${gpg-error:location} environment = CPPFLAGS=-I${gpg-error:location}/include - LDFLAGS=-Wl,-rpath -Wl,${gpg-error:location}/lib -Wl,${gpg-error:location}/lib/libgpg-error.so.0 + LDFLAGS=-lgpg-error -L${gpg-error:location}/lib -Wl,-rpath=${gpg-error:location}/lib [gnutls] # XXX-Cedric : update to latest gnutls @@ -28,7 +28,8 @@ url = ftp://ftp.gnupg.org/gcrypt/gnutls/gnutls-2.8.6.tar.bz2 md5sum = eb0a6d7d3cb9ac684d971c14f9f6d3ba configure-options = --with-libgcrypt-prefix=${gcrypt:location} + --disable-static environment = CPPFLAGS=-I${zlib:location}/include -I${readline:location}/include -I${ncurses:location}/include -I${ncurses:location}/include/ncursesw -I${gcrypt:location}/include -I${gpg-error:location}/include - LDFLAGS=-L${readline:location}/lib -L${ncurses:location}/lib -L${gcrypt:location}/lib -Wl,-rpath -Wl,${zlib:location}/lib -Wl,-rpath -Wl,${readline:location}/lib -Wl,-rpath -Wl,${ncurses:location}/lib -Wl,-rpath -Wl,${gcrypt:location}/lib -Wl,-rpath -Wl,${gpg-error:location}/lib -Wl,${gcrypt:location}/lib/libgcrypt.so.11 + LDFLAGS=-lgcrypt -L${readline:location}/lib -Wl,-rpath=${readline:location}/lib -L${ncurses:location}/lib -Wl,-rpath=${ncurses:location}/lib -L${gcrypt:location}/lib -Wl,-rpath=${gcrypt:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${gpg-error:location}/lib -Wl,-rpath=${gpg-error:location}/lib PKG_CONFIG=${zlib:location}/lib/pkgconfig diff --git a/component/gtk-2/buildout.cfg b/component/gtk-2/buildout.cfg index 611f34efb7ce7f7283da2d9b8f9e2d9bb4172d27..57314273d8cacc31a91951d207c27bd8b2da77a7 100644 --- a/component/gtk-2/buildout.cfg +++ b/component/gtk-2/buildout.cfg @@ -37,8 +37,8 @@ configure-options = environment = PATH=${glib:location}/bin:${freetype:location}/bin:${pkgconfig:location}/bin:%(PATH)s PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${fontconfig:location}/lib/pkgconfig:${freetype:location}/lib/pkgconfig:${cairo:location}/lib/pkgconfig::${libXrender:location}/lib/pkgconfig - CPPFLAGS=-I${cairo:location}/include/cairo - LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${libXrender:location}/lib -Wl,-rpath=${libXrender:location}/lib -lXrender + CPPFLAGS=-I${cairo:location}/include/cairo -I${libX11:location}/include/X11 -I${libxcb:location}/include/xcb -I${libXau:location}/include/X11 -I${bzip2:location}/include -L${libXrender:location}/include -I${zlib:location}/include + LDFLAGS=-L${cairo:location}/lib -Wl,-rpath=${cairo:location}/lib -L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${libxcb:location}/lib -Wl,-rpath=${libxcb:location}/lib -L${libXau:location}/lib -Wl,-rpath=${libXau:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${bzip2:location}/lib -L${libXrender:location}/lib -Wl,-rpath=${libXrender:location}/lib -lXrender -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib LD_LIBRARY_PATH=${render:location}/lib:${libX11:location}/lib:${libXrender:location}/lib [gdk-pixbuf] @@ -74,9 +74,10 @@ configure-options = --disable-cups --disable-papi --enable-explicit-deps + --disable-xinerama environment = PATH=${gdk-pixbuf:location}/bin:${glib:location}/bin:${pkgconfig:location}/bin:%(PATH)s - PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${gettext:location}/lib/pkgconfig:${fontconfig:location}/lib/pkgconfig:${freetype:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${cairo:location}/lib/pkgconfig:${atk:location}/lib/pkgconfig:${gdk-pixbuf:location}/lib/pkgconfig:${pango:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libXext:location}/lib/pkgconfig:${pixman:location}/lib/pkgconfig:${libpng:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libXrender:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xcbproto:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig - CPPFLAGS=-I${libtiff:location}/include -I${libjpeg:location}/include -I${libpng:location}/include -I${libX11:location}/include/ -I${xproto:location}/include -I${kbproto:location}/include -I${libXrender:location}/include -I${render:location}/include -I${libXext:location}/include -I${cairo:location}/include/cairo - LDFLAGS=-L${gettext:location}/lib -L${glib:location}/lib -L${libtiff:location}/lib -L${libjpeg:location}/lib -L${libpng:location}/lib -L${zlib:location}/lib -L${libXrender:location}/lib -L${libX11:location}/lib -L${libXext:location}/lib -L${pango:location}/lib + PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${fontconfig:location}/lib/pkgconfig:${freetype:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${cairo:location}/lib/pkgconfig:${atk:location}/lib/pkgconfig:${gdk-pixbuf:location}/lib/pkgconfig:${pango:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libXext:location}/lib/pkgconfig:${pixman:location}/lib/pkgconfig:${libpng:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libXrender:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xcbproto:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig + CPPFLAGS=-I${libtiff:location}/include -I${libjpeg:location}/include -I${libpng:location}/include -I${libX11:location}/include/ -I${xproto:location}/include -I${kbproto:location}/include -I${libXrender:location}/include -I${render:location}/include -I${libXext:location}/include -I${cairo:location}/include/cairo -I${zlib:location}/include -I${bzip2:location}/include -I${libXdmcp:location}/include -I${glib:location}/include/gio-unix-2.0 -I${glib:location}/include/glib-2.0 -I${glib:location}/include -I${atk:location}/include/atk-1.0 + LDFLAGS=-L${libtiff:location}/lib -Wl,-rpath=${libtiff:location}/lib -L${libjpeg:location}/lib -Wl,-rpath=${libjpeg:location}/lib -L${libpng:location}/lib -Wl,-rpath=${libpng:location}/lib -L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${xproto:location}/lib -Wl,-rpath=${xproto:location}/lib -L${kbproto:location}/lib -Wl,-rpath=${kbproto:location}/lib -L${libXrender:location}/lib -Wl,-rpath=${libXrender:location}/lib -L${render:location}/lib -Wl,-rpath=${render:location}/lib -L${libXext:location}/lib -Wl,-rpath=${libXext:location}/lib -L${cairo:location}/lib -Wl,-rpath=${cairo:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${bzip2:location}/lib -L${libXdmcp:location}/lib -Wl,-rpath=${libXdmcp:location}/lib -L${glib:location}/lib -Wl,-rpath=${glib:location}/lib -L${atk:location}/lib -Wl,-rpath=${atk:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib LD_LIBRARY_PATH=${glib:location}/lib:${gettext:location}/lib:${libX11:location}/lib diff --git a/component/xorg/buildout.cfg b/component/xorg/buildout.cfg index edc919ff94c7b4030ce8f66c67fb5d3eeb32dfa5..a0f01585a59a1197d9197c5c878acb2d9119d2e8 100644 --- a/component/xorg/buildout.cfg +++ b/component/xorg/buildout.cfg @@ -7,12 +7,19 @@ extends = ../libxslt/buildout.cfg ../pkgconfig/buildout.cfg ../zlib/buildout.cfg + ../bzip2/buildout.cfg ../openssl/buildout.cfg + ../gnutls/buildout.cfg + ../autoconf/buildout.cfg + ../automake/buildout.cfg + ../libtool/buildout.cfg + ../dash/buildout.cfg parts = libXdmcp libXext libXau + libXinerama libSM libXrender @@ -48,10 +55,21 @@ environment = PKG_CONFIG_PATH=${xorg-util-macros:location}/share/pkgconfig PATH=${pkgconfig:location}/bin:%(PATH)s +[xtrans-tmp-env-patch] +recipe = hexagonit.recipe.download +url = ${:_profile_base_location_}/${:filename} +download-only = true +filename = xtrans_tmp_env.patch +md5sum = 37d82a3b6009113023599632117a6855 + [xtrans] recipe = hexagonit.recipe.cmmi url = http://www.x.org/releases/X11R7.6/src/lib/xtrans-1.2.6.tar.bz2 md5sum = c66f9ffd2da4fb012220c6c40ebc7609 +patches = + ${xtrans-tmp-env-patch:location}/${xtrans-tmp-env-patch:filename} +patches_md5sum = ${xtrans-tmp-env-patch:md5sum} +patch-options = -p1 configure-options = --disable-docs --without-xmlto @@ -83,10 +101,21 @@ recipe = hexagonit.recipe.cmmi url = http://www.x.org/releases/X11R7.6/src/xcb/libpthread-stubs-0.3.tar.bz2 md5sum = e8fa31b42e13f87e8f5a7a2b731db7ee +[libxcb-tmp-env-patch] +recipe = hexagonit.recipe.download +url = ${:_profile_base_location_}/${:filename} +download-only = true +filename = xcb_tmp_env.patch +md5sum = 61f39878120ba434a169e24cae2af862 + [libxcb] recipe = hexagonit.recipe.cmmi url = http://www.x.org/releases/X11R7.6/src/xcb/libxcb-1.7.tar.bz2 md5sum = 925699df361b99491165ebc12068056b +patches = + ${libxcb-tmp-env-patch:location}/${libxcb-tmp-env-patch:filename} +patches_md5sum = ${libxcb-tmp-env-patch:md5sum} +patch-options = -p1 configure-options = --disable-static --disable-build-docs @@ -153,7 +182,7 @@ configure-options = --without-xmlto --without-fop environment = - PKG_CONFIG_PATH=${xorg-util-macros:location}/share/pkgconfig:${xproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${xtrans:location}/share/pkgconfig:${libxcb:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${inputproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig + PKG_CONFIG_PATH=${xproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${xtrans:location}/share/pkgconfig:${libxcb:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${inputproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig LD_LIBRARY_PATH=${xproto:location}/lib:${xextproto:location}/lib:${libxcb:location}/lib LD_RUN_PATH=${xproto:location}/lib:${xextproto:location}/lib:${libxcb:location}/lib PATH=${pkgconfig:location}/bin:%(PATH)s @@ -243,6 +272,7 @@ environment = LD_LIBRARY_PATH=${xproto:location}/lib/ LD_RUN_PATH=${xproto:location}/lib/ CPPFLAGS=-I${xproto:location}/include/ -I${zlib:location}/include + LDFLAGS=-L${xproto:location}/lib -Wl,-rpath=${xproto:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib PATH=${pkgconfig:location}/bin:%(PATH)s [libXfont] @@ -253,8 +283,8 @@ environment = PKG_CONFIG_PATH=${fontsproto:location}/lib/pkgconfig:${libfontenc:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${xtrans:location}/share/pkgconfig:${freetype:location}/lib/pkgconfig LD_LIBRARY_PATH=${fontsproto:location}/lib:${libfontenc:location}/lib:${xtrans:location}/include/:${xproto:location}/lib/:${freetype:location}/lib LD_RUN_PATH=${fontsproto:location}/lib:${libfontenc:location}/lib:${xproto:location}/lib/:${xtrans:location}/include/:${freetype:location}/lib - LDFLAGS=-L${zlib:location}/lib - CPPFLAGS=-I${zlib:location}/include + LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${bzip2:location}/lib -L${libfontenc:location}/lib -Wl,-rpath=${libfontenc:location}/lib + CPPFLAGS=-I${zlib:location}/include -I${bzip2:location}/include -I${libfontenc:location}/include PATH=${pkgconfig:location}/bin:%(PATH)s [libxkbfile] @@ -308,11 +338,14 @@ md5sum = d43c2afc69937655d13c02588c9ff974 recipe = hexagonit.recipe.cmmi url = http://xlibs.freedesktop.org/release/libXrender-0.9.0.tar.bz2 md5sum = ce7cda009aa0b10a73637941d44ae789 +configure-options = + --disable-static environment = - PKG_CONFIG_PATH=${render:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig - CPPFLAGS=-I${libX11:location}/include/ -I${xproto:location}/include -I${kbproto:location}/include + PKG_CONFIG_PATH=${renderproto:location}/lib/pkgconfig:${xorg-util-macros:location}/share/pkgconfig:${render:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig + CPPFLAGS=-I${renderproto:location}/include/ -I${libX11:location}/include/ -I${libxcb:location}/include -I${libXau:location}/include -I${libXdmcp:location}/include -I${xproto:location}/include -I${kbproto:location}/include LD_LIBRARY_PATH=${render:location}/lib:${libX11:location}/lib LD_RUN_PATH=${render:location}/lib + LDFLAGS=-L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${libxcb:location}/lib -Wl,-rpath=${libxcb:location}/lib -L${libXau:location}/lib -Wl,-rpath=${libXau:location}/lib -L${libXdmcp:location}/lib -Wl,-rpath=${libXdmcp:location}/lib PATH=${pkgconfig:location}/bin:%(PATH)s [libXinerama] @@ -350,33 +383,14 @@ environment = PATH=${pkgconfig:location}/bin:%(PATH)s LIBUUID_CFLAGS=-I${libuuid:location}/include -[renderproto] -recipe = hexagonit.recipe.cmmi -url = http://www.x.org/releases/X11R7.6/src/proto/renderproto-0.11.1.tar.bz2 -md5sum = a914ccc1de66ddeb4b611c6b0686e274 - -[libXrender] -recipe = hexagonit.recipe.cmmi -url = http://www.x.org/releases/X11R7.6/src/lib/libXrender-0.9.6.tar.bz2 -md5sum = 3b3b7d076c2384b6c600c0b5f4ba971f -configure-options = - --disable-static -environment = - PKG_CONFIG_PATH=${libX11:location}/lib/pkgconfig:${renderproto:location}/lib/pkgconfig:${xorg-util-macros:location}/share/pkgconfig - PATH=${pkgconfig:location}/bin:%(PATH)s - CPPFLAGS=-I${libX11:location}/include -I${renderproto:location}/include -I${xproto:location}/include - [libXt] recipe = hexagonit.recipe.cmmi url = http://www.x.org/releases/X11R7.6/src/lib/libXt-1.0.9.tar.bz2 md5sum = 8a414f8f2327aaa616ca2dcac1f5d8c3 -configure-options = - --disable-static environment = PATH=${pkgconfig:location}/bin:%(PATH)s - PKG_CONFIG_PATH=${render:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libSM:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig - CPPFLAGS=-I${xproto:location}/include -I${libX11:location}/include -I${libSM:location}/include -I${libICE:location}/include -I${kbproto:location}/include - + PKG_CONFIG_PATH=${libSM:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig + CPPFLAGS=-I${libSM:location}/include -I${kbproto:location}/include -I${libICE:location}/include -I${xproto:location}/include -I${libX11:location}/include [dri2proto] recipe = hexagonit.recipe.cmmi @@ -440,11 +454,50 @@ environment = PKG_CONFIG_PATH=${damageproto:location}/lib/pkgconfig:${xfixes:location}/lib/pkgconfig:${fixesproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig CPPFLAGS=-I${libX11:location}/include -I${xproto:location}/include -I${fixesproto:location}/include -I${xextproto:location}/include -I${damageproto:location}/include -I${xfixes:location}/include +[xorg-tmp-env-patch] +recipe = hexagonit.recipe.download +url = ${:_profile_base_location_}/${:filename} +download-only = true +filename = tmp_env.patch +md5sum = 8b60ab8121f0564a681fc00d03101696 + +[libxmu] +recipe = hexagonit.recipe.cmmi +url = http://www.x.org/releases/X11R7.6/src/lib/libXmu-1.1.0.tar.gz +md5sum = 15e1cb9aaf97eae169bfe6944e0a541e +environment = + PATH=${pkgconfig:location}/bin:%(PATH)s + PKG_CONFIG_PATH=${xextproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libXext:location}/lib/pkgconfig:${libXt:location}/lib/pkgconfig + CPPFLAGS=-I${libX11:location}/include -I${xextproto:location}/include + +[libXcursor] +recipe = hexagonit.recipe.cmmi +url = http://www.x.org/releases/X11R7.6/src/lib/libXcursor-1.1.11.tar.gz +md5sum = 55558a41d0bcf9210636858844fa4d2f +environment = + PATH=${pkgconfig:location}/bin:%(PATH)s + PKG_CONFIG_PATH=${render:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${fixesproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${xfixes:location}/lib/pkgconfig:${libXrender:location}/lib/pkgconfig + CPPFLAGS=-I${render:location}/include -I${xproto:location}/include -I${fixesproto:location}/include -I${libX11:location}/include -I${xfixes:location}/include -I${libXrender:location}/include + +[xwd] +recipe = hexagonit.recipe.cmmi +url = http://www.x.org/releases/X11R7.6/src/app/xwd-1.0.4.tar.gz +md5sum = f8da771069756210833524b5afa1832c +environment = + PATH=${pkgconfig:location}/bin:%(PATH)s + PKG_CONFIG_PATH=${xorg-util-macros:location}/share/pkgconfig:${xproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libxkbfile:location}/lib/pkgconfig + CPPFLAGS=-I${xproto:location}/include -I${libX11:location}/include -I${libxkbfile:location}/include# -I${xfixes:location}/include -I${libXrender:location}/include + LDFLAGS=-L${xproto:location}/lib -Wl,-rpath=${xproto:location}/lib -L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${libxkbfile:location}/lib -Wl,-rpath=${libxkbfile:location}/lib -lX11 + [xserver] # Adds Xvfb functionnality recipe = hexagonit.recipe.cmmi url = http://www.x.org/releases/X11R7.6/src/xserver/xorg-server-1.9.3.tar.bz2 md5sum = 5bef6839a76d029204ab31aa2fcb5201 +patches = + ${xorg-tmp-env-patch:location}/${xorg-tmp-env-patch:filename} +patches_md5sum = ${xorg-tmp-env-patch:md5sum} +patch-options = -p1 configure-options = --enable-xvfb --disable-aiglx @@ -454,15 +507,13 @@ configure-options = --disable-dri --disable-dri2 --disable-xorg - --disable-xprint --disable-config-hal + --disable-tcp-transport --with-xkb-bin-directory=${xkbcomp:location}/bin --with-xkb-path=${xkeyboard-config:location}/share/X11/xkb -#XXX-Cedric : The following can be safely removed as soon as Xvfb is known as working -# --with-default-font-path="${xfree86-fonts:location}/share/fonts/X11/Type1,${fontutil:location}/share/fonts/X11/75dpi,${cursor-fonts:location}/share/fonts/X11/misc" -#depends = ${adobe-75dpi-fonts:location} + --with-sha1=libgcrypt environment = - PKG_CONFIG_PATH=${pixman:location}/lib/pkgconfig:${openssl:location}/lib/pkgconfig:${xorg-util-macros:location}/share/pkgconfig:${fixesproto:location}/lib/pkgconfig:${damageproto:location}/lib/pkgconfig:${xcmiscproto:location}/lib/pkgconfig:${xtrans:location}/share/pkgconfig:${bigreqsproto:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${randrproto:location}/lib/pkgconfig:${renderproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${inputproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${fontsproto:location}/lib/pkgconfig:${videoproto:location}/lib/pkgconfig:${recordproto:location}/lib/pkgconfig:${resourceproto:location}/lib/pkgconfig:${xineramaproto:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${libxkbfile:location}/lib/pkgconfig:${libXfont:location}/lib/pkgconfig - CPPFLAGS=-I${xproto:location}/include -I${pixman:location}/include/pixman-1 -I${xextproto:location}/include -I${inputproto:location}/include -I${fontsproto:location}/include -I${kbproto:location}/include -I${xineramaproto:location}/include -I${renderproto:location}/include -I${bigreqsproto:location}/include -I${videoproto:location}/include -I${resourceproto:location}/include -I${xcmiscproto:location}/include -I${xtrans:location}/include -I${libXau:location}/include -I${randrproto:location}/include -I${libxkbfile:location}/include -I${recordproto:location}/include -I${fixesproto:location}/include -I${damageproto:location}/include + PKG_CONFIG_PATH=${pixman:location}/lib/pkgconfig:${openssl:location}/lib/pkgconfig:${xorg-util-macros:location}/share/pkgconfig:${fixesproto:location}/lib/pkgconfig:${damageproto:location}/lib/pkgconfig:${xcmiscproto:location}/lib/pkgconfig:${xtrans:location}/share/pkgconfig:${bigreqsproto:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${randrproto:location}/lib/pkgconfig:${renderproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${inputproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${fontsproto:location}/lib/pkgconfig:${videoproto:location}/lib/pkgconfig:${recordproto:location}/lib/pkgconfig:${resourceproto:location}/lib/pkgconfig:${xineramaproto:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${libxkbfile:location}/lib/pkgconfig:${libXfont:location}/lib/pkgconfig:${gpg-error:location}/lib/pkgconfig + CPPFLAGS=-I${xproto:location}/include -I${pixman:location}/include/pixman-1 -I${xextproto:location}/include -I${inputproto:location}/include -I${fontsproto:location}/include -I${kbproto:location}/include -I${xineramaproto:location}/include -I${renderproto:location}/include -I${bigreqsproto:location}/include -I${videoproto:location}/include -I${resourceproto:location}/include -I${xcmiscproto:location}/include -I${xtrans:location}/include -I${libXau:location}/include -I${randrproto:location}/include -I${libxkbfile:location}/include -I${recordproto:location}/include -I${fixesproto:location}/include -I${damageproto:location}/include -I${bzip2:location}/include -I${gcrypt:location}/include -I${zlib:location}/include -I${libfontenc:location}/include -I${gpg-error:location}/include PATH=${pkgconfig:location}/bin:%(PATH)s - LDFLAGS=-Wl,-rpath,${openssl:location}/lib + LDFLAGS=-L${gcrypt:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${gcrypt:location}/lib -Wl,-rpath=${openssl:location}/lib -Wl,-rpath=${bzip2:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${libfontenc:location}/lib -Wl,-rpath=${libfontenc:location}/lib -L${libXau:location}/lib -Wl,-rpath=${libXau:location}/lib -L${gpg-error:location}/lib -Wl,-rpath=${gpg-error:location}/lib diff --git a/component/xorg/tmp_env.patch b/component/xorg/tmp_env.patch new file mode 100644 index 0000000000000000000000000000000000000000..03cd55ff6b4ef0dac85a9ea174fee057804f08e3 --- /dev/null +++ b/component/xorg/tmp_env.patch @@ -0,0 +1,30 @@ +--- xorg-server-1.9.3/os/utils.c.old 2012-03-29 18:20:02.000000000 +0200 ++++ xorg-server-1.9.3/os/utils.c 2012-03-29 18:39:33.000000000 +0200 +@@ -226,7 +226,26 @@ OsSignal(int sig, OsSigHandlerPtr handle + * server at a time. This keeps the servers from stomping on each other + * if the user forgets to give them different display numbers. + */ +-#define LOCK_DIR "/tmp" ++char * ++getcompatibleenv(const char *name, const char *compatible) ++{ ++ static char path_list[1][PATH_MAX]; ++ char *dir; ++ ++ if (path_list[0][0]) { ++ return path_list[0]; ++ } ++ ++ dir = getenv(name); ++ if (dir == NULL) { ++ return strncpy(path_list[0], compatible, PATH_MAX); ++ } else { ++ return strncpy(path_list[0], dir, PATH_MAX); ++ } ++ ++} ++ ++#define LOCK_DIR getcompatibleenv("TMPDIR", "/tmp") + #define LOCK_TMP_PREFIX "/.tX" + #define LOCK_PREFIX "/.X" + #define LOCK_SUFFIX "-lock" diff --git a/component/xorg/xcb_tmp_env.patch b/component/xorg/xcb_tmp_env.patch new file mode 100644 index 0000000000000000000000000000000000000000..cefa556c8210a13d4916529854d8aa37971a7f58 --- /dev/null +++ b/component/xorg/xcb_tmp_env.patch @@ -0,0 +1,36 @@ +--- libxcb-1.7/src/xcb_util.c.back 2012-04-03 13:30:36.000000000 +0200 ++++ libxcb-1.7/src/xcb_util.c 2012-04-03 14:47:00.000000000 +0200 +@@ -147,11 +147,31 @@ + static int _xcb_open_abstract(char *protocol, const char *file, size_t filelen); + #endif + ++char * ++_xcb_getandappendcompatibleenv(const char *name, const char *compatible, const char *suffix) ++{ ++ static char path_list[1][PATH_MAX]; ++ char *dir; ++ ++ if (path_list[0][0]) ++ { ++ return path_list[0]; ++ } ++ ++ dir = getenv(name); ++ if (dir == NULL) { ++ strncpy(path_list[0], compatible, PATH_MAX); ++ } else { ++ strncpy(path_list[0], dir, PATH_MAX); ++ } ++ return strncat(path_list[0], suffix, PATH_MAX); ++} ++ + static int _xcb_open(const char *host, char *protocol, const int display) + { + int fd; +- static const char unix_base[] = "/tmp/.X11-unix/X"; +- const char *base = unix_base; ++ char *base; ++ base = _xcb_getandappendcompatibleenv("TMPDIR", "/tmp", "/.X11-unix/X"); + size_t filelen; + char *file = NULL; + int actual_filelen; diff --git a/component/xorg/xtrans_tmp_env.patch b/component/xorg/xtrans_tmp_env.patch new file mode 100644 index 0000000000000000000000000000000000000000..24d3672b6872febb253bd9038e5c86574a5b654b --- /dev/null +++ b/component/xorg/xtrans_tmp_env.patch @@ -0,0 +1,64 @@ +--- xtrans-1.2.6/Xtranssock.c.old 2012-03-29 14:25:45.000000000 +0200 ++++ xtrans-1.2.6/Xtranssock.c 2012-03-29 18:40:54.000000000 +0200 +@@ -207,29 +207,49 @@ static int TRANS(SocketINETClose) (Xtran + #ifdef UNIXCONN + + ++char * ++getandappendcompatibleenv(const int index, const char *name, const char *compatible, const char *suffix) ++{ ++ static char path_list[2][PATH_MAX]; ++ char *dir; ++ ++ if (path_list[index][0]) ++ { ++ return path_list[index]; ++ } ++ ++ dir = getenv(name); ++ if (dir == NULL) { ++ strncpy(path_list[index], compatible, PATH_MAX); ++ } else { ++ strncpy(path_list[index], dir, PATH_MAX); ++ } ++ return strncat(path_list[index], suffix, PATH_MAX); ++} ++ + #if defined(X11_t) +-#define UNIX_PATH "/tmp/.X11-unix/X" +-#define UNIX_DIR "/tmp/.X11-unix" ++#define UNIX_PATH getandappendcompatibleenv(0, "TMPDIR", "/tmp", "/.X11-unix/X") ++#define UNIX_DIR getandappendcompatibleenv(1, "TMPDIR", "/tmp", "/.X11-unix") + #endif /* X11_t */ + #if defined(XIM_t) +-#define UNIX_PATH "/tmp/.XIM-unix/XIM" +-#define UNIX_DIR "/tmp/.XIM-unix" ++#define UNIX_PATH getandappendcompatibleenv(0, "TMPDIR", "/tmp", "/.XIM-unix/XIM") ++#define UNIX_DIR getandappendcompatibleenv(1, "TMPDIR", "/tmp", "/.XIM-unix") + #endif /* XIM_t */ + #if defined(FS_t) || defined(FONT_t) +-#define UNIX_PATH "/tmp/.font-unix/fs" +-#define UNIX_DIR "/tmp/.font-unix" ++#define UNIX_PATH getandappendcompatibleenv(0, "TMPDIR", "/tmp", "/.font-unix/fs") ++#define UNIX_DIR getandappendcompatibleenv(1, "TMPDIR", "/tmp", "/.font-unix") + #endif /* FS_t || FONT_t */ + #if defined(ICE_t) +-#define UNIX_PATH "/tmp/.ICE-unix/" +-#define UNIX_DIR "/tmp/.ICE-unix" ++#define UNIX_PATH getandappendcompatibleenv(0, "TMPDIR", "/tmp", "/.ICE-unix/") ++#define UNIX_DIR getandappendcompatibleenv(1, "TMPDIR", "/tmp", "/.ICE-unix") + #endif /* ICE_t */ + #if defined(TEST_t) +-#define UNIX_PATH "/tmp/.Test-unix/test" +-#define UNIX_DIR "/tmp/.Test-unix" ++#define UNIX_PATH getandappendcompatibleenv(0, "TMPDIR", "/tmp", "/.Test-unix/test") ++#define UNIX_DIR getandappendcompatibleenv(1, "TMPDIR", "/tmp", "/.Test-unix") + #endif + #if defined(LBXPROXY_t) +-#define UNIX_PATH "/tmp/.X11-unix/X" +-#define UNIX_DIR "/tmp/.X11-unix" ++#define UNIX_PATH getandappendcompatibleenv(0, "TMPDIR", "/tmp", "/.X11-unix/X") ++#define UNIX_DIR getandappendcompatibleenv(1, "TMPDIR", "/tmp", "/.X11-unix") + #endif + + diff --git a/setup.py b/setup.py index df1c96664d114a1dfd656c1d6ec28cb41f5dfb1e..6d57bec1248df2f4ad997e523ee26c54dc079444 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages import glob import os -version = '0.46-dev' +version = '0.48-dev' name = 'slapos.cookbook' long_description = open("README.txt").read() + "\n" + \ open("CHANGES.txt").read() + "\n" @@ -40,6 +40,7 @@ setup(name=name, zip_safe=True, entry_points={ 'zc.buildout': [ + 'agent = slapos.recipe.agent:Recipe', 'apache.frontend = slapos.recipe.apache_frontend:Recipe', 'apachephp = slapos.recipe.apachephp:Recipe', 'apacheproxy = slapos.recipe.apacheproxy:Recipe', @@ -62,6 +63,7 @@ setup(name=name, 'generic.onetimeupload = slapos.recipe.generic_onetimeupload:Recipe', 'helloworld = slapos.recipe.helloworld:Recipe', 'generic.cloudooo = slapos.recipe.generic_cloudooo:Recipe', + 'firefox = slapos.recipe.firefox:Recipe', 'fontconfig = slapos.recipe.fontconfig:Recipe', 'java = slapos.recipe.java:Recipe', 'kumofs = slapos.recipe.kumofs:Recipe', @@ -113,6 +115,7 @@ setup(name=name, 'urlparse = slapos.recipe._urlparse:Recipe', 'vifib = slapos.recipe.vifib:Recipe', 'waitfor = slapos.recipe.waitfor:Recipe', + 'xvfb = slapos.recipe.xvfb:Recipe', 'xwiki = slapos.recipe.xwiki:Recipe', 'zabbixagent = slapos.recipe.zabbixagent:Recipe', 'generic.zope = slapos.recipe.generic_zope:Recipe', diff --git a/slapos/recipe/agent/__init__.py b/slapos/recipe/agent/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0ea8a163be9fbbf56113af7cf4104a961b40e1ea --- /dev/null +++ b/slapos/recipe/agent/__init__.py @@ -0,0 +1,119 @@ +############################################################################## +# +# Copyright (c) 2012 Vifib SARL and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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 3 +# of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################# + +import os +import sys +import zc.buildout +import slapos.slap +from slapos.recipe.librecipe import BaseSlapRecipe +from slapos.recipe.librecipe import GenericSlapRecipe +import json +import ConfigParser + +class Recipe(BaseSlapRecipe, GenericSlapRecipe): + def install(self): + self.path_list = [] + self.crond = self.installCrond() + + slap = slapos.slap.slap() + computer_id = self.computer_id + computer_partition_id = self.computer_partition_id + server_url = self.server_url + key_file = self.key_file + cert_file = self.cert_file + slap.initializeConnection(server_url, key_file, cert_file) + self.computer_partition = slap.registerComputerPartition( + computer_id, computer_partition_id) + self.parameter_dict = self.computer_partition.getInstanceParameterDict() + + configuration_path = os.path.join(self.work_directory, "agent.cfg") + configuration = ConfigParser.SafeConfigParser() + configuration.add_section("agent") + configuration.set("agent", "portal_url", self.parameter_dict["portal_url"]) + configuration.set("agent", "master_url", self.parameter_dict["master_url"]) + key_filepath = os.path.join(self.work_directory, "key") + key_file = open(key_filepath, "w") + key_file.write(self.parameter_dict["key"]) + key_file.close() + configuration.set("agent", "key_file", key_filepath) + cert_filepath = os.path.join(self.work_directory, "cert") + cert_file = open(cert_filepath, "w") + cert_file.write(self.parameter_dict["cert"]) + cert_file.close() + configuration.set("agent", "cert_file", cert_filepath) + configuration.set("agent", "maximum_software_installation_duration", + self.parameter_dict["maximum_software_installation_duration"]) + configuration.set("agent", "software_live_duration", + self.parameter_dict["software_live_duration"]) + configuration.set("agent", "computer_list", + self.parameter_dict["computer_list"]) + configuration.set("agent", "software_list", + self.parameter_dict["software_list"]) + configuration.set("agent", "log_directory", self.options["log_directory"]) + configuration.set("agent", "state_file", self.options["state_file"]) + state = open(self.options["state_file"], "w") + state.write('') + state.close() + configuration.add_section("software_uri") + software_list = json.loads(self.parameter_dict["software_list"]) + for software in software_list: + configuration.set("software_uri", software, self.parameter_dict[software]) + + configuration.write(open(configuration_path, "w")) + + agent_crond_path = os.path.join(self.crond, "agent") + agent_crond = open(agent_crond_path, "w") + agent_crond.write("*/1 * * * * %s -S %s" % \ + (self.options["python_binary"], + "%s --pidfile=%s %s" % \ + (self.options["agent_binary"], self.options["pidfile"], + configuration_path))) + agent_crond.close() + + return self.path_list + [configuration_path, key_filepath, cert_filepath, agent_crond_path] + + def installCrond(self): + _, self.ws = self.egg.working_set() + timestamps = self.createDataDirectory('cronstamps') + cron_output = os.path.join(self.log_directory, 'cron-output') + self._createDirectory(cron_output) + catcher = zc.buildout.easy_install.scripts([('catchcron', + __name__ + '.catdatefile', 'catdatefile')], self.ws, sys.executable, + self.bin_directory, arguments=[cron_output])[0] + self.path_list.append(catcher) + cron_d = os.path.join(self.etc_directory, 'cron.d') + crontabs = os.path.join(self.etc_directory, 'crontabs') + self._createDirectory(cron_d) + self._createDirectory(crontabs) + wrapper = zc.buildout.easy_install.scripts([('crond', + 'slapos.recipe.librecipe.execute', 'execute')], self.ws, sys.executable, + self.wrapper_directory, arguments=[ + self.options['dcrond_binary'].strip(), '-s', cron_d, '-c', crontabs, + '-t', timestamps, '-f', '-l', '5', '-M', catcher] + )[0] + self.path_list.append(wrapper) + return cron_d diff --git a/slapos/recipe/agent/catdatefile.py b/slapos/recipe/agent/catdatefile.py new file mode 100644 index 0000000000000000000000000000000000000000..d3de298b272cce0eba88570aa6734ee74115e58e --- /dev/null +++ b/slapos/recipe/agent/catdatefile.py @@ -0,0 +1,14 @@ +import os +import sys +import time +def catdatefile(args): + directory = args[0] + try: + suffix = args[1] + except IndexError: + suffix = '.log' + f = open(os.path.join(directory, + time.strftime('%Y-%m-%d.%H:%M.%s') + suffix), 'aw') + for line in sys.stdin.read(): + f.write(line) + f.close() diff --git a/slapos/recipe/firefox/__init__.py b/slapos/recipe/firefox/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e79377d00354b2a892e9fa86696339382614270d --- /dev/null +++ b/slapos/recipe/firefox/__init__.py @@ -0,0 +1,51 @@ +############################################################################## +# +# Copyright (c) 2012 Vifib SARL and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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 3 +# of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################# + +from slapos.recipe.librecipe import GenericBaseRecipe +import sys + +class Recipe(GenericBaseRecipe): + def install(self): + + prefjs = self.createFile( + self.options['prefsjs-path'], + self.substituteTemplate(self.getTemplateFilename('prefs.js'), {})) + + config = { + 'firefox_binary': self.options['firefox-path'], + 'python_path': sys.executable, + 'tmp_path': self.options['tmp-path'], + 'pref_path': prefjs, + } + + runner = self.createExecutable( + self.options['runner-path'], + self.substituteTemplate(self.getTemplateFilename('firefox_run.in'), + config)) + + return [runner, prefjs] + diff --git a/slapos/recipe/firefox/template/firefox_run.in b/slapos/recipe/firefox/template/firefox_run.in new file mode 100644 index 0000000000000000000000000000000000000000..fab4ce0eb484aba9bc0e6a3f1847387b2b464df9 --- /dev/null +++ b/slapos/recipe/firefox/template/firefox_run.in @@ -0,0 +1,55 @@ +#!%(python_path)s +# BEWARE: This file is operated by slapgrid +# BEWARE: It will be overwritten automatically +# + +import os +from subprocess import Popen, PIPE +import tempfile +import shutil +import sys +import signal +import subprocess +import time + +os.environ['MOZ_NO_REMOTE'] = '1' +os.environ['LC_ALL'] = 'C' +os.environ['MOZ_CRASHREPORTER_DISABLE'] = '1' +os.environ['NO_EM_RESTART'] = '1' +os.environ['TMPDIR'] = "%(tmp_path)s" +os.environ['DISPLAY'] = ':0' +# XXX .Xauthority + +profile_path = tempfile.mkdtemp() +shutil.copyfile('%(pref_path)s', os.path.join(profile_path, 'pref.js')) +# os.environ['HOME'] = profile_path +child_pg = None + +def sig_handler(signal, frame): + if child_pg is not None: + os.killpg(child_pg, signal.SIGHUP) + os.killpg(child_pg, signal.SIGTERM) + sys.exit(0) + +signal.signal(signal.SIGINT, sig_handler) +signal.signal(signal.SIGQUIT, sig_handler) +signal.signal(signal.SIGTERM, sig_handler) + +def execute_with_signal_translation(args): + """Run process as children and translate from SIGTERM to another signal""" + child = subprocess.Popen(args, close_fds=True, preexec_fn=os.setsid) + child_pg = child.pid + try: + while True: + time.sleep(2) + finally: + os.killpg(child_pg, signal.SIGHUP) + os.killpg(child_pg, signal.SIGTERM) + +try: + execute_with_signal_translation( + ["%(firefox_binary)s", "-no-remote", "-profile", profile_path] + sys.argv[1:]) + +finally: + shutil.rmtree(profile_path) + diff --git a/slapos/recipe/firefox/template/prefs.js b/slapos/recipe/firefox/template/prefs.js new file mode 100644 index 0000000000000000000000000000000000000000..3004648f0c1c7c22b7b620aa55ac5465219ee66f --- /dev/null +++ b/slapos/recipe/firefox/template/prefs.js @@ -0,0 +1,55 @@ +// Don't ask if we want to switch default browsers +user_pref("browser.shell.checkDefaultBrowser", false); +user_pref("browser.startup.homepage_override.mstone", "ignore"); + +// disable application updates +user_pref("app.update.enabled", false) + +// disables the 'know your rights' button from displaying on first run +user_pref("browser.rights.3.shown", true); + +// Disable pop-up blocking +user_pref("browser.allowpopups", true); +user_pref("dom.disable_open_during_load", false); +user_pref("browser.tabs.warnOnClose", false); + +// Configure us as the local proxy +//user_pref("network.proxy.type", 2); + +// Disable security warnings +user_pref("security.warn_submit_insecure", false); +user_pref("security.warn_submit_insecure.show_once", false); +user_pref("security.warn_entering_secure", false); +user_pref("security.warn_entering_secure.show_once", false); +user_pref("security.warn_entering_weak", false); +user_pref("security.warn_entering_weak.show_once", false); +user_pref("security.warn_leaving_secure", false); +user_pref("security.warn_leaving_secure.show_once", false); +user_pref("security.warn_viewing_mixed", false); +user_pref("security.warn_viewing_mixed.show_once", false); + +// Disable "do you want to remember this password?" +user_pref("signon.rememberSignons", false); + +// increase the timeout before warning of unresponsive script +user_pref("dom.max_script_run_time", 120); + +// this is required to upload files +// user_pref("capability.principal.codebase.p1.granted", "UniversalFileRead"); +// user_pref("signed.applets.codebase_principal_support", true); +// user_pref("capability.principal.codebase.p1.id", "http://"); +// user_pref("capability.principal.codebase.p1.subjectName", ""); + +user_pref("browser.link.open_external", 3); +user_pref("browser.link.open_newwindow", 3); + +// disables the request to send performance data from displaying +user_pref("toolkit.telemetry.prompted", 2); +user_pref("toolkit.telemetry.rejected", true); + +user_pref("browser.migration.version", 5); +user_pref("extensions.SelectionUI", true); +user_pref("network.cookie.prefsMigrated", true); +user_pref("browser.bookmarks.restore_default_bookmarks", false); +user_pref("browser.places.smartBookmarksVersion", 2); +user_pref("privacy.sanitize.migrateFx3Prefs", true); diff --git a/slapos/recipe/seleniumrunner/__init__.py b/slapos/recipe/seleniumrunner/__init__.py index 813fb0d4709a3e798cb07bd7f9a34842e88e1643..b6207750290a4716662bbaee787014e1bd0a87bb 100644 --- a/slapos/recipe/seleniumrunner/__init__.py +++ b/slapos/recipe/seleniumrunner/__init__.py @@ -29,79 +29,19 @@ import os import sys import zc.buildout from slapos.recipe.librecipe import BaseSlapRecipe +from slapos.recipe.librecipe import GenericBaseRecipe -class Recipe(BaseSlapRecipe): - def _install(self): - """Set the connection dictionnary for the computer partition and create a list - of paths to the different wrappers.""" - self.path_list = [] - self.requirements, self.ws = self.egg.working_set() +class Recipe(GenericBaseRecipe): + def install(self): - self.installTestrunner(self.getDisplay()) - self.linkBinary() + runner = self.createPythonScript( + self.options['runner-path'], + __name__+'.testrunner.run', + arguments=[self.options['suite-url'], + self.options['report-url'], + self.options['report-project'], + self.options['browser'], + ]) - return self.path_list + return [runner] - def getDisplay(self): - """Generate display id for the instance.""" - display_list = [":%s" % i for i in range(123,144)] - for display_try in display_list: - lock_filepath = '/tmp/.X%s-lock' % display_try.replace(":", "") - if not os.path.exists(lock_filepath): - display = display_try - break - return display - - def installTestrunner(self, display): - """Instanciate a wrapper for the browser and the test reports.""" - arguments = dict( - xvfb_binary = self.options['xvfb_binary'], - display = display, - suite_name = self.parameter_dict['suite_name'], - base_url = self.parameter_dict['url'], - browser_argument_list = [], - user = self.parameter_dict['user'], - password = self.parameter_dict['password'], - project = self.parameter_dict['project'], - test_report_instance_url = \ - self.parameter_dict['test_report_instance_url'], - etc_directory = self.etc_directory) - - # Check wanted browser XXX-Cedric not yet used but can be useful - #if self.parameter_dict.get('browser', None) is None: - arguments['browser_binary'] = self.options['firefox_binary'] - #elif self.parameter_dict['browser'].strip().lowercase() == 'chrome' or - # self.parameter_dict['browser'].strip().lowercase() == 'chromium': - # arguments['browser_binary'] = self.options['chromium_binary'] - # arguments['browser_argument_list'].extend['--ignore-certificate-errors', - # option_translate = '--disable-translate', - # option_security = '--disable-web-security'] - #elif self.parameter_dict['browser'].strip().lowercase() == 'firefox': - # arguments['browser_binary'] = self.options['firefox_binary'] - - self.path_list.extend(zc.buildout.easy_install.scripts([( - 'testrunner',__name__+'.testrunner', 'run')], self.ws, - sys.executable, self.wrapper_directory, - arguments=[arguments])) - - def linkBinary(self): - """Links binaries to instance's bin directory for easier exposal""" - for linkline in self.options.get('link_binary_list', '').splitlines(): - if not linkline: - continue - target = linkline.split() - if len(target) == 1: - target = target[0] - path, linkname = os.path.split(target) - else: - linkname = target[1] - target = target[0] - link = os.path.join(self.bin_directory, linkname) - if os.path.lexists(link): - if not os.path.islink(link): - raise zc.buildout.UserError( - 'Target link already %r exists but it is not link' % link) - os.unlink(link) - os.symlink(target, link) - self.logger.debug('Created link %r -> %r' % (link, target)) - self.path_list.append(link) diff --git a/slapos/recipe/seleniumrunner/testrunner.py b/slapos/recipe/seleniumrunner/testrunner.py index 99b95e8d9350e9c6654834c4d38c76d807141a5b..91d0bc28cc70e569c3e40e58ffd8225b10d8f192 100644 --- a/slapos/recipe/seleniumrunner/testrunner.py +++ b/slapos/recipe/seleniumrunner/testrunner.py @@ -27,14 +27,30 @@ from datetime import datetime from erp5functionaltestreporthandler import ERP5TestReportHandler -from ERP5TypeFunctionalTestCase import Xvfb, Firefox, TimeoutError +from ERP5TypeFunctionalTestCase import TimeoutError from time import sleep import time import os import urllib2 +import urlparse +from subprocess import Popen, PIPE +import signal def run(args): - config = args[0] + suite_url = args[0] + report_url = args[1] + project = args[2] + browser_binary = args[3] + + suite_parsed = urlparse.urlparse(suite_url) + + config = { + 'suite_name': suite_parsed.path.split('/')[-1], + 'base_url': "%s://%s%s" % (suite_parsed.scheme, suite_parsed.hostname, + '/'.join(suite_parsed.path.split('/')[:-1])), + 'user': suite_parsed.username, + 'password': suite_parsed.password, + } test_url = assembleTestUrl(config['base_url'], config['suite_name'], config['user'], config['password']) @@ -43,20 +59,17 @@ def run(args): timeout = 2.0 * 60 * 60 while True: - erp5_report = ERP5TestReportHandler(config['test_report_instance_url'], - config['project'] + '@' + config['suite_name']) + erp5_report = ERP5TestReportHandler(report_url, + project + '@' + config['suite_name']) try: - os.environ['DISPLAY'] = config['display'] - xvfb = Xvfb(config['etc_directory'], config['xvfb_binary']) - profile_dir = os.path.join(config['etc_directory'], 'profile') - # XXX-Cedric : change Firefox prefs.js generation so that it can take a - # list of websites supposed to be reached instead of config['base_url'] - browser = Firefox(profile_dir, config['base_url'], config['browser_binary']) try: start = time.time() - xvfb.run() - profile_dir = os.path.join(config['etc_directory'], 'profile') - browser.run(test_url , xvfb.display) + print("Running test on: %s" % test_url) + process = Popen('%s "%s"' % (browser_binary, test_url), + stdout=PIPE, + stderr=PIPE, + shell=True, + close_fds=True) erp5_report.reportStart() while not isTestFinished(config['base_url']): time.sleep(10) @@ -66,8 +79,8 @@ def run(args): except TimeoutError: continue finally: - browser.quit() - xvfb.quit() + if process.pid: + os.kill(process.pid, signal.SIGTERM) print("Test has finished and Firefox has been killed.") erp5_report.reportFinished(getStatus(config['base_url']).encode("utf-8", @@ -135,4 +148,4 @@ def assembleTestUrl(base_url, suite_name, user, password): test_url = "%s/%s/core/TestRunner.html?test=../test_suite_html&"\ "resultsUrl=%s/postResults&auto=on&__ac_name=%s&__ac_password=%s" % ( base_url, suite_name, base_url, user, password) - return test_url \ No newline at end of file + return test_url diff --git a/slapos/recipe/xvfb/__init__.py b/slapos/recipe/xvfb/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..1272a627622be4b4b87c5ff5d86b36c26de2a3a2 --- /dev/null +++ b/slapos/recipe/xvfb/__init__.py @@ -0,0 +1,56 @@ +############################################################################## +# +# Copyright (c) 2012 Vifib SARL and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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 3 +# of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################# + +from slapos.recipe.librecipe import GenericBaseRecipe + +class Recipe(GenericBaseRecipe): + def install(self): + + config = { + 'xvfb_binary': self.options['xvfb-path'], + 'shell_path': self.options['shell-path'], + 'fbdir_path': self.options['fbdir-path'], + 'tmp_path': self.options['tmp-path'], + } + + xvfb_path = self.createExecutable( + self.options['runner-path'], + self.substituteTemplate(self.getTemplateFilename('xvfb_run.in'), + config)) + result = [xvfb_path] + + # Allow to take screenshot if needed + if ('xwd-path' in self.options) and ('xwd-hook-path' in self.options): + + config['xwd_binary'] = self.options['xwd-path'] + result.append(self.createExecutable( + self.options['xwd-hook-path'], + self.substituteTemplate(self.getTemplateFilename('xwd_run.in'), + config))) + + return result + diff --git a/slapos/recipe/xvfb/template/xvfb_run.in b/slapos/recipe/xvfb/template/xvfb_run.in new file mode 100644 index 0000000000000000000000000000000000000000..ab6681768856cf72b5efc370b5e94af1fe3fc709 --- /dev/null +++ b/slapos/recipe/xvfb/template/xvfb_run.in @@ -0,0 +1,6 @@ +#!%(shell_path)s +# BEWARE: This file is operated by slapgrid +# BEWARE: It will be overwritten automatically + +export TMPDIR=%(tmp_path)s +exec %(xvfb_binary)s -screen 0 1024x768x24 -fbdir %(fbdir_path)s diff --git a/slapos/recipe/xvfb/template/xwd_run.in b/slapos/recipe/xvfb/template/xwd_run.in new file mode 100644 index 0000000000000000000000000000000000000000..5c64f9e7c4c8a1815c9b4c41dcf5d2e1f37b5ab7 --- /dev/null +++ b/slapos/recipe/xvfb/template/xwd_run.in @@ -0,0 +1,7 @@ +#!%(shell_path)s +# BEWARE: This file is operated by slapgrid +# BEWARE: It will be overwritten automatically + +export DISPLAY=:0 +export TMPDIR=%(tmp_path)s +exec %(xwd_binary)s -root -out $1 diff --git a/software/agent/instance.cfg b/software/agent/instance.cfg new file mode 100644 index 0000000000000000000000000000000000000000..15ef5a0e46746f2dab8b5dce4aadf934555211f5 --- /dev/null +++ b/software/agent/instance.cfg @@ -0,0 +1,25 @@ +[buildout] +parts = + rootdirectory + instance + +eggs-directory = ${buildout:eggs-directory} +develop-eggs-directory = ${buildout:develop-eggs-directory} + +[instance] +recipe = ${instance-recipe:egg}:${instance-recipe:module} +agent_binary = ${buildout:directory}/bin/agent +dcrond_binary = ${dcron:location}/sbin/crond +python_binary = ${python2.7:location}/bin/python +pidfile = $${buildout:directory}/agent.pid +log_directory = $${buildout:directory}/var/log +state_file = $${buildout:directory}/state.cfg + +[rootdirectory] +recipe = slapos.cookbook:mkdirectory +etc = $${buildout:directory}/etc/ +run = $${rootdirectory:etc}/run/ +var = $${buildout:directory}/var/ +log = $${rootdirectory:var}/log/ +srv = $${buildout:directory}/srv/ +bin = $${buildout:directory}/bin/ diff --git a/software/agent/software.cfg b/software/agent/software.cfg new file mode 100644 index 0000000000000000000000000000000000000000..68f699448a74f8bd5718192235a4ba48e4d1ddfb --- /dev/null +++ b/software/agent/software.cfg @@ -0,0 +1,74 @@ +[buildout] + +# develop = +# /opt/slapdev +# /opt/slapos.toolbox + +extends = + ../../component/dcron/buildout.cfg + ../../component/python-2.7/buildout.cfg + ../../component/lxml-python/buildout.cfg + ../../stack/slapos.cfg + +parts = + template + eggs + instance-recipe-egg + dcron + python2.7 + script + +[instance-recipe] +egg = slapos.cookbook +module = agent + +[instance-recipe-egg] +recipe = zc.recipe.egg +python = python2.7 +eggs = ${instance-recipe:egg} + +[template] +recipe = slapos.recipe.template +url = ${:_profile_base_location_}/instance.cfg +output = ${buildout:directory}/template.cfg +md5sum = 2e1a7a68b18de68b163e98a5f92cc776 +mode = 0644 + +[eggs] +python = python2.7 +recipe = zc.recipe.egg +eggs = + ${lxml-python:egg} + slapos.cookbook + slapos.toolbox + +[lxml-python] +python = python2.7 + +[script] +recipe = z3c.recipe.scripts +python = python2.7 +eggs = + zc.buildout + ${lxml-python:egg} + slapos.core + slapos.cookbook + slapos.toolbox + +[networkcache] +# signature certificates of the following uploaders. +# Romain Courteaud +signature-certificate-list = + -----BEGIN CERTIFICATE----- + MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE + CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5 + MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl + ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF + AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw + boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX + Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA + ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX + mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC + q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g + QUUGLQ== + -----END CERTIFICATE----- diff --git a/software/seleniumrunner/instance-selenium.cfg b/software/seleniumrunner/instance-selenium.cfg new file mode 100644 index 0000000000000000000000000000000000000000..481dc11a0d44ede907bb7fda2d06247f12738e7c --- /dev/null +++ b/software/seleniumrunner/instance-selenium.cfg @@ -0,0 +1,47 @@ +[buildout] +parts = + selenium-instance + +eggs-directory = ${buildout:eggs-directory} +develop-eggs-directory = ${buildout:develop-eggs-directory} +offline = true + +[selenium-instance] +recipe = slapos.cookbook:seleniumrunner +runner-path = $${basedirectory:services}/selenium-runner +browser = $${firefox-instance:runner-path} +suite-url = $${slap-parameter:suite-url} +report-url = $${slap-parameter:report-url} +report-project = $${slap-parameter:report-project} + +[firefox-instance] +recipe = slapos.cookbook:firefox +runner-path = $${rootdirectory:bin}/firefox-sandboxed +firefox-path = ${firefox:location}/firefox-slapos +prefsjs-path = $${rootdirectory:etc}/prefs.js +shell-path = ${dash:location}/bin/dash +tmp-path = $${xvfb-instance:tmp-path} + +[xvfb-instance] +recipe = slapos.cookbook:xvfb +runner-path = $${basedirectory:services}/xvfb +xvfb-path = ${xserver:location}/bin/Xvfb +fbdir-path = $${basedirectory:framebuffer} +tmp-path = $${basedirectory:run} +shell-path = ${dash:location}/bin/dash + +xwd-path = ${xwd:location}/bin/xwd +xwd-hook-path = $${rootdirectory:bin}/xwd + +[rootdirectory] +recipe = slapos.cookbook:mkdirectory +etc = $${buildout:directory}/etc +var = $${buildout:directory}/var +srv = $${buildout:directory}/srv +bin = $${buildout:directory}/bin + +[basedirectory] +recipe = slapos.cookbook:mkdirectory +services = $${rootdirectory:etc}/run +run = $${rootdirectory:var}/run +framebuffer = $${rootdirectory:srv}/framebuffer diff --git a/software/seleniumrunner/instance.cfg b/software/seleniumrunner/instance.cfg index 23d6d4683b891db94e1bbbfbabfababb4d37b6f7..a672b5b982ddfa45925fd27818b688c1d67086f1 100644 --- a/software/seleniumrunner/instance.cfg +++ b/software/seleniumrunner/instance.cfg @@ -1,11 +1,20 @@ [buildout] parts = - seleniuminstance + switch-softwaretype eggs-directory = ${buildout:eggs-directory} -develop-eggs-directory = ${buildout:develop-eggs-directory} +develop-eggs-directory = ${buildout:develop-eggs-directory} +offline = true -[seleniuminstance] -recipe = ${instance-recipe:egg}:${instance-recipe:module} -xvfb_binary = ${xserver:location}/bin/Xvfb -firefox_binary = ${firefox:location}/firefox-slapos \ No newline at end of file +[switch-softwaretype] +recipe = slapos.cookbook:softwaretype +default = ${template-selenium:output} + +[slap-connection] +# part to migrate to new - separated words +computer-id = $${slap_connection:computer_id} +partition-id = $${slap_connection:partition_id} +server-url = $${slap_connection:server_url} +software-release-url = $${slap_connection:software_release_url} +key-file = $${slap_connection:key_file} +cert-file = $${slap_connection:cert_file} diff --git a/software/seleniumrunner/software.cfg b/software/seleniumrunner/software.cfg index c2333a1a197ed9c6cfc1e5496e65bbe4e1b5d586..cf6baf97f67293b36daed0a664f3a0b9314f3af7 100644 --- a/software/seleniumrunner/software.cfg +++ b/software/seleniumrunner/software.cfg @@ -6,8 +6,11 @@ extends = ../../component/lxml-python/buildout.cfg ../../component/python-2.7/buildout.cfg ../../component/firefox/buildout.cfg + ../../component/dash/buildout.cfg ../../stack/shacache-client.cfg +# develop += /opt/slapdev + versions = versions find-links += @@ -19,6 +22,7 @@ parts = instance-recipe-egg xserver firefox + xwd versions = versions @@ -43,10 +47,101 @@ eggs = # Default template for the instance. recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance.cfg -md5sum = 5fc198144831525a196d7394e4b15f80 +md5sum = c4ac5de141ae6a64848309af03e51d88 output = ${buildout:directory}/template.cfg mode = 0644 +[template-selenium] +recipe = slapos.recipe.template +url = ${:_profile_base_location_}/instance-selenium.cfg +md5sum = 8be91f4515decef0f8af5910e43e0e52 +output = ${buildout:directory}/template-selenium.cfg +mode = 0644 + [versions] # Use SlapOS patched zc.buildout -zc.buildout = 1.5.3-dev-SlapOS-010 +zc.buildout = 1.6.0-dev-SlapOS-004 + +Jinja2 = 2.6 +Werkzeug = 0.8.3 +buildout-versions = 1.7 +hexagonit.recipe.cmmi = 1.5.0 +meld3 = 0.6.8 +slapos.cookbook = 0.46 +slapos.recipe.build = 0.7 +slapos.recipe.template = 2.2 + +# Required by: +# slapos.core==0.23 +Flask = 0.8 + +# Required by: +# slapos.cookbook==0.42 +PyXML = 0.8.4 + +# Required by: +# hexagonit.recipe.cmmi==1.5.0 +hexagonit.recipe.download = 1.5.0 + +# Required by: +# slapos.cookbook==0.42 +inotifyx = 0.2.0 + +# Required by: +# slapos.cookbook==0.42 +# slapos.core==0.23 +# xml-marshaller==0.9.7 +lxml = 2.3.4 + +# Required by: +# slapos.cookbook==0.42 +netaddr = 0.7.6 + +# Required by: +# slapos.core==0.23 +netifaces = 0.8 + +# Required by: +# slapos.cookbook==0.42 +# slapos.core==0.23 +# zc.buildout==1.5.3-dev-SlapOS-010 +# zc.recipe.egg==1.3.2 +setuptools = 0.6c12dev-r88846 + +# Required by: +# slapos.cookbook==0.42 +slapos.core = 0.23 + +# Required by: +# slapos.core==0.23 +supervisor = 3.0a12 + +# Required by: +# slapos.cookbook==0.42 +xml-marshaller = 0.9.7 + +# Required by: +# slapos.cookbook==0.42 +zc.recipe.egg = 1.3.2 + +# Required by: +# slapos.core==0.23 +zope.interface = 3.8.0 + +[networkcache] +# signature certificates of the following uploaders. +# Romain Courteaud +signature-certificate-list = + -----BEGIN CERTIFICATE----- + MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE + CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5 + MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl + ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF + AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw + boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX + Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA + ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX + mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC + q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g + QUUGLQ== + -----END CERTIFICATE----- diff --git a/stack/lamp.cfg b/stack/lamp.cfg index 54d421ce34fe008586729e03e4407c63fbf40a70..dca29810762ef61ce623056f9160774144732a97 100644 --- a/stack/lamp.cfg +++ b/stack/lamp.cfg @@ -34,7 +34,8 @@ eggs = keep-compile-dir = false [networkcache] -# Romain Courteaud + Sebastien Robin + Alain Takoudjou signature certificate +# Romain Courteaud + Sebastien Robin + Alain Takoudjou +# + Cedric de Saint Martin signature certificate signature-certificate-list = -----BEGIN CERTIFICATE----- MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE @@ -75,3 +76,111 @@ signature-certificate-list = dOSJ86sf/PQHW3/1fhTTE+Vck1MiiAq0aIx6WnKnz4+ZcQctB7b0DCsTcQnmbpi2 n9MuhWaT21VOYhIGzJFPw5XW47/RrwhR -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV + BAMMCENPTVAtMjMyMCAXDTEyMDIxNjExMTAyM1oYDzIxMTIwMTIzMTExMDIzWjAT + MREwDwYDVQQDDAhDT01QLTIzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA + wi/3Z8W9pUiegUXIk/AiFDQ0UJ4JFAwjqr+HSRUirlUsHHT+8DzH/hfcTDX1I5BB + D1ADk+ydXjMm3OZrQcXjn29OUfM5C+g+oqeMnYQImN0DDQIOcUyr7AJc4xhvuXQ1 + P2pJ5NOd3tbd0kexETa1LVhR6EgBC25LyRBRae76qosCAwEAAaNQME4wHQYDVR0O + BBYEFMDmW9aFy1sKTfCpcRkYnP6zUd1cMB8GA1UdIwQYMBaAFMDmW9aFy1sKTfCp + cRkYnP6zUd1cMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAskbFizHr + b6d3iIyN+wffxz/V9epbKIZVEGJd/6LrTdLiUfJPec7FaxVCWNyKBlCpINBM7cEV + Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby + If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY= + -----END CERTIFICATE----- + +[versions] +# Generated automatically by buildout-versions +Jinja2 = 2.6 +MySQL-python = 1.2.3 +Werkzeug = 0.8.3 +apache-libcloud = 0.9.1 +async = 0.6.1 +buildout-versions = 1.7 +gitdb = 0.5.4 +hexagonit.recipe.cmmi = 1.5.0 +meld3 = 0.6.8 +plone.recipe.command = 1.1 +slapos.cookbook = 0.45 +slapos.recipe.build = 0.7 +slapos.recipe.download = 1.0.dev-r4053 +slapos.recipe.template = 2.3 +slapos.toolbox = 0.23 +smmap = 0.8.2 + +# Required by: +# slapos.core==0.24 +# slapos.toolbox==0.23 +Flask = 0.8 + +# Required by: +# slapos.toolbox==0.23 +GitPython = 0.3.2.RC1 + +# Required by: +# slapos.cookbook==0.45 +PyXML = 0.8.4 + +# Required by: +# slapos.toolbox==0.23 +atomize = 0.1.1 + +# Required by: +# slapos.toolbox==0.23 +feedparser = 5.1.1 + +# Required by: +# slapos.cookbook==0.45 +inotifyx = 0.2.0 + +# Required by: +# slapos.cookbook==0.45 +# slapos.core==0.24 +# slapos.toolbox==0.23 +# xml-marshaller==0.9.7 +lxml = 2.3.4 + +# Required by: +# slapos.cookbook==0.45 +netaddr = 0.7.6 + +# Required by: +# slapos.core==0.24 +netifaces = 0.8 + +# Required by: +# slapos.toolbox==0.23 +paramiko = 1.7.7.1 + +# Required by: +# slapos.toolbox==0.23 +psutil = 0.4.1 + +# Required by: +# slapos.cookbook==0.45 +# slapos.core==0.24 +# slapos.toolbox==0.23 +setuptools = 0.6c12dev-r88846 + +# Required by: +# slapos.cookbook==0.45 +# slapos.toolbox==0.23 +slapos.core = 0.24 + +# Required by: +# slapos.core==0.24 +supervisor = 3.0a12 + +# Required by: +# slapos.cookbook==0.45 +# slapos.toolbox==0.23 +xml-marshaller = 0.9.7 + +# Required by: +# slapos.cookbook==0.45 +zc.recipe.egg = 1.3.2 + +# Required by: +# slapos.core==0.24 +zope.interface = 3.8.0 \ No newline at end of file diff --git a/stack/lamp/buildout.cfg b/stack/lamp/buildout.cfg index 6baf055a020d8e46bb154d23ad42c30d1dca48ae..df1736a91fdd51b5d15943a39e0625dbe46c7e50 100644 --- a/stack/lamp/buildout.cfg +++ b/stack/lamp/buildout.cfg @@ -125,3 +125,60 @@ recipe = zc.recipe.egg eggs = ${lxml-python:egg} slapos.toolbox + +[networkcache] +# Romain Courteaud + Sebastien Robin + Alain Takoudjou +# + Cedric de Saint Martin signature certificate +signature-certificate-list = + -----BEGIN CERTIFICATE----- + MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE + CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5 + MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl + ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF + AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw + boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX + Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA + ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX + mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC + q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g + QUUGLQ== + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIB8jCCAVugAwIBAgIJAPu2zchZ2BxoMA0GCSqGSIb3DQEBBQUAMBIxEDAOBgNV + BAMMB3RzeGRldjMwHhcNMTExMDE0MTIxNjIzWhcNMTIxMDEzMTIxNjIzWjASMRAw + DgYDVQQDDAd0c3hkZXYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrPbh+ + YGmo6mWmhVb1vTqX0BbeU0jCTB8TK3i6ep3tzSw2rkUGSx3niXn9LNTFNcIn3MZN + XHqbb4AS2Zxyk/2tr3939qqOrS4YRCtXBwTCuFY6r+a7pZsjiTNddPsEhuj4lEnR + L8Ax5mmzoi9nE+hiPSwqjRwWRU1+182rzXmN4QIDAQABo1AwTjAdBgNVHQ4EFgQU + /4XXREzqBbBNJvX5gU8tLWxZaeQwHwYDVR0jBBgwFoAU/4XXREzqBbBNJvX5gU8t + LWxZaeQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQA07q/rKoE7fAda + FED57/SR00OvY9wLlFEF2QJ5OLu+O33YUXDDbGpfUSF9R8l0g9dix1JbWK9nQ6Yd + R/KCo6D0sw0ZgeQv1aUXbl/xJ9k4jlTxmWbPeiiPZEqU1W9wN5lkGuLxV4CEGTKU + hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg== + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIB9DCCAV2gAwIBAgIJAL392bEdqpFQMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV + BAMMCENPTVAtMjM0MB4XDTExMTEwOTE1MzA0M1oXDTEyMTEwODE1MzA0M1owEzER + MA8GA1UEAwwIQ09NUC0yMzQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMRR + T0cacZKztie/DaRRjq3mgcqfPKoGXu6zXmeRQI+6Y4bnzjf8h/jAuPzR552P0xK5 + psxhavXA8hOGRLFDtvDMQLepVHWfwqtFtcp5vNf2+KWqOYy0OxHfVIlnatvCqTZN + NG1vRsSOAQ+v7QNFHh6NBbiSrjBBfg4vkfzqnsUvAgMBAAGjUDBOMB0GA1UdDgQW + BBTGGw+ASoDi9kqPElDkC0Q5RtAfRjAfBgNVHSMEGDAWgBTGGw+ASoDi9kqPElDk + C0Q5RtAfRjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIOuR1OqXLke + LLzH0kRnlIOe60dYJvRya53wDx5x2g4/qkXZPLx2RcbaUrX/SCbL70vfr+apUPss + dOSJ86sf/PQHW3/1fhTTE+Vck1MiiAq0aIx6WnKnz4+ZcQctB7b0DCsTcQnmbpi2 + n9MuhWaT21VOYhIGzJFPw5XW47/RrwhR + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV + BAMMCENPTVAtMjMyMCAXDTEyMDIxNjExMTAyM1oYDzIxMTIwMTIzMTExMDIzWjAT + MREwDwYDVQQDDAhDT01QLTIzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA + wi/3Z8W9pUiegUXIk/AiFDQ0UJ4JFAwjqr+HSRUirlUsHHT+8DzH/hfcTDX1I5BB + D1ADk+ydXjMm3OZrQcXjn29OUfM5C+g+oqeMnYQImN0DDQIOcUyr7AJc4xhvuXQ1 + P2pJ5NOd3tbd0kexETa1LVhR6EgBC25LyRBRae76qosCAwEAAaNQME4wHQYDVR0O + BBYEFMDmW9aFy1sKTfCpcRkYnP6zUd1cMB8GA1UdIwQYMBaAFMDmW9aFy1sKTfCp + cRkYnP6zUd1cMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAskbFizHr + b6d3iIyN+wffxz/V9epbKIZVEGJd/6LrTdLiUfJPec7FaxVCWNyKBlCpINBM7cEV + Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby + If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY= + -----END CERTIFICATE-----