Skip to content

Rustpkg should infer crates to build #5680

Closed
@graydon

Description

@graydon

Sub-bug of #5677

Rustpkg currently always looks for a pkg.rs file, compiles and links it against librustpkg and runs it. This behaviour should only exist as an escape hatch for custom build logic. Most of the time, rustpkg should be able to infer what to build. The inference rules should be:

  • foo/lib.rs implies compiling lib.rs into a library with basename foo
  • foo/main.rs implies compiling main.rs into a binary called foo
  • foo/test.rs implies compiling test.rs into a test binary called foo-test
  • foo/bench.rs implies compiling test.rs into a benchmark binary called foo-bench
  • The presence of pkg.rs in the package root disables inference and does the "custom build logic" routine.
  • The "standard inferred build" routine is available as a library call within a pkg.rs script.

A sketch of the logic for inferring these things is here:

https://github.com/graydon/rust/blob/rustpkg/src/librustpkg/rustpkg.rc#L1143

It doesn't make any difference if these files are in the root of a package or in subdirs: the stem foo for a crate is taken from immediately-containing directory name in all cases.

Test and benchmark binaries should not leave their build dirs; they should be run in-place by the install process. Mains should be installed to bin and libraries to lib in the corresponding install dirs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-enhancementCategory: An issue proposing an enhancement or a PR with one.E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions