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

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




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


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


'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs-source (<div style="display: inline; color: red;">Осторожно, большой объем!</div>).
'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs-source (<div style="display: inline; color: red;">Осторожно, большой объем!</div>).
Строка 17: Строка 17:
=== Алгоритм добавления новых версий ядра Linux ([[Etercifs/devel/newkernels|версия на английском]]) ===
=== Алгоритм добавления новых версий ядра Linux ([[Etercifs/devel/newkernels|версия на английском]]) ===


# Скачиваем изменения из основной ветки ядра (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git) в git репозитории cifs-2.6.
# Скачиваем изменения из основной ветки ядра (https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git).
# Обновляем ветки с патчами (etersoft-common, etersoft-share-flags и etersoft-wine) путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки с патчами.
# Обновляем ветки с патчами (etersoft-common, etersoft-share-flags и etersoft-wine) путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки с патчами.
# Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток с патчами.
# Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток с патчами.
# Дальнейшие действия производим в репозитории etercifs (см. далее).
# Дальнейшие действия производим в репозитории etercifs (см. далее).


Алгоритм пытается быть реализованным в etercifs/develop/update_git.sh
Алгоритм реализован в скрипте etercifs/develop/update_git.sh


== Репозиторий etercifs ==
== Репозиторий etercifs ==
Строка 30: Строка 30:
'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs
'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs


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




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


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


# Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория cifs-2.6 (ветки вида vX.x-etercifs, каталог fs/cifs).
# Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория etercifs-sources (ветки вида vX.x-etercifs, каталог fs/cifs).
# Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись)
# Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись)
# Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из etercifs-sources/Documentation/filesystems/cifs/.
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.
 
Алгоритм реализован в скрипте etercifs/develop/update_git.sh
 
Основной вариант использования:
$ cd etercifs/develop
$ ./update_git.sh -u 4.4


=== Алгоритм сборки пакета etercifs ===
=== Алгоритм сборки пакета etercifs ===
Строка 71: Строка 76:
# Создаем временную директорию, распаковываем в неё исходники etercifs.
# Создаем временную директорию, распаковываем в неё исходники etercifs.
# Собираем модуль ядра.
# Собираем модуль ядра.
=== Соответствие исходников версии ядра ===
В файле etercifs/source.table указываются исключения для исходников к стабилизированным ядрам некоторых дистрибутивов: какие исходники использовать для указанной версии ядра указанного дистрибутива.




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

Текущая версия на 14:54, 30 января 2018

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

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

Назначение: в нём находятся ветки с наборами наших патчей и бранчи для поддерживаемых ядер с приложенными этими патчами.

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

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

).

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

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

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

  1. Скачиваем изменения из основной ветки ядра (https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git).
  2. Обновляем ветки с патчами (etersoft-common, etersoft-share-flags и etersoft-wine) путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки с патчами.
  3. Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток с патчами.
  4. Дальнейшие действия производим в репозитории etercifs (см. далее).

Алгоритм реализован в скрипте etercifs/develop/update_git.sh

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

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

Адрес: 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

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

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

Алгоритм реализован в скрипте etercifs/develop/update_git.sh

Основной вариант использования:

$ cd etercifs/develop
$ ./update_git.sh -u 4.4

Алгоритм сборки пакета 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. Собираем модуль ядра.


Соответствие исходников версии ядра

В файле etercifs/source.table указываются исключения для исходников к стабилизированным ядрам некоторых дистрибутивов: какие исходники использовать для указанной версии ядра указанного дистрибутива.