Сборка пакетов для разработки start: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «{{Category navigation|title=Начинающему разработчику|category=Начинающему разработчику|sortkey={{SUBPAGENAME}}}} Категория:Сборка пакетов»)
 
Нет описания правки
 
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
Иногда, в процессе разработки более крупных пакетов возникает потребность включать в проект повторяющийся исходный код или заголовки. Обычно, подобные пакеты есть в ALT Linux и они имеют суффикс {{cmd|-devel}}. Но, если вы начинаете какой-то другой проект и для него нет подобного пакета, то данная статья поможет его создать.
{{Note|Чтобы лучше понять данную статью, для начала ознакомьтесь с [[Сборка пакетов start|базовыми знаниями по сборке пакета]]}}
==Основы==
Обычно, содержимое подобных пакетов (которые включают заголовки {{cmd|*.h}}, статические библиотеки {{cmd|*.a}}, код C {{cmd|*.c}} и пр.) располагается в каталоге {{path|/usr/include}} и hasher при сборке подключает нужные файлы оттуда, если находит их. Нам нужно собрать пакет таким образом, чтобы библиотеки расположились в данном каталоге.
==Пример для статьи==
Для примера я распишу свой случай, который у меня возник при сборке TDE. Для одного модуля потребовалась библиотека, которой на текущий момент (24.02.2025) нет в репозитории ALT Linux.
===Создание===
Итак:
1. Идем в репозиторий с библиотеками
https://mirror.git.trinitydesktop.org/gitea/TDE/libltdl
2. Клонируем его
$ git clone https://mirror.git.trinitydesktop.org/gitea/TDE/libltdl.git
3. Создаем каталог для проекта
4. В папке создаем каталог для файлов проекта и копируем их туда (не забудьте удалить папку .git)
5. Получается так
<pre>
tde-libltdl
└── tde-libtdl <- Создали папку с файлами
    ├── CMakeLists.txt
    ├── COPYING
    ├── ltdl.c
    ├── ltdl.h
    ├── ltdl_win.c
    ├── ltdl_win.h
    └── README
</pre>
6. Пишем {{path|.gear/rules}}
Прописываем в него, что будем создавать tar-архив из нашего каталога tde-libtdl
tar: tde-libtdl
7. Получается так
<pre>
tde-libltdl
├── .gear
│   └── rules <- создали и расписали этот файл
└── tde-libtdl
    ├── CMakeLists.txt
    ├── COPYING
    ├── ltdl.c
    ├── ltdl.h
    ├── ltdl_win.c
    ├── ltdl_win.h
    └── README
</pre>
8. Пишем спек
<pre>
Name:    tde-libltdl-devel
Version: 14.1.3
Release: alt1
Summary: Libltdl devel library for TDE
License: LGPLv2.1
Group:  Other
Url:    https://mirror.git.trinitydesktop.org/gitea/TDE/libltdl
Source: tde-libtdl-%version.tar
%description
Libltdl devel library for TDE
%prep
%setup -n tde-libtdl-%version
%install
mkdir -p %buildroot%_includedir/libltdl
cp -av * %buildroot%_includedir/libltdl
%files
%_includedir/libltdl/
%changelog
* Mon Feb 24 2025 Petr Akhlamov <ahlamovpm@basealt.ru> 14.1.3-alt1
- Initial build
</pre>
В нем мы, получается, расписываем:
*Распаковку архива:
%setup -n tde-libtdl-%version
*Создание каталога для заголовков и исходников нашей библиотеки
{{path|%buildroot%_includedir/}}
путь {{path|/usr/include}} - каталог в файловой системе, откуда сборочница, обычно, берет .h-заголовки, .c-коды и пр.
*Копирование файлов заголовков и исходных кодов в определенный для компонента каталог
%install
mkdir -p %buildroot%_includedir/libltdl
cp -av * %buildroot%_includedir/libltdl
*Расписывание файлов пакета
%files
%_includedir/libltdl/
9. Получается так
<pre>
tde-libltdl
├── .gear
│   └── rules
├── tde-libltdl.spec <- создаем этот файл
└── tde-libtdl
    ├── CMakeLists.txt
    ├── COPYING
    ├── ltdl.c
    ├── ltdl.h
    ├── ltdl_win.c
    ├── ltdl_win.h
    └── README
</pre>
10. Собираем
В заглавном каталоге tde-libltdl создаем git-репозиторий:
$ git init .
Вносим изменения в Git:
$ git add .
$ git commit -am "Initial commit"
Запускаем сборку:
$ gear --hasher -- hsh --no-sisyphus-check -v
===Результат===
Все, в {{path|/home/$USER/hasher/repo/x86_64/RPMS.hasher}} будет новый пакет {{pkg|tde-libltdl-devel-14.1.3-alt1.x86_64.rpm}} который можно "подложить" к другому собираемому пакету, прописать в BuildRequires и продолжить сборку.
{{Category navigation|title=Начинающему разработчику|category=Начинающему разработчику|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Начинающему разработчику|category=Начинающему разработчику|sortkey={{SUBPAGENAME}}}}
[[Категория:Сборка пакетов]]
[[Категория:Сборка пакетов]]

Текущая версия от 15:45, 24 февраля 2025

Иногда, в процессе разработки более крупных пакетов возникает потребность включать в проект повторяющийся исходный код или заголовки. Обычно, подобные пакеты есть в ALT Linux и они имеют суффикс -devel. Но, если вы начинаете какой-то другой проект и для него нет подобного пакета, то данная статья поможет его создать.

Примечание: Чтобы лучше понять данную статью, для начала ознакомьтесь с базовыми знаниями по сборке пакета

Основы

Обычно, содержимое подобных пакетов (которые включают заголовки *.h, статические библиотеки *.a, код C *.c и пр.) располагается в каталоге /usr/include и hasher при сборке подключает нужные файлы оттуда, если находит их. Нам нужно собрать пакет таким образом, чтобы библиотеки расположились в данном каталоге.

Пример для статьи

Для примера я распишу свой случай, который у меня возник при сборке TDE. Для одного модуля потребовалась библиотека, которой на текущий момент (24.02.2025) нет в репозитории ALT Linux.

Создание

Итак:

1. Идем в репозиторий с библиотеками

https://mirror.git.trinitydesktop.org/gitea/TDE/libltdl

2. Клонируем его

$ git clone https://mirror.git.trinitydesktop.org/gitea/TDE/libltdl.git

3. Создаем каталог для проекта

4. В папке создаем каталог для файлов проекта и копируем их туда (не забудьте удалить папку .git)

5. Получается так

tde-libltdl
└── tde-libtdl <- Создали папку с файлами
    ├── CMakeLists.txt
    ├── COPYING
    ├── ltdl.c
    ├── ltdl.h
    ├── ltdl_win.c
    ├── ltdl_win.h
    └── README

6. Пишем .gear/rules

Прописываем в него, что будем создавать tar-архив из нашего каталога tde-libtdl

tar: tde-libtdl

7. Получается так

tde-libltdl
├── .gear
│   └── rules <- создали и расписали этот файл
└── tde-libtdl
    ├── CMakeLists.txt
    ├── COPYING
    ├── ltdl.c
    ├── ltdl.h
    ├── ltdl_win.c
    ├── ltdl_win.h
    └── README

8. Пишем спек

Name:    tde-libltdl-devel
Version: 14.1.3
Release: alt1

Summary: Libltdl devel library for TDE
License: LGPLv2.1
Group:   Other
Url:     https://mirror.git.trinitydesktop.org/gitea/TDE/libltdl

Source: tde-libtdl-%version.tar

%description
Libltdl devel library for TDE

%prep
%setup -n tde-libtdl-%version

%install
mkdir -p %buildroot%_includedir/libltdl
cp -av * %buildroot%_includedir/libltdl

%files
%_includedir/libltdl/

%changelog
* Mon Feb 24 2025 Petr Akhlamov <ahlamovpm@basealt.ru> 14.1.3-alt1
- Initial build

В нем мы, получается, расписываем:

  • Распаковку архива:
%setup -n tde-libtdl-%version
  • Создание каталога для заголовков и исходников нашей библиотеки
%buildroot%_includedir/

путь /usr/include - каталог в файловой системе, откуда сборочница, обычно, берет .h-заголовки, .c-коды и пр.

  • Копирование файлов заголовков и исходных кодов в определенный для компонента каталог
%install
mkdir -p %buildroot%_includedir/libltdl
cp -av * %buildroot%_includedir/libltdl
  • Расписывание файлов пакета
%files
%_includedir/libltdl/

9. Получается так

tde-libltdl
├── .gear
│   └── rules
├── tde-libltdl.spec <- создаем этот файл
└── tde-libtdl
    ├── CMakeLists.txt
    ├── COPYING
    ├── ltdl.c
    ├── ltdl.h
    ├── ltdl_win.c
    ├── ltdl_win.h
    └── README

10. Собираем

В заглавном каталоге tde-libltdl создаем git-репозиторий:

$ git init .

Вносим изменения в Git:

$ git add .
$ git commit -am "Initial commit"

Запускаем сборку:

$ gear --hasher -- hsh --no-sisyphus-check -v

Результат

Все, в /home/$USER/hasher/repo/x86_64/RPMS.hasher будет новый пакет tde-libltdl-devel-14.1.3-alt1.x86_64.rpm который можно "подложить" к другому собираемому пакету, прописать в BuildRequires и продолжить сборку.