diff -uNr a/v/manifest b/v/manifest --- a/v/manifest 19ba07fd25ca643d1b8e2cfebd77d4828e7f5b35b2bf2b6710f4553162d8eb1bc972f2690dd97ef2dc7122d118c4fec2d41501e77509ec690d12ecccb69d0873 +++ b/v/manifest dff05a8b235d4fb159df06c4e735d6a1f4e0772ef86894f2d4c5034f877b711e6c6bf6cd713bba16a7ac589296ab88c346b6c826a79687fd6146ff28fec0876a @@ -4,3 +4,4 @@ 600670 v_fixes_vpatch_sync spyked Limit recursion depth of wget to 1 for init command (sync_all_vpatches). Also, record changes in manifest rather than v.pl itself. Version number changed to 99991. 623999 v_strict_headers jfw Prevent false patch header matches by requiring a preceding "diff" line, as seen in phf's vpatch and bvt's vfilter. Also expand manifest to cover all patches and remove file extension from the titles as indicated by the manifest spec. Version 99990. 635743 v_fix_exptimes_paths_etc jfw Eliminate use of external binaries (cat ls sort pwd which) and provide more hygienic directory listing; add missing error handling in build_wot; eliminate some variable regex patterns; avoid slurping full vpatches and verbose output into memory; fix exponential recursion blowup in traverse_press_path and get_all_descendant_nodes; allow the patchdir to be a relative path; replace some numeric indexing with named variables; tweak hash program parsing to not require two spaces; document restricted positioning of global options handled distinctly from commands; make help and version commands work without a wotdir; allow patches and seals to share a directory but require standard extensions (.vpatch .sig); take basenames of patch arguments to allow tab-completeable paths; clean up the tempdir on SIGINT (^C); factor out some repetition; other minor simplifications. Version 99989. +635743 v_keksum_busybox_r2 jfw Switch from vtools to keksum and patch, omitting GNU extensions for busybox compat. (Rewritten based on v_fix_exptimes_paths_etc.) diff -uNr a/v/v.pl b/v/v.pl --- a/v/v.pl 97b52b43a15557326e585ed3095ff47eb29a01b5bb32c3e60e41f98eb6644408b255642dd90296c51b09a3ecfb699cc9d99fb820c7d0658ee0dc32627d97d606 +++ b/v/v.pl 1aaffa5a946e1a51ee446bebd83fdea4453b446ec5024ac2fd103b9da25b37717ca4a98c169d18ae46d069cd921e12f9c267c86ce92f1b84fab0261fccb5d8e8 @@ -28,7 +28,7 @@ my $wdir = ".wot"; my (@pfiles, @sfiles) = (); -my @dep_bins = ("gpg", "mkdir", "vpatch", "rm", "ksum", "wget", "mktemp"); +my @dep_bins = ("gpg", "mkdir", "patch", "rm", "keksum", "wget", "mktemp"); sub check_required_bins { my (@bins) = @_; @@ -441,7 +441,7 @@ death("Directory $press_dir already exists! Halting press.\n") if -d $press_dir; `mkdir -p $press_dir`; foreach my $vp (@pp) { - my $cmd = "(cd $press_dir && exec vpatch) < $pdir/$vp"; + my $cmd = "(cd $press_dir && exec patch -p1 -E) < $pdir/$vp"; if($v) { print "$vp\n"; open(my $fh, "-|", "$cmd 2>&1"); @@ -475,7 +475,7 @@ my $file_hash = $vp_map{$vp}{$src_file_name}{b}; if($file_hash ne "false") { my $fp = $press_dir . "/" . get_filepath($src_file_name); - my $hashed = `ksum $fp`; + my $hashed = `keksum $fp`; $hashed =~ /^([^ ]*)/; my $pressed_hash = $1; if($file_hash ne $pressed_hash) { diff -uNr a/v/v_quick_start.txt b/v/v_quick_start.txt --- a/v/v_quick_start.txt ba8a23123f78f346861f89a50a5f3a6f8080ff97a94d00b3b229703b075e7f76ac700c4c5e9a6e0a460df71da3a92d32c31a5524dc55aeb90b00a78dbc77b92f +++ b/v/v_quick_start.txt a7268583a7754f923b9cfa9747c0d5a4a3a688669eaa6b92f7ecbc0b6a4c52427a97ffd9bb13708c6fc789722e515dded17a1656732bd90d3193d5783ba96617 @@ -18,6 +18,7 @@ 0x013: graphviz [Nice to have, not required] 0x014: gpg [GnuPG] 0x015: wget + 0x016: keksum 0x02]: How do I setup V?