LinuxForum.Fans
Тема

Патч из оверлея, как?

Автор: zenon 42 сообщений 8268 просмотров
#209689

Да они тут много на изменяли в ядре oO

#210384

Тут наводил в своих папках порядок, нашел исходник reiser4 судя по дате качался Срд 27 Июл 2011 из git, там наиболее последние изменения, может кому пригодится?

Хотел архивом скинуть, да уж больно много сам архив весит, даже укомпресованый(.xz = 26M), по этому сделал патч на пустой каталог, удалось укомпресовать до 456k.

патч можно установить в любой пустой каталог.

вот!

ЗЫ: Решил скинуть так как просто жалко что опять затеряется, а так может кому пригодится

#210397

Поставил собирать gentoo-sources-3.1.4, как соберется попробую с патчем пересобрать.

#210400
text
>patch -p1 < reiser4.patch                                                  /usr/src/linux/ :)
patching file as_ops.c
patching file block_alloc.c
patching file block_alloc.h
patching file blocknrset.c
patching file carry.c
patching file carry.h
patching file carry_ops.c
patching file carry_ops.h
patching file context.c
patching file context.h
patching file coord.c
patching file coord.h
patching file debug.c
patching file debug.h
patching file dformat.h
patching file dscale.c
patching file dscale.h
patching file entd.c
patching file entd.h
patching file eottl.c
patching file estimate.c
patching file export_ops.c
patching file flush.c
patching file flush.h
patching file flush_queue.c
patching file forward.h
patching file fsdata.c
patching file fsdata.h
patching file .git/config
patching file .git/description
patching file .git/HEAD
patching file .git/hooks/applypatch-msg.sample
patching file .git/hooks/commit-msg.sample
patching file .git/hooks/post-commit.sample
patching file .git/hooks/post-receive.sample
patching file .git/hooks/post-update.sample
patching file .git/hooks/pre-applypatch.sample
patching file .git/hooks/pre-commit.sample
patching file .git/hooks/prepare-commit-msg.sample
patching file .git/hooks/pre-rebase.sample
patching file .git/hooks/update.sample
patching file .git/info/exclude
patching file .git/logs/HEAD
patching file .git/logs/refs/heads/master
patching file .git/packed-refs
patching file .git/refs/heads/master
patching file .git/refs/remotes/origin/HEAD
patching file init_super.c
patching file inode.c
patching file inode.h
patching file ioctl.h
patching file jnode.c
patching file jnode.h
patching file kassign.c
patching file kassign.h
The next patch would create the file Kconfig,
which already exists!  Assume -R? [n] y
patching file Kconfig
Hunk #1 FAILED at 1.
File Kconfig is not empty after patch, as expected
1 out of 1 hunk FAILED -- saving rejects to file Kconfig.rej
patching file key.c
patching file key.h
patching file ktxnmgrd.c
patching file ktxnmgrd.h
patching file lock.c
patching file lock.h
The next patch would create the file Makefile,
which already exists!  Assume -R? [n] y
patching file Makefile
Hunk #1 FAILED at 1.
File Makefile is not empty after patch, as expected
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej
patching file oid.c
patching file page_cache.c
patching file page_cache.h
patching file plugin/cluster.c
patching file plugin/cluster.h
patching file plugin/compress/compress.c
patching file plugin/compress/compress.h
patching file plugin/compress/compress_mode.c
patching file plugin/compress/lzoconf.h
patching file plugin/compress/Makefile
patching file plugin/compress/minilzo.c
patching file plugin/compress/minilzo.h
patching file plugin/crypto/cipher.c
patching file plugin/crypto/cipher.h
patching file plugin/crypto/digest.c
patching file plugin/dir/dir.h
patching file plugin/dir/hashed_dir.c
patching file plugin/dir/Makefile
patching file plugin/dir/seekable_dir.c
patching file plugin/dir_plugin_common.c
patching file plugin/disk_format/disk_format40.c
patching file plugin/disk_format/disk_format40.h
patching file plugin/disk_format/disk_format.c
patching file plugin/disk_format/disk_format.h
patching file plugin/disk_format/Makefile
patching file plugin/fibration.c
patching file plugin/fibration.h
patching file plugin/file/cryptcompress.c
patching file plugin/file/cryptcompress.h
patching file plugin/file/file.c
patching file plugin/file/file_conversion.c
patching file plugin/file/file.h
patching file plugin/file/invert.c
patching file plugin/file/Makefile
patching file plugin/file/symfile.c
patching file plugin/file/symlink.c
patching file plugin/file/tail_conversion.c
patching file plugin/file_ops.c
patching file plugin/file_ops_readdir.c
patching file plugin/file_plugin_common.c
patching file plugin/hash.c
patching file plugin/inode_ops.c
patching file plugin/inode_ops_rename.c
patching file plugin/item/acl.h
patching file plugin/item/blackbox.c
patching file plugin/item/blackbox.h
patching file plugin/item/cde.c
patching file plugin/item/cde.h
patching file plugin/item/ctail.c
patching file plugin/item/ctail.h
patching file plugin/item/extent.c
patching file plugin/item/extent_file_ops.c
patching file plugin/item/extent_flush_ops.c
patching file plugin/item/extent.h
patching file plugin/item/extent_item_ops.c
patching file plugin/item/internal.c
patching file plugin/item/internal.h
patching file plugin/item/item.c
patching file plugin/item/item.h
patching file plugin/item/Makefile
patching file plugin/item/sde.c
patching file plugin/item/sde.h
patching file plugin/item/static_stat.c
patching file plugin/item/static_stat.h
patching file plugin/item/tail.c
patching file plugin/item/tail.h
patching file plugin/Makefile
patching file plugin/node/Makefile
patching file plugin/node/node40.c
patching file plugin/node/node40.h
patching file plugin/node/node.c
patching file plugin/node/node.h
patching file plugin/object.c
patching file plugin/object.h
patching file plugin/plugin.c
patching file plugin/plugin.h
patching file plugin/plugin_header.h
patching file plugin/plugin_set.c
patching file plugin/plugin_set.h
patching file plugin/regular.c
patching file plugin/security/Makefile
patching file plugin/security/perm.c
patching file plugin/security/perm.h
patching file plugin/space/bitmap.c
patching file plugin/space/bitmap.h
patching file plugin/space/Makefile
patching file plugin/space/space_allocator.h
patching file plugin/tail_policy.c
patching file pool.c
patching file pool.h
patching file readahead.c
patching file readahead.h
The next patch would create the file README,
which already exists!  Assume -R? [n] y
patching file README
Hunk #1 FAILED at 1.
File README is not empty after patch, as expected
1 out of 1 hunk FAILED -- saving rejects to file README.rej
patching file reiser4.h
patching file safe_link.c
patching file safe_link.h
patching file seal.c
patching file seal.h
patching file search.c
patching file status_flags.c
patching file status_flags.h
patching file super.c
patching file super.h
patching file super_ops.c
patching file tap.c
patching file tap.h
patching file tree.c
patching file tree.h
patching file tree_mod.c
patching file tree_mod.h
patching file tree_walk.c
patching file tree_walk.h
patching file txnmgr.c
patching file txnmgr.h
patching file type_safe_hash.h
patching file vfs_ops.c
patching file vfs_ops.h
patching file wander.c
patching file wander.h
patching file writeout.h
patching file znode.c
patching file znode.h
#210401

В menuconfig reiser4 не появился. :(

#210406

newzenon Это просто исходник reiser4 я его сделал в виде патча что бы просто меньше места занимал, это не патч для ядра.
Это то что обычно находится в каталоге fs/reiser4 после установки оригинального патча от разработчика reiser4.
Просто тут можно понаблюдать, какие разработчик сделал изменения в коде, после того как перестал выкладывать патчи.

#210409

ormorph, предупреждать надо.

#210411

ormorph, ну и как его прикручивать?

#210414

Прикрутить скорее всего не получится, так как я посмотрел, он еще определялся с кодом, он еще сырой, плюс некоторые ссылки на заголовочники сделаны не правильно, это можно просмотреть например используя утилиту kompare

А так патч создовался просто:
[console]$ diff -urN reiser4.orig reiser4 >reiser4.patch && bzip2 reiser4.patch[/console]
где reiser4.orig пустой каталог а reiser4 - каталог с исходником.

А так извлекается исходник либо:
[console]$ mkdir reiser4
$ bunzip2 reiser4.patch.bz2
$ patch -Np0 -i reiser4.patch[/console]

Либо:
[console]$ mkdir blabla
$ cd blabla
$ patch -Np1 -i ../reiser4.patch[/console]

#210415

ormorph, ничего не понял, bunzip куда? в /usr/src/linux/fs/reiser4? Потом patch -Np1 -i откуда?

#210416

newzenon
Тут все довольно просто, если выполнить patch -Np0 -i reiser4.patch, вы видите что стоит после p цифра ноль, то извлекается исходник в папку reiser4 которая находится в текущем каталоге( в котором вы находитесь: pwd)
если параметр -Np1 то извлекается исходник непосредственно в тот каталог в котором вы находитесь(не в папку reiser4).

#210417

-i это то же самое что и <

#210421

Брррр...
Исходники ядра у меня в /usr/src/linux
Вот я распаковал твой архив:

text
>ls /usr/src/linux/fs/reiser4                                               /usr/src/linux/ :)
Kconfig.diff        entd.h.diff         ktxnmgrd.h.diff      super_ops.c.diff
Makefile.diff       eottl.c.diff        lock.c.diff          tap.c.diff
README.diff         estimate.c.diff     lock.h.diff          tap.h.diff
as_ops.c.diff       export_ops.c.diff   oid.c.diff           tree.c.diff
block_alloc.c.diff  flush.c.diff        page_cache.c.diff    tree.h.diff
block_alloc.h.diff  flush.h.diff        page_cache.h.diff    tree_mod.c.diff
blocknrset.c.diff   flush_queue.c.diff  plugin/              tree_mod.h.diff
carry.c.diff        forward.h.diff      pool.c.diff          tree_walk.c.diff
carry.h.diff        fsdata.c.diff       pool.h.diff          tree_walk.h.diff
carry_ops.c.diff    fsdata.h.diff       readahead.c.diff     txnmgr.c.diff
carry_ops.h.diff    init_super.c.diff   readahead.h.diff     txnmgr.h.diff
context.c.diff      inode.c.diff        reiser4.h.diff       type_safe_hash.h.diff
context.h.diff      inode.h.diff        safe_link.c.diff     vfs_ops.c.diff
coord.c.diff        ioctl.h.diff        safe_link.h.diff     vfs_ops.h.diff
coord.h.diff        jnode.c.diff        seal.c.diff          wander.c.diff
debug.c.diff        jnode.h.diff        seal.h.diff          wander.h.diff
debug.h.diff        kassign.c.diff      search.c.diff        writeout.h.diff
dformat.h.diff      kassign.h.diff      status_flags.c.diff  znode.c.diff
dscale.c.diff       key.c.diff          status_flags.h.diff  znode.h.diff
dscale.h.diff       key.h.diff          super.c.diff
entd.c.diff         ktxnmgrd.c.diff     super.h.diff
text
>cd /usr/src/linux/fs/reiser4    

И?

#210424

)))
Хотите откатить наложенный патч?

Cудя по всему ставили с параметром -p1 находясь в каталоге ядра.
Тогда находясь в каталоге ядра выполните команду:
[console]# patch -Np1 -R -i путь/reiser4.patch[/console]
все наложенное будет удалено.

#210427

ormorph, cейчас чистые исходники 3.1.4 и твой распакованный архив в /usr/src/linux/fs/reiser4, как наложить-то?

#210433

newzenon
Разработчик данного исходника сам, создавал патч той же самой командой что и я,по этому в нем кроме добавления исходника в каталоге reiser4 правятся файлы самого ядра, тем более я уже проверял данный исходник подменив просто каталог в fs/reiser4 на этот исходник, он так же не собирается.

Не мучайтесь smile

#210435

ormorph, Так то что выложил это не исходник, это diff'ы.
Ну да ладно приспичит поставлю 38-ое или 39-ое там reiser4 нормально работал.

#210442
newzenon написал:
ormorph, Так то что выложил это не исходник, это diff'ы.
Ну да ладно приспичит поставлю 38-ое или 39-ое там reiser4 нормально работал.

Ну по чему, это как раз исходник, так как diff утилита которая записывает изменения, то когда берется два каталога для сравнения, при этом один пустой, то в файл записывается полное содержимое полного каталога, можете проверить, после установки патча, его размер стал 30М, потерялись только данные даты создания файлов, их дата стала теперь число установки патча, а так все содержимое на месте.
Просто когда то качал данный исходник с git командой что я в начале давал.
Если сравнить командой diff, оригинал и установленный патч в пустой каталог, то изменения отсутствуют.
Просто данный исходник в виде патча весит очень мало, по сравнению с архивом.

#210448

Так из какого каталога тогда сам патч запускать?
Допустим создам пустой каталог
[console]$ mkdir /usr/src/linux/fs/reiser4
$ cd /usr/src/linux
$ wget http://ompldr.org/vYmtnNg/reiser4.patch.bz2
$ bunzip2 reiser4.patch.bz2
$ patch -Np0 -i reiser4.patch[/console]
Или перед bunzip надо было перейти в /usr/src/linux/fs/
А после в /usr/src/linux/fs/reiser4
Запутал меня совсем... :(

#210456
newzenon написал:
Так из какого каталога тогда сам патч запускать?
Допустим создам пустой каталог
[console]$ mkdir /usr/src/linux/fs/reiser4
$ cd /usr/src/linux
$ wget http://ompldr.org/vYmtnNg/reiser4.patch.bz2
$ bunzip2 reiser4.patch.bz2
$ patch -Np0 -i reiser4.patch[/console]
Или перед bunzip надо было перейти в /usr/src/linux/fs/
А после в /usr/src/linux/fs/reiser4
Запутал меня совсем... :(

О нет так не делается smile
тогда уж после mkdir /usr/src/linux/fs/reiser4
выполнить cd /usr/src/linux/fs/
Просто посмотрите на команду которой создавался патч там каталог reiser4 является источником исходника.
0 -означает то же самое положение к каталогу, при котором создавался патч. Т.е. команда в обоих случаях ls покажет перед собой каталог reiser4

Просто патч это хороший способ хранить текстовую информацию, бинарники только нельзя, можете посмотреть какая информация единственно утеряна в результате выполнения утилиты diff
Выполнив команду:
cat reiser4.patch |grep Binary
Потеряна только бинарная информация, необходимая для утилиты git, сам же исходник без изменений.

Зы: Создатель оригинального патча(reiser4-for-2.6.38.patch) создавал его командой: diff -urN linux-2.6.38.orig linux-2.6.38 , где linux-2.6.38.orig начальный исходник, а linux-2.6.38 исходник в котором сделаны изменения.
Все аналогично как я описывал в начале.

Войдите или зарегистрируйтесь, чтобы ответить.