Etercifs/devel: различия между версиями
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
== Репозиторий | == Репозиторий etercifs-source == | ||
'''Назначение:''' в нём находятся ветки с наборами наших патчей и бранчи для поддерживаемых ядер с приложенными этими патчами. | |||
'''Назначение:''' | |||
'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs-source (<div style="display: inline; color: red;">Осторожно, большой объем!</div>). | |||
Актуальные ветки с нашими патчами: | Актуальные ветки с нашими патчами: | ||
Строка 24: | Строка 15: | ||
* <tt>etersoft-wine</tt> | * <tt>etersoft-wine</tt> | ||
=== Алгоритм добавления новых версий ядра Linux ([[Etercifs/devel/newkernels|версия на английском]]) === | |||
# Скачиваем изменения из основной ветки ядра (https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git). | |||
# Обновляем ветки с патчами (etersoft-common, etersoft-share-flags и etersoft-wine) путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки с патчами. | |||
# Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток с патчами. | |||
# Дальнейшие действия производим в репозитории etercifs (см. далее). | |||
Алгоритм реализован в скрипте etercifs/develop/update_git.sh | |||
== Репозиторий etercifs == | == Репозиторий etercifs == | ||
'''Назначение:''' из него собирается пакет etercifs со скриптами сборки и запуска сервиса, c исходниками для | '''Назначение:''' из него собирается пакет etercifs со скриптами сборки и запуска сервиса, c исходниками для всех вариантов ядер. | ||
'''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs | '''Адрес:''' https://gitlab.eterfund.ru/etersoft/etercifs | ||
Рабочая ветка одна | Рабочая ветка одна — master. | ||
Строка 51: | Строка 47: | ||
=== Алгоритм обновления пакета etercifs === | === Алгоритм обновления пакета etercifs === | ||
(выполняется после обновления репозитория | (выполняется после обновления репозитория etercifs-sources) | ||
# Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория | # Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория etercifs-sources (ветки вида vX.x-etercifs, каталог fs/cifs). | ||
# Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись) | # Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись) | ||
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из etercifs-sources/Documentation/filesystems/cifs/. | |||
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из | |||
Алгоритм реализован в скрипте etercifs/develop/update_git.sh | |||
Основной вариант использования: | |||
$ cd etercifs/develop | |||
$ ./update_git.sh -u 4.4 | |||
=== Алгоритм сборки пакета etercifs === | === Алгоритм сборки пакета etercifs === | ||
Строка 75: | Строка 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 (версия на английском)
- Скачиваем изменения из основной ветки ядра (https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git).
- Обновляем ветки с патчами (etersoft-common, etersoft-share-flags и etersoft-wine) путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки с патчами.
- Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток с патчами.
- Дальнейшие действия производим в репозитории 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)
- Создаем новую папку source/X.x/ в git-репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра из репозитория etercifs-sources (ветки вида vX.x-etercifs, каталог fs/cifs).
- Заменяем в git-репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми (если менялись)
- Обновляем файлы 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.
- Меняем версию в 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 (кратко)
(реализован в скрипте buildmodule.sh и выполняется по команде serv etercifs build при установленном пакете)
- Определяем, какая версия ядра.
- Определяем, в зависимости от дистрибутива, место, где лежат исходники ядра.
- Из исходников etercifs выбираем самый последний (по версии cifs и релизу), соответствующий текущему ядру.
- Создаем временную директорию, распаковываем в неё исходники etercifs.
- Собираем модуль ядра.
Соответствие исходников версии ядра
В файле etercifs/source.table указываются исключения для исходников к стабилизированным ядрам некоторых дистрибутивов: какие исходники использовать для указанной версии ядра указанного дистрибутива.