Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
pkg-scripts/CellProfiler-2.2.0-0.build.sh
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
291 lines (238 sloc)
8.79 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/bash | |
PKG=CellProfiler | |
VERSION=2.2.0 | |
BUILD=0 | |
SRC=https://github.com/CellProfiler/CellProfiler/archive/$VERSION.tar.gz | |
PREFIX=/pkg/$PKG-$VERSION-$BUILD | |
# PREFIX=/dev/shm/pkg/$PKG-$VERSION-$BUILD | |
# we need /usr/local/package/bin for pip | |
PATH=/bin:/usr/bin:/usr/sbin:/usr/local/package/bin:/usr/local/bin | |
export PATH | |
set -xe | |
umask 022 | |
BUILD_TMPDIR=/dev/shm/$PKG-$VERSION-$BUILD.build.tmp | |
test -d $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR | |
mkdir -p $BUILD_TMPDIR/home | |
export TMPDIR=$BUILD_TMPDIR | |
export HOME=$BUILD_TMPDIR/home | |
exec </dev/null | |
mkdir -p $PREFIX | |
cat >$PREFIX/profile <<-EOF | |
PATH=$PREFIX/bin:\$PATH | |
PYTHONPATH=$PREFIX/lib/python2.7/site-packages | |
LD_LIBRARY_PATH=$PREFIX/lib\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} | |
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig\${PKG_CONFIG_PATH:+:\$PKG_CONFIG_PATH} | |
export PKG_CONFIG_PATH LD_LIBRARY_PATH PYTHONPATH | |
EOF | |
. $PREFIX/profile | |
BUILDDIR=$PREFIX/build | |
mkdir -p $BUILDDIR | |
cd $BUILDDIR | |
function at_plaininstall() { | |
local dir=$1 | |
local tar=$2 | |
local url=$3 | |
( | |
cd $BUILDDIR | |
test -e $tar || wget $url | |
test -n 'XWIPE' && rm -rf ./$dir | |
test -d $dir || tar xvf $tar | |
cd $dir | |
./configure --prefix=$PREFIX | |
make -j $(nproc) | |
make install | |
) | |
} | |
function cm_plaininstall() { | |
local dir=$1 | |
local tar=$2 | |
local url=$3 | |
local extra=$4 | |
( | |
cd $BUILDDIR | |
test -e $tar || wget $url | |
test -n 'XWIPE' && rm -rf ./$dir | |
test -d $dir || tar xvf $tar | |
mkdir -p $dir/build | |
cd $dir/build | |
echo "# extra args: '$extra'" | |
cmake .. \ | |
-DCMAKE_INSTALL_PREFIX=$PREFIX \ | |
-DCMAKE_COLOR_MAKEFILE=OFF \ | |
-DCMAKE_VERBOSE_MAKEFILE=ON \ | |
$extra | |
make -j $(nproc) | |
make install | |
) | |
} | |
# start with PyQt4, sip | |
( | |
# version 4.19.13 is not working with pyqt-version 4.11.4, version 4.18.1 wasn't tested | |
SIP_VERSION=4.16.9 | |
SIP_SRC=https://sourceforge.net/projects/pyqt/files/sip/sip-$SIP_VERSION/sip-$SIP_VERSION.tar.gz | |
test -e sip-$SIP_VERSION.tar.gz || wget $SIP_SRC | |
test -n 'XWIPE' && rm -rf sip-$SIP_VERSION | |
test -d sip-$SIP_VERSION || tar -xf sip-$SIP_VERSION.tar.gz | |
cd sip-$SIP_VERSION | |
python configure.py \ | |
-b $PREFIX/bin \ | |
-d $PYTHONPATH \ | |
-e $PREFIX/include/python2.7 \ | |
-v $PREFIX/share/sip | |
mkdir -p $PREFIX/share/sip | |
make; make install | |
) | |
( | |
# version 4.12.3 fails | |
# PYQT_SRC=http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-$PYQT_VERSION/PyQt4_gpl_x11-$PYQT_VERSION.tar.gz | |
PYQT_VERSION=4.11.4 | |
PYQT_SRC=http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-$PYQT_VERSION/PyQt-x11-gpl-$PYQT_VERSION.tar.gz | |
test -e PyQt-x11-gpl-$PYQT_VERSION.tar.gz || wget $PYQT_SRC | |
test -n 'XWIPE' && rm -rf PyQt-x11-gpl-$PYQT_VERSION | |
test -d PyQt-x11-gpl-$PYQT_VERSION || tar -xf PyQt-x11-gpl-$PYQT_VERSION.tar.gz | |
cd PyQt-x11-gpl-$PYQT_VERSION | |
export QTDIR=/usr/local/qt4 | |
python configure.py \ | |
-b $PREFIX/bin \ | |
-d $PYTHONPATH \ | |
-q /usr/local/qt4/bin/qmake \ | |
-v $PREFIX/share/sip \ | |
--confirm-license \ | |
--no-designer-plugin \ | |
--verbose | |
# missing include path for *our* phonon | |
sed -i -e '/^CPPFLAGS/ s,/usr/X11R6/include,/usr/include/phonon,' phonon/Makefile | |
make -j $(( 2 * $(nproc) - 1 )) | |
make install | |
) | |
at_plaininstall \ | |
zeromq-4.2.2 \ | |
zeromq-4.2.2.tar.gz \ | |
https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz | |
cm_plaininstall \ | |
vigra-1.11.1 \ | |
vigra-1.11.1-src.tar.gz \ | |
https://github.com/ukoethe/vigra/releases/download/Version-1-11-1/vigra-1.11.1-src.tar.gz \ | |
"-DVIGRANUMPY_INSTALL_DIR=$PYTHONPATH" | |
at_plaininstall \ | |
wxPython-src-3.0.2.0 \ | |
wxPython-src-3.0.2.0.tar.bz2 \ | |
https://sourceforge.net/projects/wxpython/files/wxPython/3.0.2.0/wxPython-src-3.0.2.0.tar.bz2 | |
( | |
cd $BUILDDIR/wxPython-src-3.0.2.0/wxPython | |
python2.7 setup.py build | |
python2.7 setup.py install --prefix $PREFIX | |
# build leaves 2gig rubbish | |
cd .. | |
make clean | |
) | |
# NOTE: I'm going to install downgraded versions of matplotlib and | |
# h5py, thus PYTHONPATH has to be exported, when using parts | |
# from this package interactively. And/or sys.path has to be | |
# adjusted in the main app (see MANGLE_SYS_PATH_PATCH) | |
# yields to matplotlib-1.5.3 | |
pip install --ignore-installed --prefix $PREFIX 'matplotlib<1.9' | |
# try 2.0.2, resume don't use ! | |
# pip install --prefix $PREFIX 'matplotlib<2.1' | |
pip install --ignore-installed --prefix $PREFIX 'h5py<2.8' | |
# needed by ilastik | |
pip install --prefix $PREFIX 'yapsy' | |
# 'the' CellProfiler | |
( | |
test -e $VERSION.tar.gz || wget $SRC | |
test -d CellProfiler-$VERSION || tar -xf $VERSION.tar.gz | |
cd CellProfiler-$VERSION | |
python2.7 setup.py build | |
python2.7 setup.py install --prefix $PREFIX | |
# Message: Plugin directory doesn't point to valid folder: /dev/shm/pkg/CellProfiler-2.2.0-0/plugins | |
# create it, it will be r/o ... | |
mkdir $PREFIX/plugins | |
) | |
# now an ancient ilastik | |
( | |
test -e v0.5.12.tar.gz || wget https://github.com/ilastik/ilastik-0.5/archive/v0.5.12.tar.gz | |
test -d ilastik-0.5-0.5.12 || tar -xf v0.5.12.tar.gz | |
cd ilastik-0.5-0.5.12 | |
python2.7 setup.py build | |
python2.7 setup.py install --prefix $PREFIX | |
) | |
# and a more recent ilastik | |
# this brings trouble with the lazyflow and volumina modules | |
# ( | |
# test -e 1.1.5.tar.gz || https://github.com/ilastik/ilastik/archive/1.1.5.tar.gz | |
# test -d ilastik-1.1.5 || tar -xf 1.1.5.tar.gz | |
# ) | |
# ... thus slaughter an older linux release, caus this one contains also an usable source tree | |
( | |
ILASTIKVERSION=1.1.5 | |
test -e ilastik-$ILASTIKVERSION-Linux.tar.gz || wget http://files.ilastik.org/ilastik-$ILASTIKVERSION-Linux.tar.gz | |
test -d ilastik-$ILASTIKVERSION-Linux || tar -xf ilastik-$ILASTIKVERSION-Linux.tar.gz --exclude='*.pyc' ilastik-$ILASTIKVERSION-Linux/src | |
cd ilastik-$ILASTIKVERSION-Linux/src/ilastik | |
for MODULE in ilastik lazyflow volumina; do | |
echo "# -- -- -- -- -- -- -- ILASTIK: $MODULE -- -- -- -- -- -- --" | |
cd $MODULE | |
python setup.py build | |
python setup.py install --prefix $PREFIX | |
cd .. | |
done | |
# 'install' this one, 'caus cellprofiler references it | |
cp ilastik/ilastik_main.py $PYTHONPATH | |
# mingle the old version with the newer, caus that's obviously the | |
# setup as of ver 2.2.0, what to say ... | |
( | |
cd $PYTHONPATH/ilastik-$ILASTIKVERSION-py2.7.egg/ilastik | |
for DIR in core gui modules; do | |
ln -vs ../../ilastik-0.5-py2.7.egg/ilastik/$DIR | |
done | |
) | |
) | |
# Time to patch ... | |
# Note, we should be still in $BUILDDIR. | |
cd $PREFIX | |
NAVTOOLBAR_MIN_HEIGHT_PATCH=' | |
--- CellProfiler-2.2.0-0/lib/python2.7/site-packages/CellProfiler-2.2.0-py2.7.egg/cellprofiler/gui/cpfigure.py.dist 2018-10-22 16:24:35.161104708 +0200 | |
+++ CellProfiler-2.2.0-0/lib/python2.7/site-packages/CellProfiler-2.2.0-py2.7.egg/cellprofiler/gui/cpfigure.py 2018-10-23 13:26:01.855642371 +0200 | |
@@ -474,4 +474,6 @@ | |
available_width, available_height = self.GetClientSize() | |
nbheight = self.navtoolbar.GetSize()[1] | |
+ if nbheight < 40: | |
+ nbheight = 40 | |
self.navtoolbar.SetPosition((0, 0)) | |
self.navtoolbar.SetSize((available_width, nbheight)) | |
' | |
NO_CHECK_NEW_VERSION_PATCH=" | |
--- CellProfiler-2.2.0-0/lib/python2.7/site-packages/CellProfiler-2.2.0-py2.7.egg/cellprofiler/cellprofilerapp.py.dist 2018-10-22 16:24:35.146104724 +0200 | |
+++ CellProfiler-2.2.0-0/lib/python2.7/site-packages/CellProfiler-2.2.0-py2.7.egg/cellprofiler/cellprofilerapp.py 2018-10-23 08:41:53.601299559 +0200 | |
@@ -20,2 +20,3 @@ | |
self.check_for_new_version = kwargs.pop('check_for_new_version', False) | |
+ self.check_for_new_version = False | |
self.workspace_path = kwargs.pop('workspace_path', None) | |
" | |
MANGLE_SYS_PATH_PATCH=" | |
--- CellProfiler-2.2.0-0/lib/python2.7/site-packages/CellProfiler-2.2.0-py2.7.egg/cellprofiler/__main__.py.dist 2018-10-23 13:15:18.843495001 +0200 | |
+++ CellProfiler-2.2.0-0/lib/python2.7/site-packages/CellProfiler-2.2.0-py2.7.egg/cellprofiler/__main__.py 2018-10-23 13:23:04.150877887 +0200 | |
@@ -1,7 +1,12 @@ | |
+import sys | |
+# put our site-packages *before* the ones from /pkg/python-2.7.15-1, otherwise | |
+# we'll get the bad h5py v2.8 again | |
+if sys.path.count('$PREFIX/lib/python2.7/site-packages'): | |
+ sys.path.remove('$PREFIX/lib/python2.7/site-packages') | |
+sys.path.insert(1,'$PREFIX/lib/python2.7/site-packages') | |
import h5py | |
import logging | |
import logging.config | |
import re | |
-import sys | |
import os | |
import numpy as np | |
" | |
# apply PR https://github.com/CellProfiler/CellProfiler/pull/3445 | |
# or with less fuzz https://github.com/CellProfiler/CellProfiler/issues/2679#issuecomment-355004994 | |
echo "$NAVTOOLBAR_MIN_HEIGHT_PATCH" | patch -p1 --verbose --read-only=ignore | |
# slap the update check | |
# "Exception fetching new version information from http://cellprofiler.org/CPupdate.html: HTTP Error 404: Not Found" | |
echo "$NO_CHECK_NEW_VERSION_PATCH" | patch -p1 --verbose --read-only=ignore | |
# not shure, why PYTHONPATH isn't preferred. | |
echo "$MANGLE_SYS_PATH_PATCH" | patch -p1 --verbose --read-only=ignore | |
# exit 1 # don't close ... | |
exit |