ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Ivan Zakharyaschev <imz@altlinux.org>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] re-writing GNU C; part1.4: .i bug fixed
Date: Tue, 9 Feb 2016 21:29:40 +0300 (MSK)
Message-ID: <alpine.LFD.2.20.1602092128270.31797@imap.altlinux.org> (raw)
In-Reply-To: <alpine.LFD.2.20.1601112119330.4319@ovicaa.localdomain>

[-- Attachment #1: Type: text/plain, Size: 5281 bytes --]

Пока подготавливал всё для описанной системы (использования 
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

  parent reply	other threads:[~2016-02-09 18:29 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-11  8:48 [devel] re-writing GNU C extensions (part0) Ivan Zakharyaschev
2016-01-11 18:21 ` [devel] re-writing GNU C extensions (part1) Ivan Zakharyaschev
2016-01-12 20:28   ` imz
2016-01-20 10:28     ` imz
2016-01-27 17:59   ` [devel] re-writing GNU C; part1.3.1: how to apply Ivan Zakharyaschev
2016-01-27 18:04     ` [devel] re-writing GNU C; part1.3.2: how to apply (WIP) Ivan Zakharyaschev
2016-02-09 18:29   ` Ivan Zakharyaschev [this message]
2016-02-10 10:30     ` [devel] re-writing GNU C; part1.4: .i bug fixed Ivan Zakharyaschev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.20.1602092128270.31797@imap.altlinux.org \
    --to=imz@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git