diff --git a/component/onlyoffice-core/buildout.cfg b/component/onlyoffice-core/buildout.cfg new file mode 100644 index 0000000000000000000000000000000000000000..65298c4e23011a59de1cb2ab3c5556eb75ea60c0 --- /dev/null +++ b/component/onlyoffice-core/buildout.cfg @@ -0,0 +1,142 @@ +[buildout] +extends = + ../gcc/buildout.cfg + ../binutils/buildout.cfg + ../curl/buildout.cfg + ../libxml2/buildout.cfg + ../zlib/buildout.cfg + ../boost-lib/buildout.cfg + ../icu/buildout.cfg +# for 3dparty dependencies +# git is used by v8 fetch.sh + ../git/buildout.cfg +# bash is used to run fetch.sh + ../bash/buildout.cfg +# for onlyoffice boost + ../bzip2/buildout.cfg + ../zlib/buildout.cfg +# for qmake + ../qt/buildout.cfg +# for binary wrapper + ../dash/buildout.cfg +parts += + onlyoffice-core + +[onlyoffice-core] +# XXX please, put the v8 third party components in slapos ! +recipe = slapos.recipe.cmmi +location = ${buildout:parts-directory}/${:_buildout_section_name_} +# This url contains the hash provided by the DocumentServer core submodule hash. +# https://github.com/ONLYOFFICE/DocumentServer/tree/ONLYOFFICE-DocumentServer-4.2.9 +url = https://github.com/ONLYOFFICE/core/archive/0bd10c28acd79a1e25a8b3fb94689819642e5eb5.tar.gz +md5sum = f7e77ff35f12e9ab485b60b7889e5d53 + +pre-configure-QMAKE_CXXFLAGS = + -std=c++11 + -Wno-comment + -Wno-deprecated-declarations + -Wno-endif-labels + -Wno-parentheses + -Wno-reorder + -Wno-sign-compare + -Wno-switch + -Wno-unknown-pragmas + -Wno-unused + -I${curl:location}/include + -I${libxml2:location}/include + -I${zlib:location}/include +pre-configure-QMAKE_LFLAGS = + -L${curl:location}/lib -Wl,-rpath=${curl:location}/lib + -L${libxml2:location}/lib -Wl,-rpath=${libxml2:location}/lib + -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib +pre-configure = + set -e -x +# put QMAKE_{CXXFLAGS,LFLAGS} into shell vars + qmake_cxxflags=$(echo " ${:pre-configure-QMAKE_CXXFLAGS}" | sed ':a;N;$!ba;s/\n/ /g') + qmake_lflags=$(echo " ${:pre-configure-QMAKE_LFLAGS}" | sed ':a;N;$!ba;s/\n/ /g') + +# prepare spec for cryptopp third party (XXX use slapos cryptopp) + sed 's:^CRYPTOPP_QMAKE_SPEC=SED_IT$:CRYPTOPP_QMAKE_SPEC="${qt5-qmake:location}/qtbase/mkspecs/linux-g++":' -i Common/3dParty/cryptopp/build.sh + +# fix some typos + sed 's,\(include($$PWD/OfficeUtils.pri)\)),\1,g' -i OfficeUtils/OfficeUtils.pro + sed 's,\$\$SOURCES_UTILS,'"$PWD/OfficeUtils/src,g" -i OfficeUtils/OfficeUtils.pri + +# patch Makefile + sed 's@qmake -r@qmake -r -spec ${qt5-qmake:location}/qtbase/mkspecs/linux-g++ '"'QMAKE_CXXFLAGS +=$qmake_cxxflags' 'QMAKE_LFLAGS +=$qmake_lflags'@g" -i Makefile + +# link boost on 3dParty folders + mkdir -p Common/3dParty/boost/boost_1_58_0 +# XXX use symlinks ! +# XXX use shared libraries as most as possible ! + cp -at Common/3dParty/boost/boost_1_58_0 ${onlyoffice-boost-lib-1.58.0:location}/* + +# link icu on 3dParty folders + mkdir -p Common/3dParty/icu/slapos/usr/local + ln -sfT ${icu4c-55.1:location}/lib Common/3dParty/icu/slapos/build + ln -sfT ${icu4c-55.1:location}/include Common/3dParty/icu/slapos/usr/local/include + for os in linux mac win ; do for arch in 64 32 ; do ln -sf slapos Common/3dParty/icu/$${os}_$${arch} ; done ; done + + bash="${bash:location}/bin/bash" + ( cd Common/3dParty/v8 && "$bash" fetch.sh ) + ( cd Common/3dParty/v8 && "$bash" build.sh ) + +# Note: curl, cryptopp and pole third parties are already embedded. +# Note: cef third party seems to be useless in core. + +configure-command = true +make-targets = lib bin +environment = + PATH=${gcc:location}/bin:${binutils:location}/bin:${qt5-qmake:location}/qtbase/bin:%(PATH)s +#${git:location}/bin: + LD_LIBRARY_PATH=${gcc:location}/lib64:${gcc:location}/lib:${binutils:location}/lib:${qt5-qmake:location}/qtbase/lib +post-install = +# XXX check if `make install` is possible to use instead + set -e -x + mkdir -p ${:location}/bin ${:location}/lib + mv -t ${:location}/lib build/lib/*/* +# the binary linux_64 in build/bin/AllFontsGen is renamed AllFontsGen here. + mv build/bin/AllFontsGen/* ${:location}/bin/AllFontsGen + mv -t ${:location}/bin build/bin/*/* + +# create wrapper for x2t binary + mv ${:location}/bin/x2t ${:location}/bin/x2t.bin + echo '#!/bin/sh + exec ${dash:location}/bin/dash -c '\'' + export LD_LIBRARY_PATH="${onlyoffice-core:location}/lib:${icu4c-55.1:location}/lib:${curl:location}/lib$${LD_LIBRARY_PATH:-:$LD_LIBRARY_PATH}" +# (XXX add boost/lib if we use it as shared library) + exec ${:location}/bin/x2t.bin "$@"'\'' "$0" "$@"' > ${:location}/bin/x2t + chmod +x ${:location}/bin/x2t + +# create wrapper for AllFontsGen binary + mv ${:location}/bin/AllFontsGen ${:location}/bin/AllFontsGen.bin + echo '#!/bin/sh + exec ${dash:location}/bin/dash -c '\'' + export LD_LIBRARY_PATH="${gcc:location}/lib64:${gcc:location}/lib$${LD_LIBRARY_PATH:-:$LD_LIBRARY_PATH}" + exec ${:location}/bin/AllFontsGen.bin "$@"'\'' "$0" "$@"' > ${:location}/bin/AllFontsGen + chmod +x ${:location}/bin/AllFontsGen + +[onlyoffice-boost-lib-1.58.0] +# The goal of this section is to compile boost-lib with the same compiler as [onlyoffice-core] +<= boost-lib +url = http://freefr.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.gz +md5sum = 5a5d5614d9a07672e1ab2a250b5defc5 +configure-command = ./bootstrap.sh --with-libraries=filesystem,system,date_time,regex --with-icu=${icu4c-55.1:location} +make-targets = true +post-install = + set -e -x +# XXX should not be available only for linux_64 ! +# please do the same magic as in [onlyoffice-core] : +# create dir `slapos` and add symlinks `{linux,mac,win}_{32,64}` + mkdir -p build/linux_64/static && ./b2 --clean && ./bjam link=static && cp stage/lib/* build/linux_64/static + mkdir -p build/linux_64/static_fpic && ./b2 --clean && ./bjam link=static cxxflags=-fPIC && cp stage/lib/* build/linux_64/static_fpic + mkdir -p build/linux_64/shared && ./b2 --clean && ./bjam link=shared && cp stage/lib/* build/linux_64/shared +# XXX clean useless files ! + mv -t ${:location} * +environment = + PATH=${gcc:location}/bin:${binutils:location}/bin:%(PATH)s + LD_LIBRARY_PATH=${gcc:location}/lib64:${gcc:location}/lib:${binutils:location}/lib + BZIP2_INCLUDE=${bzip2:location}/include + BZIP2_LIBPATH=${bzip2:location}/lib + ZLIB_INCLUDE=${zlib:location}/include + ZLIB_LIBPATH=${zlib:location}/lib