github.com/kaituanwang/hyperledger@v2.0.1+incompatible/docs/source/dev-setup/build.rst (about) 1 Building Hyperledger Fabric 2 --------------------------- 3 4 The following instructions assume that you have already set up your 5 :doc:`development environment <devenv>`. 6 7 To build Hyperledger Fabric: 8 9 :: 10 11 cd $GOPATH/src/github.com/hyperledger/fabric 12 make dist-clean all 13 14 Building the documentation 15 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 16 17 If you are contributing to the documentation, you can build the Fabric 18 documentation on your local machine. This allows you to check the formatting 19 of your changes using your web browser before you open a pull request. 20 21 You need to download the following prerequisites before you can build the 22 documentation: 23 24 - `Python 3.7 <https://wiki.python.org/moin/BeginnersGuide/Download>`__ 25 - `Pipenv <https://pipenv.readthedocs.io/en/latest/#install-pipenv-today>`__ 26 27 After you make your updates to the documentation source files, you can generate 28 a build that includes your changes by running the following commands: 29 30 :: 31 32 cd fabric/docs 33 pipenv install 34 pipenv shell 35 make html 36 37 This will generate all the html files in the ``docs/build/html`` folder. You can 38 open any file to start browsing the updated documentation using your browser. If you 39 want to make additional edits to the documentation, you can rerun ``make html`` 40 to incorporate the changes. 41 42 Running the unit tests 43 ~~~~~~~~~~~~~~~~~~~~~~ 44 45 Before running the unit tests, a PKCS #11 cryptographic token implementation 46 must be installed and configured. The PKCS #11 API is used by the bccsp 47 component of Fabric to interact with devices, such as hardware security modules 48 (HSMs), that store cryptographic information and perform cryptographic 49 computations. For test environments, SoftHSM can be used to satisfy this 50 requirement. 51 52 SoftHSM can be installed with the following commands: 53 54 :: 55 56 sudo apt install libsofthsm2 # Ubuntu 57 sudo yum install softhsm # CentOS 58 brew install softhsm # macOS 59 60 Once SoftHSM is installed, additional configuration may be required. For 61 example, the default configuration file stores token data in a system directory 62 that unprivileged users are unable to write to. 63 64 Configuration typically involves copying ``/etc/softhsm2.conf`` to 65 ``$HOME/.config/softhsm2/softhsm2.conf`` and changing ``directories.tokendir`` 66 to an appropriate location. Please see the man page for ``softhsm2.conf`` for 67 details. 68 69 After SoftHSM has been configured, the following command can be used to 70 initialize the required token: 71 72 :: 73 74 softhsm2-util --init-token --slot 0 --label "ForFabric" --so-pin 1234 --pin 98765432 75 76 If the test cannot find libsofthsm2.so in your environment, specify its path, 77 the PIN and the label of the token through environment variables. For example, 78 on macOS: 79 80 :: 81 82 export PKCS11_LIB="/usr/local/Cellar/softhsm/2.5.0/lib/softhsm/libsofthsm2.so" 83 export PKCS11_PIN=98765432 84 export PKCS11_LABEL="ForFabric" 85 86 Use the following sequence to run all unit tests: 87 88 :: 89 90 cd $GOPATH/src/github.com/hyperledger/fabric 91 make unit-test 92 93 To run a subset of tests, set the TEST_PKGS environment variable. 94 Specify a list of packages (separated by space), for example: 95 96 :: 97 98 export TEST_PKGS="github.com/hyperledger/fabric/core/ledger/..." 99 make unit-test 100 101 To run a specific test use the ``-run RE`` flag where RE is a regular 102 expression that matches the test case name. To run tests with verbose 103 output use the ``-v`` flag. For example, to run the ``TestGetFoo`` test 104 case, change to the directory containing the ``foo_test.go`` and 105 call/execute 106 107 :: 108 109 go test -v -run=TestGetFoo 110 111 112 Running Node.js Client SDK Unit Tests 113 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 115 You must also run the Node.js unit tests to ensure that the Node.js 116 client SDK is not broken by your changes. To run the Node.js unit tests, 117 follow the instructions 118 `here <https://github.com/hyperledger/fabric-sdk-node/blob/master/README.md>`__. 119 120 Configuration 121 ------------- 122 123 Configuration utilizes the `viper <https://github.com/spf13/viper>`__ 124 and `cobra <https://github.com/spf13/cobra>`__ libraries. 125 126 There is a **core.yaml** file that contains the configuration for the 127 peer process. Many of the configuration settings can be overridden on 128 the command line by setting ENV variables that match the configuration 129 setting, but by prefixing with *'CORE\_'*. For example, setting 130 `peer.networkId` can be accomplished with: 131 132 :: 133 134 CORE_PEER_NETWORKID=custom-network-id peer 135 136 .. Licensed under Creative Commons Attribution 4.0 International License 137 https://creativecommons.org/licenses/by/4.0/