Skip to content

[HyperQueue] [package list]

HyperQueue/0.17.0 (HyperQueue-0.17.0.eb)

Install with the EasyBuild-user module:

eb HyperQueue-0.17.0.eb -r
To access module help after installation and get reminded for which stacks and partitions the module is installed, use module spider HyperQueue/0.17.0.

EasyConfig:

# We suggest to install this build recipe in partition/common so that
# the same binaries are available for all LUMI partitions. This will make
# it a lot easier to start HyperQueue. This version was tested in the
# LUMI/23.09 environment.
#
# HyperQueue is written in Rust and build using the Rust cargo system.
# As there is no support in EasyBuild for building with cargo and as we
# want to avoid building a special-purpose EasyBlock for HyperQueue in this
# stage of development of the tool, we take another route: We use the CmdCp
# generic EasyBlock to execute the cargo build command in the build phase and
# then copy the executable manually in the install phase.
#
# Note that this build may not be reproducible: Cargo pulls in a lot of dependencies
# so those sources are not saved by EasyBuild, and if the sources disappear from the
# location where they are found or are modified, rebuilding will fail or produce a
# different result.
#
easyblock = 'CmdCp'

# These dependency version numbers are correct for the LUMI/21.08 software stack.
local_Rust_version  =      '1.75.0'   # https://www.rust-lang.org/
local_HyperQueue_version = '0.17.0'   # https://github.com/It4innovations/hyperqueue/releases

name =    'HyperQueue'
version = local_HyperQueue_version

homepage = 'https://it4innovations.github.io/hyperqueue/'

whatis = [
    'Description: HyperQueue (HQ) lets you build a computation plan consisting of a large amount of tasks and then execute it transparently over a system like SLURM/PBS'
]

description = """
HyperQueue lets you build a computation plan consisting of a large amount of
tasks and then execute it transparently over a system like SLURM/PBS. It
dynamically groups jobs into SLURM/PBS jobs and distributes them to fully
utilize allocated notes. You thus do not have to manually aggregate your
tasks into SLURM/PBS jobs.

Note that there is a breaking change in version 0.17.0: the automatically
detected resource "mem" (RAM size of a worker) is now in megabytes, e.e.,
`--resource mem=100` now asks for 100 MiB instead of 100 bytes.

Also see the "CHANGELOG.md" file in $EBROOTHYPERQUEUE/share/licenses/HyperQueue
after loading the module.
"""

docurls = [
    'Web-based manual at https://it4innovations.github.io/hyperqueue/'
]

toolchain = SYSTEM

# https://github.com/It4innovations/hyperqueue/archive/refs/tags/v0.4.0.tar.gz
sources = {
    'download_filename': 'v%(version)s.tar.gz',
    'filename':          SOURCELOWER_TAR_GZ,
    'source_urls':       ['https://github.com/It4innovations/hyperqueue/archive/refs/tags']
}
checksums = [
    {'hyperqueue-0.17.0.tar.gz': '61bd572f76800205e44bb955eb3b1b583f0ffdf1a3852f39665063c0330047f6'},
]

builddependencies = [
    ('Rust',       local_Rust_version),
]

local_module_conf = f'module unload cce gcc aocc amd PrgEnv-gnu PrgEnv-cray PrgEnv-aocc PrgEnv-amd craype perftools-base ; module list ; '

cmds_map = [
    ('.*', local_module_conf + 'mkdir -p %(builddir)s/cargo ; CARGO_HOME="%(builddir)s/cargo" RUSTFLAGS="-C target-cpu=znver2" cargo build --release')
]

files_to_copy = [
    (['target/release/hq'], 'bin'),
    (['LICENSE', 'CHANGELOG.md'], 'share/licenses/%(name)s'),
]

sanity_check_paths = {
    'files': ['bin/hq'],
    'dirs':  [],
}

sanity_check_commands = [
    "hq -V",
]

moduleclass = 'tools'

[HyperQueue] [package list]