[devel] re-writing GNU C; part1.4: .i bug fixed
Ivan Zakharyaschev
imz на altlinux.org
Вт Фев 9 21:29:40 MSK 2016
Пока подготавливал всё для описанной системы (использования
cuglify/Process на
"инородной" платформе), был поправлен упомянутый minor bug:
> Итак, "второй вариант" я осуществил на практике. (С поправкой на то,
> что Process не понимал расширения .i входного файла.)
Текущее состояние в <http://hub.darcs.net/imz/language-c_WIP>.
И я избавился от нескольких вариантов программы, теперь режим работы
можно задать через $cuglify (вот одной из этих 4 строк ниже) в отличие
от того, что я описывал в инструкциях в первом сообщении. По умолчанию
режим -- Uglify, т.е. тот, который задуман как полезный.
> patch 1d40ac438dfa206c7a23e647b1eeb3eb910bc055
> Author: Ivan Zakharyaschev <imz на altlinux.org>
> Date: Tue Feb 9 16:05:53 MSK 2016
> * examples/Process: now cuglify environment variable controls the
debug mode:
>
>
> data DebugMode = SilentlyAnalyse
> | PrintAST
> | Uglify
> | Generate
>
> No need to maintain several variants of the binary.
Обновлённые инструкции по воспроизведению:
==========================================
(Последний раздел. Дальше можно не читать. Кстати, готовые варианты
исполняемого файла examples/Process кто-то может взять, чтобы не
воспроизводить, в vb2:/home/imz/public/cuglify-WIP/language-c_WIP/ .)
Инструменты и зависимости:
--------------------------
(Напоминание для случая, когда они не установлены)
> Побольше всего, чтобы поменьше пересобирать cabal-ом:
>
> # apt-get install ghc7.6.1-cabal-install ghc7.6.1 ghc7.6.1-darcs
ghc7.6.1-language-c ghc7.6.1-happy ghc7.6.1-alex ghc7.6.1-haskell-src
ghc7.6.1-mtl
>
> Устанавливаем новую версию cabal-install с поддержкой sandboxes:
> (TODO: упаковать в Sisyphus. См. также <http://altlinux.org/Haskell>)
>
> $ cabal update
> $ cabal install cabal-install
> $ ln -s ~/.cabal/bin/cabal ~/bin -v
> «/home/imz/bin/cabal» -> «/home/imz/.cabal/bin/cabal»
> $
>
> После этого нужно, чтобы shell не вызывал старый cabal (можно
> по-простому заново зайти).
Скачиваем код с хаками
----------------------
$ mkdir cuglify-WIP
$ cd cuglify-WIP
$ darcs clone http://hub.darcs.net/imz/language-c_WIP
$ git clone https://github.com/imz/directory
Собираем библиотеку
-------------------
Удалим старый sandbox (если остался):
$ rm -rf /storage/imz/CABAL-SANDBOX-cuglify
Зависимости с хаками:
$ pushd directory/
$ cabal sandbox --sandbox=/storage/imz/CABAL-SANDBOX-cuglify init
Понял, что надо предварительно поставить свежий filepath (чтобы избежать
несовместимых
требований библиотек directory и language-c в дальнейшем):
$ cabal install filepath
Возвращаемся к сборке библиотеки directory:
$ autoreconf -i
$ cabal install
$ popd
Наконец, наша библиотека:
$ pushd language-c_WIP/
$ cabal sandbox --sandbox=/storage/imz/CABAL-SANDBOX-cuglify init
$ cabal install
$ popd
Компилируем examples/Process
----------------------------
$ pushd language-c_WIP/
$ cabal exec -- make -C examples Process
$ popd
Тестируем разные варианты
-------------------------
$ darcs clone http://hub.darcs.net/imz/cuglify
--set-scripts-executable
$ pushd cuglify
[imz на vb2 cuglify]$ cuglify=PrintAST ./run-tests.sh
../language-c_WIP/examples/Process 2> /dev/null
TEST OK on *.i
TEST OK on ex-nested.c
TEST OK on ex-nested-in-block.c
TEST OK on ex-nested-pure.c
TEST OK on ex-nested_typemismatch.c
TEST OK on ex-nested_undef.c
TEST OK on ex-nested-with-id-collisions.c
TEST OK on ex-unnested-with-unbound-after-nested.c
TEST OK on ex-unnested-with-unbound.c
[imz на vb2 cuglify]$ ./run-tests.sh ../language-c_WIP/examples/Process
2> /dev/null
TEST OK on *.i
TEST OK on ex-nested.c
TEST OK on ex-nested-in-block.c
TEST OK on ex-nested-pure.c
TEST OK on ex-nested_typemismatch.c
TEST OK on ex-nested_undef.c
TEST OK on ex-nested-with-id-collisions.c
TEST OK on ex-unnested-with-unbound-after-nested.c
TEST OK on ex-unnested-with-unbound.c
[imz на vb2 cuglify]$
(Это сообщение сохранено как
[ann1_4.md](http://hub.darcs.net/imz/cuglify/browse/ann1_4.md).)
--
Best regards,
Ivan
Подробная информация о списке рассылки Devel