[BTC-dev] mod6's V [in perl] version 99993 K

Shane Kinney modsix@gmail.com
Thu Feb 22 21:53:35 UTC 2018


URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/attachment.txt?sha1=c38745e53a9253d1f3ee78a3e927a02756cc8f65>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

I'm happy to announce a new version of V: version 99993 K

Changes included with V version 99993 K:

0x00]: Updated the date of TMSR copyright.

0x01]: Updated the version number of the vtron to 99993 K.

0x02]: Grammatical/Spelling errors fixed.  Thanks to hanbot for finding these.

0x03]: There is a significant change to the manner in which we handle the
       creation of temp directory for holding the temporary life (during the
       execution of V, and no longer) of the gpg keyring.

       This entails removing the code that looks up the users home directory and
       creation of a directory called '~/.gnupgtmp'.  Instead, we are now making
       use of the UNIX `mktemp` utility.

       We now attempt to use `mktemp` to create a temporary directory in the
       /tmp filesystem if it exists.  If it does not exist, for whatever reason,
       it will attempt to create the temporary directory in the same place where
       V is executed from, '.'.

0x04]: As it turns out, modern ``unix'' environments ship completely useless
       without any sensible utilities at all.  Various unfortunate persons have
       found this out the hard way.  My vtron uses various shell-outs to
       execute tasks, so a 'check_required_bins' subroutine has been added to
       execute first to ensure that all the necessary binaries are available on
       the users local system.  If a dependent program is not found, an error
       message will be printed letting the user know which is missing.

0x05]: A defect has been found [R.01], and reported [R.02] in all previous
       versions of my vtron.

       The defect, in a nutshell, is that if you have more than one leaf in your
       vpatch flow, and you select to press all of the way through the flow, you
       could end up pressing leafs that you didn't intend to press.

       To shed a bit more light on this, now when a user goes to press, the flow
       will not be used to calculate the press-path.  Instead, with a given HEAD
       from the user, my vtron will now recurse the vtree finding all it's
       antecedents and press those only.

       To aid the user, for the time being, I have added a subroutine to the
       system called 'press-path' or 'pp'.

       If the user wants to see ~EXACTLY~ what will be pressed, in what exact
       order, the user can use 'press-path' or 'pp' with a given HEAD, and the
       vpatches will be printed to standard out.

0x06]: Results From Testing

       The changes have been tested in a combintion of manual and automated test
       suite.

       The automated test suite is available upon request.

       I would like to thank: shinohai, diana_coman, hanbot, and asciilifeform
       for their efforts in testing and review of the changes.

       If you have questions or comments please ask mod6 in #trilema, or via
       email.

0x07]: Attached to this email

       The following are attached to this email with their PGP signatures:

       v.pl
       v.pl.mod6.sig
       v_quick_start.txt
       v_quick_start.txt.mod6.sig
       v_users_manual.txt
       v_users_manual.txt.mod6.sig
       V-20180222.tar.gz
       V-20180222.tar.gz.mod6.sig

Enjoy!

0x08]: References
  [R.01]: http://btcbase.org/log/2017-12-22#1756251
  [R.02]: http://thebitcoin.foundation/ml/btc-dev/2018-January/000285.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)

iQIcBAEBCgAGBQJaj0NyAAoJEHIXBai3Hq2v2zgP/0d6wUzOocFN0/QVZRsS78xz
m1o22T+Vb3sAOvHTx/3RK//wRK0332eqQV2ceEc7FTVl8U5Nk0MBzF9UISvTvgW+
tMMYLFvaEGF+/ie6ASWmUMylGLM6/N80qHVvodDEBPylObtcpknrK9twQemy2x5n
Xpdvr4QoO2F+l4Ak1tGpSSAMkW6iKI5xPx01dmsAY1ARpj8WKXw4nduSL9d6L8qf
4inGCGaW5jW7IcyyYmfnXroVQMQA+nLmK5Annr9RLJh4YWSnWop4eyxSizQbDVzK
JIQHrOU5F66UMTw+yOpHyyIzbRj08WvXPLiSSCP0tgp2oxsmJzJQ8Nw0a/2OTkrH
MNjBWvWHteARPOpW5bbbTVt8d4HBAzIx3wGbMY1GnANHG8z2CWlCvcxWsgu9vhBL
wNLfmo/84Yj+BdeTfzNPyLvr6FrGmhI0KtmHOpW9YWf+Z0OWyxkkV1kKA/xrFmam
ko5Z2GgvrvPmdj9K48e9CVx1gs/bIg4ahRcTQ77NKiDGa+NxPL9zVLkF3KCqtUhG
BQDhFM5rQKz7ncHUKkfDc5WUq9jel7py2ksA/XHqVGixNLPacnEiaiJGKcot9zaS
+Wsz9BrYH4cO6prenUxJBj2Tcx2t7jibZL0wMIdX3DQ4MO4CMnd0UL7rhTtjb2hb
s/JQEun93sb25Al+0kaZ
=uUeQ
-----END PGP SIGNATURE-----
-------------- next part --------------
Name: v_quick_start.txt
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/v_quick_start.txt?sha1=59c59ed8d0dc3ca570305ee41a8b8fd33587de61>
      ..::[ The Bitcoin Foundation: V Quick Start ]::..


 Doc Version: 99993 K
      Author: mod6
 Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF

0x00]: Introduction

  Welcome to V!

  This document is intended for the advanced user.  This will get you up and
  running quickly with V.

0x01]: What's required?

    0x010: perl 5.005 or greater
    0x011: cpan | cpanm [CPAN | cpanminus]
    0x012: Graph::Easy [Nice to have, not required]
    0x013: graphviz [Nice to have, not required]
    0x014: gpg [GnuPG 1.4.x]
    0x015: wget
	0x016: cat
	0x017: echo
	0x018: ls
	0x019: mkdir
	0x01A: patch
	0x01B: pwd
	0x01C: rm
	0x01D: sha512sum
	0x01E: sort
	0x01F: which
    0x020: mktmp

0x02]: Where do I get V ?

    curl -s http://thebitcoin.foundation/v/V-20180222.tar.gz \
    -o V-20180222.tar.gz
    curl -s http://thebitcoin.foundation/v/V-20180222.tar.gz.mod6.sig \
    -o V-20180222.tar.gz.mod6.sig

    gpg --keyserver pool.sks-keyservers.net \
    --recv-keys 0x027A8D7C0FB8A16643720F40721705A8B71EADAF

    gpg --verify V-20180222.tar.gz.mod6.sig V-20180222.tar.gz

    If the signature is good, now extract the archive.

    tar -xf V-20180222.tar.gz

0x03]: How do I setup V?

    First, set the executable bit on v.pl:

    chmod +x v.pl

    Next, create a WoT directory (V will look for '.wot' in the current working
    directory by default):

    mkdir -p .wot

    Then, place WoT pubkeys into the '.wot' directory.  Name the pubkey files
    as such: <wotid>.asc

    For example: mod6.asc

0x04]: It's my first time running V now what?

    First, check the available signed mirrors:

    ./v.pl m mirrors

    Then run the initial sync of the vpatches and seals from a given mirror:

    ./v.pl i http://thebitcoin.foundation

0x05]: Now that I've sync'd from a mirror, what's next?

    The rest is up to you, either refer to the Users Guide for a detailed
    description of each option in V or just execute V and read the long
    help message:

    ./v.pl help
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.pl
Type: application/x-perl
Size: 34438 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/v.pl?sha1=af52bb4fd9bfb00a35b92dea43aa42a08988bbcf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.pl.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/v.pl.mod6.sig?sha1=4f931cb84293c93121d62cf0424cc9371af10c78>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_quick_start.txt.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/v_quick_start.txt.mod6.sig?sha1=f4169b6ee9467dc86b6eed23e1d5478e934e0142>
-------------- next part --------------
Name: v_users_manual.txt
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/v_users_manual.txt?sha1=0f19839451b3a58b25df9bc106812f2bc0ab7c8f>
     ..::[ The Bitcoin Foundation: V Users Manual ]::..


 Doc Version: 99993 K
      Author: mod6
 Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF

0x00]: Introduction

  Welcome to V!

  This document is intended to be a users manual for mod6's perl implementation
  of V.  Contained herein the user will find usage explanations and examples of
  the many options available.

0x01]: Getting Started

  [ Check if perl is installed & version ]:

    First, in order to execute the perl version of V, the user must have perl
    version 5.005 or greater installed on the local UNIX environment.  Perl
    typically comes installed on many UNIX environments ahead of time, but just
    to be sure, do the following from the command prompt:

    perl --version

    The user should see a lengthy version message that starts with something
    like this:

    `This is perl 5, version 18, subversion 2 (v5.18.2) ...'

    If not, please install perl 5.005 or greater before going any further:

    Ubuntu:
    apt-get install -y perl

    Gentoo:
    emerge =perl-5.20.2.ebuild

  [ Install CPAN ]:

    If it is desired to at all use the graphing feature of V the user will need
    to install CPAN [ `cpan` or `cpanm` or on gentoo, `g-cpan` ] so that the
    Graph::Easy perl library can be installed.

    Ubuntu:
    apt-get install cpanminus
    cpanm -i Graph::Easy

    Gentoo [x86-64]:
    emerge g-cpan

    [ NOTE: Copy the next nine lines exactly as they are presented here and ]
    [       then paste them into the shell.                                 ]

cat <<EOF > /etc/portage/package.accept_keywords
# required by perl-gcpan/JSON-MaybeXS-1.003005::x-g-cpan
# required by JSON-MaybeXS (argument)
=dev-perl/Test-Without-Module-0.180.0 ~amd64
# required by perl-gcpan/Cpanel-JSON-XS-3.0115::x-g-cpan
# required by Cpanel-JSON-XS (argument)
=dev-perl/common-sense-3.730.0 ~amd64
EOF

    g-cpan -i Graph::Easy

  [ Install GnuPG ]:

    The user will need GnuPG installed locally to run V, if you already have
    this installed, skip this step.

    Ubuntu:
    sudo apt-get install -y gnupg

    [NOTE: 1.4.19 seems to be the oldest portage a recent gentoo ships with)]:
    Gentoo:
    emerge =gnupg-1.4.19

  [ Install wget ]:

    Many UNIX systems come with `wget` installed already, if yours does not,
    install it:

    Ubuntu:
    sudo apt-get install -y wget

    Gentoo:
    emerge wget

  [ Additional UNIX Commands Required ]:

    Recent distributions of Linux seem ship without tools that one would
    automatically imagine are included by default.  Unfortunate users have
    found this out the hard way.  You will need the following binaries
    on your system, or V will not run.  If V does not find one of these
    binaries on your system, it will report which one it can not find and exit.

    They are, as follows (instructions on `gpg` and `wget are posted above):

    gpg [GnuPG]
    wget
    cat
    echo
    ls
    mkdir
    patch
    pwd
    rm
    sha512sum
    sort
    which
    mktmp

    If you do not have one of these binaries on your system, for whatever
    reason, consult your OS documentation to determine how to install it.

  [ Install GraphViz ]:

    In addition to Graph::Easy, if you wish to have V automatically build the
    SVG graph in an HTML output file for you from the Dot language output file,
    also output by V, you need to install GraphViz.

    Ubuntu:
    sudo apt-get install -y graphviz

    Gentoo:
    emerge -a graphviz
    etc-update [ enter -5 when prompted ]
    emerge -a graphviz [ Answer Yes at prompt ]

    NOTE: Some people have had issue with getting a proper graphviz installed,
    and subsequently no `dot` binary on their system.  It may be resolved by
    doing the following:

    emerge media-gfx/graphviz

  [ Download V Archive ]:

    Now you must obtain the V archive & signature from:

    http://thebitcoin.foundation/v/V-20180222.tar.gz
    http://thebitcoin.foundation/v/V-20180222.tar.gz.mod6.sig

    Then check the PGP signatures supplied:

    wget http://mod6.net/mod6.asc -O mod6.asc
    gpg --import mod6.asc

    [ Key Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF ]

    gpg --verify V-20180222.tar.gz.mod6.sig V-20180222.tar.gz

    Then unpack the archive:

    tar -xf V-20180222.tar.gz

  [ Start V for the first time ]:

    First, set the executable bit on v.pl:

    chmod 0755 v.pl

    Before you get any further, create a '.wot' directory (V looks for '.wot'
    in the current working directory by default) and populate it with PGP public
    keys manually.  Name the pubkey files as such: <wotid>.asc

    For example: mod6.asc

    Now have V sync the required Seals and Patches directories from a signed
    mirror.  To view the list of mirrors, run the following command, the output
    you'll see below.

    ./v.pl m v_mirrors
    Mirrors signed by (mod6):
    http://thebitcoin.foundation

    As stated from mirrors output we can use URL from The Bitcoin Foundation to
    sync V up-to-date with all the latest WoT entries (PGP Public Keys), VPatch
    Signatures (Seals) and Vpatches.

    To begin this initial sync do the following:

    ./v.pl i http://thebitcoin.foundation


0x01]: V Usage

  At this point the user has installed all of V's requirements, performed a
  look up  of available signed mirrors, and sync'd the WoT, Patches and Seals.

  What follows are usages and definitions of V's options with examples.

    A note about option syntax.  Any option enclosed with parenthesis ( ) is
    required.  The | separates any aliases of commands. Square brackets [ ]
    denote optional options.  Angle brackets < > denote required arguments to
    a given command.

  [  m | mirrors ]:
    Arguments:
      (<output_dir>)

    The m or mirrors command is available to connect to the main V site:
    http://thebitcoin.foundation  Here, V can connect and pull the list of
    available mirrors, signed by mirror administrators with L1 trust with
    deedbot and are in good standing in the WoT.  Ask mod6 about this if you
    want to run an authorized, signed mirror of V.

    The mirrors command takes one required argument, an output directory for the
    list of mirrors and the signatures so V can verify the list.

    Example:
    ./v.pl m v_mirrors
    Mirrors signed by (mod6):
    http://thebitcoin.foundation

  [  i | init ]:

    Arguments & Options:
      (mirror_url) [(<pdir> <sdir>)]

    The i or init command is intended to be utilized the first time running V
    on an environment.  It takes one required option, and two optional
    options.  The required argument is a V mirror URL to sync from.  Next, the
    user can choose to use the default Patches ('patches' in the current working
    directory) and Seals (.seals in the current working directory) directories
    by not setting the two <pdir> or <sdir> options -- only passing a mirror URL
    argument to the init command.  If the user wishes to use their own named
    directories, simply pass in those arguments in the exact order specified.

    Example:
    ./v.pl i http://thebitcoin.foundation
    Full vpatch sync complete to "/home/mod6/patches"
    Seal sync complete to "/home/mod6/.seals"

    Example:
    ./v.pl i http://thebitcoin.foundation wot vpatches seals
    Full vpatch sync complete to "vpatches"
    Seal sync complete to "seals"

  [ wd | wotdir ]:

    Arguments:
      (<wotdir>)

    The wd or wotdir command is available to point V at a specific WoT
    directory rather than the default: '.wot' (in the current working directory)
    There is one required argument: a WoT directory.

    Example case, only mod6.asc exists in wot2:
    ./v.pl f wd wot2
    genesis.vpatch (mod6)
    bitcoin-asciilifeform.1.vpatch (mod6)
    rm_rf_upnp.vpatch (mod6)
    ...

  [ pd | patchdir ]:

    Arguments:
      (<patchdir>)

    The pd or patchdir command is available to point V at a specific patch
    directory rather than the default: 'patches', in V's present working
    directory.  There is one required argument: a vpatches directory.

    Example case, only genesis.vpatch exists in patches2:
    ./v.pl f pd patches2
    genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)

  [ sd | sealdir ]:

    Arguments:
      (<sealdir>)

    The sd or sealdir command is available to point V at a specific seal
    directory rather than the default: '.seals' (in the current working
    directory)
    There is one required argument: a seals directory.

    Example case, only seals created by mod6 exist in seal2:
    ./v.pl f sd seals2/
    genesis.vpatch (mod6)
    bitcoin-asciilifeform.1.vpatch (mod6)
    rm_rf_upnp.vpatch (mod6)
    ...

  [  w | wot ]:

    Options:
      [ finger ]

    The w or wot command will build a list of WoT entities eligible for
    creating seals for approved vpatches.  If a specific vpatch has not
    been signed by a WoT entity, it is considered a 'WILD' vpatch, and will be
    ignored.  A vpatch must be signed by both Co-Chairs of The Bitcoin Foundation
    to be considered approved for release.

    Example:
    ./v.pl w
    asciilifeform:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy <stas@loper-os.org>
    ben_vulpes:4F7907942CA8B89B01E25A762AFA1A9FD2D031DA:Ben Vulpes <benkay@gmail.com>
    mircea_popescu:6160E1CAC8A3C52966FD76998A736F0E2FB7B452:Mircea Popescu (Acest articol are apriori avantajul aliteralitatii alaturi.) <office@polimedia.us>
    mod6:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix@gmail.com>
    trinque:FC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4:Michael Trinque <mike@trinque.org>

    ./v.pl w finger
    asciilifeform-B98228A001ABFFC7:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy <stas@loper-os.org>
    ben_vulpes-2AFA1A9FD2D031DA:4F7907942CA8B89B01E25A762AFA1A9FD2D031DA:Ben Vulpes <benkay@gmail.com>
    mircea_popescu-8A736F0E2FB7B452:6160E1CAC8A3C52966FD76998A736F0E2FB7B452:Mircea Popescu (Acest articol are apriori avantajul aliteralitatii alaturi.) <office@polimedia.us>
    mod6-721705A8B71EADAF:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix@gmail.com>
    trinque-42F9985AFAB953C4:FC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4:Michael Trinque <mike@trinque.org>

  [  r | roots ]:

    The r or roots command takes no options or arguments, unless a different
    pd or patchdir is specified.  It simply traverses the vpatch directories
    contained vpatches and returns any root vpatches found in the topological
    order.

    Examples:
    ./v.pl r
    Root: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)

    Examples:
    ./v.pl r pd patches2
    Root: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)

  [  l | leafs ]:

    The l or leafs command takes no options or arguments, unless a different
    pd or patchdir is specified.  It simply traverses the vpatches in the
    vpatch directory and returns any leaf vpatches found in the topological
    order.

    Examples:
    ./v.pl l
    Leaf: asciilifeform_add_verifyall_option.vpatch (asciilifeform, mod6)
    Leaf: asciilifeform_maxint_locks_corrected.vpatch (asciilifeform, mod6)

    Example case, only genesis.vpatch exists in patches2:
    ./v.pl l pd patches2
    Leaf: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)

  [  f | flow  ]:

    The f or flow command prints a topological flow of vpatches based on
    precedence.  By default will look for the 'patches' directory in the present
    working directory of V and print the flow to stdout.

    Example:
    ./v.pl f
    genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
    bitcoin-asciilifeform.1.vpatch (asciilifeform, mod6)
    rm_rf_upnp.vpatch (asciilifeform, mod6)
    bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (asciilifeform, mod6)
    bitcoin-asciilifeform.2-https_snipsnip.vpatch (asciilifeform, mod6)
    bitcoin-asciilifeform.4-goodbye-win32.vpatch (asciilifeform, mod6)
    asciilifeform_dnsseed_snipsnip.vpatch (asciilifeform, mod6)
    asciilifeform_zap_hardcoded_seeds.vpatch (asciilifeform, mod6)
    asciilifeform-kills-integer-retardation.vpatch (asciilifeform, mod6)
    asciilifeform_zap_showmyip_crud.vpatch (asciilifeform, mod6)
    asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (asciilifeform, mod6)
    asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (asciilifeform, mod6)
    mod6_fix_dumpblock_params.vpatch (asciilifeform, mod6)
    bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (asciilifeform, mod6)
    bitcoin-v0_5_3_1-rev_bump.7.vpatch (asciilifeform, mod6)
    asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (asciilifeform, mod6)
    asciilifeform_orphanage_thermonuke.vpatch (asciilifeform, mod6)
    asciilifeform_and_now_we_have_eatblock.vpatch (asciilifeform, mod6)
    bitcoin-v0_5_3-db_config.6.vpatch (asciilifeform, mod6)
    asciilifeform_tx-orphanage_amputation.vpatch (asciilifeform, mod6)
    asciilifeform_maxint_locks_corrected.vpatch (asciilifeform, mod6)
    asciilifeform_lets_lose_testnet.vpatch (asciilifeform, mod6)
    asciilifeform_add_verifyall_option.vpatch (asciilifeform, mod6)

    Example case, only genesis.vpatch exists in patches2:
    ./v.pl f pd patches2
    genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)

  [  p | press ]:

    Arguments:
      (<press_dir> <head>)

    The p or press command is available to apply vpatches up through <head> in
    topological order (see press-path command) to an output directory
    <press_dir>.  There are two required arguments; an output directory for
    applied patches <press_dir> and a vpatch <head> as the tip of the tree to
    press up through.  By default, no output is shown; however if the user
    supplies `v' or `verbose' directly after the p or press command then the
    output from the patching application process will be directed to stdout.

    Example:
    ./v.pl p press_output genesis.vpatch

    Example:
    ./v.pl p verbose press_verbose genesis.vpatch
    genesis.vpatch
      patching file bitcoin/.gitignore
      patching file bitcoin/COPYING
      patching file bitcoin/src/base58.h
      patching file bitcoin/src/bignum.h
      patching file bitcoin/src/bitcoinrpc.cpp
      patching file bitcoin/src/bitcoinrpc.h
      patching file bitcoin/src/checkpoints.cpp
      patching file bitcoin/src/checkpoints.h
      patching file bitcoin/src/crypter.cpp
      patching file bitcoin/src/crypter.h
      patching file bitcoin/src/db.cpp
      patching file bitcoin/src/db.h
      patching file bitcoin/src/headers.h
      patching file bitcoin/src/init.cpp
      ...


    *** SEE ALSO 'press-path' ***

  [ pp | press-path ]:

    Arguments:
      (<head>)

    The pp or press-path command is available to allow the user to view (via
    stdout) the actual path to be pressed, given a <head> found in the flow.

    It is encouraged that a V user run this command before pressing to a given
    <head>.  From release 99993 forward, the flow is no longer used to calculate
    the press path from a given <head>.  Instead, with a given <head>, recurse
    all of the <head>'s antecedents and press those only.

  [ ss | sync-seals ]:

    Arguments:
      (<mirror_url> <sdir>)

    The ss or sync-seals command is available to allow the user to sync seal to
    an alternative directory.  Two arguments are required; the <mirror_url>
    from which to sync and the alternative or existing seals directory <sdir>.

    Example:
    ./v.pl ss http://thebitcoin.foundation seals2
    Seal sync complete to "seals2"

  [ sv | sync-vpatches ]:

    Arguments:
      (<mirror_url> <pdir> <vpatches>... )

    The sv or sync-vpatches command is available to allow the user to sync one or
    more individual vpatches to a alternative output directory.  Three arguments
    are required; the <mirror_url> from which to sync, the alternative or
    existing directory <pdir> and one or more <vpatches>.

    Example case, sync one vpatch to an existing patches directory:
    ./v.pl sv http://thebitcoin.foundation patches genesis.vpatch
    genesis.vpatch sync complete to "patches"

    Example case, sync more than one vpatch to an alternative patches directory:
    ./v.pl sv http://thebitcoin.foundation patches2 genesis.vpatch rm_rf_upnp.vpatch
    genesis.vpatch sync complete to "patches2"
    rm_rf_upnp.vpatch sync complete to "patches2"

  [ sa | sync-all-vpatches ]:

    Arguments:
     (<mirror_url> <pdir>)

    The sa or sync-all-vpatches command is available to allow the user to sync
    all vpatches from a given mirror to an alternative output directory.  Two
    arguments are required; the <mirror_url> from which to sync and the
    alternative or existing patches directory <pdir>.

    Example case, sync all vpatches to the pre-existing patches directory:
    ./v.pl sa http://thebitcoin.foundation patches
    Full vpatch sync complete to "patches"

    Example case, sync all vpatches to an alternative patches directory:
    ./v.pl sa http://thebitcoin.foundation patches2
    Full vpatch sync complete to "patches2"

  [ se | sync-everything ]:

    Arguments:
      (<mirror_url> <pdir> <sdir>)

    The se or sync-everything command is available to allow the user to sync
    all patches and seals from a given mirror to either existing or alternative
    directories.  Three arguments are required; the <mirror_url> from which to
    sync, the existing or alternative output patches directory <pdir>, and the
    existing or alternative seals directory <sdir>.

    ./v.pl se http://thebitcoin.foundation patches2 seals2
    Full vpatch sync complete to "patches2"
    Seal sync complete to "seals2"

  [  a | ante | antecedents ]:

    Arguments:
      (<vpatch>)

    The a or ante or antecedents command is available to allow the user to view
    the antecedents of a given vpatch.  One argument is required, the name of a
    <vpatch>.

    Example:
    ./v.pl a mod6_fix_dumpblock_params.vpatch
    Antecedent: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch \
    (asciilifeform, mod6) [ a/bitcoin/src/bitcoinrpc.cpp ]

    Example case, examine the antecedents of a given vpatch from an alternative
    directory:
    ./v.pl a asciilifeform_zap_showmyip_crud.vpatch pd patches2
    Antecedent: asciilifeform_zap_hardcoded_seeds.vpatch (asciilifeform, mod6) \
    [ a/bitcoin/src/net.cpp ]

  [  d | desc | descendants ]:

    Arguments:
      (<vpatch>)

    The d or desc or descendants command is available to allow the user to view
    the descendants of a given <vpatch>.  One argument is required, the name of
    a <vpatch>.

    Example:
    ./v.pl d mod6_fix_dumpblock_params.vpatch
    Descendant: asciilifeform_and_now_we_have_eatblock.vpatch \
    (asciilifeform, mod6) [ a/bitcoin/src/bitcoinrpc.cpp ]

    Example case, examine the descendants of a given vpatch from an alternative
    directory:
    ./v.pl d asciilifeform_zap_showmyip_crud.vpatch pd patches2
    Descendant: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch \
    (asciilifeform, mod6) [ a/bitcoin/src/net.cpp ]
 
  [  o | origin ]:

    Arguments:
      (<sha512_hash>)

    The o or origin command is available to allow the user to pass a sha512
    hash and view where the given hash originated in the source tree.

  [  g | graph ]:

    Arguments & Options:
      (<output_dotfile> [<output_svg_html_file>])

    The g or graph command is available to produce a topological flow graph in
    SVG format.  The command has a required argument, the <output_dotfile>.
    The output Dot language file can be used to generate the SVG HTML output
    file with the `dot` binary.  To produce the output Dot language file, the
    perl library Graph::Easy must be installed on the local environment.
    The optional command is given as a name for the  <output_svg_html_file>.
    If 'graphviz' is installed on the local environment, then the `dot` binary
    should be available for V to invoke and generate the SVG HTML output for
    the user automatically.  If it is not possible for the user to install
    'graphviz' on the local environment for whatever reason, the Dot language
    output file can be copied to a separate environment where 'graphviz' can be
    installed.  A command like this is used to generate the SVG HTML output
    with the `dot` binary:  `dot -Tsvg v-graph.dot > v-graph.html`.

    Example:
    ./v.pl g vpatch.dot vpatch-graph.html
    Printed Graphviz dot file to vpatch.dot
    Executed `dot` and built svg html output file: vpatch-graph.html

    Example case, build a graph from an alternative WoT, Patches and Seals
    directory:
    ./v.pl g vpatch-graph2.dot vpatch-graph2.html wd wot2 pd patches2 sd seals2
    Printed Graphviz dot file to vpatch-graph2.dot
    Executed `dot` and built svg html output file: vpatch-graph2.html

  [  v | version ]:

    The v or version command simply prints the current version of V to stdout.
    This command takes no options or arguments.

  [  h | help ]:

    The h or help command will print a longer, more verbose help message
    to stdout.  This command takes no options or arguments.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_users_manual.txt.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/v_users_manual.txt.mod6.sig?sha1=67252a9168b6e1b6807b444b5ac723aa52a8b51f>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: V-20180222.tar.gz
Type: application/x-gzip
Size: 16986 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/V-20180222.tar.gz?sha1=f25d091b7c81875defea228eba026885573d2783>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: V-20180222.tar.gz.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20180222/V-20180222.tar.gz.mod6.sig?sha1=f5bab3e2c64400143caa868425a60e0541d98e93>


More information about the BTC-dev mailing list