Skip to content

[Bug]: mason build does not rebuild modified submodules #28100

@jmag722

Description

@jmag722

Summary of Problem

Running mason build will not rebuild a submodule without --force.

Description:
When using submodules in a Chapel library, if I make changes within a submodule and recompile using mason build, it will not update the build. Instead it will say:
Skipping Build... No changes to project
but was expecting:

Compiling [debug] target: Foo
Build Successful

I believe this is because the MasonUtils.chpl:projectModified procedure only iterates over source files defined in the top-level of src/, rather than recursively checking each subdirectory. Indeed when I'd change the top-level file, Mason would rebuild as expected.

Is this issue currently blocking your progress?
No, easy workaround with mason build --force

Steps to Reproduce

Source Code:

// module Foo in top-level src/Foo.chpl
module Foo {
  include module Bar;
  public import this.Bar;
}

// in src/Foo/Bar.chpl
module Bar {
  // run mason build toggling this procedure on and off (or making any other change)
  proc baz(in x: int) {
    return x + 2;
  }
  proc baz(in x: real) {
    return x * 2.0;
  }
}

Mason.toml

[brick]
name="Foo"
version="0.1.0"
type="library"
chplVersion="2.4.0"

[tool.chpl-language-server]
module-dir=["src"]

Compile command:
mason build
also tried things like:
mason build -- -M src/Foo/Bar.chpl

Execution command:
See compile command.

Associated Future Test(s):
N/A

Configuration Information

  • Output of chpl --version:
chpl version 2.7.0 pre-release (6f45b6fe6b)
  built with LLVM version 18.1.3
  available LLVM targets: xtensa, m68k, xcore, x86-64, x86, wasm64, wasm32, ve, systemz, sparcel, sparcv9, sparc, riscv64, riscv32, ppc64le, ppc64, ppc32le, ppc32, nvptx64, nvptx, msp430, mips64el, mips64, mipsel, mips, loongarch64, loongarch32, lanai, hexagon, bpfeb, bpfel, bpf, avr, thumbeb, thumb, armeb, arm, amdgcn, r600, aarch64_32, aarch64_be, aarch64, arm64_32, arm64
Copyright 2020-2025 Hewlett Packard Enterprise Development LP
Copyright 2004-2019 Cray Inc.
(See LICENSE file for more details)
  • Output of $CHPL_HOME/util/printchplenv --anonymize:
CHPL_TARGET_PLATFORM: linux64
CHPL_TARGET_COMPILER: llvm
CHPL_TARGET_ARCH: x86_64
CHPL_TARGET_CPU: native
CHPL_LOCALE_MODEL: flat
CHPL_COMM: none
CHPL_TASKS: qthreads
CHPL_LAUNCHER: none
CHPL_TIMERS: generic
CHPL_UNWIND: bundled
CHPL_TARGET_MEM: jemalloc
CHPL_ATOMICS: cstdlib
CHPL_GMP: bundled
CHPL_HWLOC: bundled
CHPL_RE2: bundled
CHPL_LLVM: system
CHPL_AUX_FILESYS: none
  • Back-end compiler and version, e.g. gcc --version or clang --version:
clang version 21.1.4
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/jared/opt/spack/opt/spack/linux-skylake/llvm-21.1.4-5yzvwku7jb2musecr2rsaos2p4b4aj5p/bin
Configuration file: /home/jared/opt/spack/opt/spack/linux-skylake/llvm-21.1.4-5yzvwku7jb2musecr2rsaos2p4b4aj5p/bin/clang.cfg

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions