Dmitry
Тогда та же ошибка.
Dmitry
src/Dmsr/Recognize/Faces/Faces.hs:31:1: error:
Could not find module ‘Foreign.Storable.Generic’
Perhaps you meant
Foreign.Storable.Record (from storable-record-0.0.3.1)
Foreign.Storable.Newtype (from storable-record-0.0.3.1)
Use -v to see a list of the files searched for.
|
31 | import Foreign.Storable.Generic
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dmitry
В stack.yaml:
extra-deps:
- generic-storable-0.1.0.0
Dmitry
Aleksei (astynax)
Dmitry
В cabal-файле у меня прописано имя проекта, Name: dmsr. Однако, когда я пытаюсь stack install hpack-convert, то stack берёт имя текущей директории.
Dmitry
Ага, с этого всё и началось. Теперь пытаюсь зависимости забороть.
Dmitry
А, ну вот если прописать name: dmsr в stack.yaml, то stack install hpack-convert всё-таки выполняется, но с Warning: stack.yaml: Unrecognized field in ProjectAndConfigMonoid: name
Dmitry
Странный этот ваш stack...
Alexander
они переизобрели парсинг кабал файлп
Aleksei (astynax)
нет никакого name в stack.yaml, ЕЯПП
Alexander
можешь попробовать обновиться до head
Alexander
а блин
Dmitry
Ну я сделал stack update, половина ошибок ушло...
Alexander
я криво ошибку читаю
Dmitry
@astynax Ну откуда оно имя берёт???
Aleksei (astynax)
из cabal-файла, конечно же
Aleksei (astynax)
stack не отменяет необходимости иметь cabal-файл
Dmitry
Оно там есть, но stack всё равно вместо этого берёт имя директории.
Aleksei (astynax)
куда "берёт"?
Dmitry
См. начало дискуссии. Я выполняю: stack install hpack-convert. Дальше:
Warning: Package name not specified, inferred "datamarket"
Multiple .cabal files found in directory /home/dima/datamarket.exp/: dmsr.cabal, datamarket.cabal
Aleksei (astynax)
ну так всё верно
Dmitry
dmsr.cabal -- это мой старый cabal-файл, datamarket.cabal -- это то, что он автогенерирует по package.yaml.
Aleksei (astynax)
стэк сошёл с ума от нескольких кабалофайлов в одной папке
Aleksei (astynax)
могу его понять
Dmitry
Ага. Только один из них он сам сделал.
Alexander
стек файл в этом же каталоге7
Aleksei (astynax)
packages
- .
точно указан в стэкфайле?
Alexander
там есть packages: . ?
Alexander
его файл можно удалить
Dmitry
Да, stack.yaml и старый dmsr.cabal в одном месте. В stack.yaml есть:
packages:
- .
Aleksei (astynax)
оставь один кабал файл - свой. пекеджямл удали
Dmitry
Хорошо, но как тогда дополнительную зависимость добавить?
Dmitry
```
Aleksei (astynax)
дополнительную относительно снапшота?
Aleksei (astynax)
в stack.yaml
Aleksei (astynax)
extra-deps
Dmitry
extra-deps:
- generic-storable-0.1.0.0Вот на такое никак не реагирует.
Aleksei (astynax)
в кабал-файле этот пакет используется?
Aleksei (astynax)
если нет, то стэк и не будет ничего делать
Leonid 🦇
Только вчера спорил на фриноде что Ямл хуже .cabal...
Leonid 🦇
Стандартный синтаксис, говорят
Dmitry
А, так эту зависимость в двух местах надо прописывать o_O
Dmitry
Ну в cabal-файле прописал, теперь ошибка другая, связанная с тем, что generic-storable старый
Dmitry
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for generic-storable-0.1.0.0:
base-4.10.1.0 from stack configuration does not match ==4.5.* (latest matching version is 4.5.1.0)
needed due to dmsr-0.1.0.0 -> generic-storable-0.1.0.0
Some potential ways to resolve this:
* Recommended action: try adding the following to your extra-deps in /home/dima/datamarket.exp/stack.yaml:
- base-4.5.1.0
* Set 'allow-newer: true' to ignore all version constraints and build anyway.
* You may also want to try using the 'stack solver' command.
Plan construction failed.
Denis
allow-newer: true в stack.yaml
Denis
в сообщении это предлагают даже
Dmitry
А ведь просто cabal'ом это всё как-то собиралось и даже не требовалось этот generic-storable.
Dmitry
Да, сейчас попробую.
Aleksei (astynax)
Пакет конфигурируется только кабал-файлом. Стекфайл описывает условия, в которых должна происходить сборка. По-умолчанию подразумевается, что пакету хватит снапшота. Иное - те же доп.пакеты - надо доуказывать в стэкфайле, ибо это "особые" условия сборки
Aleksei (astynax)
При этом версию в кабалфайле можно не указывать, если в стэкфайле указана
Aleksei (astynax)
А если собирать только стэком, то вообще версии пакетов можно не указывать.
Aleksei (astynax)
Но всё это применительно к приложению, про которое можно явно сказать "собирать стэком"
Aleksei (astynax)
В публикуемых либах надо указывать всё, т.к. не все будут собирать стэком
Dmitry
"снапшота" -- это lts?
Dmitry
Напр., lts-10.3
Dmitry
Да?
Aleksei (astynax)
да
Дмитрий
Dmitry
Спасибо за помощь, вроде частично собралось...
Dmitry
Если я всё-таки переведу проект на stack, надо будет из cabal-файла выпиливать все эти >= 0.1.2.3? Я просто stack'ом только сегодня занялся, до этого жил на cabal'ах, и что-то не до конца понимаю, какую задачу stack решает...
Aleksei (astynax)
Не то чтобы надо. Но можно
Aleksei (astynax)
stack решает (по мере возможность) за пользователя проблему совместимости пакетов
john
если б не совместимость пакетов - уже все давно бы писали все подряд на хаскеле
Aleksei (astynax)
Т.е. пакеты одного снапшота должны мирно билдиться в одном проекте
Alexander
..но это не точно
Aleksei (astynax)
Такие проблемы есть в любых языках, которые компилируют либы из исходников и при этом имеют типизацию
Aleksei (astynax)
В питонах нет такой проблемы (точнее есть, но в рантайме, и лишь иногда - при установке пакетов с прогоном тестов)
Dmitry
А можно использовать свежий lts-10.3, но при этом компилятор 8.0.2, а не 8.2.2 из lts? А то у меня тут ошибки, не хочу с ними пока заниматься.
Aleksei (astynax)
лтс прибит к версии компилятора, т.к. с этой версией тестировался
Dmitry
Ну ладно...
Aleksei (astynax)
По идее можно подхачить - с неизвестным результатом
Aleksei (astynax)
Возьми LTS постарее (с нужной версией компилера) и временно бампни (в extra-deps) те пакеты, которые тебе критичны в плане свежести
Dmitry
А, вариант. Спасибо!
Alexander
lts это удобно!
Alexander
dependency resolution ненужно
Mi Shа
Привет! Подскажите, в чем может быть проблема с vscode + hie? Бинарник hie из терминала доступен, hoogle generate + stack exec hoogle generate выполнил, расширение на vscode поставил. Но все равно не работает, и при наведении на функцию могу лишь на надпись Loading.. посмотреть
Cheese
попробуй запустить vscode из того же терминала
Cheese
возможно, ты изменяешь PATH в терминале, но не изменяешь при запуске vscode