diff --git a/docker-builder-data/build/script/common/manager.sh b/docker-builder-data/build/script/common/manager.sh index 45b40e4..48e3c0f 100755 --- a/docker-builder-data/build/script/common/manager.sh +++ b/docker-builder-data/build/script/common/manager.sh @@ -81,13 +81,20 @@ INITIAL_PATH=$PATH INITIAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH INITIAL_CC=$CC INITIAL_CXX=$CXX +INITIAL_FORTRAN=$FORTRAN +INITIAL_LD=$LD +INITIAL_AR=$AR +INITIAL_RANLIB=$RANLIB INITIAL_LDFLAGS=$LDFLAGS INITIAL_CFLAGS=$CFLAGS INITIAL_CPPFLAGS=$CPPFLAGS INITIAL_CXXFLAGS=$CXXFLAGS INITIAL_PKG_CONFIG_PATH=$PKG_CONFIG_PATH +INITIAL_PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR INITIAL_XDG_DATA_DIRS=$XDG_DATA_DIRS INITIAL_ACLOCAL_PATH=$ACLOCAL_PATH +INITIAL_CMAKE_INCLUDE_PATH=$CMAKE_INCLUDE_PATH +INITIAL_CMAKE_LIBRARY_PATH=$CMAKE_LIBRARY_PATH if [ ! -z "$INITIAL_ACLOCAL_PATH" ]; then INITIAL_ACLOCAL_PATH = "$INITIAL_ACLOCAL_PATH:" @@ -362,6 +369,10 @@ $TOOLCHAIN_LD_LIBRARY_PATH" export CC=$TOOLCHAIN_CC export CXX=$TOOLCHAIN_CXX + export FORTRAN=$TOOLCHAIN_FORTRAN + export LD=$TOOLCHAIN_LD + export AR=$TOOLCHAIN_AR + export RANLIB=$TOOLCHAIN_RANLIB if [ -z "$CC" ]; then export -n CC @@ -369,14 +380,31 @@ $TOOLCHAIN_LD_LIBRARY_PATH" if [ -z "$CXX" ]; then export -n CXX fi + if [ -z "$FORTRAN" ]; then + export -n FORTRAN + fi + if [ -z "$LD" ]; then + export -n LD + fi + if [ -z "$AR" ]; then + export -n AR + fi + if [ -z "$RANLIB" ]; then + export -n RANLIB + fi + export LDFLAGS="-L$ENVDEPS_PACKET_DIR/lib -L$ENVDEPS_PACKET_DIR/lib64 $TOOLCHAIN_LDFLAGS" export CFLAGS="-I$ENVDEPS_PACKET_DIR/include $TOOLCHAIN_CFLAGS" export CPPFLAGS="-I$ENVDEPS_PACKET_DIR/include $TOOLCHAIN_CPPFLAGS" export CXXFLAGS="-I$ENVDEPS_PACKET_DIR/include $TOOLCHAIN_CXXFLAGS" - export PKG_CONFIG_PATH="$ENVDEPS_PACKET_DIR/lib/pkgconfig:$TOOLCHAIN_PKG_CONFIG_PATH" + export PKG_CONFIG_PATH="$ENVDEPS_PACKET_DIR/lib/pkgconfig:$ENVDEPS_PACKET_DIR/share/pkgconfig:$TOOLCHAIN_PKG_CONFIG_PATH" + export PKG_CONFIG_LIBDIR="$ENVDEPS_PACKET_DIR/lib:$TOOLCHAIN_PKG_CONFIG_LIBDIR" + export PKG_CONFIG_SYSROOT_DIR="/" export XDG_DATA_DIRS="$ENVDEPS_PACKET_DIR/share:$TOOLCHAIN_XDG_DATA_DIRS" - export ACLOCAL_PATH="$ENVDEPS_PACKET_DIR/share/aclocal:$TOOLCHAIN_ACLOCAL_PATH" + export ACLOCAL_PATH="$ENVDEPS_PACKET_DIR/share/aclocal:$TOOLCHAIN_ACLOCAL_PATH" + export CMAKE_INCLUDE_PATH="$ENVDEPS_PACKET_DIR/include:$TOOLCHAIN_CMAKE_INCLUDE_PATH" + export CMAKE_LIBRARY_PATH="$ENVDEPS_PACKET_DIR/lib:$ENVDEPS_PACKET_DIR/lib64:$TOOLCHAIN_CMAKE_LIBRARY_PATH" } call_packet_function() { @@ -401,7 +429,7 @@ call_packet_function() { PREV_HASH=`md5 "$FUNC_CURRENT_PACKET_DIR"` [ ! $? -eq 0 ] && return 1 fi - else + else set_undone_silent $NAME $FUNC fi @@ -872,7 +900,7 @@ clean_download() { } clean_unpack() { - clean_packet_directory $1 download + clean_packet_directory $1 unpack } clean_envdeps() { @@ -1057,6 +1085,7 @@ clean_before_do() { native() { local ARGS="$@" + local LOCAL_ERROR=0 if [ ! -z "$IS_NATIVE" ]; then $ARGS else @@ -1073,6 +1102,7 @@ native() { fi $ARGS + LOCAL_ERROR=$? PLATFORM=$WAS_PLATFORM ARCH=$WAS_ARCH @@ -1082,6 +1112,36 @@ native() { set_environment_vars $NAME fi fi + return $LOCAL_ERROR +} + +native_at_place() { + local ARGS="$@" + local LOCAL_ERROR=0 + if [ ! -z "$IS_NATIVE" ]; then + $ARGS + else + local WAS_PLATFORM=$PLATFORM + local WAS_ARCH=$ARCH + + set_toolchain "native" + PLATFORM=$NATIVE_PLATFORM + ARCH=$NATIVE_ARCH + if [ ! -z "$NAME" ]; then + set_environment_vars $NAME + fi + + $ARGS + LOCAL_ERROR=$? + + PLATFORM=$WAS_PLATFORM + ARCH=$WAS_ARCH + set_toolchain + if [ ! -z "$NAME" ]; then + set_environment_vars $NAME + fi + fi + return $LOCAL_ERROR } set_toolchain diff --git a/docker-builder-data/build/script/include/inc-pkall-none.sh b/docker-builder-data/build/script/include/inc-pkall-none.sh index e28301c..4f94de1 100644 --- a/docker-builder-data/build/script/include/inc-pkall-none.sh +++ b/docker-builder-data/build/script/include/inc-pkall-none.sh @@ -48,3 +48,7 @@ pkinstall_release() { pkhook_prebuild() { return 0 } + +pkhook_postinstall_release() { + return 0 +} diff --git a/docker-builder-data/build/script/include/inc-pkinstall_release-default.sh b/docker-builder-data/build/script/include/inc-pkinstall_release-default.sh index 7065f75..f3fc5a8 100644 --- a/docker-builder-data/build/script/include/inc-pkinstall_release-default.sh +++ b/docker-builder-data/build/script/include/inc-pkinstall_release-default.sh @@ -12,4 +12,8 @@ pkinstall_release() { rm -rf "$INSTALL_RELEASE_PACKET_DIR/share/doc" rm -rf "$INSTALL_RELEASE_PACKET_DIR/share/gtk-doc" rm -rf "$INSTALL_RELEASE_PACKET_DIR/share/man" + + if ! pkhook_postinstall_release; then + return 1 + fi } diff --git a/docker-builder-data/build/script/packet/blas-3.7.0.sh b/docker-builder-data/build/script/packet/blas-3.7.0.sh index 20bbd63..89b8657 100644 --- a/docker-builder-data/build/script/packet/blas-3.7.0.sh +++ b/docker-builder-data/build/script/packet/blas-3.7.0.sh @@ -9,14 +9,26 @@ source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - if ! make; then - return 1 - fi + +rm -f make.inc +cat > make.inc << EOF +SHELL = /bin/sh +FORTRAN = ${FORTRAN:-gfortran} +OPTS = -O3 +DRVOPTS = \$(OPTS) +NOOPT = +LOADER = \$(FORTRAN) +LOADOPTS = +ARCH = ${AR:-ar} +ARCHFLAGS = cr +RANLIB = ${RANLIB:-ranlib} +BLASLIB = libblas.a +EOF + + make || return 1 } pkinstall() { mkdir -p "$INSTALL_PACKET_DIR/lib" - if ! cp --remove-destination -r "$BUILD_PACKET_DIR/$PK_DIRNAME/blas_LINUX.a" "$INSTALL_PACKET_DIR/lib/libblas.a"; then - return 1 - fi + cp --remove-destination -r "$BUILD_PACKET_DIR/$PK_DIRNAME/libblas.a" "$INSTALL_PACKET_DIR/lib/" || return 1 } diff --git a/docker-builder-data/build/script/packet/boost-1.61.0.sh b/docker-builder-data/build/script/packet/boost-1.61.0.sh index 5decabe..a371fc7 100644 --- a/docker-builder-data/build/script/packet/boost-1.61.0.sh +++ b/docker-builder-data/build/script/packet/boost-1.61.0.sh @@ -11,7 +11,7 @@ pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" if ! check_packet_function $NAME build.configure; then local LOCAL_PREFIX=$INSTALL_PACKET_DIR - native ./bootstrap.sh --prefix=$LOCAL_PREFIX --without-libraries=python || return 1 + native_at_place ./bootstrap.sh --prefix=$LOCAL_PREFIX --without-libraries=python || return 1 set_done $NAME build.configure fi diff --git a/docker-builder-data/build/script/packet/ffi-3.2.1.sh b/docker-builder-data/build/script/packet/ffi-3.2.1.sh new file mode 100644 index 0000000..01552f3 --- /dev/null +++ b/docker-builder-data/build/script/packet/ffi-3.2.1.sh @@ -0,0 +1,7 @@ +DEPS="" + +PK_DIRNAME="libffi-3.2.1" +PK_ARCHIVE="$PK_DIRNAME.tar.gz" +PK_URL="ftp://sourceware.org/pub/libffi/$PK_ARCHIVE" + +source $INCLUDE_SCRIPT_DIR/inc-pkall-default.sh diff --git a/docker-builder-data/build/script/packet/freeglut-3.0.0.sh b/docker-builder-data/build/script/packet/freeglut-3.0.0.sh index ee682dc..4536688 100644 --- a/docker-builder-data/build/script/packet/freeglut-3.0.0.sh +++ b/docker-builder-data/build/script/packet/freeglut-3.0.0.sh @@ -12,14 +12,20 @@ pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" if ! check_packet_function $NAME build.cunfigure; then - if ! cmake -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PACKET_DIR .; then - return 1 - fi + local LOCAL_OPTIONS= + if [ ! -z "$HOST" ]; then + LOCAL_OPTIONS="$LOCAL_OPTIONS -DGNU_HOST=$HOST" + fi + if [ "$PLATFORM" = "win" ]; then + LOCAL_OPTIONS="$LOCAL_OPTIONS -DCMAKE_TOOLCHAIN_FILE=mingw_cross_toolchain.cmake" + fi + cmake \ + -DCMAKE_INSTALL_PREFIX=$INSTALL_PACKET_DIR \ + $LOCAL_OPTIONS . \ + || return 1 set_done $NAME build.cunfigure fi - if ! make -j${THREADS}; then - return 1 - fi + make -j${THREADS} || return 1 } diff --git a/docker-builder-data/build/script/packet/glew-2.0.0.sh b/docker-builder-data/build/script/packet/glew-2.0.0.sh index a2aec40..939f70b 100644 --- a/docker-builder-data/build/script/packet/glew-2.0.0.sh +++ b/docker-builder-data/build/script/packet/glew-2.0.0.sh @@ -10,14 +10,45 @@ source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - if ! GLEW_PREFIX=$INSTALL_PACKET_DIR GLEW_DEST=$INSTALL_PACKET_DIR make -j${THREADS}; then - return 1 + if [ "$PLATFORM" = "win" ]; then +cat > "config/Makefile.mingw-$PLATFORM-$ARCH" << EOF +NAME := glew32 +HOST := $HOST +CC := $CC +LD := $LD +LN := +STRIP := +LDFLAGS.GL = -lopengl32 -lgdi32 -luser32 -lkernel32 $LDFLAGS +CFLAGS.EXTRA += -fno-builtin -fno-stack-protector +WARN = -Wall -W +POPT = -O2 +BIN.SUFFIX = .exe +LIB.SONAME = lib\$(NAME).dll +LIB.DEVLNK = lib\$(NAME).dll.a +LIB.SHARED = \$(NAME).dll +LIB.STATIC = lib\$(NAME).a +LDFLAGS.SO = -shared -soname \$(LIB.SONAME) --out-implib lib/\$(LIB.DEVLNK) +EOF + + if ! GLEW_PREFIX=$INSTALL_PACKET_DIR GLEW_DEST=$INSTALL_PACKET_DIR SYSTEM=mingw-$PLATFORM-$ARCH make -j${THREADS}; then + return 1 + fi + else + if ! GLEW_PREFIX=$INSTALL_PACKET_DIR GLEW_DEST=$INSTALL_PACKET_DIR make -j${THREADS}; then + return 1 + fi fi } pkinstall() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - if ! GLEW_PREFIX=$INSTALL_PACKET_DIR GLEW_DEST=$INSTALL_PACKET_DIR make install; then - return 1 + if [ "$PLATFORM" = "win" ]; then + if ! GLEW_PREFIX=$INSTALL_PACKET_DIR GLEW_DEST=$INSTALL_PACKET_DIR SYSTEM=mingw-$PLATFORM-$ARCH make install; then + return 1 + fi + else + if ! GLEW_PREFIX=$INSTALL_PACKET_DIR GLEW_DEST=$INSTALL_PACKET_DIR make install; then + return 1 + fi fi } diff --git a/docker-builder-data/build/script/packet/glib-2.50.0.sh b/docker-builder-data/build/script/packet/glib-2.50.0.sh index 46a36e6..744ce4c 100644 --- a/docker-builder-data/build/script/packet/glib-2.50.0.sh +++ b/docker-builder-data/build/script/packet/glib-2.50.0.sh @@ -1,4 +1,4 @@ -DEPS="" +DEPS="ffi-3.2.1" DEPS_NATIVE="glib-2.50.0" PK_DIRNAME="glib-2.50.0" diff --git a/docker-builder-data/build/script/packet/lzo-2.10.sh b/docker-builder-data/build/script/packet/lzo-2.10.sh new file mode 100644 index 0000000..3f49ee9 --- /dev/null +++ b/docker-builder-data/build/script/packet/lzo-2.10.sh @@ -0,0 +1,18 @@ +DEPS="" + +PK_DIRNAME="lzo-2.10" +PK_ARCHIVE="$PK_DIRNAME.tar.gz" +PK_URL="http://www.oberhumer.com/opensource/lzo/download/$PK_ARCHIVE" + +PK_CONFIGURE_OPTIONS_DEFAULT=" \ + --prefix=$INSTALL_PACKET_DIR \ + --enable-static \ + --enable-shared " + +if [ ! -z "$HOST" ]; then + PK_CONFIGURE_OPTIONS_DEFAULT=" \ + $PK_CONFIGURE_OPTIONS_DEFAULT \ + --host=$HOST " +fi + +source $INCLUDE_SCRIPT_DIR/inc-pkall-default.sh diff --git a/docker-builder-data/build/script/packet/openblas-master.sh b/docker-builder-data/build/script/packet/openblas-master.sh index 2837918..f5bcec5 100644 --- a/docker-builder-data/build/script/packet/openblas-master.sh +++ b/docker-builder-data/build/script/packet/openblas-master.sh @@ -8,11 +8,30 @@ source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - local PK_MAKE_ARG="" - if [ "$PLATFORM" = "linux-i386" ]; then - PK_MAKE_ARG="BINARY=32" + + local LOCAL_BINARY_OPTION= + if [ "$ARCH" = "32" ]; then + LOCAL_BINARY_OPTION="BINARY=$ARCH" fi - if ! PREFIX=${INSTALL_PACKET_DIR} make $PK_MAKE_ARG -j${THREADS}; then + +rm -f Makefile.rule +cat > Makefile.rule << EOF +PREFIX = ${INSTALL_PACKET_DIR} +VERSION = 0.2.20.dev +CC = ${CC:-gcc} +FC = ${FORTRAN:-gfortran} +TARGET = generic +${LOCAL_BINARY_OPTION} +HOSTCC = PATH=${INITIAL_PATH} /usr/bin/gcc +USE_THREAD = 1 +NUM_THREADS = 24 +BUILD_LAPACK_DEPRECATED = 1 +NO_WARMUP = 1 +NO_AFFINITY = 1 +COMMON_PROF = -pg +EOF + + if ! make -j${THREADS}; then return 1 fi } diff --git a/docker-builder-data/build/script/packet/opentoonz-appimage.sh b/docker-builder-data/build/script/packet/opentoonz-appimage.sh index d8e6170..3712eeb 100644 --- a/docker-builder-data/build/script/packet/opentoonz-appimage.sh +++ b/docker-builder-data/build/script/packet/opentoonz-appimage.sh @@ -16,10 +16,6 @@ pkinstall() { cp --remove-destination "$FILES_PACKET_DIR/launch-opentoonz-appimage.sh" "$APPDIR/usr/bin" || return 1 cp --remove-destination "$FILES_PACKET_DIR/opentoonz.desktop" "$APPDIR/" || return 1 cp --remove-destination "$FILES_PACKET_DIR/opentoonz.png" "$APPDIR/" || return 1 - - copy_system_lib libudev "$APPDIR/usr/lib/" || return 1 - copy_system_lib libgfortran "$APPDIR/usr/lib/" || return 1 - copy_system_lib libpng12 "$APPDIR/usr/lib/" || return 1 } pkinstall_release() { diff --git a/docker-builder-data/build/script/packet/opentoonz-debug.sh b/docker-builder-data/build/script/packet/opentoonz-debug.sh index cf603e7..adea28a 100644 --- a/docker-builder-data/build/script/packet/opentoonz-debug.sh +++ b/docker-builder-data/build/script/packet/opentoonz-debug.sh @@ -1,62 +1,3 @@ -DEPS="jpeg-9b png-1.6.26 lz4-master glew-2.0.0 usb-1.0.20 sdl-2.0.5 superlu-4.3 freeglut-3.0.0 openblas-master boost-1.61.0 qt-5.7" -DEPS_NATIVE="cmake-3.6.2" +source "$PACKET_SCRIPT_DIR/opentoonz-master.sh" -PK_VERSION="1.1.2" -PK_DIRNAME="opentoonz" -PK_URL="https://github.com/opentoonz/$PK_DIRNAME.git" - -source $INCLUDE_SCRIPT_DIR/inc-pkallunpack-git.sh -source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh - -pkbuild() { - if ! (cp --remove-destination "$FILES_PACKET_DIR/Makefile.in" "$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/" \ - && cp --remove-destination "$FILES_PACKET_DIR/FindTIFF.cmake" "$PK_DIRNAME/toonz/cmake/"); then - return 1 - fi - - if ! check_packet_function $NAME build.libtiff; then - cd "$BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3" - if ! check_packet_function $NAME build.libtiff.configure; then - if ! ./configure; then - return 1 - fi - set_done $NAME build.libtiff.configure - fi - - if ! make -j${THREADS}; then - return 1 - fi - set_done $NAME build.libtiff - fi - - if ! cp --remove-destination "$ENVDEPS_PACKET_DIR/lib/libsuperlu_4.3.a" "$BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/superlu/libsuperlu_4.1.a"; then - return 1 - fi - - mkdir -p "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" - cd "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" - if ! check_packet_function $NAME build.configure; then - if ! cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PACKET_DIR ../sources; then - return 1 - fi - set_done $NAME build.configure - fi - - # making in single thread is too slow, but life is too short... - if ! (make -j${THREADS} || make -j${THREADS} || make); then - return 1 - fi -} - -pkinstall() { - cd "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" - make install || return 1 - - cp --remove-destination "$FILES_PACKET_DIR/launch-opentoonz.sh" "$INSTALL_PACKET_DIR/bin" || return 1 - cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiff.so* "$INSTALL_PACKET_DIR/lib" || return 1 - cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiffxx.so* "$INSTALL_PACKET_DIR/lib" || return 1 - - copy_system_lib libudev "$INSTALL_PACKET_DIR/lib/" || return 1 - copy_system_lib libgfortran "$INSTALL_PACKET_DIR/lib/" || return 1 - copy_system_lib libpng12 "$INSTALL_PACKET_DIR/lib/" || return 1 -} +PK_CONFIGURE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug" diff --git a/docker-builder-data/build/script/packet/opentoonz-master.sh b/docker-builder-data/build/script/packet/opentoonz-master.sh index 8e120c0..01f5677 100644 --- a/docker-builder-data/build/script/packet/opentoonz-master.sh +++ b/docker-builder-data/build/script/packet/opentoonz-master.sh @@ -1,24 +1,41 @@ -DEPS="jpeg-9b png-1.6.26 lz4-master glew-2.0.0 usb-1.0.20 sdl-2.0.5 superlu-5.2.1 freeglut-3.0.0 openblas-master boost-1.61.0 qt-5.7" +DEPS="jpeg-9b png-1.6.26 lz4-master lzo-2.10 glew-2.0.0 freeglut-3.0.0 superlu-5.2.1 openblas-master boost-1.61.0 qt-5.7" DEPS_NATIVE="cmake-3.6.2" PK_VERSION="1.1.2" PK_DIRNAME="opentoonz" PK_URL="https://github.com/opentoonz/$PK_DIRNAME.git" +PK_CONFIGURE_OPTIONS= + source $INCLUDE_SCRIPT_DIR/inc-pkallunpack-git.sh source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh +if [ "$PLATFORM" = "linux" ]; then + DEPS="$DEPS usb-1.0.20 sdl-2.0.5" +fi + pkbuild() { + local LOCAL_OPTIONS= + local LOCAL_CMAKE_OPTIONS= + if [ ! -z "$HOST" ]; then + LOCAL_OPTIONS="--host=$HOST" + fi + if [ "$PLATFORM" = "win" ]; then + LOCAL_CMAKE_OPTIONS="-DCMAKE_SYSTEM_NAME=Windows" + fi + if ! check_packet_function $NAME build.libtiff; then cd "$BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3" if ! check_packet_function $NAME build.libtiff.configure; then - CFLAGS="$CFLAGS -fPIC" ./configure || return 1 - set_done $NAME build.libtiff.configure + CFLAGS="$CFLAGS -fPIC" ./configure $LOCAL_OPTIONS || return 1 + set_done $NAME build.libtiff.configure fi + make clean make -j${THREADS} || return 1 set_done $NAME build.libtiff fi + rm -rf "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" mkdir -p "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" cd "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" if ! check_packet_function $NAME build.configure; then @@ -26,29 +43,43 @@ pkbuild() { -DCMAKE_PREFIX_PATH="$ENVDEPS_PACKET_DIR" \ -DCMAKE_MODULE_PATH="$ENVDEPS_NATIVE_PACKET_DIR/share/cmake-3.6.2/Modules" \ -DCMAKE_INSTALL_PREFIX="$INSTALL_PACKET_DIR" \ - -DPNG_PNG_INCLUDE_DIR="$ENVDEPS_PACKET_DIR/include" \ - -DPNG_LIBRARY="$ENVDEPS_PACKET_DIR/lib/libpng.so" \ - -DSUPERLU_INCLUDE_DIR="$ENVDEPS_PACKET_DIR/include/superlu-5.2.1/" \ - -DSUPERLU_LIBRARY="$ENVDEPS_PACKET_DIR/lib/libsuperlu_5.2.1.a" \ - -DLZO_INCLUDE_DIR="/usr/include/lzo" \ + $LOCAL_CMAKE_OPTIONS \ + $PK_CONFIGURE_OPTIONS \ ../sources; \ then return 1 fi set_done $NAME build.configure fi - - # making in single thread is too slow, but life is too short... - if ! (make -j${THREADS} || make -j${THREADS} || make); then - return 1 - fi + + make -j${THREADS} || return 1 } pkinstall() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME/toonz/build" make install || return 1 - cp --remove-destination bin/lzo* "$INSTALL_PACKET_DIR/bin" || return 1 - cp --remove-destination "$FILES_PACKET_DIR/launch-opentoonz.sh" "$INSTALL_PACKET_DIR/bin" || return 1 - cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiff.so* "$INSTALL_PACKET_DIR/lib" || return 1 - cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiffxx.so* "$INSTALL_PACKET_DIR/lib" || return 1 + if [ "$PLATFORM" = "win" ]; then + cp --remove-destination "$BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiff-5.dll" "$INSTALL_PACKET_DIR/bin/" || return 1 + cp --remove-destination "$BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiffxx-5.dll" "$INSTALL_PACKET_DIR/bin/" || return 1 + else + cp --remove-destination "$FILES_PACKET_DIR/launch-opentoonz.sh" "$INSTALL_PACKET_DIR/bin" || return 1 + cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiff.so* "$INSTALL_PACKET_DIR/lib" || return 1 + cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/thirdparty/tiff-4.0.3/libtiff/.libs/libtiffxx.so* "$INSTALL_PACKET_DIR/lib" || return 1 + fi +} + +pkhook_postinstall_release() { + if [ "$PLATFORM" = "win" ]; then + local LOCAL_DIR="/usr/$HOST/sys-root/mingw/bin/" + cp $LOCAL_DIR/libgcc*.dll "$INSTALL_RELEASE_PACKET_DIR/bin/" || return 1 + cp $LOCAL_DIR/libgfortran*.dll "$INSTALL_RELEASE_PACKET_DIR/bin/" || return 1 + cp $LOCAL_DIR/libquadmath*.dll "$INSTALL_RELEASE_PACKET_DIR/bin/" || return 1 + cp $LOCAL_DIR/libstdc*.dll "$INSTALL_RELEASE_PACKET_DIR/bin/" || return 1 + cp $LOCAL_DIR/libwinpthread*.dll "$INSTALL_RELEASE_PACKET_DIR/bin/" || return 1 + cp $LOCAL_DIR/zlib*.dll "$INSTALL_RELEASE_PACKET_DIR/bin/" || return 1 + else + copy_system_lib libudev "$INSTALL_RELEASE_PACKET_DIR/lib/" || return 1 + copy_system_lib libgfortran "$INSTALL_RELEASE_PACKET_DIR/lib/" || return 1 + copy_system_lib libpng12 "$INSTALL_RELEASE_PACKET_DIR/lib/" || return 1 + fi } diff --git a/docker-builder-data/build/script/packet/qt-5.7.files/idc.pro.patch b/docker-builder-data/build/script/packet/qt-5.7.files/idc.pro.patch new file mode 100644 index 0000000..d98e3d1 --- /dev/null +++ b/docker-builder-data/build/script/packet/qt-5.7.files/idc.pro.patch @@ -0,0 +1,2 @@ +1d0 +< option(host_build) diff --git a/docker-builder-data/build/script/packet/qt-5.7.files/qmake.conf.patch b/docker-builder-data/build/script/packet/qt-5.7.files/qmake.conf.patch new file mode 100644 index 0000000..284a2d3 --- /dev/null +++ b/docker-builder-data/build/script/packet/qt-5.7.files/qmake.conf.patch @@ -0,0 +1,4 @@ +33c33 +< QMAKE_CFLAGS_RELEASE = -O2 +--- +> QMAKE_CFLAGS_RELEASE = -O2 -Wa,-mbig-obj diff --git a/docker-builder-data/build/script/packet/qt-5.7.sh b/docker-builder-data/build/script/packet/qt-5.7.sh index 6efa1e9..9e44672 100644 --- a/docker-builder-data/build/script/packet/qt-5.7.sh +++ b/docker-builder-data/build/script/packet/qt-5.7.sh @@ -1,4 +1,4 @@ -DEPS="png-1.6.26 xcbfull-1.12 glib-2.50.0" +DEPS="png-1.6.26 glib-2.50.0" PK_DIRNAME="qt-everywhere-opensource-src-5.7.0" PK_ARCHIVE="$PK_DIRNAME.tar.gz" @@ -7,27 +7,48 @@ PK_URL="http://download.qt.io/official_releases/qt/5.7/5.7.0/single/$PK_ARCHIVE" source $INCLUDE_SCRIPT_DIR/inc-pkallunpack-default.sh source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh +if [ "$PLATFORM" = "linux" ]; then + DEPS="$DEPS xcbfull-1.12" +fi + + pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - if ! check_packet_function $NAME build.cunfigure; then - if ! ./configure -prefix "$INSTALL_PACKET_DIR" -opensource -confirm-license -no-compile-examples -nomake examples; then - return 1 - fi - set_done $NAME build.cunfigure + if ! check_packet_function $NAME build.configure; then + local LOCAL_OPTIONS= + if [ "$PLATFORM" = "win" ]; then + rm -f "qtbase/mkspecs/win32-g++/qmake.conf" + patch "$UNPACK_PACKET_DIR/$PK_DIRNAME/qtbase/mkspecs/win32-g++/qmake.conf" \ + -i "$FILES_PACKET_DIR/qmake.conf.patch" -o - \ + > "qtbase/mkspecs/win32-g++/qmake.conf" + + rm -f "qtactiveqt/src/tools/idc/idc.pro" + patch "$UNPACK_PACKET_DIR/$PK_DIRNAME/qtactiveqt/src/tools/idc/idc.pro" \ + -i "$FILES_PACKET_DIR/idc.pro.patch" -o - \ + > "qtactiveqt/src/tools/idc/idc.pro" + + LOCAL_OPTIONS="-xplatform win32-g++ -device-option CROSS_COMPILE=$HOST-" + fi + + native_at_place \ + ./configure \ + -prefix "$INSTALL_PACKET_DIR" \ + $LOCAL_OPTIONS \ + -release \ + -opensource -confirm-license \ + -nomake examples \ + || return 1 + + set_done $NAME build.configure fi - # making in single thread is too slow, but life is too short... - if ! (make -j${THREADS} || make -j${THREADS} || make); then - return 1 - fi + native_at_place make -j${THREADS} || return 1 } pkinstall() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - if ! make install; then - return 1 - fi + make install || return 1 cat << EOF > "$INSTALL_PACKET_DIR/bin/qt.conf" [Paths] @@ -36,5 +57,5 @@ EOF if [ ! $? -eq 0 ]; then return 1 - fi + fi } diff --git a/docker-builder-data/build/script/packet/superlu-5.2.1.files/make.inc b/docker-builder-data/build/script/packet/superlu-5.2.1.files/make.inc deleted file mode 100644 index bdcb4d9..0000000 --- a/docker-builder-data/build/script/packet/superlu-5.2.1.files/make.inc +++ /dev/null @@ -1,65 +0,0 @@ -############################################################################ -# -# Program: SuperLU -# -# Module: make.inc -# -# Purpose: Top-level Definitions -# -# Creation date: October 2, 1995 -# -# Modified: February 4, 1997 Version 1.0 -# November 15, 1997 Version 1.1 -# September 1, 1999 Version 2.0 -# -############################################################################ -# -# The machine (platform) identifier to append to the library names -# -PLAT = _linux - -# -# The name of the libraries to be created/linked to -# -SuperLUroot = $(HOME)/SuperLU_5.2.1 -SUPERLULIB = $(SuperLUroot)/lib/libsuperlu_5.2.1.a - -#BLASLIB = $(SuperLUroot)/lib/libblas.a - -## ATLAS BLAS causes single-precision to fail -BLASDEF = -DUSE_VENDOR_BLAS -BLASLIB = $(LDFLAGS) -lblas -lgfortran - -## This BLAS causes single-precision to fail the test in SuperLU -#BLASDEF = -DUSE_VENDOR_BLAS -#BLASLIB = -L/usr/lib -lblas - -TMGLIB = libtmglib.a -LIBS = $(SUPERLULIB) $(BLASLIB) - -# -# The archiver and the flag(s) to use when building archive (library) -# If your system has no ranlib, set RANLIB = echo. -# -ARCH = ar -ARCHFLAGS = cr -RANLIB = ranlib - -CC = gcc -CFLAGS = -O3 -fPIC -NOOPTS = -fPIC -FORTRAN = gfortran -FFLAGS = -O2 -fPIC -LOADER = $(CC) -LOADOPTS = - -# -# C preprocessor defs for compilation for the Fortran interface -# (-DNoChange, -DAdd_, -DAdd__, or -DUpCase) -# -CDEFS = -DAdd_ -# -# The directory in which Matlab is installed -# -MATLAB = /usr/sww/matlab - diff --git a/docker-builder-data/build/script/packet/superlu-5.2.1.sh b/docker-builder-data/build/script/packet/superlu-5.2.1.sh index 3a1500c..d24186e 100644 --- a/docker-builder-data/build/script/packet/superlu-5.2.1.sh +++ b/docker-builder-data/build/script/packet/superlu-5.2.1.sh @@ -9,19 +9,34 @@ source $INCLUDE_SCRIPT_DIR/inc-pkinstall_release-default.sh pkbuild() { cd "$BUILD_PACKET_DIR/$PK_DIRNAME" - - if ! (cp --remove-destination "$FILES_PACKET_DIR/mc64ad.c" "$BUILD_PACKET_DIR/$PK_DIRNAME/SRC/" \ - && cp --remove-destination "$FILES_PACKET_DIR/make.inc" "$BUILD_PACKET_DIR/$PK_DIRNAME/"); then - return 1 - fi - if ( ! HOME=$BUILD_PACKET_DIR make); then - return 1 - fi +rm -f make.inc +cat > make.inc << EOF +SuperLUroot = $BUILD_PACKET_DIR/$PK_DIRNAME +SUPERLULIB = \$(SuperLUroot)/lib/libsuperlu.a +BLASDEF = -DUSE_VENDOR_BLAS +BLASLIB = \$(LDFLAGS) -lblas -lgfortran +TMGLIB = libtmglib.a +LIBS = \$(SUPERLULIB) \$(BLASLIB) +ARCH = ${AR:-ar} +ARCHFLAGS = cr +RANLIB = ${RANLIB:-ranlib} +CC = ${CC:-gcc} +CFLAGS = -O3 -fPIC +NOOPTS = -fPIC +FORTRAN = ${FORTRAN:-gfortran} +FFLAGS = -O2 -fPIC +LOADER = \$(CC) +LOADOPTS = +CDEFS = -DAdd_ +EOF + + cp --remove-destination "$FILES_PACKET_DIR/mc64ad.c" "$BUILD_PACKET_DIR/$PK_DIRNAME/SRC/" || return 1 + make lib || return 1 } pkinstall() { cp --remove-destination -r "$BUILD_PACKET_DIR/$PK_DIRNAME/lib" "$INSTALL_PACKET_DIR" || return 1 - mkdir -p "$INSTALL_PACKET_DIR/include/superlu-5.2.1" - cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/SRC/*.h "$INSTALL_PACKET_DIR/include/superlu-5.2.1" || return 1 + mkdir -p "$INSTALL_PACKET_DIR/include/superlu" + cp --remove-destination $BUILD_PACKET_DIR/$PK_DIRNAME/SRC/*.h "$INSTALL_PACKET_DIR/include/superlu" || return 1 } diff --git a/docker-builder-data/build/script/toolchain/none.sh b/docker-builder-data/build/script/toolchain/none.sh index f76794d..9ad8c23 100755 --- a/docker-builder-data/build/script/toolchain/none.sh +++ b/docker-builder-data/build/script/toolchain/none.sh @@ -5,11 +5,17 @@ export TOOLCHAIN_PATH=$INITIAL_PATH export TOOLCHAIN_LD_LIBRARY_PATH=$INITIAL_LD_LIBRARY_PATH export TOOLCHAIN_CC=$INITIAL_CC export TOOLCHAIN_CXX=$INITIAL_CXX +export TOOLCHAIN_FORTRAN=$INITIAL_FORTRAN +export TOOLCHAIN_LD=$INITIAL_LD +export TOOLCHAIN_AR=$INITIAL_AR +export TOOLCHAIN_RANLIB=$INITIAL_RANLIB export TOOLCHAIN_LDFLAGS=$INITIAL_LDFLAGS export TOOLCHAIN_CFLAGS=$INITIAL_CFLAGS export TOOLCHAIN_CPPFLAGS=$INITIAL_CPPFLAGS export TOOLCHAIN_CXXFLAGS=$INITIAL_CXXFLAGS -export TOOLCHAIN_PKG_CONFIG_PATH=$INITIAL_PKG_CONFIG_PATH +export TOOLCHAIN_PKG_CONFIG_PATH="$INITIAL_PKG_CONFIG_PATH:/usr/share/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/i586-linux-gnu/pkgconfig:/usr/lib/i686-linux-gnu/pkgconfig" +export TOOLCHAIN_PKG_CONFIG_LIBDIR="$INITIAL_PKG_CONFIG_LIBDIR:/usr/lib:/usr/lib64:/usr/lib/x86_64-linux-gnu:/usr/lib/i686-linux-gnu" export TOOLCHAIN_XDG_DATA_DIRS=$INITIAL_XDG_DATA_DIRS -export TOOLCHAIN_ACLOCAL_PATH=$INITIAL_ACLOCAL_PATH - +export TOOLCHAIN_ACLOCAL_PATH=$INITIAL_ACLOCAL_PATH +export TOOLCHAIN_CMAKE_INCLUDE_PATH=$INITIAL_CMAKE_INCLUDE_PATH +export TOOLCHAIN_CMAKE_LIBRARY_PATH=$INITIAL_CMAKE_LIBRARY_PATH diff --git a/docker-builder-data/build/script/toolchain/win-64.sh b/docker-builder-data/build/script/toolchain/win-64.sh index 441d48e..b19c2a7 100755 --- a/docker-builder-data/build/script/toolchain/win-64.sh +++ b/docker-builder-data/build/script/toolchain/win-64.sh @@ -5,11 +5,17 @@ export TOOLCHAIN_PATH="/usr/$TOOLCHAIN_HOST/bin:/usr/$TOOLCHAIN_HOST/sys-root/mi export TOOLCHAIN_LD_LIBRARY_PATH="/usr/$TOOLCHAIN_HOST/sys-root/mingw/lib:$INITIAL_LD_LIBRARY_PATH" export TOOLCHAIN_CC=/usr/bin/$TOOLCHAIN_HOST-gcc export TOOLCHAIN_CXX=/usr/bin/$TOOLCHAIN_HOST-g++ +export TOOLCHAIN_FORTRAN=/usr/bin/$TOOLCHAIN_HOST-gfortran +export TOOLCHAIN_LD=/usr/bin/$TOOLCHAIN_HOST-ld +export TOOLCHAIN_AR=/usr/bin/$TOOLCHAIN_HOST-ar +export TOOLCHAIN_RANLIB=/usr/bin/$TOOLCHAIN_HOST-ranlib export TOOLCHAIN_LDFLAGS=" -L/usr/$TOOLCHAIN_HOST/sys-root/mingw/lib $INITIAL_LDFLAGS" export TOOLCHAIN_CFLAGS=" -I/usr/$TOOLCHAIN_HOST/sys-root/mingw/include $INITIAL_CFLAGS" export TOOLCHAIN_CPPFLAGS=" -I/usr/$TOOLCHAIN_HOST/sys-root/mingw/include $INITIAL_CPPFLAGS" export TOOLCHAIN_CXXFLAGS=" -I/usr/$TOOLCHAIN_HOST/sys-root/mingw/include $INITIAL_CXXFLAGS" -export TOOLCHAIN_PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/$TOOLCHAIN_HOST/sys-root/mingw/lib/pkgconfig/" +export TOOLCHAIN_PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/$TOOLCHAIN_HOST/sys-root/mingw/lib/pkgconfig" +export TOOLCHAIN_PKG_CONFIG_LIBDIR="/usr/$TOOLCHAIN_HOST/sys-root/mingw/lib" export TOOLCHAIN_XDG_DATA_DIRS="$INITIAL_XDG_DATA_DIRS" export TOOLCHAIN_ACLOCAL_PATH="$INITIAL_ACLOCAL_PATH" - +export TOOLCHAIN_CMAKE_INCLUDE_PATH="/usr/$TOOLCHAIN_HOST/sys-root/mingw/include:$INITIAL_CMAKE_INCLUDE_PATH" +export TOOLCHAIN_CMAKE_LIBRARY_PATH="/usr/$TOOLCHAIN_HOST/sys-root/mingw/lib:$INITIAL_CMAKE_LIBRARY_PATH" diff --git a/docker/debian-7-32bit/run.sh b/docker/debian-7-32bit/run.sh index 6646346..673d198 100755 --- a/docker/debian-7-32bit/run.sh +++ b/docker/debian-7-32bit/run.sh @@ -14,9 +14,13 @@ fi mkdir -p $PACKET_BUILD_DIR export NATIVE_PLATFORM=debian +export NATIVE_ARCH=32 if [ -z "$PLATFORM" ]; then export PLATFORM=linux fi +if [ -z "$ARCH" ]; then + export ARCH=$NATIVE_ARCH +fi if [ -z "$TASK" ]; then export TASK=builder-$NATIVE_PLATFORM fi @@ -36,5 +40,5 @@ docker run -it \ -e ARCH="$ARCH" \ -e THREADS="$THREADS" \ morevna/build-debian-7-32 \ - /build/script/common/manager.sh "$@" + setarch i686 /build/script/common/manager.sh "$@" diff --git a/docker/fedora-cross-win/Dockerfile b/docker/fedora-cross-win/Dockerfile index 026124e..9f98bed 100644 --- a/docker/fedora-cross-win/Dockerfile +++ b/docker/fedora-cross-win/Dockerfile @@ -52,6 +52,10 @@ RUN dnf -y install dbus-devel RUN dnf -y install libXtst-devel RUN dnf -y install bzip2-devel +# additional mingw build tools +RUN dnf -y install mingw64-gcc-gfortran +RUN dnf -y install mingw32-gcc-gfortran + # great! RUN rm /usr/local/bin/synfig