process-in-process: overhaul package recipe (#32347)

This commit is contained in:
Atsushi Hori 2022-08-24 18:35:08 +09:00 committed by GitHub
parent e2468c8928
commit 14e99a1a5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -9,14 +9,25 @@
class ProcessInProcess(Package): class ProcessInProcess(Package):
"""Process-in-Process""" """Process-in-Process"""
homepage = "https://github.com/RIKEN-SysSoft/PiP" # we cannot install pip-gdb (pip-aware gdb)
git = "https://github.com/RIKEN-SysSoft/PiP.git" # since the ncureses package cannot be installed by using Spack
# --> https://github.com/spack/spack/issues/8675
variant("pipgdb", default=False, sticky=True, description="PiP-gdb")
homepage = "https://github.com/procinproc/procinproc.github.io"
git = "https://github.com/procinproc/PiP.git"
maintainers = ["ahori"] maintainers = ["ahori"]
conflicts("platform=darwin", msg="Darwin is not supported.")
conflicts("platform=windows", msg="Windows is not supported.")
# PiP version 1 is obsolete # PiP version 1 is obsolete
version("1", branch="pip-1", deprecated=True)
# PiP version 2 is stable one
version("2", branch="pip-2", preferred=True) version("2", branch="pip-2", preferred=True)
version("3", branch="pip-3") # experimental # PiP version 3 is experimental and unstable yet
version("3", branch="pip-3", deprecated=True)
conflicts("%gcc@:3", when="os=centos7") conflicts("%gcc@:3", when="os=centos7")
conflicts("%gcc@5:", when="os=centos7") conflicts("%gcc@5:", when="os=centos7")
@ -28,22 +39,26 @@ class ProcessInProcess(Package):
conflicts("%gcc@9:", when="os=rhel8") conflicts("%gcc@9:", when="os=rhel8")
# packages required for building PiP-gdb # packages required for building PiP-gdb
depends_on("texinfo", type="build") with when("+pipgdb"):
depends_on("ncurses")
depends_on("texinfo")
depends_on("systemtap") depends_on("systemtap")
depends_on("libxml2")
depends_on("pigz")
# resources for PiP version 2 # resources for PiP version 2
# PiP-glibc resource # PiP-glibc resource
# for rhel/centos 7 # for rhel/centos 7
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.17-260.el7.pip.branch", branch="centos/glibc-2.17-260.el7.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@2 os=centos7", when="@2 os=centos7",
) )
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.17-260.el7.pip.branch", branch="centos/glibc-2.17-260.el7.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@2 os=rhel7", when="@2 os=rhel7",
@ -51,31 +66,32 @@ class ProcessInProcess(Package):
# for rhel/centos 8 # for rhel/centos 8
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.28-72.el8_1.1.pip.branch", branch="centos/glibc-2.28-72.el8_1.1.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@2 os=centos8", when="@2 os=centos8",
) )
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.28-72.el8_1.1.pip.branch", branch="centos/glibc-2.28-72.el8_1.1.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@2 os=rhel8", when="@2 os=rhel8",
) )
with when("+pipgdb"):
# PiP-gdb resource # PiP-gdb resource
# for rhel/centos 7 # for rhel/centos 7
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-7.6.1-94.el7.pip.branch", branch="centos/gdb-7.6.1-94.el7.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@2 os=centos7", when="@2 os=centos7",
) )
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-7.6.1-94.el7.pip.branch", branch="centos/gdb-7.6.1-94.el7.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@2 os=rhel7", when="@2 os=rhel7",
@ -83,14 +99,14 @@ class ProcessInProcess(Package):
# for rhel/centos 8 # for rhel/centos 8
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-8.2-12.el8.pip.branch", branch="centos/gdb-8.2-12.el8.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@2 os=centos8", when="@2 os=centos8",
) )
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-8.2-12.el8.pip.branch", branch="centos/gdb-8.2-12.el8.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@2 os=rhel8", when="@2 os=rhel8",
@ -101,14 +117,14 @@ class ProcessInProcess(Package):
# for rhel/centos 7 # for rhel/centos 7
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.17-260.el7.pip.branch", branch="centos/glibc-2.17-260.el7.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@3 os=centos7", when="@3 os=centos7",
) )
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.17-260.el7.pip.branch", branch="centos/glibc-2.17-260.el7.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@3 os=rhel7", when="@3 os=rhel7",
@ -116,31 +132,32 @@ class ProcessInProcess(Package):
# for rhel/centos 8 # for rhel/centos 8
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.28-72.el8_1.1.pip.branch", branch="centos/glibc-2.28-72.el8_1.1.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@3 os=centos8", when="@3 os=centos8",
) )
resource( resource(
name="PiP-glibc", name="PiP-glibc",
git="https://github.com/RIKEN-SysSoft/PiP-glibc.git", git="https://github.com/procinproc/PiP-glibc.git",
branch="centos/glibc-2.28-72.el8_1.1.pip.branch", branch="centos/glibc-2.28-72.el8_1.1.pip.branch",
destination="PiP-glibc", destination="PiP-glibc",
when="@3 os=rhel8", when="@3 os=rhel8",
) )
with when("+pipgdb"):
# PiP-gdb resource # PiP-gdb resource
# for rhel/centos 7 # for rhel/centos 7
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-7.6.1-94.el7.pip.branch", branch="centos/gdb-7.6.1-94.el7.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@3 os=centos7", when="@3 os=centos7",
) )
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-7.6.1-94.el7.pip.branch", branch="centos/gdb-7.6.1-94.el7.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@3 os=rhel7", when="@3 os=rhel7",
@ -148,14 +165,14 @@ class ProcessInProcess(Package):
# for rhel/centos 8 # for rhel/centos 8
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-8.2-12.el8.pip.branch", branch="centos/gdb-8.2-12.el8.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@3 os=centos8", when="@3 os=centos8",
) )
resource( resource(
name="PiP-gdb", name="PiP-gdb",
git="https://github.com/RIKEN-SysSoft/PiP-gdb.git", git="https://github.com/procinproc/PiP-gdb.git",
branch="centos/gdb-8.2-12.el8.pip.branch", branch="centos/gdb-8.2-12.el8.pip.branch",
destination="PiP-gdb", destination="PiP-gdb",
when="@3 os=rhel8", when="@3 os=rhel8",
@ -164,20 +181,20 @@ class ProcessInProcess(Package):
# PiP testsuite (agnostic with PiP and OS versions) # PiP testsuite (agnostic with PiP and OS versions)
resource( resource(
name="PiP-Testsuite", name="PiP-Testsuite",
git="https://github.com/RIKEN-SysSoft/PiP-Testsuite.git", git="https://github.com/procinproc/PiP-Testsuite.git",
destination="PiP-Testsuite", destination="PiP-Testsuite",
) )
def install(self, spec, prefix): def install(self, spec, prefix):
"Install Process-in-Process including PiP-glibc, PiP-gdb" "Install Process-in-Process including PiP-glibc (, PiP-gdb)"
# checking os and arch # checking os and arch
arch = self.spec.architecture arch = self.spec.architecture
target = self.spec.target target = self.spec.target
if arch.os not in ["centos7", "rhel7", "centos8", "rhel8"]: if arch.os not in ["centos7", "rhel7", "centos8", "rhel8"]:
raise InstallError("PIP only supports rhel/centos 7 and 8") raise InstallError("PiP only supports rhel/centos 7 and 8")
if target.family not in ["x86_64", "aarch64"]: if target.family not in ["x86_64", "aarch64"]:
raise InstallError("PIP only supports x86_64 and aarch64") raise InstallError("PiP only supports x86_64 and aarch64")
bash = which("bash") bash = which("bash")
@ -194,14 +211,7 @@ def install(self, spec, prefix):
# installing already-doxygen-ed documents (man pages, html, ...) # installing already-doxygen-ed documents (man pages, html, ...)
make("doc") make("doc")
# testing PiP by using PiP-Testsuite (another repo), no need install with when("+pipgdb" in spec):
with working_dir(join_path("PiP-Testsuite", "PiP-Testsuite")):
bash("configure", "--with-pip=%s" % prefix)
# make test programs
make()
# and run the test programs
make("test10", parallel=False)
# installing PiP-gdb # installing PiP-gdb
with working_dir(join_path("PiP-gdb", "PiP-gdb")): with working_dir(join_path("PiP-gdb", "PiP-gdb")):
# build.sh does build and install # build.sh does build and install
@ -209,4 +219,10 @@ def install(self, spec, prefix):
# testing PiP-gdb # testing PiP-gdb
bash("test.sh", parallel=False) bash("test.sh", parallel=False)
# all done !! # testing PiP by using PiP-Testsuite (another repo), no need install
with working_dir(join_path("PiP-Testsuite", "PiP-Testsuite")):
bash("configure", "--with-pip=%s" % prefix)
# make test programs
make()
# and run the test programs
make("test10", parallel=False)