ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] I: Ruby packages 1.7.3-alt7 (IMPORTANT)
@ 2002-11-20 15:59 Alexander Bokovoy
  2002-12-17 14:17 ` [devel] Re: I: Ruby packages 1.7.3-alt7 (IMPORTANT) -- perl FHS Alexey Tourbin
  0 siblings, 1 reply; 3+ messages in thread
From: Alexander Bokovoy @ 2002-11-20 15:59 UTC (permalink / raw)
  To: devel, sisyphus, ruby

Greetings! 

В ALT Linux Sisyphus отправилась новая сборка пакетов Ruby. На сей раз с
существенными изменениями в инфраструктуре, о которых ниже.

Изменения:

1. Snapshot от 2002-11-18 с рядом серьезных исправлений (см. ChangeLog
   пакета ruby)

2. Структурные изменения путей поиска модулей теперь позволяют этой сборке
   Ruby считаться полностью соответствующей File Hierarchy Standard. Дело
   в том, что в обычном Ruby предполагается следующая структура каталогов
   для модулей:

   /usr/lib/ruby/{версия}/ -- зависящие от версии модули на Ruby
   /usr/lib/ruby/{версия}/{архитектура} -- бинарные модули для этой версии
   /usr/lib/ruby/site_ruby/{,версия} -- локальные модули (общие для
                                 всех версий и зависящие от конкретной версии)
   /usr/lib/ruby/site_ruby/{версия}/{архитектура} -- бинарные локальные
				 модули для этой версии

   Такая схема нарушает FHS в двух вещах:

   1. Все, независящее от архитектуры, должно быть расположено в
   /usr/share
   
   2. Специфические для конкретной машины компоненты должны находится в
   /usr/local.

   Кроме того, эта схема не позволяет четко разделить локальные добавления
   от поставляемых тем или иным производителем дистрибутива решений. В
   результате получается мешанина файлов, осложняющая обновление пакетов.
   
   Новая сборка Ruby (1.7.3-alt7) исправляет эти недостатки следующим
   образом:

   1. Все архитектурно-независимые компоненты Ruby размещаются теперь в
   /usr/share/ruby, все архитектурно-зависимые -- в /usr/lib/ruby

   2. Все локальные добавления будут производится в
   /usr/local/{lib,share}/ruby

   3. Все поставляемые в рамках дистрибутива модули будут размещаться в
   специфичных для производителя дистрибутива поддеревьях
   /usr/{lib,share}/ruby/vendor_ruby/, по аналогии с новым Perl 5.8

   4. Порядок поиска в обозначенных директориях таков:
     /usr/local/lib/ruby/{версия}/{архитектура}
     /usr/local/share/ruby/{,версия}
     /usr/lib/ruby/vendor_ruby/{архитектура}
     /usr/share/ruby/vendor_ruby/{,версия}
     /usr/lib/ruby/{версия}/{архитектура}
     /usr/share/ruby/{,версия}
   
   Теперь любые собираемые локально модули Ruby автоматически попадают в
   /usr/local, если они используют при сборке подсистему mkmf (100%
   модулей с RAA). Автоматически появляется новая feature: независящая от
   изменений пакетов в дистрибутиве локальная установка модулей с помощью 
   rpkg: модули не затрагивают системное дерево каталогов Ruby.

3. Для сборки модулей Ruby в RPM-пакеты теперь требуется установка пакета
   libruby-devel размером 32117 байт, в котором присутствуют специальные
   макросы RPM в /etc/rpm/macros.d/ruby, автоматически учитывающие
   возможность установки пакетов в дистрибутиво-зависимые каталоги
   (/usr/{lib,share}/ruby/vendor_ruby). Сделано это следующим образом:

   - изменен rbconfig.rb так, что он подменяет sitelibdir/sitearchdir на
     vendorlibdir/vendorarchdir соответственно при определении константы
     VENDOR_SPECIFIC в true _до_ require 'mkmf'/'rbconfig'

   - добавлен /usr/share/ruby/vendor_ruby/{версия}/vendor-specific.rb,
     содержащий установку этой константы в true

   Теперь, для того, чтобы модуль установился в дистрибутивно-зависимые
   каталоги достаточно запустить его конфигурацию с предзагруженным
   vendor-specific.rb:

   ruby -rvendor-specific extconf.rb
   
   	или
	
   ruby -rvendor-specific setup.rb setup/install (для setup.rb от Minero Aoki)

   Это автоматически делается макросами из /etc/rpm/macros.d/ruby

   Если Ваш код использует значения Config::CONFIG["sitearchdir"] или
   Config::CONFIG["sitelibdir"] для определения положения своих
   специфических данных (как сделано в пакете ri) и Вы желаете собрать
   Ваше приложение в RPM-пакет, то имеет смысл где-то в головной программе
   до require 'rbconfig' сделать require 'vendor-specific'.

   Также следует при сборке в RPM обратить внимание на пакет
   ruby-stdlibs-core, который содержит в себе каталоги в
   /usr/{lib,share}/ruby. Типичный модуль, не использующий функционал из
   стандартного набора библиотек Ruby, находящихся в пакете ruby-stdlibs,
   должен при установке требовать только ruby-stdlibs-core (и, возможно,
   libruby, если это модуль на C/C++, но эта зависимость вытянется
   автоматически).

   В частности, зависимость на ruby-stdlibs-core должна выглядеть так:
   
   Requires: ruby-stdlibs-core >= 1.7.3-alt7

   и для сборки:

   BuildRequires: libruby-devel >= 1.7.3-alt7

   для того, чтобы все этапы (сборка и установка) были согласованы между
   собой.

4. Произведен переход от ruby-gnome для версии 1.x GNOME к ruby-gnome2 для
   GNOME2. Пакеты работоспособны, насколько работоспособны эти модули в
   CVS проекта Ruby-Gnome2 и, по крайней мере, могут полностью заменить
   Ruby-Gnome (который из ALT Linux Sisyphus можно теперь полностью
   убрать).

5. Все зависящие от Ruby пакеты в ALT Linux Sisyphus пересобраны с учетом
   вышеописанных изменений, так что большая просьба ответственным за них
   мейнтейнерам обратить внимание на новые версии и синхронизироваться с
   ними. Существование старых пакетов в новой схеме невозможно, поэтому и
   потребовалась такая "глобальная" пересборка. Также, прошу обязательно 
   указывать в собираемых Вами пакетах правильные BuildRequires и 
   не допускать их отсутствия.

   
-- 
/ Alexander Bokovoy
---
It's not whether you win or lose, it's how you place the blame.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [devel] Re: I: Ruby packages 1.7.3-alt7 (IMPORTANT) -- perl FHS
  2002-11-20 15:59 [devel] I: Ruby packages 1.7.3-alt7 (IMPORTANT) Alexander Bokovoy
@ 2002-12-17 14:17 ` Alexey Tourbin
  2002-12-17 14:41   ` Alexander Bokovoy
  0 siblings, 1 reply; 3+ messages in thread
From: Alexey Tourbin @ 2002-12-17 14:17 UTC (permalink / raw)
  To: devel

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

On Wed, Nov 20, 2002 at 05:59:35PM +0200, Alexander Bokovoy wrote:
> 2. Структурные изменения путей поиска модулей теперь позволяют этой сборке
>    Ruby считаться полностью соответствующей File Hierarchy Standard. Дело
>    в том, что в обычном Ruby предполагается следующая структура каталогов
>    для модулей:
> 
>    /usr/lib/ruby/{версия}/ -- зависящие от версии модули на Ruby
>    /usr/lib/ruby/{версия}/{архитектура} -- бинарные модули для этой версии
>    /usr/lib/ruby/site_ruby/{,версия} -- локальные модули (общие для
>                                  всех версий и зависящие от конкретной версии)
>    /usr/lib/ruby/site_ruby/{версия}/{архитектура} -- бинарные локальные
> 				 модули для этой версии
> 
>    Такая схема нарушает FHS в двух вещах:
> 
>    1. Все, независящее от архитектуры, должно быть расположено в
>    /usr/share

Хочу отметить следующее: по части перла, например, "всё, независящее от
архитектуры" может трактоваться по-разному. Архитектурно-зависимые
перловые библиотеки состоят из нескольких частей:

1) plaintext *.pm файл, который вызывает DynaLoader;
1a) в этом файле находится документация в формате pod;
2) *.so библиотека, которую загружает DynaLoader.

При таком раскладе первый файл является полностью архитектурно
независимым, его можно с успехом шарить по сети и т.п. Однако принято,
чтобы оба они лежали в каталоге типа i386-linux.

>    2. Специфические для конкретной машины компоненты должны находится в
>    /usr/local.
> 
>    Кроме того, эта схема не позволяет четко разделить локальные добавления
>    от поставляемых тем или иным производителем дистрибутива решений. В
>    результате получается мешанина файлов, осложняющая обновление пакетов.
>    
>    Новая сборка Ruby (1.7.3-alt7) исправляет эти недостатки следующим
>    образом:
> 
>    1. Все архитектурно-независимые компоненты Ruby размещаются теперь в
>    /usr/share/ruby, все архитектурно-зависимые -- в /usr/lib/ruby
> 
>    2. Все локальные добавления будут производится в
>    /usr/local/{lib,share}/ruby
> 
>    3. Все поставляемые в рамках дистрибутива модули будут размещаться в
>    специфичных для производителя дистрибутива поддеревьях
>    /usr/{lib,share}/ruby/vendor_ruby/, по аналогии с новым Perl 5.8

Противоречит ли FHS использование поддеревьев типа vendor_ruby?

4.7.1

Applications may use a single subdirectory under /usr/lib.  If an
application uses a subdirectory, all architecture-dependent data
exclusively used by the application must be placed within that
subdirectory.


>    4. Порядок поиска в обозначенных директориях таков:
>      /usr/local/lib/ruby/{версия}/{архитектура}
>      /usr/local/share/ruby/{,версия}
>      /usr/lib/ruby/vendor_ruby/{архитектура}
>      /usr/share/ruby/vendor_ruby/{,версия}
>      /usr/lib/ruby/{версия}/{архитектура}
>      /usr/share/ruby/{,версия}
>    
>    Теперь любые собираемые локально модули Ruby автоматически попадают в
>    /usr/local, если они используют при сборке подсистему mkmf (100%
>    модулей с RAA). Автоматически появляется новая feature: независящая от
>    изменений пакетов в дистрибутиве локальная установка модулей с помощью 
>    rpkg: модули не затрагивают системное дерево каталогов Ruby.

-- 
WBR, Alexey Tourbin	"He is a sane man who can have tragedy 
BIOZAK Ltd., Russia	 in his heart and comedy in his head."
					--G.K.Chesterton

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] Re: I: Ruby packages 1.7.3-alt7 (IMPORTANT) -- perl FHS
  2002-12-17 14:17 ` [devel] Re: I: Ruby packages 1.7.3-alt7 (IMPORTANT) -- perl FHS Alexey Tourbin
@ 2002-12-17 14:41   ` Alexander Bokovoy
  0 siblings, 0 replies; 3+ messages in thread
From: Alexander Bokovoy @ 2002-12-17 14:41 UTC (permalink / raw)
  To: devel

On Tue, Dec 17, 2002 at 05:17:04PM +0300, Alexey Tourbin wrote:
> On Wed, Nov 20, 2002 at 05:59:35PM +0200, Alexander Bokovoy wrote:
> > 2. Структурные изменения путей поиска модулей теперь позволяют этой сборке
> >    Ruby считаться полностью соответствующей File Hierarchy Standard. Дело
> >    в том, что в обычном Ruby предполагается следующая структура каталогов
> >    для модулей:
> > 
> >    /usr/lib/ruby/{версия}/ -- зависящие от версии модули на Ruby
> >    /usr/lib/ruby/{версия}/{архитектура} -- бинарные модули для этой версии
> >    /usr/lib/ruby/site_ruby/{,версия} -- локальные модули (общие для
> >                                  всех версий и зависящие от конкретной версии)
> >    /usr/lib/ruby/site_ruby/{версия}/{архитектура} -- бинарные локальные
> > 				 модули для этой версии
> > 
> >    Такая схема нарушает FHS в двух вещах:
> > 
> >    1. Все, независящее от архитектуры, должно быть расположено в
> >    /usr/share
> 
> Хочу отметить следующее: по части перла, например, "всё, независящее от
> архитектуры" может трактоваться по-разному. Архитектурно-зависимые
> перловые библиотеки состоят из нескольких частей:
> 
> 1) plaintext *.pm файл, который вызывает DynaLoader;
> 1a) в этом файле находится документация в формате pod;
> 2) *.so библиотека, которую загружает DynaLoader.
> 
> При таком раскладе первый файл является полностью архитектурно
> независимым, его можно с успехом шарить по сети и т.п. Однако принято,
> чтобы оба они лежали в каталоге типа i386-linux.
В Ruby противоречия не возникает -- текстовые модули, которые грузят .so,
в своих require не пишут расширений динамических библиотек, поэтому они
действительно архитектурно-независимы. Те же, которые пишут, с полным
правом могут быть помещены в архитектурно-зависимые каталоги, если для них
так необходимо присутствие расширения .so/.dll (в 99% -- не нужно).

> 
> >    2. Специфические для конкретной машины компоненты должны находится в
> >    /usr/local.
> > 
> >    Кроме того, эта схема не позволяет четко разделить локальные добавления
> >    от поставляемых тем или иным производителем дистрибутива решений. В
> >    результате получается мешанина файлов, осложняющая обновление пакетов.
> >    
> >    Новая сборка Ruby (1.7.3-alt7) исправляет эти недостатки следующим
> >    образом:
> > 
> >    1. Все архитектурно-независимые компоненты Ruby размещаются теперь в
> >    /usr/share/ruby, все архитектурно-зависимые -- в /usr/lib/ruby
> > 
> >    2. Все локальные добавления будут производится в
> >    /usr/local/{lib,share}/ruby
> > 
> >    3. Все поставляемые в рамках дистрибутива модули будут размещаться в
> >    специфичных для производителя дистрибутива поддеревьях
> >    /usr/{lib,share}/ruby/vendor_ruby/, по аналогии с новым Perl 5.8
> 
> Противоречит ли FHS использование поддеревьев типа vendor_ruby?
> 
> 4.7.1
> 
> Applications may use a single subdirectory under /usr/lib.  If an
> application uses a subdirectory, all architecture-dependent data
> exclusively used by the application must be placed within that
> subdirectory.
Нет, не противоречит. Речь идет о single subdirectory в /usr/lib. Такой
каталог там есть -- /usr/lib/ruby. А вся структура внутри него уже не
касается FHS -- в нем структурирование специфичных для приложения
каталогов не оговорено, просто требуется, чтобы на верхнем уровне
(/usr/lib) он был одним.

-- 
/ Alexander Bokovoy
---
To generalize is to be an idiot.
		-- William Blake


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2002-12-17 14:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-20 15:59 [devel] I: Ruby packages 1.7.3-alt7 (IMPORTANT) Alexander Bokovoy
2002-12-17 14:17 ` [devel] Re: I: Ruby packages 1.7.3-alt7 (IMPORTANT) -- perl FHS Alexey Tourbin
2002-12-17 14:41   ` Alexander Bokovoy

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