Etercifs/devel: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
Строка 4: Строка 4:


== Репозиторий cifs-2.6 ==
== Репозиторий cifs-2.6 ==
=== Алгоритм добавления новых версий ядра Linux ([[Etercifs/devel/newkernels|версия на английском]]) ===




'''Назначение:''' из него собираются пакеты с исходниками etercifs для всех поддерживаемых ядер.
'''Назначение:''' из него собираются пакеты с исходниками etercifs для всех поддерживаемых ядер.


'''Адрес:''' [http://git.etersoft.ru/people/piastry/packages/cifs-2.6.git http://git.etersoft.ru/people/piastry/packages/cifs-2.6.git] (<div style="display: inline; color: red;">Осторожно, большой объем!</div>).
'''Адрес:''' http://git.etersoft.ru/people/piastry/packages/cifs-2.6.git (<div style="display: inline; color: red;">Осторожно, большой объем!</div>).




'''Ветки и их назначение:'''
# Скачиваем изменения из основной ветки ядра (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git) в git репозитории cifs-2.6.
 
# Обновляем ветки etersoft-* путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки etersoft-*.
* <tt>master</tt> - обновляется из git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git и содержит исходные версии ядер 2.6.xx (но не 2.6.xx.y) и 3.x.
# Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток etersoft-*.
* <tt>v2.6.xx-etercifs</tt> (например v2.6.32-etercifs) - содержит исходники с нашими патчами.
# Дальнейшие действия производим в репозитории etercifs
 
 
'''Текущие бранчи:'''
 
Актуальные ветки, для поддерживаемых ядер:
 
* <tt>legacy-etercifs</tt>
* <tt>legacy-centos52-etercifs</tt>
* <tt>...</tt>
* <tt>legacy-centos56-etercifs</tt>
* <tt>legacy-centos60-etercifs</tt>
* <tt>v2.6.16-etercifs</tt> (legacy для SUSE)
* <tt>v2.6.23-etercifs</tt>
* <tt>...</tt>
* <tt>v2.6.39-etercifs</tt>
* <tt>v3.0-etercifs</tt>
* <tt>...</tt>
* <tt>v3.19-etercifs</tt>


Актуальные ветки с нашими патчами:
Актуальные ветки с нашими патчами:
Строка 40: Строка 24:
* <tt>etersoft-wine</tt>
* <tt>etersoft-wine</tt>


Ветки vx.x.xx-etercifs регулярно обновляются из стабильных веток ядра вида stable/linux-x.x.y (если, конечно, изменения затрагивали содержимое папки fs/cifs).
TODO: ещё какие-то? или все etersoft-* ?




Строка 48: Строка 32:




'''Адрес:''' http://git.etersoft.ru/people/piastry/packages/etercifs.git
'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs


Рабочая ветка одна - master.
Рабочая ветка одна - master.
Строка 57: Строка 41:
* Папка <tt>sources/legacy</tt> содержит исходники модуля для старых ядер. Для каждой версии ядра с 18 по 22 создается симлинк вида kernel-source-etercifs-2.6.18-1.50c.tar.bz2, который указывает на legacy-исходники.
* Папка <tt>sources/legacy</tt> содержит исходники модуля для старых ядер. Для каждой версии ядра с 18 по 22 создается симлинк вида kernel-source-etercifs-2.6.18-1.50c.tar.bz2, который указывает на legacy-исходники.
* Папки <tt>sources/centosxx</tt> содержит исходники модуля для CentOS x.x ядер.
* Папки <tt>sources/centosxx</tt> содержит исходники модуля для CentOS x.x ядер.
* Папки <tt>sources/x.x.xx</tt> содержит исходники модуля для новых ядер.
* Папки <tt>sources/x.x</tt> содержит исходники модуля для новых ядер.


Папка <tt>etercifs</tt> содержит скрипты, которые попадают в пакет etercifs:
Папка <tt>etercifs</tt> содержит скрипты, которые попадают в пакет etercifs:
* etercifs и etercifs.outformat - заготовки для rc-скриптов.
* etercifs и etercifs.outformat - заготовки для rc-скриптов.
* buildmodule.sh - скрипт для сборки.
* buildmodule.sh - скрипт для сборки.
Строка 66: Строка 49:
* etermount - скрипт для удобного монтирования шары.
* etermount - скрипт для удобного монтирования шары.


=== Алгоритм обновления пакета etercifs ===
(выполняется после обновления репозитория cifs-2.6)
# Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория cifs-2.6 (ветки вида vX.x-etercifs).
# Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись)
# Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.
=== Алгоритм сборки пакета etercifs ===
Требуются репозитории etersoft-build-utils и korinf.
# Меняем версию в etercifs.spec, генерируем changelog и делаем gear-commit (то есть $ rpmlog -v -l)
# Публикуем src.rpm в Korinf: $ rpmpub -r [версия, например "5.4.11"]
# Собираем для всех систем: [путь до korinf]/bin-cifs/etercifs.sh all [версия, например "5.4.11"].


== Алгоритм сборки модуля etercifs (кратко) ==
=== Алгоритм сборки модуля etercifs (кратко) ===


(реализован в скрипте buildmodule.sh)
(реализован в скрипте buildmodule.sh и выполняется по команде serv etercifs build при установленном пакете)


# Определяем, какая версия ядра.
# Определяем, какая версия ядра.
Строка 77: Строка 76:
# Собираем модуль ядра.
# Собираем модуль ядра.


== Алгоритм добавления новых версий ядра Linux ([[Etercifs/devel/newkernels|версия на английском]]) ==
# Скачиваем изменения из основной ветки ядра (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git) в git репозитории cifs-2.6.
# Обновляем ветки etersoft-* путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки etersoft-*.
# Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток etersoft-*.
# Создаем новую папку source/X.x/ в git репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра.
# Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.
# Добавляем информацию о новом ядре в etercifs.spec по аналогии с существующими записями.
== Алгоритм сборки пакета etercifs ==
Требуются репозитории etersoft-build-utils и korinf.
# Добавляем исходники для новых ядер (как сказано выше).
# Проверяем наличие обновлений модуля в стабильных ветках (уже добавленных в etercifs), сливаем их с нашими ветками вида vX.x-etercifs в репозитории cifs-2.6 и заменяем в репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми.
# Меняем версию в etercifs.spec, генерируем changelog и делаем gear-commit.
# Публикуем srcrpm: $ rpmpub -r [версия, например "5.4.11"]
# Собираем для всех систем: [путь до korinf]/bin-cifs/etercifs.sh all [версия, например "5.4.11"].


[[Category:Etercifs]]
[[Category:Etercifs]]

Версия 15:07, 7 марта 2017

Порядок разработки etercifs

Репозиторий cifs-2.6

Алгоритм добавления новых версий ядра Linux (версия на английском)

Назначение: из него собираются пакеты с исходниками etercifs для всех поддерживаемых ядер.

Адрес: http://git.etersoft.ru/people/piastry/packages/cifs-2.6.git (

Осторожно, большой объем!

).


  1. Скачиваем изменения из основной ветки ядра (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git) в git репозитории cifs-2.6.
  2. Обновляем ветки etersoft-* путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки etersoft-*.
  3. Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток etersoft-*.
  4. Дальнейшие действия производим в репозитории etercifs

Актуальные ветки с нашими патчами:

  • etersoft-common
  • etersoft-share-flags
  • etersoft-wine

TODO: ещё какие-то? или все etersoft-* ?


Репозиторий etercifs

Назначение: из него собирается пакет etercifs со скриптами сборки и запуска сервиса, c исходниками для старых ядер (предположительно для 2.6.18-2.6.22) и исходниками для новых ядер.


Адрес: https://gitlab.eterfund.ru/etersoft/etercifs

Рабочая ветка одна - master.


Содержимое:

  • Папка sources/legacy содержит исходники модуля для старых ядер. Для каждой версии ядра с 18 по 22 создается симлинк вида kernel-source-etercifs-2.6.18-1.50c.tar.bz2, который указывает на legacy-исходники.
  • Папки sources/centosxx содержит исходники модуля для CentOS x.x ядер.
  • Папки sources/x.x содержит исходники модуля для новых ядер.

Папка etercifs содержит скрипты, которые попадают в пакет etercifs:

  • etercifs и etercifs.outformat - заготовки для rc-скриптов.
  • buildmodule.sh - скрипт для сборки.
  • functions.sh - функции для buildmodule.sh.
  • etermount - скрипт для удобного монтирования шары.

Алгоритм обновления пакета etercifs

(выполняется после обновления репозитория cifs-2.6)

  1. Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория cifs-2.6 (ветки вида vX.x-etercifs).
  2. Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись)
  3. Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
  4. Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.

Алгоритм сборки пакета etercifs

Требуются репозитории etersoft-build-utils и korinf.

  1. Меняем версию в etercifs.spec, генерируем changelog и делаем gear-commit (то есть $ rpmlog -v -l)
  2. Публикуем src.rpm в Korinf: $ rpmpub -r [версия, например "5.4.11"]
  3. Собираем для всех систем: [путь до korinf]/bin-cifs/etercifs.sh all [версия, например "5.4.11"].

Алгоритм сборки модуля etercifs (кратко)

(реализован в скрипте buildmodule.sh и выполняется по команде serv etercifs build при установленном пакете)

  1. Определяем, какая версия ядра.
  2. Определяем, в зависимости от дистрибутива, место, где лежат исходники ядра.
  3. Из исходников etercifs выбираем самый последний (по версии cifs и релизу), соответствующий текущему ядру.
  4. Создаем временную директорию, распаковываем в неё исходники etercifs.
  5. Собираем модуль ядра.