Прекратить сборку стека из внутренних библиотек, от которых не зависят exe-файлы? - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь использовать stack install для сборки и установки некоторых исполняемых файлов. Мой пакет также имеет внутреннюю библиотеку, от которой зависят набор тестов и тесты, но ни один из исполняемых файлов не делает. Но когда я делаю stack install, он пытается собрать внутреннюю библиотеку. Я не смог найти способ остановить это, пробуя различные комбинации целей и --skip. Возможно ли это?

Мой корневой package.yaml выложен как

name: my-lib

library:
  ...

internal-libraries:
  test-lib:
    ...
    dependencies:
      - my-lib

tests:
  test:
    ...
    dependencies:
      - test-lib
      ...

benchmarks:
  bench:
    ...
    dependencies:
      - test-lib
      ...

А package.yamls для исполняемых файлов просто

name: some-exe

executables:
  some-exe:
    ...
    dependencies:
      - my-lib
      ...

Ничего не перечисляет test-lib в его зависимостях. test-lib существует только для того, чтобы тест мог использовать некоторые утилиты, определенные в наборе тестов;до недавнего времени это была просто часть набора тестов, а не отдельная библиотека, и stack install не пытался его собрать.

1 Ответ

0 голосов
/ 24 октября 2019

Опция, которую я нашел, заключается в создании отдельного пакета только для внутренней библиотеки. Я создал каталог test-pkg и переместил все из строки internal-libraries в файл package.yaml. Я также создал символические ссылки на исходные каталоги для моего набора тестов и тестов производительности и разбирал другие важные вещи, найденные в корне моего исходного пакета.

Затем я могу сделать

stack install `stack ide targets 2>&1 | grep :exe:`

Для установкивсе двоичные файлы.

Мне это не очень нравится, но, похоже, оно работает.

...