Etercifs/devel: различия между версиями
Строка 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 (<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-*. | |||
# Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток etersoft-*. | |||
# Дальнейшие действия производим в репозитории etercifs | |||
* | |||
* | |||
* | |||
Актуальные ветки с нашими патчами: | Актуальные ветки с нашими патчами: | ||
Строка 40: | Строка 24: | ||
* <tt>etersoft-wine</tt> | * <tt>etersoft-wine</tt> | ||
TODO: ещё какие-то? или все etersoft-* ? | |||
Строка 48: | Строка 32: | ||
'''Адрес:''' | '''Адрес:''' 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 | * Папки <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: | ||
# Собираем модуль ядра. | # Собираем модуль ядра. | ||
[[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 (
).
- Скачиваем изменения из основной ветки ядра (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-*.
- Дальнейшие действия производим в репозитории 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)
- Создаем новую папку 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 (кратко)
(реализован в скрипте buildmodule.sh и выполняется по команде serv etercifs build при установленном пакете)
- Определяем, какая версия ядра.
- Определяем, в зависимости от дистрибутива, место, где лежат исходники ядра.
- Из исходников etercifs выбираем самый последний (по версии cifs и релизу), соответствующий текущему ядру.
- Создаем временную директорию, распаковываем в неё исходники etercifs.
- Собираем модуль ядра.