Skip to content
Closed
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
07faf65
add native macOS application menu integration
brtnfld Jan 14, 2026
1135332
clang-format
brtnfld Jan 14, 2026
3e3a520
clang-format
brtnfld Jan 14, 2026
fb6f873
clang format
brtnfld Jan 14, 2026
85707ee
Use latest HDF5 snapshot with dynamic version detection in quality wo…
brtnfld Jan 14, 2026
b0842af
Fix HDF library extraction in CI workflows
brtnfld Jan 14, 2026
16dfb60
removed hardcoded versions
brtnfld Jan 14, 2026
181d0e9
removed hardcoded versions
brtnfld Jan 14, 2026
a0c244c
removed hardcoded versions
brtnfld Jan 14, 2026
b08e597
Merge branch 'master' into macmenu
brtnfld Jan 14, 2026
04f480f
removed hardcoded versions
brtnfld Jan 14, 2026
958c3e8
added error checks
brtnfld Jan 14, 2026
d18b10a
updated all workflow files to use PATTERN variables where the pattern…
brtnfld Jan 14, 2026
8762ab1
Acquire SWT as maven dependency
mattjala Jan 15, 2026
de6b342
Update run scripts to be version-independent
mattjala Jan 15, 2026
a7b118a
Setup dependency JARs earlier in maven lifecycle
mattjala Jan 15, 2026
4da2082
Update build guide
mattjala Jan 15, 2026
73c15c2
Update windows run from source build script
mattjala Jan 15, 2026
d722a69
Correct cross-platform build guide
mattjala Jan 15, 2026
256bd96
Revert change of lifecycle for JAR installation
mattjala Jan 15, 2026
16291c5
Resolve 404 errors in deb/rpm tests
mattjala Jan 15, 2026
c457e5f
updates to menu fix
brtnfld Jan 15, 2026
8dcbdca
clang-format
brtnfld Jan 15, 2026
c8ea261
clang-format
brtnfld Jan 15, 2026
46e4634
clang-format
brtnfld Jan 15, 2026
1a6f19e
addressed delay in settings menu
brtnfld Jan 16, 2026
d78b66d
Merge branch 'master' into macmenu
brtnfld Jan 16, 2026
cba59eb
Merge branch 'master' into macmenu
brtnfld Jan 16, 2026
48abddf
New composite action to eliminate DRY violation
brtnfld Jan 16, 2026
342cb86
the JAR installation duplication was already removed
brtnfld Jan 16, 2026
1d945b0
fixed naming convention
brtnfld Jan 16, 2026
15d7141
clang-format
brtnfld Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in the repo.
* @lrknox @byrnHDF @jhendersonHDF
* @lrknox @mattjala @jhendersonHDF

# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
Expand Down
48 changes: 19 additions & 29 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,39 +86,31 @@ jobs:

# Determine file pattern based on whether base name is provided
if [ -n "${{ inputs.hdf4_artifact_basename }}" ]; then
PATTERN="${{ inputs.hdf4_artifact_basename }}-ubuntu-2404_gcc.tar.gz"
PATTERN="${{ inputs.hdf4_artifact_basename }}-ubuntu-*_gcc.tar.gz"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the globbing here because when there are multiple artifacts in the resulting tarball, the glob parsing will fail. I think this is probably only showing up as a diff since the master branch has been updated.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that if the runners get updated, "2404" will fail.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not opposed to making the version handling more generic, but this should be done in a separate PR away from the menu changes.

else
PATTERN="*-ubuntu-2404_gcc.tar.gz"
PATTERN="*-ubuntu-*_gcc.tar.gz"
fi
echo "Using pattern: $PATTERN"

# Download HDF4 binary from HDF Group GitHub releases
gh release download "${{ inputs.hdf4_release_tag }}" \
--repo HDFGroup/hdf4 \
--pattern "$PATTERN" \
--clobber

echo "After gh download"
ls
--repo HDFGroup/hdf4 \
--pattern "$PATTERN" \
--clobber

# Extract outer tar.gz (creates hdf4/ directory)
tar -zxvf *-ubuntu-2404_gcc.tar.gz
tar -zxf *-ubuntu-*_gcc.tar.gz
[ -d hdf4 ] || mv hdf4-* hdf4

# Extract inner tar.gz into hdf4/ directory
cd "${{ github.workspace }}/hdf4"
echo "Before extracting inner tar.gz"
ls

tar -zxvf HDF-*-Linux.tar.gz --strip-components 1
tar -zxf HDF-*-Linux.tar.gz --strip-components 1

# Set HDF4 library path
HDF4DIR=${{ github.workspace }}/hdf4/HDF_Group/HDF/
FILE_NAME_HDF=$(ls ${{ github.workspace }}/hdf4/HDF_Group/HDF)
FILE_NAME_HDF=$(ls "$HDF4DIR" | head -1)
echo "HDF4LIB_PATH=$HDF4DIR$FILE_NAME_HDF" >> $GITHUB_ENV

echo "HDF4 installed to: $HDF4DIR$FILE_NAME_HDF"
ls -la "$HDF4DIR$FILE_NAME_HDF"
env:
GH_TOKEN: ${{ github.token }}

Expand All @@ -128,33 +120,31 @@ jobs:

# Determine file pattern based on whether base name is provided
if [ -n "${{ inputs.hdf5_artifact_basename }}" ]; then
PATTERN="${{ inputs.hdf5_prefix }}${{ inputs.hdf5_artifact_basename }}-ubuntu-2404_gcc.tar.gz"
PATTERN="${{ inputs.hdf5_prefix }}${{ inputs.hdf5_artifact_basename }}-ubuntu-*_gcc.tar.gz"
else
PATTERN="hdf5-*-ubuntu-2404_gcc.tar.gz"
PATTERN="hdf5-*-ubuntu-*_gcc.tar.gz"
fi
echo "Using pattern: $PATTERN"

# Download HDF5 binary from HDF Group GitHub releases
gh release download "${{ inputs.hdf5_release_tag }}" \
--repo HDFGroup/hdf5 \
--pattern "$PATTERN" \
--clobber
--repo HDFGroup/hdf5 \
--pattern "$PATTERN" \
--clobber

# Extract outer tar.gz (creates hdf5/ directory)
tar -zxvf hdf5-*-ubuntu-2404_gcc.tar.gz
tar -zxf hdf5-*-ubuntu-*_gcc.tar.gz
[ -d hdf5 ] || mv hdf5-* hdf5

# Extract inner tar.gz into hdf5/ directory
cd "${{ github.workspace }}/hdf5"
tar -zxvf HDF5-*-Linux.tar.gz --strip-components 1
tar -zxf HDF5-*-Linux.tar.gz --strip-components 1

# Set HDF5 library path
HDF5DIR=${{ github.workspace }}/hdf5/HDF_Group/HDF5/
FILE_NAME_HDF5=$(ls ${{ github.workspace }}/hdf5/HDF_Group/HDF5)
FILE_NAME_HDF5=$(ls "$HDF5DIR" | head -1)
echo "HDF5LIB_PATH=$HDF5DIR$FILE_NAME_HDF5" >> $GITHUB_ENV

echo "HDF5 installed to: $HDF5DIR$FILE_NAME_HDF5"
ls -la "$HDF5DIR$FILE_NAME_HDF5"
env:
GH_TOKEN: ${{ github.token }}

Expand Down Expand Up @@ -321,7 +311,7 @@ jobs:
- name: Upload Linux App Artifact
uses: actions/upload-artifact@v4
with:
name: tgz-ubuntu-2404-app-binary
name: tgz-linux-app-binary
path: HDFView-${{ steps.get-version.outputs.HDFVIEW_VERSION }}App-Linux.tar.gz
retention-days: 30

Expand All @@ -348,13 +338,13 @@ jobs:
- name: Upload DEB Installer Artifact
uses: actions/upload-artifact@v4
with:
name: deb-ubuntu-2404-installer
name: deb-linux-installer
path: "HDFView-*.deb"
retention-days: 30

- name: Upload RPM Installer Artifact
uses: actions/upload-artifact@v4
with:
name: rpm-ubuntu-2404-installer
name: rpm-linux-installer
path: "HDFView-*.rpm"
retention-days: 30
85 changes: 46 additions & 39 deletions .github/workflows/ci-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ on:
workflow_call:
inputs:
hdf4_version:
description: 'HDF4 version to use'
description: 'HDF4 version to use (leave empty for latest release)'
type: string
required: false
default: '4.3.1'
default: ''
hdf5_version:
description: 'HDF5 version to use'
type: string
Expand All @@ -16,10 +16,10 @@ on:
workflow_dispatch:
inputs:
hdf4_version:
description: 'HDF4 version to use'
description: 'HDF4 version to use (leave empty for latest release)'
type: string
required: false
default: '4.3.1'
default: ''
hdf5_version:
description: 'HDF5 version to use'
type: string
Expand Down Expand Up @@ -86,52 +86,56 @@ jobs:
- name: Download and Install HDF4 from GitHub
if: steps.cache-hdf.outputs.cache-hit != 'true'
run: |
HDF4_VERSION="${{ inputs.hdf4_version }}"
echo "Downloading HDF4 ${HDF4_VERSION} release..."
# Use provided version or get latest release dynamically
if [ -n "${{ inputs.hdf4_version }}" ]; then
HDF4_VERSION="${{ inputs.hdf4_version }}"
RELEASE_TAG="hdf${HDF4_VERSION}"
else
# Get latest non-snapshot release tag using JSON output for reliable parsing
RELEASE_TAG=$(gh release list --repo HDFGroup/hdf4 --limit 10 --json tagName,isPrerelease -q '.[] | select(.isPrerelease == false) | .tagName' | head -1)
if [ -z "$RELEASE_TAG" ]; then
echo "Error: Could not determine latest HDF4 release tag"
exit 1
fi
HDF4_VERSION="${RELEASE_TAG#hdf}"
fi
echo "Using HDF4 release: ${RELEASE_TAG} (version: ${HDF4_VERSION})"
PATTERN="*-ubuntu-*_gcc.tar.gz"

PATTERN="hdf${HDF4_VERSION}-ubuntu-2404_gcc.tar.gz"
echo "Using pattern $PATTERN"
gh release download hdf${HDF4_VERSION} \
gh release download "${RELEASE_TAG}" \
--repo HDFGroup/hdf4 \
--pattern "$PATTERN" \
--clobber

echo "After gh download"
ls

# Extract outer tar.gz (creates hdf4/ directory)
tar -zxvf *-ubuntu-2404_gcc.tar.gz
tar -zxf $PATTERN
[ -d hdf4 ] || mv hdf4-* hdf4

# Extract inner tar.gz into hdf4/ directory
cd "${{ github.workspace }}/hdf4"
echo "Before extracting inner tar.gz"
ls
tar -zxvf HDF-${HDF4_VERSION}-Linux.tar.gz --strip-components 1
tar -zxf HDF-${HDF4_VERSION}-Linux.tar.gz --strip-components 1

# Set HDF4 library path
HDF4LIB_PATH=${{ github.workspace }}/hdf4/HDF_Group/HDF/${HDF4_VERSION}
echo "HDF4LIB_PATH=$HDF4LIB_PATH" >> $GITHUB_ENV

echo "HDF4 installed to: $HDF4LIB_PATH"
ls -la "$HDF4LIB_PATH"
env:
GH_TOKEN: ${{ github.token }}

- name: Download and Install HDF5 from GitHub
if: steps.cache-hdf.outputs.cache-hit != 'true'
run: |
HDF5_VERSION="${{ inputs.hdf5_version }}"
PATTERN="hdf5-${HDF5_VERSION}-ubuntu-*_gcc.tar.gz"
echo "Downloading HDF5 ${HDF5_VERSION} release..."

PATTERN="hdf5-${HDF5_VERSION}-ubuntu-2404_gcc.tar.gz"
gh release download ${HDF5_VERSION} \
--repo HDFGroup/hdf5 \
--pattern "$PATTERN" \
--clobber

# Extract outer tar.gz (creates hdf5/ directory)
tar -zxvf $PATTERN
tar -zxf $PATTERN
[ -d hdf5 ] || mv hdf5-* hdf5

# Extract inner tar.gz into hdf5/ directory
Expand All @@ -143,25 +147,26 @@ jobs:
echo "HDF5LIB_PATH=$HDF5LIB_PATH" >> $GITHUB_ENV

echo "HDF5 installed to: $HDF5LIB_PATH"
ls -la "$HDF5LIB_PATH"
env:
GH_TOKEN: ${{ github.token }}

- name: Set Environment Variables from Cache
if: steps.cache-hdf.outputs.cache-hit == 'true'
run: |
HDF4_VERSION="${{ inputs.hdf4_version }}"
HDF5_VERSION="${{ inputs.hdf5_version }}"

HDF4LIB_PATH=${{ github.workspace }}/hdf4/HDF_Group/HDF/${HDF4_VERSION}
# Detect versions dynamically from cached directories
HDF4DIR=${{ github.workspace }}/hdf4/HDF_Group/HDF/
HDF4_VERSION=$(ls "$HDF4DIR" | head -1)
HDF4LIB_PATH="${HDF4DIR}${HDF4_VERSION}"
echo "HDF4LIB_PATH=$HDF4LIB_PATH" >> $GITHUB_ENV

HDF5LIB_PATH=${{ github.workspace }}/hdf5/HDF_Group/HDF5/${HDF5_VERSION}
HDF5DIR=${{ github.workspace }}/hdf5/HDF_Group/HDF5/
HDF5_VERSION=$(ls "$HDF5DIR" | head -1)
HDF5LIB_PATH="${HDF5DIR}${HDF5_VERSION}"
echo "HDF5LIB_PATH=$HDF5LIB_PATH" >> $GITHUB_ENV

echo "Using cached HDF libraries:"
echo "HDF4: $HDF4LIB_PATH"
echo "HDF5: $HDF5LIB_PATH"
echo "HDF4: $HDF4LIB_PATH (version: $HDF4_VERSION)"
echo "HDF5: $HDF5LIB_PATH (version: $HDF5_VERSION)"

- name: Install HDF JARs to Local Maven Repository
run: |
Expand All @@ -174,26 +179,28 @@ jobs:

# List what we have
echo "JARs in repository/lib:"
ls -la repository/lib/*.jar 2>/dev/null || echo "No JARs found"
ls repository/lib/*.jar 2>/dev/null || echo "No JARs found"

# Install jarhdf5
HDF5_VERSION="${{ inputs.hdf5_version }}"
if [ -f repository/lib/jarhdf5-*.jar ]; then
# Install jarhdf5 (extract version from filename)
if ls repository/lib/jarhdf5-*.jar 1>/dev/null 2>&1; then
JAR_FILE=$(ls repository/lib/jarhdf5-*.jar | head -1)
JAR_VERSION=$(basename "$JAR_FILE" .jar | sed 's/jarhdf5-//')
echo "Detected jarhdf5 version: $JAR_VERSION"
mvn install:install-file -Dfile="$JAR_FILE" \
-DgroupId=jarhdf5 -DartifactId=jarhdf5 -Dversion=${HDF5_VERSION} \
-DgroupId=jarhdf5 -DartifactId=jarhdf5 -Dversion="$JAR_VERSION" \
-Dpackaging=jar -DgeneratePom=true
echo "Installed: $JAR_FILE"
echo "Installed: $JAR_FILE as version $JAR_VERSION"
fi

# Install jarhdf (HDF4)
HDF4_VERSION="${{ inputs.hdf4_version }}"
if [ -f repository/lib/jarhdf-*.jar ]; then
# Install jarhdf (HDF4 - extract version from filename)
if ls repository/lib/jarhdf-*.jar 1>/dev/null 2>&1; then
JAR_FILE=$(ls repository/lib/jarhdf-*.jar | head -1)
JAR_VERSION=$(basename "$JAR_FILE" .jar | sed 's/jarhdf-//')
echo "Detected jarhdf version: $JAR_VERSION"
mvn install:install-file -Dfile="$JAR_FILE" \
-DgroupId=jarhdf -DartifactId=jarhdf -Dversion=${HDF4_VERSION} \
-DgroupId=jarhdf -DartifactId=jarhdf -Dversion="$JAR_VERSION" \
-Dpackaging=jar -DgeneratePom=true
echo "Installed: $JAR_FILE"
echo "Installed: $JAR_FILE as version $JAR_VERSION"
fi

# Install fits.jar
Expand Down
Loading
Loading