Skip to content

[question] Package and layout environments in editable mode #19278

@gmvl

Description

@gmvl

What is your question?

Hello!

Could you explain how to work with environment variables in editable mode?

I have two conan recipes: dep and pkg:

from conan import ConanFile
class Dep(ConanFile):
    name = "dep"
    version = "1.0"

    def layout(self):
        self.folders.root = "."
        self.folders.build = "mybuild"
        self.layouts.build.buildenv_info.define_path("PACKAGE_PATH", "build_env")
        self.layouts.build.runenv_info.define_path("PACKAGE_PATH", "run_env")
        
    def package_info(self):
        self.buildenv_info.define("PACKAGE_PATH", str(self.package_folder))
        self.runenv_info.define("PACKAGE_PATH", str(self.package_folder))
from conan import ConanFile
class Pkg(ConanFile):
    name = "pkg"
    version = "1.0"

    def requirements(self):
        self.tool_requires("dep/1.0")

I try to add set dep package in editable mode and use it inside pkg:

conan editable add dep  --name=dep --version=1.0
conan install pkg

I expect that the pkg/conanbuildenv.sh script contains the PACKAGE_PATH envronment variable with path to <dep_root>/mybuild/build_env directory, however, it contains PACKAGE_PATH with path to <dep_root>:

script_folder="/home/user/pkg"
echo "echo Restoring environment" > "$script_folder/deactivate_conanbuildenv.sh"
for v in PACKAGE_PATH
do
    is_defined="true"
    value=$(printenv $v) || is_defined="" || true
    if [ -n "$value" ] || [ -n "$is_defined" ]
    then
        echo export "$v='$value'" >> "$script_folder/deactivate_conanbuildenv.sh"
    else
        echo unset $v >> "$script_folder/deactivate_conanbuildenv.sh"
    fi
done


export PACKAGE_PATH="/home/user/dep"

The PACKAGE_PATH is set correctly in editable mode if I remove it from package_info method.

What am I doing wrong? How to set PACKAGE_PATH variable to mybuild/build_env in editable mode?

Have you read the CONTRIBUTING guide?

  • I've read the CONTRIBUTING guide

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions