Skip to content

Commit

Permalink
Merge pull request #1 from ehb54/master
Browse files Browse the repository at this point in the history
Merge ehb54/master to ultrascan3
  • Loading branch information
demeler authored Oct 2, 2024
2 parents 8927fa0 + 5448bc6 commit bf16431
Show file tree
Hide file tree
Showing 1,378 changed files with 534,465 additions and 22,969 deletions.
198 changes: 198 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
push:
branches:
- master
- aaron-dev-test
pull_request:
# The branches below must be a subset of the branches above
branches:
- master
- aaron-dev-test
schedule:
- cron: '20 18 * * 1'

jobs:
analyze-mpi:
name: Analyze mpi
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read

strategy:
fail-fast: false
matrix:
language: [cpp]

# Specify the container in which actions will run
container:
image: ehb1/us3comp:latest
options: --cpus 2

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Build
run: |
cp admin/codeql/docker/local.pri.mpi local.pri
cd utils
qmake
make -j4
cd ..
cd programs/us_mpi_analysis
qmake
make -j4
cd ../..
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

analyze-gui:
name: Analyze gui
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read

strategy:
fail-fast: false
matrix:
language: [cpp]

# Specify the container in which actions will run
container:
image: ehb1/us3comp:latest
options: --cpus 2

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Build
run: |
cp admin/codeql/docker/local.pri.gui local.pri
git config --global --add safe.directory /__w/ultrascan3/ultrascan3
(cd programs/us && sh revision.sh)
cd qwtplot3d
qmake
make -j4
cd ..
cd utils
qmake
make -j4
cd ..
cd gui
qmake
make -j4
cd ..
for d in `find programs -type d -name "us*" | grep -v 'us_mpi_analysis'`
do
echo "*** compiling in $d ***"
( cd $d && qmake && make -j4 )
done
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

analyze-somo:
name: Analyze somo
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read

strategy:
fail-fast: false
matrix:
language: [cpp]

# Specify the container in which actions will run
container:
image: ehb1/us3comp:latest
options: --cpus 2

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Build
run: |
bdir=`pwd`
echo $bdir
pwd
export ULTRASCAN=$bdir
export us3=$bdir
cd us_somo/develop
git config --global --add safe.directory /__w/ultrascan3/ultrascan3
./revision.sh
./version.sh
cp $bdir/admin/codeql/docker/local.pri.somo local.pri
qmake libus_somo.pro
make -j4
qmake us_somo.pro
make -j4
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
unit-testing:
name: Unit Testing
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read

strategy:
fail-fast: false
matrix:
language: [ cpp ]

# Specify the container in which actions will run
container:
image: ehb1/us3comp:latest
options: --cpus 2

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Configure and build
run: |
apt-get install -y cmake
bdir=`pwd`
echo $bdir
pwd
export ULTRASCAN=$bdir
export us3=$bdir
git config --global --add safe.directory /__w/ultrascan3/ultrascan3
mkdir -p $bdir/build
cd build
cmake ..
make -j4
- name: Run tests
run: |
cd build
ctest --output-on-failure -V


24 changes: 24 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
cmake_minimum_required(VERSION 3.21)
project(UltrascanTest)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# Enable AUTOMOC
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Enable debugging
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "-g")

# Enable testing
enable_testing()

# Find Qt packages
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Sql Test Xml)

# Include the src subdirectory
add_subdirectory(utils)
add_subdirectory(test)
7 changes: 5 additions & 2 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
UltraScan is licensed under the LGPL v3 license.

Copyright Borries Demeler, Ph.D.
Copyright © Borries Demeler, Ph.D.
The University of Texas
****************************************************************************************

GNU LESSER GENERAL PUBLIC LICENSE

Version 3, 29 June 2007

Copyright 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Expand Down Expand Up @@ -148,3 +148,6 @@ whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the Library.

------------------------------------------------------------------------
Part of the source code includes code covered under a different license which
is LGPL v3 compliant. See the source code headers for detailed information.
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
[![CodeQL](https://github.com/ehb54/ultrascan3/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/ehb54/ultrascan3/actions/workflows/codeql-analysis.yml)

This is the home of the UltraScan GUI software source code.
More information is available [here](https://ultrascan.aucsolutions.com)

The UltraScan project is supported by NIH Funding GM120600

### Licensing

This project is licensed under the Lesser General Public License (LGPL). You can find the LGPL license in the LICENSE file in the root directory of this project.

This project uses the Eigen library, which is licensed under the Mozilla Public License 2.0 (MPL2).
You can find the Eigen source code and license at [Eigen GitHub repository](https://gitlab.com/libeigen/eigen).

### Installation

The simplest way is to download and install a precompiled [binary](https://www.ultrascan3.aucsolutions.com/download.php)

### Building

If you wish to compile from source, here are some notes to get you started.

You will need [qt5](https://doc.qt.io/qt-5/gettingstarted.html) development and [qwt](https://qwt.sourceforge.io/) installed.

We typically compile from source as in [ansible roles build-qt, build-qwt & build-us3](https://github.com/KJSain/us3lims-roles/tree/master/roles)

One could also take hints from this [Dockerfile](https://github.com/ehb54/ultrascan3/blob/master/admin/codeql/docker/docker/Dockerfile) which uses an Ubuntu 20.04 container and qt packages.

Please create an issue or [contact us](https://www.ultrascan3.aucsolutions.com/contacts.php) if you have further questions.

### Container environment

Assuming you are experienced with containers...

A containerized development image is also available
```docker pull ehb1/us3comp```

The source is in `/ultrascan3`

Run and export the containers display in Linux
```docker run -it --rm -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/home/xterm/.Xauthority --hostname $(hostname) ehb1/us3comp bash```

N.B. the `--rm` above will delete the container after you exit, so any changes will be lost after exiting.

Update the ultrascan3 code ```cd /ultrascan3 && git pull```

Compile both `us` and `us3_somo` ```cd /ultrascan3 && ./makeall.sh && ./makesomo.sh```

Run the compiled application ```LD_LIBRARY_PATH=/ultrascan3/lib:/qwt-6.1.5/lib /ultrascan3/bin/us```

Note - subprocesses do not currently run in the container, so you must run any compiled application individually, e.g. `us_fematch`

56 changes: 56 additions & 0 deletions admin/codeql/docker/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
FROM ubuntu:22.04

# dockerfile for us3 compiles

ARG DEBIAN_FRONTEND=noninteractive

# basic install stuff

RUN apt-get update
RUN apt-get install -y --no-install-recommends apt-utils
RUN apt-get install -y build-essential
RUN apt-get install -y tzdata
RUN apt-get install -y software-properties-common
RUN apt-get install -y bind9-host
RUN apt-get install -y subversion git libssl-dev bc curl wget
RUN apt-get install -y zlib1g-dev
RUN apt-get install -y pkg-config
RUN apt-get install -y re2c
RUN apt-get install -y openssh-server
RUN apt-get install -y vim
RUN apt-get install -y emacs-nox
RUN apt-get install -y xorg
RUN apt-get install -y x11-apps
RUN apt-get install -y telnet
RUN apt-get install -y cmake

# qt
RUN apt-get install -y qtbase5-dev
RUN apt-get install -y libqt5svg5-dev
RUN apt-get install -y libqt5sql5-mysql
RUN apt-get install -y libqt5sql5-psql
RUN apt-get install -y qtmultimedia5-dev
RUN apt-get install -y libqt5datavisualization5
RUN apt-get install -y libqt5datavisualization5-dev

# qt support

# RUN apt-get install -y libmariadbclient-dev
RUN apt-get install -y libmysqlclient-dev
RUN apt-get install -y mpich

# install qwt
RUN wget https://versaweb.dl.sourceforge.net/project/qwt/qwt/6.1.6/qwt-6.1.6.tar.bz2
RUN tar jxf qwt-6.1.6.tar.bz2
RUN cd qwt-6.1.6 && qmake && make -j12 && make install

# get source
RUN git clone https://github.com/ehb54/ultrascan3.git

# setup initial local.pri's

RUN cp /ultrascan3/admin/codeql/docker/local.pri.somo /ultrascan3/us_somo/develop/local.pri
RUN cp /ultrascan3/admin/codeql/docker/local.pri.gui /ultrascan3/local.pri

# somo version setup
RUN cd /ultrascan3/us_somo/develop && env ULTRASCAN=/ultrascan3 ./revision.sh && env us3=/ultrascan3 ./version.sh
Loading

0 comments on commit bf16431

Please sign in to comment.