Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Xiaowu Zhang
slapos
Commits
47008dec
Commit
47008dec
authored
Apr 20, 2022
by
Alain Takoudjou
Browse files
Options
Browse Files
Download
Plain Diff
Add Beremiz IDE software release
See merge request
nexedi/slapos!1134
parents
89612bdd
bd2a047b
Changes
27
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
1353 additions
and
3 deletions
+1353
-3
component/ffmpeg/buildout.cfg
component/ffmpeg/buildout.cfg
+1
-0
component/fluxbox/buildout.cfg
component/fluxbox/buildout.cfg
+53
-0
component/gtk-3/buildout.cfg
component/gtk-3/buildout.cfg
+3
-0
component/kerberos/buildout.cfg
component/kerberos/buildout.cfg
+21
-0
component/libepoxy/buildout.cfg
component/libepoxy/buildout.cfg
+1
-0
component/libjpeg/buildout.cfg
component/libjpeg/buildout.cfg
+35
-0
component/libvnc/buildout.cfg
component/libvnc/buildout.cfg
+73
-0
component/lzo/buildout.cfg
component/lzo/buildout.cfg
+3
-2
component/matiec/buildout.cfg
component/matiec/buildout.cfg
+28
-0
component/opencv/buildout.cfg
component/opencv/buildout.cfg
+65
-0
component/python-2.7/buildout.cfg
component/python-2.7/buildout.cfg
+1
-1
component/sikuli/buildout.cfg
component/sikuli/buildout.cfg
+29
-0
component/wxpython/buildout.cfg
component/wxpython/buildout.cfg
+76
-0
component/wxwidgets/buildout.cfg
component/wxwidgets/buildout.cfg
+60
-0
component/xorg/buildout.cfg
component/xorg/buildout.cfg
+13
-0
component/xterm/buildout.cfg
component/xterm/buildout.cfg
+51
-0
software/beremiz-ide/buildout.hash.cfg
software/beremiz-ide/buildout.hash.cfg
+30
-0
software/beremiz-ide/fluxbox-menu.in
software/beremiz-ide/fluxbox-menu.in
+22
-0
software/beremiz-ide/instance-beremiz-test.cfg.jinja2.in
software/beremiz-ide/instance-beremiz-test.cfg.jinja2.in
+74
-0
software/beremiz-ide/instance-beremiz.cfg.jinja2.in
software/beremiz-ide/instance-beremiz.cfg.jinja2.in
+253
-0
software/beremiz-ide/instance.cfg.in
software/beremiz-ide/instance.cfg.in
+84
-0
software/beremiz-ide/software.cfg
software/beremiz-ide/software.cfg
+205
-0
software/beremiz-ide/test.cfg
software/beremiz-ide/test.cfg
+62
-0
software/beremiz-ide/test/README.md
software/beremiz-ide/test/README.md
+2
-0
software/beremiz-ide/test/setup.py
software/beremiz-ide/test/setup.py
+50
-0
software/beremiz-ide/test/test.py
software/beremiz-ide/test/test.py
+51
-0
software/slapos-sr-testing/software.cfg
software/slapos-sr-testing/software.cfg
+7
-0
No files found.
component/ffmpeg/buildout.cfg
View file @
47008dec
...
...
@@ -55,6 +55,7 @@ md5sum = 3f489aa48ad2aa1f967dc5e293bbd06f
[yasm]
recipe = slapos.recipe.cmmi
shared = true
url = http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz
[libvpx]
...
...
component/fluxbox/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../freetype/buildout.cfg
../glib/buildout.cfg
../libpng/buildout.cfg
../pcre/buildout.cfg
../xorg/buildout.cfg
../gtk-2/buildout.cfg
parts =
fluxbox
[fluxbox]
recipe = slapos.recipe.cmmi
url = https://netcologne.dl.sourceforge.net/project/fluxbox/fluxbox/1.3.7/fluxbox-1.3.7.tar.bz2
md6sum = c4701822d8a09d426ebf26e7e97c552a
configure-options =
--enable-x
--enable-xext
--enable-xrender
--enable-xdmcp
--enable-freetype2
--enable-xinerama
--enable-fribidi
--enable-debug
environment =
PATH=${freetype:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${libXext:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${libXdmcp:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libXrandr:pkg_config_depends}:${libXrandr:location}/lib/pkgconfig:${xorgproto:pkg_config_depends}:${xorgproto:location}/share/pkgconfig:${fribidi:location}/lib/pkgconfig
LDFLAGS=-L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -Wl,-rpath=${libXrandr:location}/lib -L${libXext:location}/lib -Wl,-rpath=${libXext:location}/lib -L${xextproto:location}/lib -L${libXrender:location}/lib -Wl,-rpath=${libXrender:location}/lib -Wl,-rpath=${freetype:location}/lib -L${libXdmcp:location}/lib -L${libXinerama:location}/lib -Wl,-rpath=${libXinerama:location}/lib -L${fribidi:location}/lib -Wl,-rpath=${fribidi:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${bzip2:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${libpng:location}/lib -Wl,-rpath=${libpng:location}/lib
CPPFLAGS=-I${xextproto:location}/include -I${libX11:location}/include -I${libXrandr:location}/include -I${xorgproto:location}/include -I${xproto:location}/include -I${kbproto:location}/include -I${libXrender:location}/include -I${renderext:location}/include -I${libXext:location}/include -I${libXdmcp:location}/include -I${libXinerama:location}/include -I${fribidi:location}/include -I${libpng:location}/include
X11_CFLAGS=-I${libX11:location}/include
X11_LIBS=-L${libX11:location}/lib -lX11
FREETYPE2_CFLAGS=-I${freetype:location}/include
FREETYPE2_LIBS=-L${freetype:location}/lib -lfreetype
XRENDER_LIBS=-L${libXrender:location}/lib -lXrender
XRENDER_CFLAGS=-I${libXrender:location}/include
XINERAMA_CFLAGS=-I${libXinerama:location}/include
XINERAMA_LIBS=-L${libXinerama:location}/lib -lXinerama
[wmctrl]
recipe = slapos.recipe.cmmi
#url = http://tripie.sweb.cz/utils/wmctrl/dist/wmctrl-1.07.tar.gz
# latest version wmctrl 1.07 was not maintenaned for years, it fails to list windows
url = https://github.com/saravanabalagi/wmctrl/archive/7ecfd2adaa2726a0c974b30bd6df2a65094032dd.tar.gz
md5sum = 6337ecc72cf7bd393f319fc822294105
configure-options =
--with-x
--x-includes=${libX11:location}/include
--x-libraries=${libX11:location}/lib
environment =
PATH=${glib:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${libX11:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libICE:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${libxmu:location}/lib/pkgconfig:${glib:location}/lib/pkgconfig:${pcre:location}/lib/pkgconfig
LDFLAGS=-Wl,-rpath=${libX11:location}/lib -Wl,-rpath=${libICE:location}/lib -L${libxmu:location}/lib -Wl,-rpath=${libxmu:location}/lib -L${libSM:location}/lib -Wl,-rpath=${libSM:location}/lib -L${glib:location}/lib -Wl,-rpath=${glib:location}/lib -L${libICE:location}/lib -lglib-2.0
CPPFLAGS=-I${xproto:location}/include -I${libxmu:location}/include -I${libSM:location}/include -I${glib:location}/include/glib-2.0 -I${glib:location}/lib/glib-2.0/include
component/gtk-3/buildout.cfg
View file @
47008dec
...
...
@@ -13,6 +13,7 @@ extends =
[at-spi2-core]
recipe = slapos.recipe.cmmi
shared = true
url =http://ftp.gnome.org/pub/gnome/core/3.22/3.22.2/sources/at-spi2-core-2.22.0.tar.xz
md5sum = 3da5fe62a653e49dad1c47f9a46fee56
configure-options =
...
...
@@ -25,6 +26,7 @@ environment =
[at-spi2-atk]
recipe = slapos.recipe.cmmi
shared = true
url =http://ftp.gnome.org/pub/gnome/core/3.22/3.22.2/sources/at-spi2-atk-2.22.0.tar.xz
md5sum = aa62aed21b8e03dc44ab81ae49d893ca
environment =
...
...
@@ -33,6 +35,7 @@ environment =
[gtk-3]
recipe = slapos.recipe.cmmi
shared = true
url = http://ftp.gnome.org/pub/gnome/core/3.22/3.22.2/sources/gtk+-3.22.3.tar.xz
md5sum = f0e6492896a2ca244501142319adaa95
pkg_config_depends = ${at-spi2-atk:location}/lib/pkgconfig:${at-spi2-core:location}/lib/pkgconfig:${dbus:location}/lib/pkgconfig:${glib:location}/lib/pkgconfig:${libepoxy:location}/lib/pkgconfig:${pango:location}/lib/pkgconfig:${pango:pkg_config_depends}:${atk:location}/lib/pkgconfig:${gdk-pixbuf:location}/lib/pkgconfig:${libXi:pkg_config_depends}:${libXi:location}/lib/pkgconfig:${pcre:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libX11:location}/lib/pkgconfig:${xorgproto:location}/lib/pkgconfig:${libXext:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libXrender:location}/lib/pkgconfig:${renderproto:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${xcbproto:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${libXinerama:location}/lib/pkgconfig:${libXrandr:pkg_config_depends}:${libXrandr:location}/lib/pkgconfig:${xfixes:location}/lib/pkgconfig:${libXcomposite:location}/lib/pkgconfig:${xdamage:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${fixesproto:location}/lib/pkgconfig:${xorg-util-macros:location}/share/pkgconfig:${kbproto:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${compositeproto:location}/lib/pkgconfig:${fixesproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${xfixes:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${xorg-util-macros:location}/share/pkgconfig:${xproto:location}/lib/pkgconfig:${damageproto:location}/lib/pkgconfig:${xfixes:location}/lib/pkgconfig:${fixesproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig
...
...
component/kerberos/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../bison/buildout.cfg
parts =
kerberos
[kerberos]
recipe = slapos.recipe.cmmi
shared = true
url = http://web.mit.edu/kerberos/dist/krb5/1.19/krb5-1.19.2.tar.gz
md5sum = eb51b7724111e1a458a8c9a261d45a31
configure-command = src/configure
configure-options =
--prefix=@@LOCATION@@
--with-ldap=no
--without-readline
--without-tcl
--without-keyutils
environment =
PATH=${bison:location}/bin:%(PATH)s
component/libepoxy/buildout.cfg
View file @
47008dec
...
...
@@ -7,6 +7,7 @@ extends =
[libepoxy]
recipe = slapos.recipe.cmmi
shared = true
url = https://github.com/anholt/libepoxy/releases/download/v1.4/libepoxy-1.4.0.tar.xz
md5sum = d8d8cbf2beb64975d424fcc5167a2a38
environment =
...
...
component/libjpeg/buildout.cfg
View file @
47008dec
[buildout]
extends =
../ffmpeg/buildout.cfg
../cmake/buildout.cfg
parts =
libjpeg
...
...
@@ -9,3 +13,34 @@ url = http://www.ijg.org/files/jpegsrc.v9d.tar.gz
md5sum = 693a4e10906e66467ca21f045547fe15
configure-options =
--disable-static
[libjpeg-turbo2]
recipe = slapos.recipe.cmmi
shared = true
url = https://freefr.dl.sourceforge.net/project/libjpeg-turbo/${:version}/libjpeg-turbo-${:version}.tar.gz
version = 2.1.2
md5sum = e181bd78884dd5392a869209bfa41d4a
configure-command = cmake
configure-options =
-Bbuild
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DENABLE_STATIC=0
-G"Unix Makefiles"
make-options = -C build
environment =
PATH=${cmake:location}/bin:%(PATH)s
[libjpeg-turbo]
recipe = slapos.recipe.cmmi
shared = true
url = https://freefr.dl.sourceforge.net/project/libjpeg-turbo/${:version}/libjpeg-turbo-${:version}.tar.gz
version = 1.5.2
md5sum = 6b4923e297a7eaa255f08511017a8818
configure-options =
--disable-static
--with-gnu-ld
--with-jpeg7
--with-jpeg8
environment =
PATH=${yasm:location}/bin:%(PATH)s
component/libvnc/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../cmake/buildout.cfg
../libjpeg/buildout.cfg
../lzo/buildout.cfg
../libtirpc/buildout.cfg
../kerberos/buildout.cfg
../xorg/buildout.cfg
parts =
x11vnc
[libvncserver]
recipe = slapos.recipe.cmmi
shared = true
url = https://github.com/LibVNC/libvncserver/archive/refs/tags/LibVNCServer-0.9.13.tar.gz
md5sum = 503b5527b93dce77e8b6a45f273f6e39
configure-command = cmake
configure-options =
-Bbuild
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DBUILD_SHARED_LIBS=ON
-DWITH_SYSTEMD=OFF
-DWITH_SDL=OFF
-DWITH_GTK=OFF
-DWITH_WEBSOCKETS=ON
-DWITH_LZO=ON
-DWITH_GCRYPT=ON
-DWITH_IPv6=ON
-DWITH_JPEG=ON
-DWITH_FFMPEG=OFF
-DWITH_PNG=ON
-DWITH_GNUTLS=ON
-DWITH_OPENSSL=ON
-DZLIB_INCLUDE_DIR=${zlib:location}/include
-DZLIB_LIBRARY=${zlib:location}/lib/libz.so
-DJPEG_LIBRARY=${libjpeg-turbo2:location}/lib/libjpeg.so
-DJPEG_INCLUDE_DIR=${libjpeg-turbo2:location}/include
-DPNG_LIBRARY=${libpng:location}/lib/libpng.so
-DPNG_PNG_INCLUDE_DIR=${libpng:location}/include
-DOPENSSL_INCLUDE_DIR=${openssl:location}/include
-DLZO_INCLUDE_DIR=${lzo:location}/include
-DLZO_LIBRARIES=${lzo:location}/lib/liblzo2.a
-DGNUTLS_LIBRARY=${gnutls:location}/lib/libgnutls.so
-DGNUTLS_INCLUDE_DIR=${gnutls:location}/include
make-options = -C build
environment =
PATH=${cmake:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${zlib:location}/lib/pkgconfig:${libpng:location}/lib/pkgconfig:${libjpeg-turbo2:location}/lib/pkgconfig:${openssl:location}/lib/pkgconfig
CPPFLAGS=-I${openssl:location}/include -I${libgcrypt:location}/include -I${libjpeg-turbo2:location}/include -I${gnutls:location}/include -I${lzo:location}/include
LDFLAGS=-L${libgcrypt:location}/lib -Wl,-rpath=${libgcrypt:location}/lib -L${openssl:location}/lib -Wl,-rpath=${openssl:location}/lib -L${libjpeg-turbo2:location}/lib -Wl,-rpath=${libjpeg-turbo2:location}/lib -Wl,-rpath=${libpng:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${gnutls:location}/lib -Wl,-rpath=${gnutls:location}/lib -L${lzo:location}/lib -pthread -ljpeg
[x11vnc]
recipe = slapos.recipe.cmmi
url = https://github.com/LibVNC/x11vnc/archive/0.9.16.tar.gz
md5sum = 64172e8f896389ec963fff93415f0d93
pre-configure =
autoreconf -fiv -I ${libtool:location}/share/aclocal -I ${pkgconfig:location}/share/aclocal -I ${gettext:location}/share/aclocal
configure-options =
--without-crypt
--without-avahi
--without-xinerama
--without-xtrap
--without-xrecord
--without-v4l
--without-fbpm
--without-dpms
environment =
PATH=${autoconf:location}/bin:${automake:location}/bin:${libtool:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libXext:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libXtst:location}/lib/pkgconfig:${libvncserver:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig
CPPFLAGS=-I${openssl:location}/include -I${libX11:location}/include -I${xproto:location}/include -I${xorgproto:location}/include -I${libXi:location}/include -I${libXtst:location}/include -I${libXext:location}/include -I${xextproto:location}/include -I${libvncserver:location}/include -I${zlib:location}/include -I${libXrandr:location}/include -I${xfixes:location}/include -I${xdamage:location}/include -I${libXcomposite:location}/include -I${libXrender:location}/include
LDFLAGS=-L${openssl:location}/lib -Wl,-rpath=${openssl:location}/lib -L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${xproto:location}/lib -L${xorgproto:location}/lib -L${libXi:location}/lib -L${libXtst:location}/lib -Wl,-rpath=${libXtst:location}/lib -L${libXext:location}/lib -L${xextproto:location}/lib -Wl,-rpath=${libXext:location}/lib -L${libvncserver:location}/lib -Wl,-rpath=${libvncserver:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${libXrandr:location}/lib -Wl,-rpath=${libXrandr:location}/lib -L${xfixes:location}/lib -Wl,-rpath=${xfixes:location}/lib -L${xdamage:location}/lib -Wl,-rpath=${xdamage:location}/lib -L${libXcomposite:location}/lib -Wl,-rpath=${libXcomposite:location}/lib -L${libXrender:location}/lib -Wl,-rpath=${libXrender:location}/lib -Wl,-rpath=${libtirpc:location}/lib -Wl,-rpath=${kerberos:location}/lib
component/lzo/buildout.cfg
View file @
47008dec
...
...
@@ -5,5 +5,6 @@ parts =
[lzo]
recipe = slapos.recipe.cmmi
url = http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
md5sum = c7ffc9a103afe2d1bba0b015e7aa887f
shared = true
url = https://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
md5sum = 39d3f3f9c55c87b1e5d6888e1420f4b5
component/matiec/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../autoconf/buildout.cfg
../automake/buildout.cfg
../flex/buildout.cfg
../bison/buildout.cfg
[matiec]
recipe = slapos.recipe.cmmi
url = https://github.com/beremiz/matiec/archive/${:version}.tar.gz
md5sum = 6ee62c3d523c6154e7d781d98756444f
version = f59f45d5219172dea171d8ff305f28606a9500ff
pre-configure =
${autoconf:location}/bin/autoreconf -i
make-targets =
post-install =
cp -r * %(location)s/
environment =
PATH=${autoconf:location}/bin:${automake:location}/bin:${flex:location}/bin:${bison:location}/bin:%(PATH)s
[Modbus]
recipe = slapos.recipe.cmmi
url = https://hg.beremiz.org/Modbus/archive/e319814f1c17.tar.bz2
md5sum = ad43fdacf223c7861576422eb89c15aa
configure-command = true
make-targets =
post-install =
cp -r *.h libmb.a libmb.so %(location)s/
component/opencv/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../java/buildout.cfg
../java-jdk/buildout.cfg
../cmake/buildout.cfg
../libjpeg/buildout.cfg
parts =
opencv
[java-re]
<= java-re-temurin-11
[ant]
recipe = slapos.recipe.build:download-unpacked
shared = true
url = https://dlcdn.apache.org/ant/binaries/apache-ant-1.9.16-bin.tar.bz2
md5sum = 2a1ef0230e673b6da876a8fc9744b9a1
[opencv]
recipe = slapos.recipe.cmmi
shared = true
url = https://github.com/opencv/opencv/archive/4.3.0.tar.gz
configure-command = cmake
configure-options =
-Bbuild
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DCMAKE_BUILD_TYPE=RELEASE
-DINSTALL_PYTHON_EXAMPLES=OFF
-DINSTALL_C_EXAMPLES=OFF
-DOPENCV_ENABLE_NONFREE=ON
-DPYTHON_EXECUTABLE=${python2.7:location}/bin/python
-DANT_EXECUTABLE=${ant:location}/bin/ant
-DBUILD_SHARED_LIBRARY=OFF
-DBUILD_TESTS=OFF
-DBUILD_PERF_TESTS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_JAVA=ON
-DJAVA_AWT_INCLUDE_PATH=${java-jdk:location}/include
-DJAVA_AWT_LIBRARY=${java-jdk:location}/lib/libawt.so
-DJAVA_INCLUDE_PATH=${java-jdk:location}/include
-DJAVA_INCLUDE_PATH2=${java-jdk:location}/include/linux
-DJAVA_JVM_LIBRARY=${java-jdk:location}/include/jni.h
-DWITH_VTK=OFF
-DWITH_FFMPEG=OFF
-DWITH_GTK=OFF
-DPYTHON_LIBRARIES=${python:location}/lib
-DPYTHON_INCLUDE_DIRS=${python:location}/include/python${python:version}
-DZLIB_INCLUDE_DIR=${zlib:location}/include
-DZLIB_LIBRARY=${zlib:location}/lib/libz.so
-DJPEG_LIBRARY=${libjpeg-turbo2:location}/lib/libjpeg.so
-DJPEG_INCLUDE_DIR=${libjpeg-turbo2:location}/include
-DPNG_LIBRARY=${libpng:location}/lib/libpng.so
-DPNG_PNG_INCLUDE_DIR=${libpng:location}/include
make-options = -C build
post-install =
cp build/lib/libopencv_java430.so @@LOCATION@@/lib
cp build/bin/opencv-430.jar @@LOCATION@@/bin
environment =
PATH=${cmake:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${zlib:location}/lib/pkgconfig:${libpng:location}/lib/pkgconfig:${libjpeg-turbo2:location}/lib/pkgconfig
JAVA_HOME=${java-jdk:location}
JRE_HOME=${java-re:location}
CPPFLAGS=-I${libjpeg-turbo2:location}/include -I${libpng:location}/include
LDFLAGS=-L${libjpeg-turbo2:location}/lib -Wl,-rpath=${libjpeg-turbo2:location}/lib -Wl,-rpath=${libpng:location}/lib -Wl,-rpath=${zlib:location}/lib -L${zlib:location}/lib -Wl,-rpath=@@LOCATION@@/lib
component/python-2.7/buildout.cfg
View file @
47008dec
...
...
@@ -69,5 +69,5 @@ post-install = cd '%(prefix)s' &&
# which would otherwise load the system libmagic.so with ctypes
environment =
PATH=${patch:location}/bin:${xz-utils:location}/bin:%(PATH)s
CPPFLAGS=-I${zlib:location}/include -I${readline:location}/include -I${libexpat:location}/include -I${libffi:location}/include -I${ncurses:location}/include -I${ncurses:location}/include -I${bzip2:location}/include -I${gdbm:location}/include -I${openssl:location}/include -I${sqlite3:location}/include -I${gettext:location}/include
CPPFLAGS=-I${zlib:location}/include -I${readline:location}/include -I${libexpat:location}/include -I${libffi:location}/include -I${ncurses:location}/include -I${ncurses:location}/include -I${bzip2:location}/include -I${gdbm:location}/include -I${openssl:location}/include -I${sqlite3:location}/include -I${gettext:location}/include
-fPIC
LDFLAGS=-L${zlib:location}/lib -L${readline:location}/lib -L${libexpat:location}/lib -L${libffi:location}/lib -L${ncurses:location}/lib -L${bzip2:location}/lib -L${gdbm:location}/lib -L${openssl:location}/lib -L${sqlite3:location}/lib -Wl,-rpath=${zlib:location}/lib -Wl,-rpath=${readline:location}/lib -Wl,-rpath=${libexpat:location}/lib -Wl,-rpath=${libffi:location}/lib -Wl,-rpath=${ncurses:location}/lib -Wl,-rpath=${bzip2:location}/lib -Wl,-rpath=${gdbm:location}/lib -Wl,-rpath=${openssl:location}/lib -Wl,-rpath=${sqlite3:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib -Wl,-rpath=${file:location}/lib
component/sikuli/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../java/buildout.cfg
../xorg/buildout.cfg
../tesseract/buildout.cfg
parts =
sikuli
[java]
<= java-re-temurin-11
[sikuli-download]
recipe = slapos.recipe.build:download
url = https://launchpad.net/sikuli/sikulix/2.0.5/+download/sikulixide-2.0.5.jar
filename = sikulixide-2.0.5.jar
md5sum = 0795f1e0866ee5a7a84e4c89793ea78c
[sikuli]
recipe = slapos.recipe.template
output = ${buildout:parts-directory}/${:_buildout_section_name_}/sikulix
inline =
#!/bin/sh -e
export JAVA_HOME=${java:location}
export JRE_HOME=${java:location}
export PATH=${java:location}/bin:$PATH
# Sikulix jar file hash some embeded shared libraries (libJXGrabKey.so, libopencv_java430.so)
export LD_LIBRARY_PATH=${tesseract:location}/lib:${libX11:location}/lib:${gcc:prefix}/lib64:${gcc:prefix}/lib:${libxcb:location}/lib:${libXau:location}/lib:${libXdmcp:location}/lib$${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
exec java -jar ${sikuli-download:location}/${sikuli-download:filename} "$@"
component/wxpython/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../pkgconfig/buildout.cfg
../gtk-3/buildout.cfg
../pillow/buildout.cfg
../numpy/buildout.cfg
../wxwidgets/buildout.cfg
parts =
wxPython
[wxpython-eggs]
recipe = zc.recipe.egg
interpreter = wxpython2.7
eggs =
requests
${numpy:egg}
${pillow-python:egg}
[nanosvg]
recipe = slapos.recipe.build:download-unpacked
shared = true
url = https://github.com/wxWidgets/nanosvg/archive/${:version}.tar.gz
version = 9dd92bbfc6f709e889578a724724ffbd42ac3004
md5sum = b9060d6600ebffa4080d1b29c99d1f30
[wxPython-download]
recipe = slapos.recipe.build:download-unpacked
url = https://github.com/wxWidgets/Phoenix/archive/refs/tags/wxPython-4.1.1.tar.gz
md5sum = e72d99cd865c4220b65065079457c6c5
[wxPython]
recipe = slapos.recipe.build
egg = ${:_buildout_section_name_}
source-location = ${wxPython-download:location}
egg-name = ${:egg}-${versions:wxPython}-py${python:version}-linux-x86_64.egg
location = ${buildout:eggs-directory}/${:egg-name}
python-bin = ${buildout:bin-directory}/${wxpython-eggs:interpreter}
ext-path = ${wxWidgets:location}/${wxWidgets:ext-name}
install =
import os, sys
from slapos.recipe.downloadunpacked import unpack_archive
from zc.buildout import easy_install
env = self.environ
workdir = options['source-location']
python_bin = options['python-bin']
dist = os.path.join(workdir, 'dist')
build = os.path.join(workdir, 'build')
doxygen = os.path.join(workdir, 'bin', 'doxygen-1.8.8-linux')
sip = os.path.join(workdir, 'bin', 'sip-4.19.24-linux64')
waf = os.path.join(workdir, 'bin', 'waf-2.0.19')
wxwidget = os.path.join(workdir, 'ext', 'wxWidgets')
wxpython_eggs = self.buildout['wxpython-eggs']
egg_list = easy_install.working_set(wxpython_eggs['eggs'].split(), [
wxpython_eggs['develop-eggs-directory'],
wxpython_eggs['eggs-directory'],
]).entries
egg_list.append(workdir)
env['PYTHONPATH'] = os.pathsep.join(sys.path + egg_list)
self.cleanup_list += build, dist, doxygen, sip, waf, wxwidget
unpack_archive(self, options['ext-path'], wxwidget)
call([python_bin, 'build.py', 'dox', 'etg', '--nodoc', 'sip', 'build', '--use_syswx', '--release',
'--gtk3'], env=env, cwd=workdir)
call([python_bin, 'build.py', 'bdist_egg', '--use_syswx', '--release',
'--gtk3'], env=env, cwd=workdir)
unpack_archive(self, os.path.join(dist, options['egg-name']), location)
call([python_bin, 'build.py', 'clean'], env=env, cwd=workdir)
environment =
PATH=${xz-utils:location}/bin:${pkgconfig:location}/bin:${wxWidgets:location}/bin:%(PATH)s
LDFLAGS=-L${gtk-3:location}/lib -Wl,-rpath=${gtk-3:location}/lib -L${wxWidgets:location}/lib -Wl,-rpath=${wxWidgets:location}/lib
CPPFLAGS=-I${wxWidgets:location}/include/wx-3.0 -I${wxWidgets:location}/lib/wx/include/gtk3-unicode-3.0 -I${gtk-3:location}/include/gtk-3.0 -I${nanosvg:location}/src
PKG_CONFIG_PATH = ${glib:location}/lib/pkgconfig:${gtk-3:location}/lib/pkgconfig:${gtk-3:pkg_config_depends}
[versions]
wxPython = 4.1.1
component/wxwidgets/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../pkgconfig/buildout.cfg
../libpng/buildout.cfg
../zlib/buildout.cfg
../libjpeg/buildout.cfg
../libtiff/buildout.cfg
../gtk-3/buildout.cfg
../glib/buildout.cfg
../libexpat/buildout.cfg
../libepoxy/buildout.cfg
../jbigkit/buildout.cfg
../gettext/buildout.cfg
../freetype/buildout.cfg
../fontconfig/buildout.cfg
../tar/buildout.cfg
../git/buildout.cfg
parts =
wxWidgets
[catch]
recipe = slapos.recipe.build:download-unpacked
shared = true
url = https://github.com/wxWidgets/Catch/archive/${:version}.tar.gz
version = ee4acb6ae6e32a02bc012d197aa82b1ca7a493ab
md5sum = 68b358d05aca88f593d6b479ae30e9a0
[wxWidgets]
recipe = slapos.recipe.cmmi
shared = true
url = https://github.com/wxWidgets/wxWidgets/archive/${:version}.tar.gz
md5sum = ae15c3695aea69507ed392cf9ea2ec03
version = 493cc3571e0308e1a273231daefa8deb7fbc4cf1
ext-name = wxwidgets-ext.tar.xz
pre-configure =
# configure script is looking for catch in 3rdparty/catch
rm -rf 3rdparty/catch && ln -sf ${catch:location} 3rdparty/catch
configure-options =
--enable-ipv6
--enable-rpath
--with-gtk=3
--with-zlib
--with-expat
--with-libpng
--with-libjpeg
--with-libtiff
--with-gtk-prefix=${gtk-3:location}
--with-themes=all
post-install =
# wxPython need docs and interface folders to build, but wxPython build
# script will write and read to docs/out folder. So w'll extract this
# tarball to wxPython/ext/wxWidgets dir.
tar -acf @@LOCATION@@/${:ext-name} docs interface
environment =
PATH=${xz-utils:location}/bin:${tar:location}/bin:${git:location}/bin:${gettext:location}/bin:${gtk-3:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${gtk-3:location}/lib/pkgconfig:${libtiff:location}/lib/pkgconfig:${gtk-3:pkg_config_depends}
LDFLAGS=-L${gtk-3:location}/lib -Wl,-rpath=${gtk-3:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib -L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${libtiff:location}/lib -Wl,-rpath=${libtiff:location}/lib -L${libjpeg-turbo:location}/lib -Wl,-rpath=${libjpeg-turbo:location}/lib -L${libpng:location}/lib -Wl,-rpath=${libpng:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${libexpat:location}/lib -Wl,-rpath=${libexpat:location}/lib -Wl,-rpath=${xz-utils:location}/lib -Wl,-rpath=${jbigkit:location}/lib -L${glib:location}/lib -Wl,-rpath=${glib:location}/lib -L${pango:location}/lib -Wl,-rpath=${pango:location}/lib -L${cairo:location}/lib -Wl,-rpath=${cairo:location}/lib -L${gdk-pixbuf:location}/lib -Wl,-rpath=${gdk-pixbuf:location}/lib -L${atk:location}/lib -Wl,-rpath=${atk:location}/lib -Wl,-rpath=${fontconfig:location}/lib -Wl,-rpath=${freetype:location}/lib -Wl,-rpath=@@LOCATION@@/lib
CPPFLAGS=-I${libexpat:location}/include -I${xz-utils:location}/include -I${zlib:location}/include -I${gettext:location}/include -I${gtk-3:location}/include/gtk-3.0 -I${pango:location}/include/pango-1.0 -I${cairo:location}/include/cairo -I${cairo:location}/include -I${gdk-pixbuf:location}/include/gdk-pixbuf-2.0 -I${atk:location}/include/atk-1.0 -I${glib:location}/include/glib-2.0 -I${glib:location}/include/gio-unix-2.0 -I${glib:location}/lib/glib-2.0/include -I${libjpeg-turbo:location}/include -I${libpng:location}/include -I${libX11:location}/include -I${libtiff:location}/include
component/xorg/buildout.cfg
View file @
47008dec
...
...
@@ -525,6 +525,19 @@ environment =
PATH=${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${damageproto:location}/lib/pkgconfig:${xfixes:location}/lib/pkgconfig:${fixesproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${kbproto:location}/lib/pkgconfig:${libxcb:location}/lib/pkgconfig:${xorg-libpthread-stubs:location}/lib/pkgconfig:${libXau:location}/lib/pkgconfig
[xdotool]
recipe = slapos.recipe.cmmi
url = https://github.com/jordansissel/xdotool/releases/download/v3.20211022.1/xdotool-3.20211022.1.tar.gz
md5sum = 9fd993a251a7c38b32381503544b0dd7
configure-command = true
make-options =
PREFIX=@@LOCATION@@
pre-build = mkdir @@LOCATION@@/lib
environment =
PKG_CONFIG_PATH=${libXtst:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libXinerama:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libXi:location}/lib/pkgconfig:${libXi:pkg_config_depends}:${libxkbcommon:location}/lib/pkgconfig:${libxkbcommon:pkg_config_depends}:${recordproto:location}/lib/pkgconfig:${xineramaproto:location}/lib/pkgconfig
PATH=${pkgconfig:location}/bin:%(PATH)s
LDFLAGS=-Wl,-rpath=${libX11:location}/lib -Wl,-rpath=${libXi:location}/lib -Wl,-rpath=${libxkbcommon:location}/lib -Wl,-rpath=${libXtst:location}/lib -Wl,-rpath=${libXinerama:location}/lib
[libxmu]
recipe = slapos.recipe.cmmi
shared = true
...
...
component/xterm/buildout.cfg
0 → 100644
View file @
47008dec
[buildout]
parts =
xterm
extends =
../freetype/buildout.cfg
../ncurses/buildout.cfg
../autoconf/buildout.cfg
../automake/buildout.cfg
../libtool/buildout.cfg
../gettext/buildout.cfg
../pcre/buildout.cfg
../m4/buildout.cfg
../xorg/buildout.cfg
[libXpm]
recipe = slapos.recipe.cmmi
shared = true
url = https://gitlab.freedesktop.org/xorg/lib/libxpm/-/archive/libXpm-3.5.13/libxpm-libXpm-3.5.13.tar.bz2
md5sum = 9d7680f231e24777c2a2d278cac4be16
pre-configure =
${autoconf:location}/bin/autoreconf -i -I ${libtool:location}/share/aclocal -I ${xorg-util-macros:location}/share/aclocal -I${pkgconfig:location}/share/aclocal
environment =
PATH=${gettext:location}/bin:${autoconf:location}/bin:${automake:location}/bin:${libtool:location}/bin:${pkgconfig:location}/bin:%(PATH)s
M4=${m4:location}/bin/m4
PKG_CONFIG_PATH=${libSM:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libXext:location}/lib/pkgconfig:${libXt:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig
[libXaw]
recipe = slapos.recipe.cmmi
shared = true
url = https://gitlab.freedesktop.org/xorg/lib/libxaw/-/archive/libXaw-1.0.14/libxaw-libXaw-1.0.14.tar.bz2
md5sum = a121ce2f9d83c633a0e3f2b74be246d5
pre-configure =
${autoconf:location}/bin/autoreconf -i -I ${libtool:location}/share/aclocal -I ${xorg-util-macros:location}/share/aclocal -I${pkgconfig:location}/share/aclocal
environment =
PATH=${autoconf:location}/bin:${automake:location}/bin:${libtool:location}/bin:${pkgconfig:location}/bin:%(PATH)s
M4=${m4:location}/bin/m4
PKG_CONFIG_PATH=${libX11:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libXext:location}/lib/pkgconfig:${libXt:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libxmu:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig:${libSM:location}/lib/pkgconfig:${libXpm:location}/lib/pkgconfig
[xterm]
recipe = slapos.recipe.cmmi
url = https://invisible-mirror.net/archives/xterm/xterm-372.tgz
md5sum = 442115b649ec2d11f5664bded595cefe
configure-options =
--with-pcre
--with-freetype-config=${freetype:location}/bin/freetype-config
environment =
PATH=${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${libSM:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig:${libICE:location}/lib/pkgconfig:${xextproto:location}/lib/pkgconfig:${libX11:location}/lib/pkgconfig:${libX11:pkg_config_depends}:${libXext:location}/lib/pkgconfig:${libXt:location}/lib/pkgconfig:${xproto:location}/lib/pkgconfig:${libXaw:location}/lib/pkgconfig:${libXpm:location}/lib/pkgconfig:${libxmu:location}/lib/pkgconfig:${pcre:location}/lib/pkgconfig
CFLAGS=-I${ncurses:location}/include -I${libX11:location}/include -I${libXt:location}/include -I${xproto:location}/include -I${libXaw:location}/include -I${libxmu:location}/include
LDFLAGS=-L${ncurses:location}/lib -Wl,-rpath=${ncurses:location}/lib -L${libX11:location}/lib -Wl,-rpath=${libX11:location}/lib -L${libXt:location}/lib -L${libICE:location}/lib -L${libXext:location}/lib -L${libXaw:location} -L${libSM:location}/lib
software/beremiz-ide/buildout.hash.cfg
0 → 100644
View file @
47008dec
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[instance]
filename = instance.cfg.in
md5sum = c4079d70ab3268234651bf6c36234b2f
[template-instance-beremiz]
filename = instance-beremiz.cfg.jinja2.in
md5sum = ac05663b9006b7c4c9810a18e1ea4220
[template-instance-beremiz-test]
filename = instance-beremiz-test.cfg.jinja2.in
md5sum = 6049681908c5619d94499a6f4f224045
[template-fluxbox-menu.in]
filename = fluxbox-menu.in
md5sum = 09560314eae0225b6085f8626f1a603a
software/beremiz-ide/fluxbox-menu.in
0 → 100644
View file @
47008dec
[begin] (Fluxbox)
[encoding] {UTF-8}
[exec] (Beremiz IDE) { {{ beremiz_bin }} }
[exec] (Terminal) { {{ xterm_bin }} }
[submenu] (Fluxbox menu)
[config] (Configure)
[submenu] (System Styles) {Choose a style...}
[stylesdir] ({{ fluxbox_location }}/share/fluxbox/styles)
[end]
[submenu] (User Styles) {Choose a style...}
[stylesdir] (~/.fluxbox/styles)
[end]
[workspaces] (Workspace List)
[commanddialog] (Fluxbox Command)
[reconfig] (Reload config)
[restart] (Restart)
[exec] (About) {(fluxbox -v; fluxbox -info | sed 1d) | xmessage -file - -center}
[separator]
[exit] (Exit)
[end]
[endencoding]
[end]
software/beremiz-ide/instance-beremiz-test.cfg.jinja2.in
0 → 100644
View file @
47008dec
[directory]
tests = ${:srv}/tests
[xserver]
display-num = 42
resolution = 1920x1080x24
[wmctrl]
recipe = slapos.cookbook:wrapper
command-line = {{ wmctrl_bin }}
wrapper-path = ${directory:bin}/wmctrl
environment =
XORG_LOCK_DIR=${xserver:lock-dir}
DISPLAY=${xserver:display}
[xdotool]
recipe = slapos.cookbook:wrapper
command-line = {{ xdotool_bin }}
wrapper-path = ${directory:bin}/xdotool
environment =
XORG_LOCK_DIR=${xserver:lock-dir}
DISPLAY=${xserver:display}
[runTestSuite]
env.sh = ${beremiz-env.sh:output}
workdir = {{ nxdtest_dir }}
[beremiz-tests]
recipe = slapos.recipe.template
inline =
#!/bin/sh -e
cd {{ beremiz_location }}/tests
make test_dir=${directory:tests} xserver_command='echo "Using ${xserver:display} on Slapos X Server !";' "$@"
output = ${directory:bin}/beremiztest
[sikulix]
recipe = slapos.cookbook:wrapper
command-line = {{ sikulix_bin }} -v
wrapper-path = ${directory:bin}/sikulix
environment =
JAVA_TOOL_OPTIONS=-Duser.home=${buildout:directory} -Djava.io.tmpdir=${directory:tmp}
[libopencv_java430.so]
recipe = plone.recipe.command
opencv-link = ${buildout:directory}/.Sikulix/SikulixLibs/libopencv_java430.so
# We run sikulix with a random not existing projet so it will initialise all files
# and extract libopencv_java430.so from jar. We can then replace it with slapos
# compiled lib which solves GLIBC issues (version `GLIBC_2.27' not found).
command =
LINK=${:opencv-link}
if [ ! -e "$LINK" ]; then
${sikulix:wrapper-path} -r not_found_for_slapos.sikulix > /dev/null 2>&1 || true
fi
rm -f $LINK
ln -sf {{ opencv_location }}/lib/libopencv_java430.so $LINK
update-command = ${:command}
stop-on-error = true
[buildout]
extends =
{{ instance_nxdtest }}
{{ instance_beremiz }}
parts +=
sikulix
wmctrl
xdotool
beremiz-tests
runTestSuite
libopencv_java430.so
eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true
software/beremiz-ide/instance-beremiz.cfg.jinja2.in
0 → 100644
View file @
47008dec
{% set part_list = [] -%}
{% set ipv6 = (ipv6 | list)[0] -%}
{% set ipv4 = (ipv4 | list)[0] -%}
[directory]
recipe = slapos.cookbook:mkdirectory
etc = ${buildout:directory}/etc
bin = ${buildout:directory}/bin
srv = ${buildout:directory}/srv
var = ${buildout:directory}/var
tmp = ${buildout:directory}/tmp
log = ${:var}/log
vnc = ${buildout:directory}/.vnc
scripts = ${:etc}/run
services = ${:etc}/service
promise = ${:etc}/promise
ssl = ${:etc}/ssl
auth = ${:tmp}/auth
workdir = ${:srv}/workdir
framebuffer = ${:srv}/framebuffer
fluxbox = ${buildout:directory}/.fluxbox
[gen-certificate]
recipe = plone.recipe.command
command = "{{ openssl_bin }}" req -newkey rsa -batch -new -x509 -days 3650 -nodes -keyout "${:key-file}" -out "${:cert-file}"
stop-on-error = true
cert-file = ${directory:ssl}/beremiz.crt
key-file = ${directory:ssl}/beremiz.key
[novnc-instance]
recipe = slapos.cookbook:novnc
path = ${directory:bin}/novnc
ip = {{ ipv6 }}
port = 6080
vnc-ip = {{ ipv4 }}
vnc-port = ${x11vnc:port}
novnc-location = {{ novnc_location }}
websockify-path = {{ websockify_bin }}
ssl-key-path = ${gen-certificate:key-file}
ssl-cert-path = ${gen-certificate:cert-file}
[websockify-sighandler]
recipe = slapos.cookbook:signalwrapper
wrapper-path = ${directory:bin}/websockify-sighandler
wrapped-path = ${novnc-instance:path}
[websockify-sighandler-service]
recipe = slapos.cookbook:wrapper
command-line = ${websockify-sighandler:wrapper-path}
wrapper-path = ${directory:services}/websockify
hash-existing-files = ${buildout:directory}/software_release/buildout.cfg
[novnc-promise]
<= monitor-promise-base
promise = check_socket_listening
name = novnc_promise.py
config-host = ${novnc-instance:ip}
config-port = ${novnc-instance:port}
[x11vnc]
recipe = slapos.cookbook:wrapper
port = 5901
command-line = {{ x11vnc_bin }} -forever -display ${xserver:display} -ncache 10
-noxdamage -rfbport ${:port} -no6 -noipv6 -reopen -o ${directory:log}/x11vnc.log
-usepw -rfbauth ${x11vnc-passwd:passfile} -desktop BeremizVNC
-listen {{ ipv4 }} -xkb
wrapper-path = ${directory:services}/x11vnc
hash-existing-files = ${buildout:directory}/software_release/buildout.cfg
environment =
XORG_LOCK_DIR=${directory:run}
wait-for-files =
${xserver:lock-file}
[x11vnc-listen-promise]
<= monitor-promise-base
promise = check_socket_listening
name = x11vnc_listening.py
config-host = {{ ipv4 }}
config-port = ${x11vnc:port}
[random-password]
recipe = slapos.cookbook:generate.password
storage-path = ${directory:etc}/.passwd
bytes = 8
[x11vnc-passwd]
recipe = slapos.recipe.template
passfile = ${directory:vnc}/passwd
inline =
#!/bin/sh -e
if [ -s "${:passfile}" ]; then
echo "Password initialized.";
else
chmod 700 $(dirname ${:passfile});
{{ x11vnc_bin }} -storepasswd ${random-password:passwd} ${:passfile};
fi
output = ${directory:bin}/x11vnc_passwd
mode = 700
[generate-vnc-password]
recipe = plone.recipe.command
stop-on-error = true
command = ${x11vnc-passwd:output}
update-command = ${:command}
# Generate a fonts.conf file.
[font-config]
recipe = slapos.recipe.template:jinja2
url = {{ font_config_tmplt }}
output = ${directory:etc}/fonts.conf
context =
key cachedir :cache-dir
key fonts :fonts
key includes :includes
cache-dir =
${directory:etc}/.fontconfig.cache
fonts =
{{ font_dejavu }}
{{ font_liberation }}
includes =
{{ font_config_loc }}/etc/fonts/conf.d
[xserver]
recipe = slapos.cookbook:wrapper
command-line = {{ xvfb_bin }} ${:display} -screen 0 ${:resolution}x24
-fbdir ${directory:framebuffer}
wrapper-path = ${directory:services}/xserver
hash-existing-files = ${buildout:directory}/software_release/buildout.cfg
environment =
XORG_LOCK_DIR=${:lock-dir}
FONTCONFIG_FILE=${font-config:output}
display-num = 0
display = :${:display-num}
resolution = {{ slapparameter_dict.get('screen-resolution', '1280x1024') }}
lock-dir = ${directory:run}
lock-file = ${:lock-dir}/.X${:display-num}-lock
[xserver-promise]
recipe = slapos.cookbook:wrapper
wrapper-path = ${directory:promise}/xserver-is-up
command-line = bash -c "[ -S ${xserver:lock-dir}/.X11-unix/X${xserver:display-num} ]"
[fluxbox-menu]
recipe = slapos.recipe.template:jinja2
url = {{ fluxbox_menu }}
output = ${directory:fluxbox}/menu
context =
key beremiz_bin beremiz-x11:output
key xterm_bin xterm:output
raw fluxbox_location {{ fluxbox_location }}
[fluxbox-toolbar]
recipe = plone.recipe.command
command =
if [ ! -s "${directory:fluxbox}/init" ]; then
echo "session.screen0.toolbar.placement: TopCenter" > ${directory:fluxbox}/init;
fi
[fluxbox-bin]
recipe = slapos.cookbook:wrapper
command-line = {{ fluxbox_location }}/bin/fluxbox -display ${xserver:display}
wrapper-path = ${directory:bin}/fluxbox
environment =
HOME=${buildout:directory}
XORG_LOCK_DIR=${xserver:lock-dir}
FONTCONFIG_FILE=${font-config:output}
LANG=C.UTF-8
LC_ALL=C.UTF-8
depends =
${fluxbox-menu:recipe}
${fluxbox-toolbar:recipe}
[fluxbox]
recipe = slapos.cookbook:wrapper
command-line = ${fluxbox-bin:wrapper-path} -log ${directory:log}/fluxbox.log
wrapper-path = ${directory:services}/fluxbox
[beremiz-env.sh]
recipe = slapos.recipe.template
inline =
export LD_LIBRARY_PATH={{ mesa_location }}/lib
export PATH=${directory:bin}:{{ git_bin_dir }}:{{ autoconf_bin }}:{{ automake_bin }}:{{ matiec_location }}/bin:{{ bison_location }}/bin:{{ flex_location }}/bin:{{ bin_directory }}:{{ gcc_location }}/bin:$PATH
export XDG_DATA_DIR={{ gtk3_location }}/share
export GSETTINGS_SCHEMA_DIR={{ gtk3_location }}/share/glib-2.0/schemas
export FONTCONFIG_FILE=${font-config:output}
export DISPLAY=${xserver:display}
export XORG_LOCK_DIR=${xserver:lock-dir}
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
export BEREMIZPYTHONPATH={{ python_bin }}
output = ${directory:bin}/beremiz-env.sh
[beremiz-x11]
recipe = slapos.recipe.template
inline =
#!/bin/sh -e
. ${beremiz-env.sh:output}
# wait a bit for xserver
sleep 1
exec {{ python_bin }} {{ beremiz_location }}/Beremiz.py
output = ${directory:bin}/beremiz-x11
[xterm]
recipe = slapos.recipe.template
inline =
#!/bin/sh -e
. ${beremiz-env.sh:output}
export SHELL={{bash_bin}}
exec {{ xterm_bin }}
output = ${directory:bin}/xterm
[request-vnc-frontend]
<= slap-connection
recipe = slapos.cookbook:requestoptional
slave = true
config-https-only = True
config-type = websocket
config-url = https://[${novnc-instance:ip}]:${novnc-instance:port}
return = secure_access domain
software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
software-type = RootSoftwareInstance
name = Beremiz VNC
[publish-connection-information]
<= monitor-publish
recipe = slapos.cookbook:publish
backend-url = https://[${novnc-instance:ip}]:${novnc-instance:port}/vnc.html?host=[${novnc-instance:ip}]&port=${novnc-instance:port}&encrypt=1
url = ${request-vnc-frontend:connection-secure_access}/vnc.html?host=${request-vnc-frontend:connection-domain}&port=443&encrypt=1
vnc-password = ${random-password:passwd}
[buildout]
extends =
{{ template_logrotate }}
{{ ' ' ~ template_monitor }}
parts =
monitor-base
fluxbox
novnc-promise
xserver-promise
x11vnc-listen-promise
beremiz-x11
websockify-sighandler-service
request-vnc-frontend
generate-vnc-password
publish-connection-information
eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true
software/beremiz-ide/instance.cfg.in
0 → 100644
View file @
47008dec
[buildout]
parts = switch-softwaretype
eggs-directory = {{ buildout_egg_directory }}
develop-eggs-directory = {{ buildout_develop_directory }}
[switch-softwaretype]
recipe = slapos.cookbook:switch-softwaretype
default = template-{{ instance_template_type }}:output
RootSoftwareInstance = ${:default}
test = template-beremiz-test:output
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration.serialised
computer = ${slap-connection:computer-id}
partition = ${slap-connection:partition-id}
url = ${slap-connection:server-url}
key = ${slap-connection:key-file}
cert = ${slap-connection:cert-file}
[jinja2-template-base]
recipe = slapos.recipe.template:jinja2
output = ${buildout:directory}/${:filename}
extensions = jinja2.ext.do
extra-context =
context =
key develop_eggs_directory buildout:develop-eggs-directory
key buildout_directory buildout:directory
key eggs_directory buildout:eggs-directory
key ipv4 slap-configuration:ipv4
key ipv6 slap-configuration:ipv6
key global_ipv4_prefix network-information:global-ipv4-network
key slapparameter_dict slap-configuration:configuration
key computer_id slap-configuration:computer
raw bin_directory {{ bin_directory }}
raw template_monitor {{ template_monitor_cfg }}
raw template_logrotate {{ logrotate_cfg }}
raw logrotate_cfg {{ logrotate_cfg }}
raw python_bin {{ python_bin }}
${:extra-context}
[template-beremiz]
<= jinja2-template-base
url = {{ template_instance_beremiz }}
filename = instance-beremiz.cfg
extra-context =
raw autoconf_bin {{ autoconf_location }}/bin
raw automake_bin {{ automake_location }}/bin
raw bash_bin {{ bash_location }}/bin/bash
raw beremiz_location {{ beremiz_location }}
raw bison_location {{ bison_location }}
raw flex_location {{ flex_location }}
raw fluxbox_location {{ fluxbox_location }}
raw fluxbox_menu {{ template_fluxbox_menu }}
raw font_config_loc {{ fontconfig_location }}
raw font_config_tmplt {{ template_fonts_conf_target }}
raw font_dejavu {{ font_dejavu }}
raw font_liberation {{ font_liberation }}
raw gcc_location {{ gcc_location }}
raw git_bin_dir {{ git_location }}
raw gtk3_location {{ gtk3_location }}
raw matiec_location {{ matiec_location }}
raw mesa_location {{ mesa_location }}
raw novnc_location {{ novnc_location }}
raw openssl_bin {{ openssl_location }}/bin/openssl
raw websockify_bin {{ bin_directory }}/websockify
raw x11vnc_bin {{ x11vnc_location }}/bin/x11vnc
raw xvfb_bin {{ xserver_location }}/bin/Xvfb
raw xterm_bin {{ xterm_location }}/bin/xterm
[template-beremiz-test]
<= jinja2-template-base
url = {{ template_instance_beremiz_test }}
filename = instance-beremiz-test.cfg
extra-context =
key instance_beremiz template-beremiz:output
raw beremiz_location {{ beremiz_location }}
raw sikulix_bin {{ sikulix_bin }}
raw xvfb_bin {{ xserver_location }}/bin/Xvfb
raw wmctrl_bin {{ wmctrl_location }}/bin/wmctrl
raw instance_nxdtest {{ nxdtest_template }}
raw xdotool_bin {{ xdotool_location }}/bin/xdotool
raw opencv_location {{ opencv_location }}
raw nxdtest_dir {{ buildout_directory }}
software/beremiz-ide/software.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
../../stack/slapos.cfg
../../component/autoconf/buildout.cfg
../../component/flex/buildout.cfg
../../component/fonts/buildout.cfg
../../component/noVNC/buildout.cfg
../../component/nginx/buildout.cfg
../../component/lxml-python/buildout.cfg
../../component/numpy/buildout.cfg
../../component/numpy/openblas.cfg
../../component/matplotlib/buildout.cfg
../../component/wxpython/buildout.cfg
../../component/matiec/buildout.cfg
../../component/mesa/buildout.cfg
../../component/libvnc/buildout.cfg
../../component/open62541/buildout.cfg
../../component/sikuli/buildout.cfg
../../component/fluxbox/buildout.cfg
../../component/pygolang/buildout.cfg
../../component/xorg/buildout.cfg
../../component/pytest/buildout.cfg
../../component/opencv/buildout.cfg
../../component/xterm/buildout.cfg
../../stack/monitor/buildout.cfg
../../stack/nxdtest.cfg
./buildout.hash.cfg
parts +=
slapos-cookbook
beremiz-eggs
open62541
Modbus
xterm
instance
[gcc]
# Always build GCC for Fortran (see openblas).
max_version = 0
[python]
# Beremiz works with python2.7 for now, the code is not yet upgraded for python3
part = python2.7
[open62541]
# Beremiz need it to be in folder parts/open62541
# as Beremiz search for open62541 to BEREMIZ_PATH/../open62541
shared = false
post-install =
mkdir -p @@LOCATION@@/build/bin
ln -sf @@LOCATION@@/lib/libopen62541.a @@LOCATION@@/build/bin/libopen62541.a
[twisted]
recipe = zc.recipe.egg:custom
egg = twisted
setup-eggs =
six
pathlib
incremental
[beremiz-eggs]
recipe = zc.recipe.egg
eggs =
${wxPython:egg}
${python-cryptography:egg}
${lxml-python:egg}
${matplotlib:egg}
future
websockify
zeroconf2
enum34
pyro
${twisted:egg}
nevow
autobahn
pycountry
fonttools
${beremiz-setup:egg}
opcua
msgpack
[python-interpreter]
recipe = zc.recipe.egg:scripts
interpreter = python
eggs =
${beremiz-eggs:eggs}
${pygolang:egg}
# Beremiz will use sys.executable to start some internal processes
# then they won't have installed eggs in sys.path.
# -> use pymain from gpython to workaround that and generate
# python where sys.executable point to interpreter
initialization =
from gpython import pymain
pymain(sys.argv)
sys.exit(0)
[beremiz]
recipe = slapos.recipe.build:download-unpacked
# download beremiz at revision bc72db1aa49fb5deabc950ed587772d027733a26
url = https://github.com/beremiz/beremiz/archive/bc72db1aa49fb5deabc950ed587772d027733a26.tar.gz
md5sum = 9ae7a55d4f2e673cbc8d2c4528e069b9
[beremiz-setup]
recipe = zc.recipe.egg:develop
egg = beremiz
setup = ${beremiz:location}
[download-template]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/${:filename}
[instance]
recipe = slapos.recipe.template:jinja2
output = ${buildout:directory}/instance.cfg
url = ${:_profile_base_location_}/${:filename}
python-bin = ${buildout:bin-directory}/${python-interpreter:interpreter}
type = beremiz
context =
key autoconf_location autoconf:location
key automake_location automake:location
key bash_location bash:location
key beremiz_location beremiz-setup:setup
key bin_directory buildout:bin-directory
key buildout_egg_directory buildout:eggs-directory
key buildout_develop_directory buildout:develop-eggs-directory
key buildout_directory buildout:directory
key template_fluxbox_menu template-fluxbox-menu.in:target
key template_fonts_conf_target template-fonts-conf:output
key template_monitor_cfg monitor2-template:rendered
key template_instance_beremiz template-instance-beremiz:target
key template_instance_beremiz_test template-instance-beremiz-test:target
key template_logrotate template-logrotate-base:rendered
key fontconfig_location fontconfig:location
key font_dejavu dejavu-fonts:location
key font_liberation liberation-fonts:location
key logrotate_cfg template-logrotate-base:rendered
key bison_location bison:location
key flex_location flex:location
key fluxbox_location fluxbox:location
key gcc_location gcc:prefix
key git_location git:location
key gtk3_location gtk-3:location
key instance_template_type :type
key matiec_location matiec:location
key mesa_location mesa:location
key novnc_location noVNC:location
key nxdtest_template nxdtest-instance.cfg:rendered
key python_bin :python-bin
key opencv_location opencv:location
key openssl_location openssl:location
key sikulix_bin sikuli:output
key xdotool_location xdotool:location
key xserver_location xserver:location
key xterm_location xterm:location
key x11vnc_location x11vnc:location
key wmctrl_location wmctrl:location
[template-instance-beremiz]
<= download-template
output = ${buildout:directory}/instance-beremiz.cfg.jinja2
[template-instance-beremiz-test]
<= download-template
output = ${buildout:directory}/instance-beremiz-test.cfg.jinja2
[template-fluxbox-menu.in]
<= download-template
output = ${buildout:directory}/fluxbox-menu.in
[versions]
Pillow = 6.2.2
matplotlib = 2.2.5
kiwisolver = 1.1.0
cycler = 0.10.0
websockify = 0.9.0
Pyro = 3.16
zeroconf2 = 0.19.2
cython = 0.29.24
sphinx = 1.8.5
doc2dash = 2.3.0
Twisted = 20.3.0
autobahn = 19.11.2
attrs = 19.2.0
Automat = 0.3.0
zope.interface = 4.4.2
Nevow = 0.14.5
PyHamcrest = 2.0.3
constantly = 15.1.0
hyperlink = 21.0.0
incremental = 21.3.0
future = 0.18.2
pycountry = 18.12.8
fonttools = 3.44.0
idna = 2.10
PyHamcrest = 2.0.2
txaio = 18.8.1
characteristic = 14.3.0
typing = 3.10.0.0
ifcfg = 0.22
opcua = 0.98.13
futures = 3.3.0
trollius = 2.2.1
pathlib = 1.0.1
ddt = 1.4.4
software/beremiz-ide/test.cfg
0 → 100644
View file @
47008dec
[buildout]
extends =
software.cfg
../../component/git/buildout.cfg
../../component/pytest/buildout.cfg
[beremiz-repository]
recipe = slapos.recipe.build:gitclone
repository = https://github.com/beremiz/beremiz
branch = wxPython4
location = ${buildout:parts-directory}/beremiz
git-executable = ${git:location}/bin/git
[beremiz-setup]
setup = ${beremiz-repository:location}
depends =
${beremiz-gen-nxdtest:recipe}
[ddt]
recipe = zc.recipe.egg:custom
egg = ddt
setup-eggs =
enum34
[python-interpreter]
eggs +=
${pytest:eggs}
pytest-timeout
${ddt:egg}
[instance]
type = beremiz-test
[gen-nxdtest.sh]
recipe = slapos.recipe.template
output = ${buildout:parts-directory}/gennxdtest.sh
nxdtest = ${buildout:directory}/.nxdtest
inline =
#!/bin/sh -e
cd ${beremiz-repository:location}/tests/ide_tests/
testlist=$(ls -d *.sikuli)
rm -f ${:nxdtest}
for test in $testlist; do
if [ -z "$test" ]; then
continue;
fi
# beremiztest script is generated by the instance (call make test_dir=xxx xserver_command=xxx)
cat <<EOF >> ${:nxdtest}
TestCase(
"$test",
['beremiztest', '$test'],
cwd="""${beremiz-repository:location}/tests""",
summaryf=UnitTest.summary,
)
EOF
done
[beremiz-gen-nxdtest]
recipe = plone.recipe.command
command = ${gen-nxdtest.sh:output}
update-command = ${:command}
software/beremiz-ide/test/README.md
0 → 100644
View file @
47008dec
Beremiz IDE tests Software Release
software/beremiz-ide/test/setup.py
0 → 100644
View file @
47008dec
##############################################################################
#
# Copyright (c) 2022 Nexedi SA 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
setuptools
import
setup
,
find_packages
version
=
'0.0.1.dev0'
name
=
'slapos.test.beremiz_ide'
with
open
(
"README.md"
)
as
f
:
long_description
=
f
.
read
()
setup
(
name
=
name
,
version
=
version
,
description
=
"Beremiz IDE test"
,
long_description
=
long_description
,
long_description_content_type
=
'text/markdown'
,
maintainer
=
"Nexedi"
,
maintainer_email
=
"info@nexedi.com"
,
url
=
"https://lab.nexedi.com/nexedi/slapos"
,
packages
=
find_packages
(),
install_requires
=
[
'slapos.core'
,
'slapos.libnetworkcache'
,
'requests'
,
],
zip_safe
=
True
,
test_suite
=
'test'
,
)
software/beremiz-ide/test/test.py
0 → 100644
View file @
47008dec
##############################################################################
#
# Copyright (c) 2019 Nexedi SA 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
__future__
import
unicode_literals
import
os
import
requests
from
slapos.testing.testcase
import
makeModuleSetUpAndTestCaseClass
setUpModule
,
SlapOSInstanceTestCase
=
makeModuleSetUpAndTestCaseClass
(
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'../software.cfg'
)))
class
TestBeremizInstance
(
SlapOSInstanceTestCase
):
__partition_reference__
=
'B'
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
'default'
def
setUp
(
self
):
self
.
connection_parameters
=
self
.
computer_partition
.
getConnectionParameterDict
()
def
test_url_get
(
self
):
resp
=
requests
.
get
(
self
.
connection_parameters
[
'backend-url'
],
verify
=
False
)
self
.
assertEqual
(
requests
.
codes
.
ok
,
resp
.
status_code
)
software/slapos-sr-testing/software.cfg
View file @
47008dec
...
...
@@ -226,6 +226,11 @@ setup = ${slapos-repository:location}/software/caucase/test/
egg = slapos.test.erp5testnode
setup = ${slapos-repository:location}/software/erp5testnode/test/
[slapos.test.beremiz-ide-setup]
<= setup-develop-egg
egg = slapos.test.beremiz_ide
setup = ${slapos-repository:location}/software/beremiz-ide/test/
[slapos.core-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.core.git
...
...
@@ -289,6 +294,7 @@ extra-eggs =
${slapos.test.erp5testnode-setup:egg}
${slapos.test.hugo-setup:egg}
${slapos.test.matomo-setup:egg}
${slapos.test.beremiz-ide-setup:egg}
# We don't name this interpreter `python`, so that when we run slapos node
# software, installation scripts running `python` use a python without any
...
...
@@ -374,6 +380,7 @@ extra =
html5as ${slapos.test.html5as-setup:setup}
html5as-base ${slapos.test.html5as-base-setup:setup}
erp5testnode ${slapos.test.erp5testnode-setup:setup}
beremiz-ide ${slapos.test.beremiz-ide-setup:setup}
[versions]
# slapos.core is used from the clone always
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment