Unverified Commit 58710a43 authored by Tyler Wilson's avatar Tyler Wilson Committed by GitHub
Browse files

Merge pull request #485 from ihumphrey-usgs/cmake

Cmake integration with dev, preparing for release branch off
parents bb9542ad 8a4c96dc
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -42,4 +42,12 @@ print.prt
*/tsts/*/input/*
*/tsts/*/truth/*
*/tsts/*/output/*
data/
*/build/
*/install/






Jenkinsfile

0 → 100644
+76 −0
Original line number Diff line number Diff line
pipeline { 
    agent none 
    environment {
        ISISROOT="${workspace}" + "/build/"
        ISIS3TESTDATA="/usgs/cpkgs/isis3/testData/"
        ISIS3DATA="/usgs/cpkgs/isis3/data/"
    }
    stages {
        stage('Fedora25') {
            agent {
                docker {
                    label 'cmake'
                    image 'chrisryancombs/docker_isis'
                    args  '''\
                            -v /usgs/cpkgs/isis3/data:/usgs/cpkgs/isis3/data \
                            -v /usgs/cpkgs/isis3/testData:/usgs/cpkgs/isis3/testData\
                            -v /usgs/cpkgs/isis3/isis3mgr_scripts:/usgs/cpkgs/isis3/isis3mgr_scripts
                          '''  
                }
            }
            steps { 
                sh """
                    conda env create -n isis3 -f environment.yml
                    source activate isis3
                    mkdir -p ./install ./build && cd build
                    source /usgs/cpkgs/isis3/isis3mgr_scripts/initIsisCmake.sh .
                    cmake -GNinja -DJP2KFLAG=OFF -Dpybindings=OFF -DCMAKE_INSTALL_PREFIX=../install -Disis3Data=/usgs/cpkgs/isis3/data -Disis3TestData=/usgs/cpkgs/isis3/testData ../isis
                    set +e
                    ninja -j8 && ninja install
                    source /usgs/cpkgs/isis3/isis3mgr_scripts/initIsisCmake.sh .
                    ctest -V -R _unit_ --timeout 500
                    ctest -V -R _app_ --timeout 500
                    ctest -V -R _module_ --timeout 500
                    """
            }
        }
        stage('CentOS7') {
            agent {
                docker {
                    label 'cmake_cool'
                    image 'chrisryancombs/docker_isis_centos'
                    args  '''\
                            -v /usgs/cpkgs/isis3/data:/usgs/cpkgs/isis3/data \
                            -v /usgs/cpkgs/isis3/testData:/usgs/cpkgs/isis3/testData\
                            -v /usgs/cpkgs/isis3/isis3mgr_scripts:/usgs/cpkgs/isis3/isis3mgr_scripts
                          '''  
                }
            }
            steps {
                sh """
                    conda env create -n isis3 -f environment.yml
                    source activate isis3
                    cd build
                    set +e
                    source /usgs/cpkgs/isis3/isis3mgr_scripts/initIsisCmake.sh .
                    ctest -V -R _unit_ --timeout 500
                    ctest -V -R _app_ --timeout 500
                    ctest -V -R _module_ --timeout 500
                """
            }
        }
    }
//    post {
//        success {
//            sh 'pwd && ls'
//            archiveArtifacts artifacts: "build/objects/*.o"
//        }
//        always {
//            mail to: 'ccombs@usgs.gov',
//                    subject: "Build Finished: ${currentBuild.fullDisplayName}",
//                    body: "Link: ${env.BUILD_URL}"
//            sh "rm -rf build/* && rm -rf install/*"
//            cleanWs()
//        }
//    }
} 
+3 −0
Original line number Diff line number Diff line
# ISIS3

[![Join the chat at https://gitter.im/USGS-Astrogeology/isis3_cmake](https://badges.gitter.im/USGS-Astrogeology/isis3_cmake.svg)](https://gitter.im/USGS-Astrogeology/isis3_cmake?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Integrated Software for Imagers and Spectrometers ISIS3 public release site

configure.py

0 → 100644
+88 −0
Original line number Diff line number Diff line
import os
import sys
import sipconfig
import sipdistutils
import PyQt5
import subprocess
import argparse

from os.path import splitext
from os.path import dirname
from glob import glob
from distutils.spawn import find_executable

from PyQt5.QtCore import PYQT_CONFIGURATION
from plio.utils.utils import find_in_dict
from PyQt5.QtCore import PYQT_CONFIGURATION as qtconfigdict
from sipconfig import ModuleMakefile

def main (module):
    # The name of the SIP build file generated by SIP and used by the build
    # system.
    sipy_sip_dir = "sipfiles/"
    module = sipy_sip_dir+module + '.sip'
    build_file = "bundle"+".sbf"
    target = module+".so"

    # Get the extra SIP flags needed by the imported qt module.  Note that
    # this normally only includes those flags (-x and -t) that relate to SIP's
    # versioning system.
    qt_sip_flags = qtconfigdict["sip_flags"]

    # sip_bin = current_env_path + "/bin/sip"
    sip_bin = find_executable('sip')
    pyqt_sip_dir = dirname(dirname(sip_bin)) + "/share/sip/PyQt5"

    # Get the PyQt configuration information.
    config = sipconfig.Configuration()

    # Run SIP to generate the code.  Note that we tell SIP where to find the qt
    # module's specification files using the -I flag.

    errcode = os.system(" ".join([sip_bin, "-e","-c", ".", "-b", build_file, "-I",
        pyqt_sip_dir, qt_sip_flags, module]))

    if errcode != 0:
        print('sip exited with non zero error code: {}'.format(errcode))

    # We are going to install the SIP specification file for this module and
    # its configuration module.
    installs = []
    installs.append([module, os.path.join(pyqt_sip_dir, "isis3")])

    isis_root = os.getenv("ISISROOT")
    if not isis_root:
        raise("Please set ISIS")

    extra_libs = ["$(ALLLIBS)", "-Wl,-rpath,"+isis_root+"/lib", "-Wl,-rpath,"+isis_root+"/3rdParty/lib"]

    makefile = ModuleMakefile(configuration=config, build_file=build_file, installs=installs)
    makefile.extra_cxxflags = ["$(ALLINCDIRS)", "-Wstrict-aliasing=0", "-Wno-unused-variable"]
    makefile.extra_lflags =  ["$(ALLLIBDIRS)"]
    makefile.extra_include_dirs = [x[0] for x in os.walk('incs/')]
    makefile.extra_lib_dirs = [isis_root + '/3rdParty/lib', isis_root + 'lib']
    makefile.generate()

    # add import line for isismake.os
    isis_makefile = "include " + isis_root + "/make/isismake.os"

    with open("Makefile", 'r+') as f:
        content = f.read()
        content = content.replace("LIBS =", "LIBS = " + ' '.join(extra_libs))
        f.seek(0, 0)
        f.write(isis_makefile + '\n\n' + content)

if __name__ == "__main__":
    clean = ['cpp', 'c', 'h', 'hpp', 'o', 'sbf']

    # If clean is passed in, clear up all the files genreated by the scripts
    if len(sys.argv) > 1 and sys.argv[1] == 'clean':
        files = []
        for filetype in clean:
            files.extend(glob('*.{}'.format(filetype)))

        for f in files:
            os.remove(f)
        exit()

    main('master')

environment.yml

0 → 100644
+72 −0
Original line number Diff line number Diff line
channels:
  - usgs-astrogeology
  - conda-forge
  - probcomp
  - anaconda
  - defaults

dependencies:
  - armadillo==8.200.0
  - blas==1.1=openblas
  - bullet==2.86.1=0
  - bz2file==0.98
  - bzip2==1.0.6=1
  - cmake==3.9.1=0
  - cspice==66=h470a237_3
  - curl==7.60.0=0
  - doxygen==1.8.14=0
  - eigen==3.3.3=0
  - embree==2.14.0=0
  - geos==3.5.1
  - geotiff==1.4.2=1
  - gmm==5.0
  - gmp==6.1.2=0
  - gsl==2.2.1=blas_openblas_3
  - hdf5==1.8.18=2
  - icu==58.2=0
  - jama==125
  - jpeg==9b=2
  - kakadu==1
  - krb5==1.14.2=0
  - libpng>=1.6.34
  - libprotobuf==3.5.2
  - libtiff==4.0.9=0
  - libxml2==2.9.7=0
  - make
  - mesalib==17.2.0=0
  - mysql==5.7.20
  - mysql-connector-c==6.1.6=0
  - nanoflann==1.2.2
  - ninja==1.7.2=0
  - conda-forge/label/gcc7::nn
  # - numpy==1.13.3=py36_blas_openblas_200
  - openblas==0.2.19=2
  - opencv
  - openssl==1.0.2n=0
  - patchelf==0.9
  - pcl==1.8.1
  - pip==9.0.1
  - protobuf==3.5.2
  # - pyqt==5.6.0
  - python==3.6
  - qhull==7.2.0=0
  - qt=5.9.6
  - qwt=6.1.3
  - setuptools=38.5.1
  - sip==4.18
  - sqlite==3.13.0=1
  - suitesparse==4.5.4=blas_openblas_200
  - superlu==5.2.1=blas_openblas_201
  - tnt==126=0
  - wheel==0.30.0
  - x264==20131218
  - xalan-c==1.11
  - xerces-c==3.1.4=0
  - xorg-kbproto==1.0.7=1
  - xorg-libice
  - xorg-libsm
  - xorg-libx11==1.6.4=6
  - xorg-libxi
  - zlib==1.2.11=0

prefix: /scratch/anaconda3/envs/isis
Loading