Skip to content

Commit

Permalink
Merge branch 'staging' v0.14.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Vandeberg committed Sep 8, 2016
2 parents 045c2a3 + ab2ad53 commit 637ecec
Show file tree
Hide file tree
Showing 93 changed files with 7,025 additions and 1,350 deletions.
53 changes: 0 additions & 53 deletions BUILD_OSX.md

This file was deleted.

11 changes: 0 additions & 11 deletions BUILD_UBUNTU.md

This file was deleted.

4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ if( WIN32 )
set(CRYPTO_LIB)

if( MSVC )

add_compile_options(/wd4503 /wd4267 /wd4244)
#looks like this flag can have different default on some machines.
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
Expand Down Expand Up @@ -150,7 +150,7 @@ else( WIN32 ) # Apple AND Linux
if( APPLE )
# Apple Specific Options Here
message( STATUS "Configuring Steem on OS X" )
set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -stdlib=libc++ -Wall" )
set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -stdlib=libc++ -Wall -Wno-conversion" )
else( APPLE )
# Linux Specific Options Here
message( STATUS "Configuring Steem on Linux" )
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,7 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.

INPUT = doc/main.dox libraries/chain libraries/chain/db libraries/app libraries/wallet
INPUT = doc/main.dox libraries/chain libraries/chain/db libraries/app libraries/wallet libraries/plugins

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand Down
84 changes: 76 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,18 @@ Introducing Steem (beta)
-----------------

Steem is an experimental Proof of Work blockchain with an unproven consensus
algorithm.
algorithm.

- Currency Symbol STEEM
- Currency Symbol STEEM
- 1.000 STEEM block reward at launch
- Approximately 100% APR long term inflation rate

Public Announcement & Discussion
--------------------------------

Steem was announced on [Bitcointalk](https://bitcointalk.org/index.php?topic=1410943.new) prior to
any the start of any mining.
Steem was announced on [Bitcointalk](https://bitcointalk.org/index.php?topic=1410943.new) prior to the start of any mining.

No Support & No Warranty
No Support & No Warranty
------------------------
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Expand All @@ -28,20 +27,23 @@ Code is Documentation
---------------------

Rather than attempt to describe the rules of the blockchain, it is up to
each individual to inspect the code to understand the consensus rules.
each individual to inspect the code to understand the consensus rules.

Seed Nodes
----------

xeldal 45.55.217.111:12150 (USA)
ihashfury 104.168.154.160:40696
lafona 52.4.250.181:39705
ihashfury 104.168.154.160:40696
lafona 52.4.250.181:39705
steempty 109.74.206.93:2001 steem.clawmap.com (UK)
steem-id 45.114.118.146:2001 (Indonesia)
cyrano.witness 81.89.101.133:2001 (Jena, Germany)
kushed 40.76.37.6:2001 steem.kushed.com (Azure)
nextgencrypto 104.207.152.44:2201 steemwitness.com (Los Angeles, USA)
pharesim 78.46.32.4 steemd.pharesim.me (Falkenstein, German)
liondani 212.117.213.186:2016 (Switzerland)
someguy123 199.241.186.130:2001 steemit-seed.someguy123.com:2001
smooth.witness 52.74.152.79:2001

52.38.66.234:2001
52.37.169.52:2001
Expand All @@ -67,3 +69,69 @@ used by the account. This means it does not favor mining pools.

Make sure that your accountname is unique and not already used by someone else or your proof of work
might not be accepted by the blockchain.

OS-specific build instructions
------------------------------

See [here](doc/build-ubuntu.md) for Linux and [here](doc/build-osx.md) for OSX (Apple).

cmake Build Options
--------------------------

### CMAKE_BUILD_TYPE=[Release/Debug]

Specifies whether to build with or without optimization and without or with the symbol table for debugging. Unless you are specifically
debugging or running tests, it is recommended to build as release.

### LOW_MEMORY_NODE=[OFF/ON]

Builds steemd to be a consensus only low memory node. Data and fields not needed for consensus are not stored in the object database.
This option is recommended for witnesses and seed-nodes.

### ENABLE_CONTENT_PATCHING=[ON/OFF]

Allows content to be updated using a patch rather than a complete replacement.
If you do not need an API server or need to see the result of patching content then you can set this to OFF.

### CLEAR_VOTES=[ON/OFF]

Clears old votes from memory that are not longer required for consensus.

### BUILD_STEEM_TESTNET=[OFF/ON]

Builds steemd for use in a private testnet. Also required for correctly building unit tests

Testing
-------

The unit test target is `make chain_test`
This creates an executable `./tests/chain_test` that will run all unit tests.

Tests are broken in several categories:
```
basic_tests // Tests of "basic" functionality
block_tests // Tests of the block chain
live_tests // Tests on live chain data (currently only past hardfork testing)
operation_tests // Unit Tests of Steem operations
operation_time_tests // Tests of Steem operations that include a time based component (ex. vesting withdrawals)
serialization_tests // Tests related of serialization
```

Code Coverage Testing
---------------------

If you have not done so, install lcov `brew install lcov`

```
cmake -D BUILD_STEEM_TESTNET=ON -D ENABLE_COVERAGE_TESTING=true -D CMAKE_BUILD_TYPE=Debug .
make
lcov --capture --initial --directory . --output-file base.info --no-external
tests/chain_test
lcov --capture --directory . --output-file test.info --no-external
lcov --add-tracefile base.info --add-tracefile test.info --output-file total.info
lcov -o interesting.info -r total.info tests/\*
mkdir -p lcov
genhtml interesting.info --output-directory lcov --prefix `pwd`
```

Now open `lcov/index.html` in a browser
32 changes: 0 additions & 32 deletions doc/bcd-trigger.md

This file was deleted.

64 changes: 64 additions & 0 deletions doc/build-osx.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
Steem OS X Build Instructions
===============================

1. Install XCode and its command line tools by following the instructions here: https://guide.macports.org/#installing.xcode.
In OS X 10.11 (El Capitan) and newer, you will be prompted to install developer tools when running a devloper command in the terminal. This step may not be needed.


2. Install Homebrew by following the instructions here: http://brew.sh/

3. Initialize Homebrew:
```
brew doctor
brew update
brew tap homebrew/versions
```

4. Install dependencies:
```
brew install homebrew/versions/boost160 cmake git openssl autoconf automake libtool python3
```
Note: brew recently updated to boost 1.61.0, which is not yet supported by Steem. Until then, this will allow you to
install boost 1.60.0.


5. *Optional.* To use TCMalloc in LevelDB:
```
brew install google-perftools
```

6. Clone the Steem repository:
```
git clone https://github.com/steemit/steem.git
cd steem
```

7. Build Steem:
```
export OPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2h_1/
export BOOST_ROOT=/usr/local/Cellar/boost160/1.60.0/
git submodule update --init --recursive
cmake -DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=Release .
make
```

Note, if you have multiple cores and you would like to compile faster, you can append `-j <number of threads>` to `make` e.g.:
```
make -j4
```

Also, some useful build targets for `make` are:
```
steemd
chain_test
cli_wallet
```

e.g.:
```
make steemd
```
This will only build steemd

8. cmake Build Options:
See README.md for a detailed description of available cmake options
65 changes: 65 additions & 0 deletions doc/build-ubuntu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
### Ubuntu 16.04

For Ubuntu 16.04 users, after installing the right packages with `apt` Steem will build out of the box without further effort:

# Required packages
sudo apt-get install git make cmake g++ libssl-dev autoconf libtool

# Boost packages (also required)
sudo apt-get install libboost-thread-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-signals-dev libboost-serialization-dev libboost-chrono-dev libboost-test-dev libboost-context-dev libboost-locale-dev libboost-coroutine-dev libboost-iostreams-dev

# Optional packages (not required, but will make a nicer experience)
sudo apt-get install doxygen perl libreadline-dev libncurses5-dev

git clone https://github.com/steemit/steem
cd steem
git submodule update --init --recursive
cmake -DCMAKE_BUILD_TYPE=Release .
make steemd
make cli_wallet

You can add the `-j` parameter to the `make` command to compile in parallel on a machine with lots of memory and multiple cores (e.g. `make -j4 steemd`).

### Ubuntu 14.04

Here are the required packages:

# Required packages
sudo apt-get install git make cmake g++ libssl-dev autoconf libtool

# Packages required to build Boost
sudo apt-get install python-dev libbz2-dev

# Optional packages (not required, but will make a nicer experience)
sudo apt-get install doxygen perl libreadline-dev libncurses5-dev

Steem requires Boost 1.57 or later. The Boost provided in the Ubuntu 14.04 package manager (Boost 1.55) is too old. So building Steem on Ubuntu 14.04 requires downloading and installing a more recent version of Boost.

According to [this mailing list post](http://boost.2283326.n4.nabble.com/1-58-1-bugfix-release-necessary-td4674686.html), Boost 1.58 is not compatible with gcc 4.8 (the default C++ compiler for Ubuntu 16.04) when compiling in C++11 mode (which Steem does). So we will use Boost 1.57; if you try to build with any other version, you will probably have a bad time.

Here is how to build and install Boost 1.57 into your user's home directory (make sure you install all the packages above first):

BOOST_ROOT=$HOME/opt/boost_1_57_0
wget -c 'http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.tar.bz2/download' -O boost_1_57_0.tar.bz2
[ $( sha256sum boost_1_57_0.tar.bz2 | cut -d ' ' -f 1 ) == "910c8c022a33ccec7f088bd65d4f14b466588dda94ba2124e78b8c57db264967" ] || ( echo 'Corrupt download' ; exit 1 )
tar xjf boost_1_57_0.tar.bz2
cd boost_1_57_0
./bootstrap.sh "--prefix=$BOOST_ROOT"
./b2 install

Then the instructions are the same as for Steem:

git clone https://github.com/steemit/steem
cd steem
git submodule update --init --recursive
cmake -DCMAKE_BUILD_TYPE=Release .
make steemd
make cli_wallet

### Other setups

- OSX (Apple) build instructions are [here](BUILD_OSX.md).
- Windows build instructions do not yet exist.

- The developers normally compile with gcc and clang. These compilers should be well-supported.
- Community members occasionally attempt to compile the code with mingw, Intel and Microsoft compilers. These compilers may work, but the developers do not use them. Pull requests fixing warnings / errors from these compilers are accepted.
2 changes: 1 addition & 1 deletion external_plugins/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

# for each subdirectory containing a CMakeLists.txt, add that subdirectory

set( ENV{STEEMIT_EXTERNAL_PLUGINS} "" )
file( GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} * )
foreach( child ${children} )
if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${child}" )
Expand Down
1 change: 1 addition & 0 deletions libraries/app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ INSTALL( TARGETS
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
INSTALL( FILES ${HEADERS} DESTINATION "include/steemit/app" )
Loading

0 comments on commit 637ecec

Please sign in to comment.