nvi: use debian patches and fix build

Migrate to using patches from Debian package and add one local
patch to fix remaining build error.

Enable widechar support instead of patch fixing build error
This commit is contained in:
Dino A. Dai Zovi
2025-09-14 13:43:29 -04:00
committed by aleksana
parent b4799c4e2a
commit 0d340f58ae
3 changed files with 219 additions and 14 deletions

View File

@@ -0,0 +1,170 @@
# Generated by debian-patches.sh from debian-patches.txt
let
prefix = "https://sources.debian.org/data/main/n/nvi/1.81.6-23/debian/patches";
in
[
{
url = "${prefix}/01additional_upstream_data.patch";
sha256 = "0kqzch40sk66pszb2sp9197ih8rh4g0yawkf7na95x2rjcwzp8x7";
}
{
url = "${prefix}/03db4.patch";
sha256 = "0lcc9xqj76izll4x7v6wgrdbxjd6zyzsvrzb5mbkf4qlb86cy1d0";
}
{
url = "${prefix}/04confdefs.patch";
sha256 = "1x6vx3dxnn2qw5ihij3xvzyn80fgaxh7bqpnddz4gy028sl2jgmv";
}
{
url = "${prefix}/06default_value_escapetime.patch";
sha256 = "1kz2g517lyfrgz7f8blassz8984zb2bsv8dypiks87dmkc73859v";
}
{
url = "${prefix}/07flush_cache.patch";
sha256 = "041wsvcaki87r3n44251hqvfvjfsbydjvqkh99r3ky743qakcsn2";
}
{
url = "${prefix}/08lfs.patch";
sha256 = "0fv79kj31n0c2s8x4hk8d0897z1clwhchwcb8if2mqsxya3rdwr6";
}
{
url = "${prefix}/08safe_printf.patch";
sha256 = "0rn8bqcwjx7hw73mjfcbiq2454w297gh6ih0dn22r1fsx2lq3sn5";
}
{
url = "${prefix}/08tempfile_umask.patch";
sha256 = "0k06ha1z48z0kx8l4vi8cmmyqm9ma3mad3fj9p3b2wyzx092gs2n";
}
{
url = "${prefix}/09casting.patch";
sha256 = "1ni5rsrbwaahfwnlag9ivnxb8wy7px23i2ybxn3gnm20znmp6qy0";
}
{
url = "${prefix}/10no_one_line_visual.patch";
sha256 = "0hwqyjw5ql2n6p0yx9kpkb8yz2plwy5rbdnqcj2gcp2w4mb5mllf";
}
{
url = "${prefix}/11backward_sentence_moving.patch";
sha256 = "15b997gx0n4vqmkpxg2281dkklji7hryp0j8gvm1wyipakhvajbn";
}
{
url = "${prefix}/12horiz_scroll_count.patch";
sha256 = "1sh9p25ia44bqqkfkqw9zmfqwyjqkq41ycbqs7bvi9qi75qnl9n7";
}
{
url = "${prefix}/14private_regex_fixes.patch";
sha256 = "1k884rg8rmwjfs3zvfgrdhnrncsjdannd8jqp91jhvprnjf21j5h";
}
{
url = "${prefix}/16manpage_errors.patch";
sha256 = "1l46dl5hfigxlgzyzinsxlkrmfhc4zn63nkhcmr4qjjfrv7qa0hk";
}
{
url = "${prefix}/17tutorial_typos.patch";
sha256 = "18mlqg5n91jf6ydz54rf90324chzd9jfzh6zjjmxf2h8w996jbsg";
}
{
url = "${prefix}/18dbpagesize_binpower.patch";
sha256 = "0a4fnwkl13w8hz5v7ka4wgr9a86xcniqzxdp0baspp8vawdk57ha";
}
{
url = "${prefix}/19include_term_h.patch";
sha256 = "0k5hlfn0x8iiqfva5fz05qnfx4m1pyzfdx3pmlygsda605si1m9i";
}
{
url = "${prefix}/20glibc_has_grantpt.patch";
sha256 = "14x5p3g63p4mxnpcspi3h43qwj5vzpc955igk1pp14c65n3knrqr";
}
{
url = "${prefix}/21exrc_writability_check.patch";
sha256 = "03yc9vznklphk02vb59vzcz2dlvria4xmdb89iccn81x8lzcyixs";
}
{
url = "${prefix}/23debian_alternatives.patch";
sha256 = "1fnxlbv2aq16n4jcm1mpp672874bnz04i4vznpfx6jnxjnzd2px1";
}
{
url = "${prefix}/24fallback_to_dumb_term.patch";
sha256 = "00xhfa1fapgy7l76rx7q6jjlmymx8bpqlmc63myfficd42f8fzz7";
}
{
url = "${prefix}/25manpage_note_dropped_F.patch";
sha256 = "1gng9gaqrac2ps20hcs6w6zbipd4j1z7h6a0nsk1ip03xc1j87pl";
}
{
url = "${prefix}/26trailing_tab_segv.patch";
sha256 = "1iiswsng3h9xpf6ml80wsvbwd8rdvjavyc63hvml31paa1rwjncc";
}
{
url = "${prefix}/27support_C_locale.patch";
sha256 = "0g654xhv2al3y1x75yylhkqh588qmn69zjr7fm2wzngz91b8y56l";
}
{
url = "${prefix}/29file_backup.patch";
sha256 = "0jnjy6c447lh77c2xl3a5k2bpj4y90jdf43ca8c8hv0acxy0c3qm";
}
{
url = "${prefix}/30make_recover_script_init_ready.patch";
sha256 = "0b6lafcxqwmx7b6wkclhhjr022ffli2bwx7jkq6182zws0mz6ls2";
}
{
url = "${prefix}/31regex_heap_overflow.patch";
sha256 = "1wchrzk7931za9ksdribwxjdslk1vqshdy4987yhmafp73qi13yq";
}
{
url = "${prefix}/32allow_exec_of_nvi_opened_file.patch";
sha256 = "0mpvbpsn1hkb43h9cl1ix6jfyik8mmfrvfgsvrljk0hjrf91bn0a";
}
{
url = "${prefix}/33-fix-spelling-error.patch";
sha256 = "1cwyb4jvbyib7p2my49l7m3lf1dzvcazxzrz9wz39amrv3kyc09r";
}
{
url = "${prefix}/34-fix-long-line.patch";
sha256 = "0f1n19ax49lpvx3vc3gqpq26p6hfkz4x2ymigsd7ckm3hsn47pdd";
}
{
url = "${prefix}/35-fix-encoding.patch";
sha256 = "0g0rnmbwscxb81ll5v81g5vyk9vxx7mkqjcs8p53aj1xrk9a0nsn";
}
{
url = "${prefix}/upstream/0032-ex-ex_display.c-ex_display-fix-argument-checking-in-.patch";
sha256 = "108g8kwqdl33q0fsl8abr4qqfd62ldbk849j39nrwflhs4zpsmqi";
}
{
url = "${prefix}/upstream/0033-vi-v_increment.c-v_increment-fix-support-for-wide-ch.patch";
sha256 = "1iqzdvn8byd8852q4rpi4g06n03i6ix6jvhgwv4yc3y7s3irlvhk";
}
{
url = "${prefix}/upstream/0034-cut-fix-appending-to-unused-cut-buffer-and-support-f.patch";
sha256 = "1vp427d01gqlx6sijba9n8birbzlb54sh7aiyfy1xfjxk9pb76xa";
}
{
url = "${prefix}/upstream/0035-Word-search-ignored-word-end-boundaries.patch";
sha256 = "045980hrgs6a9rk8mif64z2jlq06qdk885g7vzqig3cqabv5915m";
}
{
url = "${prefix}/upstream/0036-Fix-how-keywords-are-picked-up.patch";
sha256 = "1fd2i2xs9k7il8r57hmdd3pimbsiyj326xigzc2skj5glnjd7lj0";
}
{
url = "${prefix}/upstream/0037-New-macro-MEMPCPY.patch";
sha256 = "16j8zry077fsyfyb45bj6blp797nmlnp553az5y1mcn7sbgr8vyx";
}
{
url = "${prefix}/upstream/0038-Fix-A-word-search-for-keywords-starting-with-a-non-w.patch";
sha256 = "0cy0v9g3arxda3zzwsbqp0m5y8mvf1fy1wd8ay4q82cfp0f3dcgh";
}
{
url = "${prefix}/0039-Add-function-prototypes-to-fix-implicit-function-dec.patch";
sha256 = "1w10cmqbasnmpw6613zmzxrrkfvzmqmdxki9k21jyakv7j0vwdii";
}
{
url = "${prefix}/0040-Add-more-function-prototypes-to-fix-Wimplicit-functi.patch";
sha256 = "0m13jaaylq1lxrmi0d2ppr9jg51s3q40chbxcv4jzdlx0bdxq8w1";
}
{
url = "${prefix}/0041-Fix-FTBFS-because-of-incompatible-pointer-type-error.patch";
sha256 = "1qvzrxfbk3ylr6cc3y94rlgfbdj2z14dhh6m09drkxb4bqcp2awv";
}
]

View File

@@ -0,0 +1,42 @@
nvi/1.81.6-23
01additional_upstream_data.patch
03db4.patch
04confdefs.patch
06default_value_escapetime.patch
07flush_cache.patch
08lfs.patch
08safe_printf.patch
08tempfile_umask.patch
09casting.patch
10no_one_line_visual.patch
11backward_sentence_moving.patch
12horiz_scroll_count.patch
14private_regex_fixes.patch
16manpage_errors.patch
17tutorial_typos.patch
18dbpagesize_binpower.patch
19include_term_h.patch
20glibc_has_grantpt.patch
21exrc_writability_check.patch
23debian_alternatives.patch
24fallback_to_dumb_term.patch
25manpage_note_dropped_F.patch
26trailing_tab_segv.patch
27support_C_locale.patch
29file_backup.patch
30make_recover_script_init_ready.patch
31regex_heap_overflow.patch
32allow_exec_of_nvi_opened_file.patch
33-fix-spelling-error.patch
34-fix-long-line.patch
35-fix-encoding.patch
upstream/0032-ex-ex_display.c-ex_display-fix-argument-checking-in-.patch
upstream/0033-vi-v_increment.c-v_increment-fix-support-for-wide-ch.patch
upstream/0034-cut-fix-appending-to-unused-cut-buffer-and-support-f.patch
upstream/0035-Word-search-ignored-word-end-boundaries.patch
upstream/0036-Fix-how-keywords-are-picked-up.patch
upstream/0037-New-macro-MEMPCPY.patch
upstream/0038-Fix-A-word-search-for-keywords-starting-with-a-non-w.patch
0039-Add-function-prototypes-to-fix-implicit-function-dec.patch
0040-Add-more-function-prototypes-to-fix-Wimplicit-functi.patch
0041-Fix-FTBFS-because-of-incompatible-pointer-type-error.patch

View File

@@ -16,19 +16,9 @@ stdenv.mkDerivation rec {
sha256 = "13cp9iz017bk6ryi05jn7drbv7a5dyr201zqd3r4r8srj644ihwb"; sha256 = "13cp9iz017bk6ryi05jn7drbv7a5dyr201zqd3r4r8srj644ihwb";
}; };
patches = [ patches =
# Fix runtime error with modern versions of db. # Apply patches from debian package
(fetchpatch { map fetchurl (import ./debian-patches.nix);
url = "https://src.fedoraproject.org/rpms/nvi/raw/f33/f/nvi-03-db4.patch";
sha256 = "1vpnly3dcldwl8gwl0jrh5yh0vhgbdhsh6xn7lnwhrawlvk6d55y";
})
# Fix build with Glibc.
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/nvi/raw/f33/f/nvi-20-glibc_has_grantpt.patch";
sha256 = "1ypqj263wh53m5rgiag5c4gy1rksj2waginny1lcj34n72p2dsml";
})
];
buildInputs = [ buildInputs = [
ncurses ncurses
@@ -39,7 +29,10 @@ stdenv.mkDerivation rec {
cd build.unix cd build.unix
''; '';
configureScript = "../dist/configure"; configureScript = "../dist/configure";
configureFlags = [ "vi_cv_path_preserve=/tmp" ]; configureFlags = [
"vi_cv_path_preserve=/tmp"
"--enable-widechar"
];
meta = with lib; { meta = with lib; {
description = "Berkeley Vi Editor"; description = "Berkeley Vi Editor";