Waf distcheck не работает, когда существуют варианты сборки и / или отсутствуют шаги установки / удаления - PullRequest
0 голосов
/ 25 февраля 2019

Рассмотрим следующие wscript:

  • удаленные install или uninstall команды
  • no build команда, но build_debug и build_release команды какмы используем вариант сборки.
import waflib
from waflib.Build import BuildContext, CleanContext, InstallContext, UninstallContext

APPNAME = 'TestApp'
VERSION = '1.0.0'

for x in 'debug release'.split():
    for y in (BuildContext, CleanContext):
        name = y.__name__.replace('Context','').lower()
        class tmp(y):
            cmd = name + '_' + x
            variant = x

def options(opt):
    mctx = waflib.Context.classes
    mctx.remove(waflib.Build.InstallContext)
    mctx.remove(waflib.Build.UninstallContext)

def configure(conf):
    conf.setenv('debug')
    conf.setenv('release')

def build(bld):
    if not bld.variant:
        bld.fatal('call "waf build_debug" or "waf build_release", and try "waf --help"')

Невозможно запустить distcheck на этом wscript:

D:\dev\distcheck>python waf configure distcheck
Setting top to                           : D:\dev\distcheck
Setting out to                           : D:\dev\distcheck\build
'configure' finished successfully (0.007s)
New archive created: TestApp-1.0.0.tar.bz2 (sha256='290babcef54fd88ab30b46662f62fe680dc1280ae26a931f2cda3b87382cafe2')
Setting top to                           : D:\dev\distcheck\TestApp-1.0.0
Setting out to                           : D:\dev\distcheck\TestApp-1.0.0\build
'configure' finished successfully (0.062s)
Waf: Entering directory `D:\dev\distcheck\TestApp-1.0.0\build'
call "waf build_debug" or "waf build_release", and try "waf --help"
distcheck failed with code 1

Я пытался настроить distcheck-args но это не помогает:

D:\dev\distcheck>python waf configure --distcheck-args=configure,build_debug,build_debug
Setting top to                           : D:\dev\distcheck
Setting out to                           : D:\dev\distcheck\build
'configure' finished successfully (0.064s)

D:\dev\distcheck>python waf distcheck
New archive created: TestApp-1.0.0.tar.bz2 (sha256='4bf28bc95577749b25dc1cc911f4545b8c06c9fb8bac0c9ba53134bf620d0162')
Setting top to                           : D:\dev\distcheck\TestApp-1.0.0
Setting out to                           : D:\dev\distcheck\TestApp-1.0.0\build
'configure' finished successfully (0.017s)
Waf: Entering directory `D:\dev\distcheck\TestApp-1.0.0\build'
call "waf build_debug" or "waf build_release", and try "waf --help"
distcheck failed with code 1

Это оставляет мне два вопроса:

  • Как правильно перезаписываются аргументы distcheck, генерируемые Scripting.DistCheck.make_distcheck_cmd?
  • Как проверка, генерируемая Scripting.DistCheck.check вывода команды, корректно перезаписывается?Директории установки не существует, так как нет команды установки.

Мое временное решение, позволяющее обезьяне исправлять функции Scripting.DistCheck.make_distcheck_cmd и Scripting.DistCheck.check, не очень удобно.

1 Ответ

0 голосов
/ 04 марта 2019

Ну, я думаю, вам нужно создать distcheck_debug и distcheck_release с правильным набором вариантов, как вы делаете для контекста Build and Clean.Или команда distcheck только для варианта выпуска.

...