Ошибка при создании рецепта conda из пакета Bitbucket

У меня есть пакет на Bitbucket, который содержит файлы кода на Python, R и bash. Я использую ноутбук под управлением Linux CentOS 7.

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

$ conda build behst_conda_recipe/

BUILD START: behst--0
pulling from https://bitbucket.org/PROJECT_ADDRESS
searching for changes
no changes found
checkout: 'tip'
updating to branch default
108 files updated, 0 files merged, 0 files removed, 0 files unresolved
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Package: behst--0
source tree in: /home/davide/miniconda3/conda-bld/behst_1495134385344/work
+ source /home/davide/miniconda3/bin/activate /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
+ set -o nounset -o pipefail -o errexit
+ set -o xtrace
+ echo 'Running build.sh'
Running build.sh
INFO conda_build.build:bundle_conda(861): Packaging behst--0
number of files: 0
Fixing permissions
Fixing permissions
Traceback (most recent call last):
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/utils.py", line 133, in _copy_with_shell_fallback
    stderr=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/home/davide/miniconda3/lib/python3.5/subprocess.py", line 581, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'cp -a /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt' returned non-zero exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/davide/miniconda3/bin/conda-build", line 6, in <module>
    sys.exit(conda_build.cli.main_build.main())
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/cli/main_build.py", line 334, in main
    execute(sys.argv[1:])
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/cli/main_build.py", line 325, in execute
    noverify=args.no_verify)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/api.py", line 97, in build
    need_source_download=need_source_download, config=config)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 1518, in build_tree
    config=config)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 1154, in build
    built_package = bundlers[output_dict.get('type', 'conda')](output_dict, m, config, env)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 893, in bundle_conda
    create_info_files(metadata, files, config=config, prefix=config.build_prefix)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 494, in create_info_files
    copy_license(m, config)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 272, in copy_license
    locking=config.locking)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/utils.py", line 177, in copy_into
    _copy_with_shell_fallback(src, dst_fn)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/utils.py", line 136, in _copy_with_shell_fallback
    raise OSError("Failed to copy {} to {}.  Error was: {}".format(src, dst, e))
OSError: Failed to copy /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE to /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt.  Error was: Command 'cp -a /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt' returned non-zero exit status 1
Exception ignored in: <bound method BaseFileLock.__del__ of <filelock.UnixFileLock object at 0x7f30df7349e8>>
Traceback (most recent call last):
  File "/home/davide/miniconda3/lib/python3.5/site-packages/filelock.py", line 305, in __del__
  File "/home/davide/miniconda3/lib/python3.5/site-packages/filelock.py", line 292, in release
  File "/home/davide/miniconda3/lib/python3.5/site-packages/filelock.py", line 371, in _release
AttributeError: 'NoneType' object has no attribute 'flock'

Кто-нибудь знает, что означают эти ошибки?

РЕДАКТИРОВАТЬ: Вот файл meta.yaml:

package:

  name: behst

source:

  hg_url: https://bitbucket.org/PROJECT_ADDRESS

about:

  home: https://bitbucket.org/PROJECT_ADDRESS
  license: BSD
  license_file: LICENSE

В то время как build.sh на данный момент является просто командой echo:

#!/bin/bash
#
#$ -cwd
#$ -S /bin/bash
#
set -o nounset -o pipefail -o errexit
set -o xtrace

echo "Running build.sh"

person DavideChicco.it    schedule 18.05.2017    source источник
comment
Вам необходимо прикрепить рецепт и скрипт build.sh.   -  person ilmarinen    schedule 18.05.2017
comment
Я бы запустил 'cp -a /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt' вручную и проверил вывод.   -  person grundic    schedule 18.05.2017
comment
@grundic Пробовал, система говорит file name too long   -  person DavideChicco.it    schedule 19.05.2017
comment
Вот и ответ. Вы знаете, откуда взялись все эти имена? Из файла conda?   -  person grundic    schedule 19.05.2017
comment
@grundic Понятия не имею ... это самое странное имя файла, которое я когда-либо видел в своей жизни ... его сгенерировал conda. Что я должен делать? Спасибо   -  person DavideChicco.it    schedule 19.05.2017
comment
@ilmarinen Приложил рецепт и скрипт build.sh   -  person DavideChicco.it    schedule 19.05.2017
comment
@ DavideChicco.it не могли бы вы также указать версию conda?   -  person grundic    schedule 19.05.2017
comment
Позвольте нам продолжить это обсуждение в чате.   -  person DavideChicco.it    schedule 19.05.2017


Ответы (2)


У вас зашифрован домашний каталог? Вот связанные issues на github. Решение состоит в том, чтобы использовать аргумент --croot, указывающий где-то за пределами вашего дома, например, / tmp / _conda_build_.

person grundic    schedule 18.05.2017
comment
Я попробовал conda build behst_conda_recipe/ --croot ../temp_conda_recipe и получил новую ошибку: source tree in: ../temp_conda_recipe/behst_1495144731757/work /bin/bash: ../temp_conda_recipe/behst_1495144731757/work/conda_build.sh: No such file or directory Вы знаете, как решить эту проблему? Благодарность - person DavideChicco.it; 19.05.2017

Кажется, ваш домашний каталог зашифрован. Длина символа при работе с зашифрованной папкой уменьшена с обычных 255 символов.

Следовательно, единственное решение, даже по мнению участников conda, - использовать --croot с незашифрованным местоположением, например / tmp / anyfolder

conda config --prepend pkgs_dirs /tmp/temp_conda_recipe 

а потом

conda build behst_conda_recipe/ --croot /tmp/temp_conda_recipe 
person Nikhil Fadnis    schedule 23.05.2017
comment
Спасибо, но это не сработало. Вот ошибка журнала: subprocess.CalledProcessError: Command 'cp -a /tmp/tmp/behst_1495547326227/work/LICENSE /tmp/tmp/behst_1495547326227/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/info/LICENSE.txt' returned non-zero exit status 1 - person DavideChicco.it; 23.05.2017
comment
не могли бы вы сообщить мне, разрешает ли conda вам это делать: conda config --prepend pkgs_dirs /path/to/custom/dir/pkgs - person Nikhil Fadnis; 23.05.2017
comment
Это хорошие новости. Если вы скопировали и вставили указанную выше команду, вам нужно будет создать каталоги в /path/to/custom/dir/pkgs и выполнить conda build behst_conda_recipe/ --croot /path/to/custom/dir/pkgs - person Nikhil Fadnis; 24.05.2017
comment
Я попробовал, но у меня та же ошибка: subprocess.CalledProcessError: Command 'cp -a /tmp/tmp/behst_1495634312259/work/LICENSE /tmp/tmp/behst_1495634312259/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/info/LICENSE.txt' returned non-zero exit status 1 - person DavideChicco.it; 24.05.2017
comment
Я вижу, вы не изменили путь. Я редактирую ответ. Сообщите мне, если он еще не запущен. - person Nikhil Fadnis; 24.05.2017
comment
Спасибо. Я попробовал еще раз, но это не сработало. subprocess.CalledProcessError: Command 'cp -a /tmp/tmp/behst_1495724704582/work/LICENSE /tmp/tmp/behst_1495724704582/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/info/LICENSE.txt' returned non-zero exit status 1 - person DavideChicco.it; 25.05.2017