Дублируйте файлы init.py при сборке пакетов debian с помощью py2deb - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь собрать пакеты debian из проекта, основанного на языке python2.Я использую py2deb для сборки пакетов Debian, который проверяет все дубликаты файлов в папке «builtDebianPackages».py2deb выдает сообщение об исключении, так как находит дубликаты файлов.

Я получаю следующее сообщение об исключении:

deb_pkg_tools.checks [21396] INFO Проверка наличия дубликатов файлов в 11 архивах пакетов.. py2deb.cli [21396] ОШИБКА Обнаружено необработанное исключение!

Трассировка (последний последний вызов):

File "/home/local/lib/python2.7/site-packages/py2deb / cli.py ", строка 200, в основных

архивах, отношения = converter.convert (аргументы)

Файл" /home/local/lib/python2.7/site-packages/py2deb/converter.py ", строка 763, в конвертируемых файлах

check_duplicate_files (generate_archives, cache = get_default_cache ())

File" /home/local/lib/python2.7/site-packages / deb_pkg_tools / check.py ", строка 166, в файлах check_duplicate_files

повышение DuplicateFilesFound (delimiter.join (резюме))

DuplicateFilesFound: Найдено 1 дубликат файла в 3 архивах пакетов!

Найден 1 конфликт между 3 пакетами:

  1. /home / builtDebianPackages / http.deb
  2. / home / builtDebianPackages / common.deb
  3. / home / builtDebianPackages / tcp.deb

Эти пакеты содержат 1 конфликт:

  1. / usr / lib / python2.7 / dist-packages / utilityProject / init .py

Подсказка: если содержимое пакета правильноеВы можете разрешить эти конфликты, пометив пакеты как конфликтующие.Вы делаете это, добавляя поля «Конфликты» и «Обеспечивает» и устанавливая для них общее значение.Это должно заставить замолчать это сообщение.

Мне нужно найти способ обойти эти дубликаты сообщений об ошибках по порядку для сборки пакета debian.Добавление полей 'Conflicts' и 'Provides' мне не помогает (возникают проблемы, когда я пытаюсь установить пакеты, созданные таким образом).

Структура каталогов следующая:

externallyDependentProjectA/
    ...
externallyDependentProjectB/
    ...
builtDebianPackages
    common.deb
    tcp.deb
    http.deb
    externallyDependentProjectA.deb
    externallyDependentProjectB.deb
utilityProject
    common
        setup.py
        utilityProject/
            common/
            __init__.py
    tcp
        setup.py
        utilityProject/
            tcp /
            __init__.py
    http
        setup.py
        utilityProject/
            http/
            __init__.py

Одно очевидное решение, которое приходит на ум, - это создавать общие пакеты, tcp и http debian отдельно, а затем создавать пакет utilityProject или любые пакеты externallyDependentProject.

Но существуют внутренние зависимости между модулями: http зависит от общего и tcpTCP зависит от общего.Из-за внутренних зависимостей я не могу собрать пакеты tcp или http отдельно.

Существует обходной путь: удаление дублирующихся файлов ( init .py) сразу после сборки пакетов debian (сборка общая.deb, удалить общие init .py, собрать tcp.deb, удалить tcp init .py и так далее ...)

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

Идеальным решением является то, что структура каталогов / файлов «utilityProject» должна быть изменена втаким образом, нет дубликатов init .py файлов.Многие модули зависят от utilityProject как внутренне (внутренние модули utilityProject), так и внешне (externallyDependentProjectA-B).Изменение структуры файлов / каталогов легко нарушит их, включая зависимости уровня.

Есть идеи для возможного идеального решения?Или это вообще возможно?:)

...