Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Have Release Engineering added as a reviewer to any packaging PR
* @daos-stack/build-and-release-watchers
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_topdir/
*.tar.*
*.code-workspace
2 changes: 2 additions & 0 deletions E3SM-IO.rpmlintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# This line is mandatory to access the configuration functions
from Config import *
155 changes: 155 additions & 0 deletions E3SM-IO.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
%global with_mpich 1
%if (0%{?rhel} >= 8)
%global with_openmpi 1
%global with_openmpi3 0
%else
%global with_openmpi 0
%global with_openmpi3 1
%endif

%if (0%{?suse_version} >= 1500)
%global module_load() if [ "%{1}" == "openmpi3" ]; then MODULEPATH=/usr/share/modules module load gnu-openmpi; else MODULEPATH=/usr/share/modules module load gnu-%{1}; fi
%else
%global module_load() module load mpi/%{1}-%{_arch}
%endif

%if %{with_mpich}
%global mpi_list mpich
%endif
%if %{with_openmpi}
%global mpi_list %{?mpi_list} openmpi
%endif
%if %{with_openmpi3}
%if 0%{?fedora}
# this would be nice to use but causes issues with linting
# since that is done on Fedora
#{error: openmpi3 doesn't exist on Fedora}
%endif
%global mpi_list %{?mpi_list} openmpi3
%endif

%if (0%{?suse_version} >= 1500)
%global mpi_libdir %{_libdir}/mpi/gcc
%global mpi_lib_ext lib64
%global mpi_includedir %{_libdir}/mpi/gcc
%global mpi_include_ext /include
%else
%global mpi_libdir %{_libdir}
%global mpi_lib_ext lib
%global mpi_includedir %{_includedir}
%global mpi_include_ext -%{_arch}
%endif

%global shortcommit %(c=%{commit};echo ${c:0:7})

Name: E3SM-IO
Version: %{commit}
Release: 1%{?commit:.g%{shortcommit}}%{?dist}
Summary: File utilities designed for scalability and performance

Group: System Environment/Libraries
License: BSD
URL: https://github.com/Parallel-NetCDF/E3SM-IO
Source: https://github.com/Parallel-NetCDF/E3SM-IO/archive/%{commit}.tar.gz
BuildRoot: %_topdir/BUILDROOT
%if (0%{?suse_version} >= 1500)
BuildRequires: lua-lmod
%else
BuildRequires: Lmod
%endif
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc-c++
BuildRequires: libtool


%if (0%{?suse_version} > 0)
%global __debug_package 1
%global _debuginfo_subpackages 1
%debug_package
%endif

%description
A case study of parallel I/O kernel from the E3SM climate simulation model.

%if %{with_openmpi}
%package openmpi
Summary: A case study of parallel I/O kernel from the E3SM climate simulation model.
BuildRequires: openmpi-devel
BuildRequires: hdf5-openmpi-devel

%description openmpi
A case study of parallel I/O kernel from the E3SM climate simulation model.
%endif

%if %{with_openmpi3}
%package openmpi3
Summary: A case study of parallel I/O kernel from the E3SM climate simulation model.
BuildRequires: openmpi3-devel
BuildRequires: hdf5-openmpi3-devel

%description openmpi3
A case study of parallel I/O kernel from the E3SM climate simulation model.
%endif

%if %{with_mpich}
%package mpich
Summary: File utilities designed for scalability and performance
BuildRequires: mpich-devel
BuildRequires: hdf5-mpich-devel

%description mpich
A case study of parallel I/O kernel from the E3SM climate simulation model.
%endif


%prep
%autosetup -p1

%build
export CC=mpicc
export CXX=mpicxx
export CFLAGS="%{optflags} -fPIC -pie"
export CPPFLAGS="%{optflags} -fPIC -pie"
for mpi in %{?mpi_list}; do
mkdir $mpi
pushd $mpi
%module_load $mpi
autoreconf -i ../
../configure \
--with-hdf5=%{mpi_libdir}/$mpi \
--prefix=%{mpi_libdir}/$mpi
make
module purge
popd
done

%install
rm -rf %{buildroot}
for mpi in %{?mpi_list}; do
%module_load $mpi
make install -C $mpi DESTDIR=%{buildroot}
module purge
done

%if %{with_openmpi}
%files openmpi
%defattr(-,root,root,-)
%{mpi_libdir}/openmpi/bin/*
%endif

%if %{with_openmpi3}
%files openmpi3
%defattr(-,root,root,-)
%{mpi_libdir}/openmpi3/bin/*
%endif

%if %{with_mpich}
%files mpich
%defattr(-,root,root,-)
%{mpi_libdir}/mpich/bin/*
%endif

%changelog
* Wed Oct 01 2025 Dalton A. Bohning <dalton.bohning@hpe.com> - 76a1c2fabd042423493a455ef3ce72577a3848a2-1
- Initial package
11 changes: 11 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/groovy
// SPDX-License-Identifier: BSD-2-Clause-Patent
// Copyright 2025 Hewlett Packard Enterprise Development LP

// To use a test branch (i.e. PR) until it lands to master
// I.e. for testing library changes
//@Library(value="pipeline-lib@your_branch") _

/* groovylint-disable-next-line CompileStatic */
packageBuildingPipelineDAOSTest(['distros' : ['el8', 'el9', 'leap15'],
'test-tag': 'e3smio'])
54 changes: 54 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
BSD-2-Clause Plus Patent License

Copyright 2025 Hewlett Packard Enterprise Development LP

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

Subject to the terms and conditions of this license, each copyright
holder and contributor hereby grants to those receiving rights under
this license a perpetual, worldwide, non-exclusive, no-charge,
royalty-free, irrevocable (except for failure to satisfy the conditions
of this license) patent license to make, have made, use, offer to sell,
sell, import, and otherwise transfer this software, where such license
applies only to those patent claims, already acquired or hereafter
acquired, licensable by such copyright holder or contributor that are
necessarily infringed by:

(a) their Contribution(s) (the licensed copyrights of copyright holders
and non-copyrightable additions of contributors, in source or
binary form) alone; or

(b) combination of their Contribution(s) with the work of authorship to
which such Contribution(s) was added by such copyright holder or
contributor, if, at the time the Contribution is added, such
addition causes such combination to be necessarily infringed.
The patent license shall not apply to any other combinations which
include the Contribution.

Except as expressly stated above, no rights or licenses from any
copyright holder or contributor is granted under this license, whether
expressly, by implication, estoppel or otherwise.

DISCLAIMER

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-License-Identifier: BSD-2-Clause-Patent
# Copyright 2025 Hewlett Packard Enterprise Development LP

NAME := E3SM-IO
SRC_EXT := gz
REPO_NAME := E3SM-IO-pkg
PKG_GIT_COMMIT := 76a1c2fabd042423493a455ef3ce72577a3848a2
GITHUB_PROJECT := Parallel-NetCDF/E3SM-IO

TEST_PACKAGES := $(NAME)-mpich-devel $(NAME)-openmpi3-devel

include packaging/Makefile_packaging.mk
56 changes: 56 additions & 0 deletions packaging/Dockerfile.centos.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#
# Copyright 2018-2022, Intel Corporation
#
# 'recipe' for Docker to build an RPM
#

# Pull base image
FROM centos:centos7
LABEL maintainer="daos@daos.groups.io"

# Use local repo server if present
ARG REPO_FILE_URL
RUN set -e; \
if [ -n "$REPO_FILE_URL" ]; then \
cd /etc/yum.repos.d/ && \
curl -k -f -o daos_ci-centos7-artifactory.repo.tmp \
"$REPO_FILE_URL"daos_ci-centos7-artifactory.repo && \
for file in *.repo; do \
true > $file; \
done; \
mv daos_ci-centos7-artifactory.repo{.tmp,}; \
fi; \
yum -y install dnf; \
yum clean all; \
dnf --disablerepo \*epel\* -y install epel-release \
dnf-plugins-core; \
if [ -n "$REPO_FILE_URL" ]; then \
dnf -y --quiet config-manager --disable epel; \
fi; \
dnf -y update epel-release; \
dnf -y clean all

# use same UID as host and default value of 1000 if not specified
ARG UID=1000

# Update distribution
#Nothing to do for CentOS

# Install basic tools
RUN dnf install -y epel-release
RUN dnf install -y mock make rpm-build curl createrepo rpmlint redhat-lsb-core \
git python-srpm-macros dnf && dnf -y clean all

# Add build user (to keep rpmbuild happy)
ENV USER build
ENV PASSWD build
RUN useradd -u $UID -ms /bin/bash $USER
RUN echo "$USER:$PASSWD" | chpasswd
# add the user to the mock group so it can run mock
RUN usermod -a -G mock $USER

# mock in Docker needs to use the old-chroot option
RUN grep use_nspawn /etc/mock/site-defaults.cfg || \
echo "config_opts['use_nspawn'] = False" >> /etc/mock/site-defaults.cfg

RUN chmod g+w /etc/mock/default.cfg
33 changes: 33 additions & 0 deletions packaging/Dockerfile.coverity
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#
# Copyright 2018-2020, Intel Corporation
# Copyright 2025 Hewlett Packard Enterprise Development LP
#
# 'recipe' for Docker to build for a Coverity scan.
#

# Pull base image
FROM fedora:latest
LABEL maintainer="daos-stack <daos@daos.groups.io>""

# use same UID as host and default value of 1000 if not specified
ARG UID=1000

# Install basic tools
RUN dnf -y install mock make rpm-build curl createrepo rpmlint redhat-lsb-core \
git python-srpm-macros rpmdevtools
RUN dnf -y makecache && dnf -y install gcc

# Add build user (to keep rpmbuild happy)
ENV USER build
ENV PASSWD build
RUN useradd -u $UID -ms /bin/bash $USER
RUN echo "$USER:$PASSWD" | chpasswd
# add the user to the mock group so it can run mock
RUN usermod -a -G mock $USER

# mock in Docker needs to use the old-chroot option
RUN grep use_nspawn || \
echo "config_opts['use_nspawn'] = False" >> /etc/mock/site-defaults.cfg

RUN chmod g+w /etc/mock/*

Loading