Skip to content

Files are copied from .git #1837

@noamgot

Description

@noamgot

Starting from v0.42.1, I noticed rattler-build tries to copy files from the .git folder, even though according to the docs they are not supposed to be copied (https://rattler.build/latest/internals/#general-file-filtering)

Here's a minimal reproducible example (using a small pixi project):

pixi.toml

[workspace]
channels = ["conda-forge"]
name = "rattler-build-bugs"
platforms = ["linux-64"]
version = "1.2.3"

[environments]
build = { features = ["build"], no-default-feature = true }

[dependencies]
numpy = ">=2.3.2,<3"
pandas = ">=2.3.1,<3"
requests = ">=2.32.4,<3"


## Build Feature
[feature.build.dependencies]
rattler-build = "0.42.*"

[feature.build.tasks]
_build-mkdir = "mkdir -p ./__localbuild__/conda/"

[feature.build.tasks.build]
cmd = "rattler-build build --package-format tar-bz2 -r recipe.yml --output-dir ./__localbuild__/conda/ --no-test"
depends-on = ["_build-mkdir"]
description = "build the conda package"

The recipe.yaml that I used:

context: {}

package:
  name: rattler-build-bugs
  version: 1.2.3

source:
  path: .

build:
  script: python -m pip install --no-deps --ignore-installed -vv .
  noarch: python

requirements:
  host:
  - python =3.11
  - pip
  - hatch

  run:
  - numpy >=2.3.2,<3
  - pandas >=2.3.1,<3
  - requests >=2.32.4,<3

about:
  homepage: https://www.example.com
  summary: amazing summary

To reproduce you should:

  1. create a git repo with some commits
  2. run pixi run build -vv - you should see many messages of this form:
2025-08-19T15:32:28.703505Z DEBUG rattler_build::source::copy_dir: Failed to copy metadata for ".../rattler-build-bugs/__localbuild__/conda/bld/rattler-build_rattler-build-bugs_1755617547/work/.git/objects/60/1c93b4c6c02c051b8d4736934fa93f4dcac8b8" Os { code: 13, kind: PermissionDenied, message: "Permission denied" }
  1. downgrade rattler-build to 0.41.* and see that these logs are gone

p.s. - the build operation doesn't work for now on my machine (I'm trying to create an example for a different issue that I encountered), but it works just enough to make this point

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions