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

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
Строка 1: Строка 1:
[[Category:Etercifs]]
{{MovedFromWikiEterSoftRu|Etercifs/devel}}




==== Порядок разработки 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
'''Адрес:''' [http://git.etersoft.ru/people/piastry/packages/etercifs.git 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/legacy</tt> содержит исходники модуля для старых ядер. Для каждой версии ядра с 18 по 22 создается симлинк вида kernel-source-etercifs-2.6.18-1.50c.tar.bz2, который указывает на legacy-исходники.
* Папки <tt>sources/x.x.xx</tt> содержит исходники модуля для новых ядер.
 
- Папки <tt>sources/centosxx</tt> содержит исходники модуля для [http://wiki.etersoft.ru/CentOS CentOS] x.x ядер.
 
- Папки <tt>sources/x.x.xx</tt> содержит исходники модуля для новых ядер.
 
 


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


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




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


(реализован в скрипте buildmodule.sh)


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




Строка 137: Строка 82:




 
# Скачиваем изменения из основной ветки ядра (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git) в git репозитории cifs-2.6.
1. Скачиваем изменения из основной ветки ядра (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-*.
2. Обновляем ветки etersoft-* путем "git merge vX.x". В случае возникновения конфликтов, разрешаем их и делаем результирующий коммит. Убеждаемся в корректности компиляции модуля из каждой ветки etersoft-*.
# Создаем новую папку source/X.x/ в git репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра.
 
# Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
3. Создаем новую ветку vX.x-etercifs, куда по очереди проводим слияние веток etersoft-*.
# Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.
 
# Добавляем информацию о новом ядре в etercifs.spec по аналогии с существующими записями.
4. Создаем новую папку source/X.x/ в git репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра.
 
5. Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
 
6. Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.
 
7. Добавляем информацию о новом ядре в etercifs.spec по аналогии с существующими записями.
 
 


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


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


1. Добавляем исходники для новых ядер (как сказано выше).
# Добавляем исходники для новых ядер (как сказано выше).
# Проверяем наличие обновлений модуля в стабильных ветках (уже добавленных в 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"].


2. Проверяем наличие обновлений модуля в стабильных ветках (уже добавленных в etercifs), сливаем их с нашими ветками вида vX.x-etercifs в репозитории cifs-2.6 и заменяем в репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми.
[[Category:Etercifs]]
 
3. Меняем версию в etercifs.spec, генерируем changelog и делаем gear-commit.
 
4. Публикуем srcrpm: [путь до etersoft-build-utils]/bin/rpmpub [версия, например "5.4.11"] etercifs.spec.
 
5. Собираем для всех систем: [путь до korinf]/bin-cifs/etercifs.sh all [версия, например "5.4.11"].

Версия 13:52, 7 марта 2017


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

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

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

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

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

).


Ветки и их назначение:


Текущие бранчи:

Актуальные ветки, для поддерживаемых ядер:

  • 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)

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


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


  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. Создаем новую папку source/X.x/ в git репозитории etercifs и переносим туда получившиеся исходники модуля для нового ядра.
  5. Добавляем правила в .gear/rules по аналогии с существующими записями. Версию модуля берем из файла cifsfs.h исходников.
  6. Обновляем файлы AUTHORS, TODO, CHANGES в директории etercifs/ из cifs-2.6/Documentation/filesystems/cifs/.
  7. Добавляем информацию о новом ядре в etercifs.spec по аналогии с существующими записями.

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

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

  1. Добавляем исходники для новых ядер (как сказано выше).
  2. Проверяем наличие обновлений модуля в стабильных ветках (уже добавленных в etercifs), сливаем их с нашими ветками вида vX.x-etercifs в репозитории cifs-2.6 и заменяем в репозитории etercifs старые исходники в каталогах соответствующих версий ядра новыми.
  3. Меняем версию в etercifs.spec, генерируем changelog и делаем gear-commit.
  4. Публикуем srcrpm: $ rpmpub -r [версия, например "5.4.11"]
  5. Собираем для всех систем: [путь до korinf]/bin-cifs/etercifs.sh all [версия, например "5.4.11"].