ru:os2faq:os2prog:os2prog.061

[Q]: Configure-скрипты и как с ними бороться в OS/2

[A]: Andrew Belov (2:5020/181.2)

Методика работы с Configure-скриптами под OS/2 нигде полностью не описана, поэтому этот FAQ составлен исключительно по собственному опыту. Приветствуются любые исправления/дополнения.

Для запуска скриптов необходим почти полный комплект традиционных GNU'шных утилит, а именно:

  • EMX v 0.9d fix 3 (можно проапгрейдить до PGCC v 2.95)
  • GNU textutils v 2.0
  • GNU findutils v 4.1
  • GNU sh-utils v 1.12
  • GNU fileutils v 3.13
   Hе обязательно именно эти версии, но проверялось только с ними.
  • Korn shell v 5.27 (PERL_SH.*)
   Пропатченный (?) исходный релиз. Вместо него можно использовать BASH,
   но он слишком громоздкий, а версия BASH 1.12f известна тем, что редкий
   configure-скрипт, запущенный в ней, сможет проработать до конца
   (происходит утечка хендлов, после чего процессы перестают запускаться).
  • GREP
   GNU GREP или Borland GREP.
  • Autoconf v 2.12.5-971230.
   Можно взять версию 2.13, но она не знает директивы AC_DIVERT_HELP, в
   результате чего строки, содержащие AC_DIVERT_HELP(...), оказываются в
   configure-скрипте. От них можно избавиться простым поиском и удалением.
  • GNU make v 3.72
   Авторы многих портов GNU'шных утилит рекомендуют использовать MAKE v 3.72
   вместо существующей версии 3.76.

Для удобства рекомендуется также иметь следующее:

  • GNU diffutils v 2.7.1
  • GNU patch v 2.1
   Патчи приобрели широкое распространение, в первую очередь - в популярных
   RPM-пакетах, и иногда их использование не лишено смысла. Кроме того, не
   все разработчики GNU'шного софта с радостью принимают патчи для OS/2-EMX,
   поэтому скорее всего придется иметь дело с дистрибутивом софтины
   (например, списанном с линуксового CD) и патчем для OS/2.
  • GNU man v 1.00 с поддержкой gzip'а
  • GNU roff v 1.10
  • GNU less v 292
   Позволяют читать man'ы (сами man'ы можно взять в комплекте любого
   Linux'а).
  • PERL v 5.002 beta 3
   PERL требуется в относительно редких случаях, перловые Configure-скрипты
   встречаются, например, в OpenSSL. Далее в FAQ'е рассматриваются только
   стандартные скрипты, создаваемые Autoconf'ом.

Для настройки всей системы под EMX имеет смысл создать отдельный скрипт. В CONFIG.SYS при этом можно оставить настройки для “родных” компиляторов (VisualAge) и тулкита.

 === Cut ===
 @ECHO OFF
 REM
 REM EMX v 0.9d/PGCC v 2.95.3
 REM
 SET C_INCLUDE_PATH=e:/emx/include;e:/toolkit/h
 SET CPLUS_INCLUDE_PATH=e:/emx/include/cpp;%C_INCLUDE_PATH%
 SET OBJC_INCLUDE_PATH=%C_INCLUDE_PATH%
 SET LIBRARY_PATH=e:/emx/lib
 SET GCCLOAD=5
 SET EMXBOOK=emxdev.inf+emxlib.inf+emxgnu.inf
 SET CC=gcc.exe
 SET INFOPATH=f:/usr/info
 REM
 REM GNU Autoconf v 2.12.5
 REM
 SET PATH=%PATH%;E:\OS2APPS\autoconf
 SET AC_MACRODIR=e:/os2apps/autoconf
 SET INFOPATH=%INFOPATH%;e:/os2apps/autoconf
 SET AWK=c:/os2/os2tools/awk.exe
 REM
 REM Perl v 5.00x
 REM
 SET PERL5LIB=E:\OS2APPS\PERL\LIB
 SET PERL=e:/os2apps/perl/perl5x.exe
 === Cut ===

Сам процесс конфигурирования включает в себя следующие этапы:

1. Подключение патча:

 patch -p0<emxpatch.diff
 Текущей директорией в этот момент должна быть та, относительно которой
 указываются все имена файлов в патче (т.е. директория на одну ступень выше
 директории с исходниками). Можно подключать патчи и непосредственно из
 места расположения исходников, в таком случае нужен ключ -p1. Детальная
 информация приведена в man patch.

2. Генерация configure-скрипта:

 === Cut ===
 #! /bin/sh
 autoconf --auxfiles
 autoconf --clean
 autoconf
 === Cut ===

3. Подбор настроек (обычно описываются в файлах INSTALLATION, README, …),

 генерация MAKEFILE. Пример настроек для компиляции браузера Lynx v 2.8.3:
 === Cut ===
 #! /bin/sh
 sh -x \
    configure --prefix=/emx --disable-full-paths --enable-debug \
    --enable-color-style --with-screen=curses
 === Cut ===

4. Компиляция (в простейшем случае - make или make all).

Внимание: по состоянию на осень 2001 г., технология начинает изменяться.

1. Hовое поколение инструментария: GCC v 3.0, Autoconf v 2.50, Automake.

 Пока в довольно нестабильном состоянии, но то, что вышеописанные
 рекомендации к этому комплекту не всегда применимы, уже очевидно.
 Для GCC v 3.0 обязательно указывать переменную окружения:
 CFLAGS=-D__ST_MT_ERRNO__

2. Проверенные и пригодные к использованию комплекты утилит теперь лежат на

 сайте http://www.unixos2.org. Кто знаком со Slackware Linux, тот поймет,
 что к чему.

3. В рамках того же UnixOS/2 рождаются идеи конвертации готовых

 Configure-скриптов, или модификации EMX'ового инструментария с целью
 избавления от формата a.out. В итоге схема портирования может упроститься,
 но это будет нескоро.

Список рекомендуемой литературы:

- EDM/2 03/1996, “Running Unix GNU Configure Scripts” - http://www.arrakis.es/~worm/acemx.htm