summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 0f4e8a55ed94f16b367ea356bd61971ba4ac2e2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Maintainer: Felix Golatofski <contact@xdfr.de>
# Contributor: eolianoe <eolianoe [at] gmail [DoT] com>
# Contributor: Filippo Squillace <sqoox85@gmail.com>

pkgname=visit
pkgver=3.1.2
_pkgver=${pkgver//./_}
pkgrel=1
pkgdesc="Interactive parallel visualization and graphical analysis tool."
arch=('i686' 'x86_64')
url="https://wci.llnl.gov/simulation/computer-codes/visit"
license=('BSD' 'custom')
makedepends=('cmake' 'java-runtime' 'gcc-fortran')
depends=('qt5-webkit' 'qt5-x11extras' 'qwt'
         'python2-numpy'
         'gperftools' 'icet' 'java-environment'
         'vtk-visit'
         'gdal' 'silo' 'cgns' 'hdf5' 'zlib')
conflicts=('visit-bin' 'visit-build')
source=("https://github.com/visit-dav/visit/releases/download/v${pkgver}/visit${pkgver}.tar.gz"
        "visit.sh"
        "visit_FindIceT.patch"
        "fix_type.patch"
        "visit_frontendlauncher.patch")
sha256sums=('cbe3864bd9a3025a643de3a218ad59b5501c8a4331af7b055a22d69cce9ca076'
            'd07a11e67ad646579fbc341f30e1eb63ebd38a5fbdd4f3ea36e8f460419028da'
            '2e7b0be6ad5bc6c0f0568b91f79149f081c2a9bded58223e4347fcf513aa206a'
            '9357fef64b4008a1044a804638ab1e2b8ca2faaec0bcc8cd4890fc3469017892'
            '75179bcdcc5881b12e417f402e52b14598ae2f85ea1f78702ce1dc95c9b5198f')
options=(!emptydirs)

prepare(){
  cd "${srcdir}/${pkgname}${pkgver}/src"

  # Use python2
  sed -i 's_python\*_python2.7_' CMake/FindVisItVTK.cmake
  sed -i 's/python2.7\//python2.7/g' CMake/FindVisItVTK.cmake
  sed -i 's/exec python/exec python2/g' bin/frontendlauncher
  sed -i 's/env python/env python2/' $(grep -rl "env python" ../* | xargs)

  # VTK use system libs
  sed -i 's/vtktiff/tiff/g' \
    visit_vtk/full/CMakeLists.txt
  sed -i -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    engine/main/CMakeLists.txt
  sed -i -e 's/vtktiff/tiff/g' -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    mdserver/main/CMakeLists.txt
  sed -i -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    tools/convert/CMakeLists.txt
  sed -i -e 's/vtktiff/tiff/g' -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    tools/dataserver/CMakeLists.txt
  sed -i -e 's/vtktiff/tiff/g' -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    tools/mcurvit/CMakeLists.txt
  sed -i -e 's/vtktiff/tiff/g' -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    tools/protocol/CMakeLists.txt
  sed -i  -e 's/vtkjpeg/jpeg/g' -e 's/vtkpng/png/g' \
    viewer/main/CMakeLists.txt

  # Proper link to all the libraries
  sed -i 's/vtkIOImage/vtkIOImage vtkIOMPIImage vtkRenderingMatplotlib vtkRenderingFreeType vtkRenderingFreeTypeFontConfig/g' \
    tools/annotations/CMakeLists.txt
  sed -i 's/vtkFiltersFlowPaths/vtkFiltersFlowPaths vtkFiltersParallelFlowPaths vtkIOMPIImage/g' \
    visit_vtk/full/CMakeLists.txt
  sed -i 's/vtkRenderingFreeTypeOpenGL/vtkRenderingFreeTypeOpenGL vtkIOMPIImage vtkRenderingMatplotlib vtkRenderingFreeTypeFontConfig/g' \
    avt/Plotter/CMakeLists.txt

  # For VTK use the libs in /opt/vtk-${_vtk_ver}/lib and fix Qt5 path
  patch bin/frontendlauncher "${srcdir}/visit_frontendlauncher.patch"

  # IceT, use the IceTConfig.cmake provided by IceT
  patch CMake/FindIceT.cmake "${srcdir}/visit_FindIceT.patch"

  # Fix Qwt include
  sed -i 's:<qwt_:<qwt/qwt_:g' \
    gui/QvisStripChart.h gui/QvisStripChart.C

  # Fix type
  patch databases/Vs/VsStaggeredField.C "${srcdir}/fix_type.patch"

  # Netcdf, does not work for now
  #sed -i 's/netcdf_c++/netcdf_c++4/g' CMake/FindNetcdf.cmake
  #sed -i 's/netcdfcpp.h/netcdf/g' databases/S3D/avtS3DFileFormat.C
  #sed -i 's/netcdfcpp.h/netcdf/g' databases/MFIXCDF/avtMFIXCDFFileFormat.h

  # R, for now Vtk in Arch is not compiled against R
  #sed -i 's/R Rblas Rlapack/Rmath/g' CMake/FindR.cmake

  # Fortran
  sed -i 's/gcc_s.1/gcc_s/g' CMake/FindGFortran.cmake

  # Out of source build
  cd "${srcdir}"
  #rm -rf -- build
  mkdir -p -- build
}

build() {
  cd "${srcdir}/build"

  _vtk_ver=$(pacman -Qi 'vtk-visit' | grep Version | cut -d: -f2 | cut -d- -f1 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')

  cmake "${srcdir}/${pkgname}${pkgver}/src" \
    -DCMAKE_BUILD_TYPE:STRING=Release \
    -DCMAKE_INSTALL_PREFIX:PATH=/opt/${pkgname} \
    -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \
    -DVISIT_FORTRAN:BOOL=ON -DVISIT_GFORTRAN_DIR=/usr -DCMAKE_Fortran_COMPILER=gfortran \
    -DVISIT_PARALLEL:BOOL=ON -DVISIT_MPI_COMPILER=mpicc -DVISIT_MPI_FORTRAN_COMPILER=mpifort \
    -DVISIT_CGNS_DIR:PATH=/usr \
    -DVISIT_GDAL_DIR:PATH=/usr \
    -DVISIT_HDF5_DIR:PATH=/usr \
    -DVISIT_ICET_DIR:PATH=/opt/icet/ \
    -DVISIT_JAVA:BOOL=ON \
    -DVISIT_PYTHON_DIR:PATH=/usr -DVISIT_PYTHON_SKIP_INSTALL:BOOL=ON \
    -DVISIT_QT5:BOOL=ON -DVISIT_QT_DIR:PATH=/usr/lib/qt -DVISIT_QT_SKIP_INSTALL:BOOL=ON \
    -DVISIT_QWT_DIR:PATH=/usr \
    -DVISIT_SILO_DIR:PATH=/usr \
    -DVISIT_THREAD:BOOL=ON \
    -DVISIT_TCMALLOC_DIR:PATH=/usr \
    -DVISIT_VTK_DIR:PATH="/opt/vtk-${_vtk_ver}" -DVISIT_VTK_SKIP_INSTALL:BOOL=ON -DVISIT_VTK_VERSION:STRING="${_vtk_ver}"\
    -DVISIT_ZLIB:BOOLD=ON -DVISIT_ZLIB_DIR:PATH=/usr

  # Does not compile for now
  #-DVISIT_NETCDF_DIR=/usr \

  # Vtk in Arch is not compiled against R
  #-DVISIT_R_DIR=/usr \
  #-DVISIT_R_SKIP_INSTALL:BOOL=ON \

  # PySide seems to be buggy
  #-DPYTHON_SUFFIX=python2.7 -DVISIT_PYSIDE_DIR=/usr \

  make
}

package(){
  cd "${srcdir}/build"

  make install DESTDIR="${pkgdir}"

  # License
  install -Dm644 "${srcdir}/${pkgname}${pkgver}/src/COPYRIGHT" \
   "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

  # Install script to set path
  install -Dm755 "${srcdir}/visit.sh" \
    "${pkgdir}/etc/profile.d/visit.sh"

  # Add link for the current version as in visit-bin
  cd "${pkgdir}/opt/${pkgname}"
  ln -s ${pkgver} current
}

# vim:set ts=2 sw=2 et: