Что такое ConanException: ошибка 32512 при выполнении команды установки conan?

Я пытаюсь выполнить исходную команду из информации о пакете, которую он создает, но при попытке установить ее я получаю следующую ошибку.

sh: 1: source: not found
ERROR: package_name/7.0@repo/stable: Error in package_info() method, line 23
    self.run("source "+self.package_folder+"/pkgsdp-env.sh")
    ConanException: Error 32512 while executing source /home/tusharecmc/.conan/data/pkg/7.0/repo/stable/package/4db1be536558d833e52e862fd84d64d75c2b3656/pkgsdp-env.sh

Мой conanfile.py выглядит следующим образом

from conans import ConanFile, tools


class pkgConan(ConanFile):
    name = "qnx"
    version = "7.0"
    settings = {"os":["Linux"],
                "arch":["x86_64"]
               }
    description = "Package for qnx os 7.0"
    url = "None"
    license = "None"
    author = "None"
    topics = ["pkg","os"]

    def package(self):
        self.copy("*")
        self.copy("pkgsdp-env.sh", src="./pkg700/")

    def package_info(self):
        self.cpp_info.libs = tools.collect_libs(self)
        self.env_info.path.append(self.package_folder+"/pkg700")
        self.run("source "+self.package_folder+"/pkgsdp-env.sh")

person tushar_ecmc    schedule 06.02.2019    source источник
comment
sh не является bash, поэтому у него может не быть источника. подробнее см. /а>   -  person Cristian Bidea    schedule 06.02.2019
comment
Хорошо, я получил решение по ссылке, которую вы упомянули   -  person tushar_ecmc    schedule 06.02.2019


Ответы (1)


Я давно создавал пакет Conan и впервые вижу, как кто-то пытается запустить исходный код в рецепте. Ваша команда не будет работать, так как ваша система использует /bin/dash, который не поддерживает команду source.

Я бы сказал, чтобы изменить разрешение и запустить его напрямую:

qnxsdpenv = os.path.join(self.package_folder, "qnxsdp-env.sh")
permission = stat.S_IMODE(os.lstat(qnxsdpenv).st_mode)
os.chmod(qnxsdpenv, (permission | stat.S_IEXEC))
self.run(qnxsdpenv)

Но если qnxsdp-env.sh устанавливает только несколько переменных env, я бы установил их с помощью self.env_info, намного чище и читабельнее.

person uilianries    schedule 06.02.2019
comment
Я запускаю virtualrunenv в качестве генератора. Я испробовал оба ваших подхода, попытка получить исходный код дает ту же ошибку, что и раньше, после внесения изменений в разрешения, поэтому я попытался установить self.env_info.VAR=Value, но в виртуальной среде эхо $VAR отображается пустым. - person tushar_ecmc; 07.02.2019
comment
Если вы установите переменную env_info, вам нужно будет использовать docs.conan .io/en/latest/reference/build_helpers/ в вашем целевом пакете. Действительно, env_info не будет напрямую изменять ваши переменные среды, иначе это может испортить вашу систему. - person uilianries; 07.02.2019