Etercifs/devel: различия между версиями
Строка 1: | Строка 1: | ||
==== Порядок разработки etercifs ==== | ==== Порядок разработки etercifs ==== | ||
===== Репозиторий cifs-2.6 ===== | ===== Репозиторий cifs-2.6 ===== | ||
'''Назначение:''' из него собираются пакеты с исходниками 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 http://git.etersoft.ru/people/piastry/packages/cifs-2.6.git] (<div style="display: inline; color: red;">Осторожно, большой объем!</div>). | ||
'''Ветки и их назначение:''' | '''Ветки и их назначение:''' | ||
* <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. | |||
* <tt>v2.6.xx-etercifs</tt> (например v2.6.32-etercifs) - содержит исходники с нашими патчами. | |||
<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. | |||
<tt>v2.6.xx-etercifs</tt> (например v2.6.32-etercifs) - содержит исходники с нашими патчами. | |||
'''Текущие бранчи:''' | '''Текущие бранчи:''' | ||
Актуальные ветки, для поддерживаемых ядер: | Актуальные ветки, для поддерживаемых ядер: | ||
<tt>legacy-etercifs</tt> | * <tt>legacy-etercifs</tt> | ||
* <tt>legacy-centos52-etercifs</tt> | |||
<tt>legacy-centos52-etercifs</tt> | * <tt>...</tt> | ||
* <tt>legacy-centos56-etercifs</tt> | |||
<tt>...</tt> | * <tt>legacy-centos60-etercifs</tt> | ||
* <tt>v2.6.16-etercifs</tt> (legacy для SUSE) | |||
<tt>legacy-centos56-etercifs</tt> | * <tt>v2.6.23-etercifs</tt> | ||
* <tt>...</tt> | |||
<tt>legacy-centos60-etercifs</tt> | * <tt>v2.6.39-etercifs</tt> | ||
* <tt>v3.0-etercifs</tt> | |||
<tt>v2.6.16-etercifs</tt> (legacy для SUSE) | * <tt>...</tt> | ||
* <tt>v3.19-etercifs</tt> | |||
<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> | |||
Актуальные ветки с нашими патчами: | Актуальные ветки с нашими патчами: | ||
<tt>etersoft-common</tt> | * <tt>etersoft-common</tt> | ||
* <tt>etersoft-share-flags</tt> | |||
<tt>etersoft-share-flags</tt> | * <tt>etersoft-wine</tt> | ||
<tt>etersoft-wine</tt> | |||
Ветки vx.x.xx-etercifs регулярно обновляются из стабильных веток ядра вида stable/linux-x.x.y (если, конечно, изменения затрагивали содержимое папки fs/cifs). | Ветки vx.x.xx-etercifs регулярно обновляются из стабильных веток ядра вида stable/linux-x.x.y (если, конечно, изменения затрагивали содержимое папки fs/cifs). | ||
===== Репозиторий etercifs ===== | ===== Репозиторий etercifs ===== | ||
'''Назначение:''' из него собирается пакет etercifs со скриптами сборки и запуска сервиса, c исходниками для старых ядер (предположительно для 2.6.18-2.6.22) и исходниками для новых ядер. | '''Назначение:''' из него собирается пакет etercifs со скриптами сборки и запуска сервиса, c исходниками для старых ядер (предположительно для 2.6.18-2.6.22) и исходниками для новых ядер. | ||
'''Адрес:''' http://git.etersoft.ru/people/piastry/packages/etercifs.git | |||
'''Адрес:''' | |||
Рабочая ветка одна - master. | Рабочая ветка одна - master. | ||
'''Содержимое:''' | '''Содержимое:''' | ||
* Папка <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/x.x.xx</tt> содержит исходники модуля для новых ядер. | |||
Папка <tt>etercifs</tt> содержит скрипты, которые попадают в пакет etercifs: | Папка <tt>etercifs</tt> содержит скрипты, которые попадают в пакет etercifs: | ||
* etercifs и etercifs.outformat - заготовки для rc-скриптов. | |||
* buildmodule.sh - скрипт для сборки. | |||
* functions.sh - функции для buildmodule.sh. | |||
* etermount - скрипт для удобного монтирования шары. | |||
'''Алгоритм сборки модуля etercifs (кратко):''' | '''Алгоритм сборки модуля etercifs (кратко):''' | ||
(реализован в скрипте buildmodule.sh) | |||
# Определяем, какая версия ядра. | |||
# Определяем, в зависимости от дистрибутива, место, где лежат исходники ядра. | |||
# Из исходников etercifs выбираем самый последний (по версии cifs и релизу), соответствующий текущему ядру. | |||
# Создаем временную директорию, распаковываем в неё исходники etercifs. | |||
# Собираем модуль ядра. | |||
Строка 137: | Строка 82: | ||
# Скачиваем изменения из основной ветки ядра (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''' | '''Алгоритм сборки пакета etercifs''' | ||
Требуются репозитории etersoft-build-utils и korinf. | Требуются репозитории 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]] | |||
Версия 13:52, 7 марта 2017
Порядок разработки etercifs
Репозиторий cifs-2.6
Назначение: из него собираются пакеты с исходниками etercifs для всех поддерживаемых ядер.
Адрес: http://git.etersoft.ru/people/piastry/packages/cifs-2.6.git (
).
Ветки и их назначение:
- master - обновляется из git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git и содержит исходные версии ядер 2.6.xx (но не 2.6.xx.y) и 3.x.
- v2.6.xx-etercifs (например v2.6.32-etercifs) - содержит исходники с нашими патчами.
Текущие бранчи:
Актуальные ветки, для поддерживаемых ядер:
- legacy-etercifs
- legacy-centos52-etercifs
- ...
- legacy-centos56-etercifs
- legacy-centos60-etercifs
- v2.6.16-etercifs (legacy для SUSE)
- v2.6.23-etercifs
- ...
- v2.6.39-etercifs
- v3.0-etercifs
- ...
- v3.19-etercifs
Актуальные ветки с нашими патчами:
- etersoft-common
- etersoft-share-flags
- etersoft-wine
Ветки vx.x.xx-etercifs регулярно обновляются из стабильных веток ядра вида stable/linux-x.x.y (если, конечно, изменения затрагивали содержимое папки fs/cifs).
Репозиторий etercifs
Назначение: из него собирается пакет etercifs со скриптами сборки и запуска сервиса, c исходниками для старых ядер (предположительно для 2.6.18-2.6.22) и исходниками для новых ядер.
Адрес: http://git.etersoft.ru/people/piastry/packages/etercifs.git
Рабочая ветка одна - master.
Содержимое:
- Папка sources/legacy содержит исходники модуля для старых ядер. Для каждой версии ядра с 18 по 22 создается симлинк вида kernel-source-etercifs-2.6.18-1.50c.tar.bz2, который указывает на legacy-исходники.
- Папки sources/centosxx содержит исходники модуля для CentOS x.x ядер.
- Папки sources/x.x.xx содержит исходники модуля для новых ядер.
Папка etercifs содержит скрипты, которые попадают в пакет etercifs:
- etercifs и etercifs.outformat - заготовки для rc-скриптов.
- buildmodule.sh - скрипт для сборки.
- functions.sh - функции для buildmodule.sh.
- etermount - скрипт для удобного монтирования шары.
Алгоритм сборки модуля etercifs (кратко):
(реализован в скрипте buildmodule.sh)
- Определяем, какая версия ядра.
- Определяем, в зависимости от дистрибутива, место, где лежат исходники ядра.
- Из исходников etercifs выбираем самый последний (по версии cifs и релизу), соответствующий текущему ядру.
- Создаем временную директорию, распаковываем в неё исходники etercifs.
- Собираем модуль ядра.
Алгоритм добавления новых версий ядра Linux (версия на английском)
- Скачиваем изменения из основной ветки ядра (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"].