Автор Тема: Учимся собирать пакеты из исходников  (Прочитано 12219 раз)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
А разве uname -m может вернуть pentium4?
Это зависит от многих факторов - сейчас
setarch i586 uname -m
i686

Но были и другие временаю

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
$git clone gitery:/people/antohami/packages/$package_name.git

А если бы я удалил свой gear (эх надо было это сделать :-) )?

Пока найдешь как правильно забить команду (gitk в каких каталогах только не загонял ее ... не хочет пахать хоть убей, а вот git log сливает всю информацию, но увы там больше одной страницы листать не умею в терминале,  пошел искать как перелистывать... и тоже ищу как правильно gitk забивать  в терминал чтобы рассказывала не стеснялась...)

gitk, как и другие команды git нужно отдавать в корне git репозитория. Только не говорите, что вы не понимаете, где его корень... Подсказка: в корне git находится каталог .git всегда.

Оффлайн andrew_b

  • Участник
  • *
  • Сообщений: 553
gitk, как и другие команды git нужно отдавать в корне git репозитория.
Ничего подобного. Есть некоторые команды, которые действительно работают только в корне (bisect, например), но остальные работают на любой глубине.

ms1984

  • Гость
А если бы я удалил свой gear (эх надо было это сделать :-) )?
честное пионерское даже не задумывался об этом )))
gitk, как и другие команды git нужно отдавать в корне git репозитория. Только не говорите, что вы не понимаете, где его корень... Подсказка: в корне git находится каталог .git всегда.
это понял. завтра буду ваять так сказать.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
честное пионерское даже не задумывался об этом )))

Все пакеты в Альт собраны либо через gear либо srpm (пакет исходников). Но в любом случае создаётся gear-репозиторий по адресу:
https://www.altlinux.org/gears для пакетов, отправленных на сборку через gear
https://www.altlinux.org/srpms для пакетов из srpm

Если вы хотите попробовать собрать новую версию для какого-то пакета, который есть в Альте, то клонируете его gear-репозиторий как любой другой git-репозиторий:
git clone http://www.altlinux.org/gears/первая_буква_названия_пакета/название_пакета.git
либо
git clone http://www.altlinux.org/srpms/первая_буква_названия_пакета/название_пакета.git

ms1984

  • Гость
Все пакеты в Альт собраны либо через gear либо srpm (пакет исходников). Но в любом случае создаётся gear-репозиторий по адресу:
https://www.altlinux.org/gears для пакетов, отправленных на сборку через gear
https://www.altlinux.org/srpms для пакетов из srpm

Если вы хотите попробовать собрать новую версию для какого-то пакета, который есть в Альте, то клонируете его gear-репозиторий как любой другой git-репозиторий:
git clone http://www.altlinux.org/gears/первая_буква_названия_пакета/название_пакета.git
либо
git clone http://www.altlinux.org/srpms/первая_буква_названия_пакета/название_пакета.git

Этот пункт поставлю следующей задачей после поставленной в Ответ #80 : 14.07.2016 10:13:00 » дабы не путаться. понимаю, что в принципе это аналогия, но опять же хочется разобраться и докомпилировать первые три шага.  А потом уже попробовать другие вариации чтобы допонять.

ms1984

  • Гость
итого: дабы добить до конца начатое возвращаюсь к продолжению поста « Ответ #89 : 14.07.2016 20:03:02 » :

+++++++++++++
Шаг3.  Для приготовления команды на сборку надо поднять информацию по пакету, который клонировали, увидеть что ему надо и как его правильно готовить. gitk.  ковыряю
 ....

Спойлер
[abra@comp-core-i7-4700mq-070d27 ~]$ cd gear
[abra@comp-core-i7-4700mq-070d27 gear]$ ls
command_gear.txt  deadbeef  gcdemu  hasher-init.sh  hsh-buildreq.sh
[abra@comp-core-i7-4700mq-070d27 gear]$ gcdemu/
bash: gcdemu/: является директорией
[abra@comp-core-i7-4700mq-070d27 gear]$ cd gcdemu/
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ ls -a
.                enabled_ru_translation.patch  gcdemu.spec  ru.po
..               fix_desktop.patch             .gear        ru_RU.patch
autostart.patch  gcdemu                        .git
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ cd .git
[abra@comp-core-i7-4700mq-070d27 .git]$ gitk
bash: gitk: команда не найдена
[abra@comp-core-i7-4700mq-070d27 .git]$ cd ..
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ gitk
bash: gitk: команда не найдена
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ git k
git: 'k' is not a git command. See 'git --help'.

Did you mean one of these?
   am
   fsck
   gc
   mv
   rm
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ ls -a
.                enabled_ru_translation.patch  gcdemu.spec  ru.po
..               fix_desktop.patch             .gear        ru_RU.patch
autostart.patch  gcdemu                        .git
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ gitk
bash: gitk: команда не найдена
[abra@comp-core-i7-4700mq-070d27 gcdemu]$ cd .git
[abra@comp-core-i7-4700mq-070d27 .git]$ ls -a
.   branches  description  hooks  info  objects      refs
..  config    HEAD         index  logs  packed-refs
[abra@comp-core-i7-4700mq-070d27 .git]$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect     Use binary search to find the commit that introduced a bug
   grep       Print lines matching a pattern
   log        Show commit logs
   show       Show various types of objects
   status     Show the working tree status

grow, mark and tweak your common history
   branch     List, create, or delete branches
   checkout   Switch branches or restore working tree files
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   merge      Join two or more development histories together
   rebase     Forward-port local commits to the updated upstream head
   tag        Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch      Download objects and refs from another repository
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
[abra@comp-core-i7-4700mq-070d27 .git]$ gitk
bash: gitk: команда не найдена
[abra@comp-core-i7-4700mq-070d27 .git]$
пусть будет так.поднять gitk  не вышло. попытаю пока без него.

                                 иду:  home/gear/gcdemu/.gear/rules =вижу:
tar.bz2: gcdemu  (говорит, что нужно исходники gcdemu сжать в архив tar.bz2 и оставить без изменений имя файла = gcdemu.tar.bz2)
copy?: *.patch (говорит что все файлы будут скопированы *.patch если они будут)
copy: ru.po (файл русификации)
 собственно данный пакет (gcdemu) из gitk (нужная команда!!!проясняет инфу пакета, назначения, и т.п.) это графический апплет в области уведомлений для управления службой CDEmu, так же там показаны фиксы (исправленные баги/дополнения)
... иду далее.. тааак.. до команды на сборку походу доползу не скоро.
юзаю gitk - обалденно = можно посмотреть все от исходного до добавленного - все подсвечивается. можно в режиме сравнения можно просто что было удобно. осталось понять логику от сборки до конечного фикса.
Для обратной связи из того что я уловил из gitk  пошагово:
  2015-09-21 06:54:12 - импорт пакета (архива ) версии 3.0.0 -
  2015-09-21 08:01:10 - сборка через .gear - добавлено описание /rules +tar.bz2: gcdemu
 //// потом добавлен автостарт патч, в рулес описание что будут складываться файлы в патч
 .... потом добавлены зависимости cdemu-client,
... потом добавлена новая версия с русификацией, исправлен фикс по отображению иконок каталогов (iconsdir)
.... потом доавлена русифицированная документация к гиту, исправлены файлы (desktop file)
 ---- и соответственно можно посмотреть каждые изменения по отношению к прошлой версии...
  т.е. заключу - что информацию почитать/поднять по пакету способен.
« Последнее редактирование: 16.07.2016 13:51:23 от ms1984 »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
аpt-get install gitk
Андрей Черепанов (cas@)

ms1984

  • Гость
аpt-get install gitk

спасибо. через синаптик поставил gitk
 все увидел.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
спасибо. через синаптик поставил gitk
 все увидел.

Всё понятно?

ms1984

  • Гость
Всё понятно?
по поводу всего понятно сказать со 100%ой уверенностью не могу, но уяснил что за пакет, для чего нужен. читаю смотрю.
« Последнее редактирование: 16.07.2016 12:38:02 от ms1984 »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
по поводу всего понятно сказать со 100%ой уверенностью не могу, но уяснил что за пакет, для чего нужен. читаю смотрю.

У вас задача, понять какие действия нужно сделать, чтоб собрать пакет. Итак, какие?

ms1984

  • Гость
У вас задача, понять какие действия нужно сделать, чтоб собрать пакет. Итак, какие?
  в гит вникал.

то что однозначно могу сказать что уяснил алгорим. пишу:
 1. клонируем репозиторий (gear) энного пакета.
 2. узнаем информацию об этом пакете, а именно какие требования могут для него быть при сборке из файла rules (т.е. надо уметь его читать)
 3. исходя из рулес создать команду на сборку.

т.е. предварительно собирается информация о пакете и требованиях к его сборке.

 Это так себе закомментировал в голове.
Вот. Верно?

P.S. команду на сборку пока так и не сварил. Есть шаблон из шпоры...
« Последнее редактирование: 16.07.2016 14:04:52 от ms1984 »

ms1984

  • Гость
Так же у меня пока не укладывается - в рулесах прописано что надо в архив делать (в прошлом разе в рулесах был tar в этом tar.bz.2), но в команде на сборку я нигде не видел указания создавать архив, т.е. он /архив создается в соответсвии с каким - то конфигом -если так то прописывать в команде это не надо.

Пойду кофе сделаю. Сбежал от всех в город тишина, хороший инет, спокойствие...
« Последнее редактирование: 16.07.2016 14:05:50 от ms1984 »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
2. узнаем информацию об этом пакете, а именно какие требования могут для него быть при сборке из файла rules (т.е. надо уметь его читать)
 3. исходя из рулес создать команду на сборку.

Неправильно мыслите. В Гите видна последовательность действий майнтейнера:
1. Инициализирую git-репозиторий:
git initЭто действие не видно, но оно само собой разумеющееся.
2. Импортирую архив исходного кода при помощи gear-import:
gear-import -C --ignore-exclude gcdemu-3.0.0.tar.bz2 gcdemuгде -С означает что целевой каталог, в который нужно распаковать архив исходного кода, нужно создать.
--ignore-exclude игнорировать файл .gitignore в архиве исходного кода. Необязательная опция, но я один раз наступил на грабли, теперь применяю всё время.
gcdemu-3.0.0.tar.bz2 архив исходного кода
gcdemu целевой каталог

3. Пишу файл .gear/rules, добавляю его в репозиторий:
git add .gear/rulesДелаю коммит:
git commit
4. Пишу спек gcdemu.spec, добавляю его в репозиторий:
git add .gcdemu.specДелаю коммит при помощи gear-commit:
gear-commitОсобенности команды в том, что в описание коммита добавляется автоматом последняя запись в changelog спека.

5. Собираю

Вот действия для того, чтобы собрать пакет. Далее идёт обновление версий.