From: Peter Novodvorsky <nidd@myxomop.com> To: devel-kernel@altlinux.ru, kernel@altlinux.ru Subject: [d-kernel] kernel policy: release candidate Date: Thu, 17 Apr 2003 20:42:49 +0400 Message-ID: <m3r881jcs6.fsf@shamrock.office.altlinux.ru> (raw) Глядите: --8<---------------cut here---------------start------------->8--- Kernel Policy for Sisyphus. Release Candate I. ============================================== Version: 0.99.1 0. Документ и его обновление. ----------------------------- kernel policy обновляется участниками kernel maintainer committee. Состав kernel committee: - Ed V. Bartosh - Dmitry V. Levin - Peter A. Novodvorsky 1. Именование ------------- 1.1 Патчи. ---------- Есть два вида патчей: kernel-feat-%{upsteram_name} kernel-fix-%{upstream_name} Название пакетов с патчами базируется на иерархии каталогов в исходных текстах ядра, в соответствии с местом основного приложения патча. В пакетах feat содержатся патчи добавляющие ядру Linux новые возможности. Это могут быть и драйверы устройств (рекомендуется называть такие kernel-feat-drivers-<имя_устройства>) и файловых систем (желательно называть kernel-feat-fs-<имя_файловой системы>), добавление новых возможностей к сетевой подсистеме (желательно называть kernel-feat-net-<сокращённое название улучшения>), а так же добавление новых возможностей к корневой части (kernel/*, mm/*, arch/*) ядра, (желательно называть kernel-feat-core-<название улучшения>). При наименовании патчей рекомендуется следовать иерархии каталогов в исходных текстах ядра. Все пакеты fixes поддерживаются kernel maintainer commitee. Именуются по именам подсистем ядра, а так же существует отдельный пакет для security патчей и build патчей: kernel-fixes-{net,drivers,fs,vm,core,security,build}. Глубина иерархии в названии пакета может варьироваться, некоторые уровни - пропускаться, чтобы сделать название короче, например kernel-net-netfilter вместо kernel-net-ipv4-netfilter и kernel-net-ipv6-netfilter. 1.2 Внешние модули. ------------------- Внешними модулями называются модули, исходные файлы которых, как правило, поставляются не в виде патчей и которые собираются отдельно от ядра. Пакеты с такими собранными модулями должны называться kernel-modules-<сокращённое название набора модулей>-<версия ядра с которым собраны модули>-<flavour ядра с которым собраны модули>. Пакеты с хедерами этих модулей должны назваться kernel-headers-<сокращённое название набора модулей>-<версия ядра с которым собраны модули>-<flavour ядра с которым собраны модули>. Такие пакеты могут и не существовать, они требуются лишь в том случае, когда хедеры требуются утилит или других модулей. 1.3 Пакеты с исходными текстами ядра и модулей. ---------------------------------------------- Такие пакеты должен называться: <имя проекта>-source-<версия модулей или ядра>. 1.4 Пакеты с ядром. ------------------ Такие пакеты должен называться kernel-image-<версия ядра>-<flavour ядра>. Пакеты с хедерами ядра должен называться kernel-headers-<версия ядра>-<flavour ядра>. 1.5 Пакет kernel-build-tools ---------------------------- В этом пакете содержатся rpm определения, макросы, скрипты и другие вспомогательные средства, которые рекомендуется использовать в spec файлах kernel- пакетов и в apply скриптах. 2. Versioning пакетов. ---------------------- Пакетам с feat патчами желательно присваивать версии, полученные из upstream. Если upstream не делает versioning, допустимо называть их по дате последнего изменения upstream в формате yyyy.mm.dd. Пакетам с fix патчами обязательно присваивать версии по дате запаковывания в формате yyyy.mm.dd. Пакетам с внешними модулями и ядром, а так же с их исходными текстами желательно присваивать версии, полученные из upstream. Если upstream не делает versioning, допустимо называть их по дате последнего изменения upstream в формате yyyy.mm.dd. 3. Содержимое пакетов. ---------------------- 3.1 Патчи. ---------- /usr/src/kernel/patches/<имя_патча>/* патчи optional: kernel/patches/apply/<имя_патча> программа, которая прикладывает патчи Файлы с патчами рекомендуется называть по шаблону "NN_name.patch", где NN -- номер патча, определяющий порядок его приложения. Если есть патч, который надо прикладывать только в случае существования других патчей, то его рекомендуется положить в каталог /usr/src/kernel/patches/<имя_патча>/NN_<имя приложенного патча>. Программа прикладывающая патч, будучи вызванная из каталога с исходными текстами ядра, обязана приложить к ним нужные патчи или возвратить 1 в случае ошибки Программа может пользоваться переменной окружения KVER заданной при запуске в среде, которая содержит версию ядра, к которой нужно приложить патч. При прикладывании патчей, программа может руководствоваться файлами в подкаталоге исходных текстов ядра patches/ формата APPLIED_$name. Существование таких файлов означает, что приложены патчи с именами $name. После прикладывания своих патчей программа обязана создать свой файл формата APPLIED_$name. В случае отсутствия программы apply, патчи будут приложены в соответствии с алгоритмом, описанным в секции 4. 3.2 Пакет с исходными текстами. -------------------------------- /usr/src/kernel/sources/<имя_пакета>-source-<версия>.tar.gz .... 3.3 Пакет с внешними модулями. ------------------------------- /lib/modules/<версия ядра>-<flavour>/* /usr/include/linux-<версия ядра>-<flavour>/linux/* .... 3.4 Пакет с ядром. ------------------ image: /boot/config-<версия ядра>-<flavour>-<release> /boot/vmlinuz-<версия ядра>-<flavour>-<release> /boot/System.map-<версия ядра>-<flavour>-<release> /lib/modules/<версия ядра>-<flavour>-<release>/* headers: /usr/include/linux-<версия ядра>-<flavour>/* .... 4. Порядок приложения патчей при сборке по умолчанию ---------------------------------------------------- for i in `ls -1 /usr/src/kernel/patches/$patchset` ; do \ if [ -d /usr/src/kernel/patches/$i ] ; then \ if [ -f patches/APPLIED_$i ] ; then \ apply_recursive "$1/$i" \ fi \ continue \ fi \ echo "Applying patch $i ..." \ cat $1/$i | patch -p1 -b \ done \ 5. Порядок принятия новых пакетов в Sisyphus. --------------------------------------------- Дабы упорядочить вхождение новых пакетов в Sisyphus, сначала разработчик обязан написать письмо в devel-kernel@altlinux.ru с темой ITP: <имя_пакета> (Intent to package) и с descriptionом пакета в теле, чтобы пояснить, что новое он хочет добавить. Далее проходит обсуждение этого пакета и люди договариваются, целесообразно ли присутствие пакета в Sisyphus. Kernel maintainer maintainer committee имеет право наложить вето на вхождение пакета в Sisyphus при согласии всех участников KMC. Appendix A: spec для обычного ядра ---------------------------------- %define kernel_base_version 2.4.21 %define kernel_extra_version pre7 %define krelease alt1 %define kversion 2.4.21pre7 %define flavour std-up %define use_ccache 1 %define kgcc gcc-2.96 ############# PATCHES ############ %add_patch_list fix-security %add_patch_list feat-scsi feat-xfs feat-splash ################################## %define base_arch %(echo %{_target_cpu} | sed 's/i.86/i386/;s/athlon/i386/') %define patch_deps %(for i in `echo %patches | tr -d ,`; do echo -n "kernel-$i "; done) %define kgcc gcc-2.96 %ifdef use_ccache %define kcc "ccache %kgcc" %else %define kcc "%kgcc" %endif Summary: The Linux kernel (the core of the Linux operating system) Name: kernel-image-%{kversion}-%{flavour} Version: %{kversion} Release: %{krelease} License: GPL Group: System/Kernel and hardware Packager: Kernel Maintainer Team <kernel@packages.altlinux.org> Source1: config-%{kversion}-%{flavour} Source2: rhkmvtag.c %define rhkmvtag %SOURCE2 ExclusiveOS: Linux URL: http://www.kernel.org/ #BuildRequires: %{kgcc_package} BuildRequires: coreutils BuildRequires: perl BuildRequires: rpm >= 4.0.2-75 BuildRequires: kernel-source-%{kversion} BuildRequires: kernel-build-tools %ifdef patches BuildRequires: %patch_deps %endif BuildRequires: bin86 Requires: bootloader-utils >= 0.1-alt7, modutils, mkinitrd >= 1:2.8.6-alt2 Prereq: coreutils Prereq: modutils >= 2.4.17 Obsoletes: kernel-modules ExclusiveArch: %{ix86} %description This package contains the Linux kernel that is used to boot and run your system. It contains few device drivers for specific hardware. Most hardware is instead supported by modules loaded after booting. Patches included:%patches %package -n kernel-headers-%{kversion}-%{flavour} Summary: Header files for the Linux kernel Group: System/Kernel and hardware %description -n kernel-headers-%{kversion}-%{flavour} These are the C header files for the Linux kernel, which define structures and constants that are needed when building most standard programs under Linux, as well as to rebuild the kernel. Patches included:%patches %prep %__rm -rf kernel-source-%{kversion} %__tar -jxvf %{_usrsrc}/kernel-source-%{kversion}.tar.bz2 %setup -D -T -n kernel-source-%{kversion} %ifdef patches %apply_patches %endif %__mv -f Makefile Makefile.orig %__sed -e 's/EXTRAVERSION =.*/EXTRAVERSION =/g' \ -e 's/CC.*$(CROSS_COMPILE)gcc/CC = %{kgcc}/g' \ Makefile.orig >Makefile %build KERNEL_BUILD_DIR=`pwd` KernelVer=%{kversion}-%{flavour}-%{krelease} echo "Building Kernel $KernelVer" :> arch/%{base_arch}/defconfig cat %{SOURCE1} >> arch/%{base_arch}/defconfig %{__make} mrproper CC=%kcc EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} #ln -sf arch/%{base_arch}/defconfig .config %{__make} oldconfig CC=%kcc EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} ### It's a hack, but a useful hack: cmp -s .config %SOURCE1 || %__cp -vf .config %SOURCE1 %{__make} dep clean CC=%kcc EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} %{__make} include/linux/version.h CC=%kcc EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} %{__make} bzImage CC=%kcc EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} %{__make} modules CC=%kcc EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} YACC="bison -y" echo "Kernel built $KernelVer" %install KernelVer=%{kversion}-%{flavour}-%{krelease} %__mkdir -p $RPM_BUILD_ROOT/boot %__install System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer %__cp arch/i386/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-$KernelVer %__cp .config $RPM_BUILD_ROOT/boot/config-$KernelVer %{__make} modules_install \ INSTALL_MOD_PATH=$RPM_BUILD_ROOT \ KERNELRELEASE=$KernelVer \ EXTRAVERSION=%kernel_extra_version-%{flavour}-%{krelease} %__cc -o rhkmvtag %rhkmvtag init/version.o ./rhkmvtag >$RPM_BUILD_ROOT/lib/modules/$KernelVer/.rhkmvtag ||: rm -f rhkmvtag install -d $RPM_BUILD_ROOT%{_prefix}/{include,src/linux-%{version}-%{flavour}/include} pushd include cp -a . $RPM_BUILD_ROOT/usr/src/linux-%{version}-%{flavour}/include popd %__cp .config $RPM_BUILD_ROOT/usr/src/linux-%{version}-%{flavour}/.config %post cd /boot if [ -x /sbin/installkernel ];then /sbin/installkernel -a -c %{kversion}-%{flavour}-%{krelease} fi %preun /sbin/modprobe loop 2> /dev/null > /dev/null REMOVE= if [ -f /etc/sysconfig/system ];then source /etc/sysconfig/system [[ "$CLASS" = "beginner" ]] && REMOVE=yes fi if [ -f /etc/sysconfig/installkernel ];then source /etc/sysconfig/installkernel [[ "$AUTOREMOVE" = [Yy][Ee][Ss] ]] && REMOVE=yes [[ "$AUTOREMOVE" = [Nn][Oo] ]] && REMOVE= fi BUILD=/lib/modules/%{kversion}-%{flavour}-%{krelease}/build [[ -n $REMOVE ]] && /sbin/installkernel -a -R -c %{kversion}-%{flavour}-%{krelease} %postun cd /boot if [ -f initrd-%{kversion}-%{flavour}-%{krelease}.img ];then rm -f initrd-%{kversion}-%{flavour}-%{krelease}.img fi #%post -n kernel-headers-%{kversion}-%{flavour} #if [ ! -L /usr/src/linux ]; then # ln -snf linux-%{kversion}-%{flavour}/usr/src/linux #fi #%postun -n kernel-headers-%{kversion}-%{flavour} #if [ -L /usr/src/linux ]; then # if [ "`ls -l /usr/src/linux | awk '{ print $11 }'`" = "linux-%{kversion}-%{flavour}" ]; then # if [ "$1" = "0" ]; then # rm -f /usr/src/linux # fi # fi #fi %files %defattr(644,root,root,755) /boot/vmlinuz-%{version}-%{flavour}-%{krelease} /boot/System.map-%{version}-%{flavour}-%{krelease} /boot/config-%{version}-%{flavour}-%{krelease} /lib/modules/%{version}-%{flavour}-%{krelease} # Exclude drm modules from kernel package %exclude /lib/modules/%{version}-%{flavour}-%{krelease}/kernel/drivers/char/drm %files -n kernel-headers-%{kversion}-%{flavour} %defattr(644,root,root,755) %dir %{_prefix}/src/linux-%{version}-%{flavour} %{_prefix}/src/linux-%{version}-%{flavour}/include/asm %{_prefix}/src/linux-%{version}-%{flavour}/include/asm-%base_arch %{_prefix}/src/linux-%{version}-%{flavour}/include/config %{_prefix}/src/linux-%{version}-%{flavour}/include/linux %{_prefix}/src/linux-%{version}-%{flavour}/include/math-emu %{_prefix}/src/linux-%{version}-%{flavour}/include/net %{_prefix}/src/linux-%{version}-%{flavour}/include/pcmcia %{_prefix}/src/linux-%{version}-%{flavour}/include/scsi %{_prefix}/src/linux-%{version}-%{flavour}/include/video %{_prefix}/src/linux-%{version}-%{flavour}/.config # Provided by I2C-headers package: %exclude %{_prefix}/src/linux-%{version}-%{flavour}/include/linux/i2c* %changelog * Mon Mar 31 2003 Peter Novodvorsky <nidd@altlinux.com> 2.4.21pre5-alt1 - initial release --8<---------------cut here---------------end--------------->8--- -- Peter Novodvorsky nidd@myxomop.com http://people.altlinux.ru/~nidd Deadheads, unite! Kill 'em all, and let God sort 'em out
next reply other threads:[~2003-04-17 16:42 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-04-17 16:42 Peter Novodvorsky [this message] 2003-04-24 7:38 ` Ed V. Bartosh 2003-04-24 9:07 ` Albert R. Valiev 2003-04-24 10:18 ` [d-kernel] " Vitaly Ostanin 2003-04-24 10:31 ` Albert R. Valiev 2003-04-24 15:54 ` [d-kernel] " Yury Aliaev 2003-04-24 16:17 ` Albert R. Valiev 2003-04-24 15:58 ` Yury Aliaev 2003-04-25 7:54 ` Ed V. Bartosh 2003-04-28 7:22 ` Yury Aliaev 2003-04-28 7:28 ` Ed V. Bartosh 2003-04-28 11:26 ` Albert R. Valiev 2003-04-29 10:04 ` Alexander Bokovoy 2003-04-29 10:53 ` Dmitry V. Levin 2003-04-29 12:04 ` Alexander Bokovoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=m3r881jcs6.fsf@shamrock.office.altlinux.ru \ --to=nidd@myxomop.com \ --cc=devel-kernel@altlinux.ru \ --cc=kernel@altlinux.ru \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux kernel packages development This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \ devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com public-inbox-index devel-kernel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git