summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt35
-rw-r--r--Dockerfile26
-rw-r--r--README.md2
-rw-r--r--doc/usage.md16
-rwxr-xr-xscripts/build_xmr-stak_docker/build_xmr-stak_docker.sh135
5 files changed, 140 insertions, 74 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 87c0e8a..a444085 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
project(xmr-stak)
-cmake_minimum_required(VERSION 3.0.1)
+cmake_minimum_required(VERSION 3.1.0)
# enforce C++11
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -42,23 +42,23 @@ set_property(CACHE XMR-STAK_CURRENCY PROPERTY STRINGS "all;monero;aeon")
set(XMR-STAK_COMPILE "native" CACHE STRING "select CPU compute architecture")
set_property(CACHE XMR-STAK_COMPILE PROPERTY STRINGS "native;generic")
-if("${XMR-STAK_COMPILE}" STREQUAL "native")
+if(XMR-STAK_COMPILE STREQUAL "native")
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(CMAKE_CXX_FLAGS "-march=native -mtune=native ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "-march=native -mtune=native ${CMAKE_C_FLAGS}")
endif()
-elseif("${XMR-STAK_COMPILE}" STREQUAL "generic")
+elseif(XMR-STAK_COMPILE STREQUAL "generic")
add_definitions("-DCONF_ENFORCE_OpenCL_1_2=1")
else()
message(FATAL_ERROR "XMR-STAK_COMPILE is set to an unknown value '${XMR-STAK_COMPILE}'")
endif()
-if("${XMR-STAK_CURRENCY}" STREQUAL "all")
+if(XMR-STAK_CURRENCY STREQUAL "all")
message(STATUS "Set miner currency to 'monero' and 'aeon'")
-elseif("${XMR-STAK_CURRENCY}" STREQUAL "aeon")
+elseif(XMR-STAK_CURRENCY STREQUAL "aeon")
message(STATUS "Set miner currency to 'aeon'")
add_definitions("-DCONF_NO_MONERO=1")
-elseif("${XMR-STAK_CURRENCY}" STREQUAL "monero")
+elseif(XMR-STAK_CURRENCY STREQUAL "monero")
message(STATUS "Set miner currency to 'monero'")
add_definitions("-DCONF_NO_AEON=1")
endif()
@@ -134,7 +134,7 @@ if(CUDA_ENABLE)
option(CUDA_SHOW_REGISTER "Show registers used for each kernel and compute architecture" OFF)
option(CUDA_KEEP_FILES "Keep all intermediate files that are generated during internal compilation steps" OFF)
- if("${CUDA_COMPILER}" STREQUAL "clang")
+ if(CUDA_COMPILER STREQUAL "clang")
set(CLANG_BUILD_FLAGS "-O3 -x cuda --cuda-path=${CUDA_TOOLKIT_ROOT_DIR}")
# activation usage of FMA
set(CLANG_BUILD_FLAGS "${CLANG_BUILD_FLAGS} -ffp-contract=fast")
@@ -152,9 +152,9 @@ if(CUDA_ENABLE)
set(CLANG_BUILD_FLAGS "${CLANG_BUILD_FLAGS} --cuda-gpu-arch=sm_${CUDA_ARCH_ELEM}")
endforeach()
- elseif("${CUDA_COMPILER}" STREQUAL "nvcc")
+ elseif(CUDA_COMPILER STREQUAL "nvcc")
# add c++11 for cuda
- if(NOT "${CMAKE_CXX_FLAGS}" MATCHES "-std=c\\+\\+11")
+ if(NOT CMAKE_CXX_FLAGS MATCHES "-std=c\\+\\+11")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11")
endif()
@@ -307,7 +307,7 @@ if(MICROHTTPD_ENABLE)
ENV "MICROHTTPD_ROOT"
PATH_SUFFIXES
lib)
- if("${MHTD}" STREQUAL "MHTD-NOTFOUND")
+ if(MHTD STREQUAL "MHTD-NOTFOUND")
message(FATAL_ERROR "microhttpd NOT found: use `-DMICROHTTPD_ENABLE=OFF` to build without http deamon support")
else()
set(LIBS ${LIBS} ${MHTD})
@@ -361,7 +361,7 @@ if(HWLOC_ENABLE)
PATH_SUFFIXES
lib)
- if("${HWLOC}" STREQUAL "MHTD-NOTFOUND" OR ${HWLOC_INCLUDE_DIR} STREQUAL "HWLOC_INCLUDE_DIR-NOTFOUND")
+ if(HWLOC STREQUAL "HWLOC-NOTFOUND" OR ${HWLOC_INCLUDE_DIR} STREQUAL "HWLOC_INCLUDE_DIR-NOTFOUND")
message(FATAL_ERROR "hwloc NOT found: use `-DHWLOC_ENABLE=OFF` to build without hwloc support")
else()
set(LIBS ${LIBS} ${HWLOC})
@@ -399,10 +399,10 @@ execute_process(
OUTPUT_STRIP_TRAILING_WHITESPACE
)
-if(NOT "${GIT_COMMIT_HASH}" STREQUAL "")
+if(NOT GIT_COMMIT_HASH STREQUAL "")
add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
endif()
-if(NOT "${GIT_BRANCH}" STREQUAL "")
+if(NOT GIT_BRANCH STREQUAL "")
add_definitions("-DGIT_BRANCH=${GIT_BRANCH}")
endif()
@@ -446,7 +446,10 @@ add_library(xmr-stak-c
${SRCFILES_C}
)
set_property(TARGET xmr-stak-c PROPERTY C_STANDARD 99)
-target_link_libraries(xmr-stak-c ${MHTD} ${LIBS})
+if(MICROHTTPD_ENABLE)
+ target_link_libraries(xmr-stak-c ${MHTD})
+endif()
+target_link_libraries(xmr-stak-c ${LIBS})
# compile generic backend files
file(GLOB BACKEND_CPP
@@ -470,7 +473,7 @@ if(CUDA_FOUND)
"xmrstak/backend/nvidia/nvcc_code/*.cu"
"xmrstak/backend/nvidia/*.cpp")
- if("${CUDA_COMPILER}" STREQUAL "clang")
+ if(CUDA_COMPILER STREQUAL "clang")
# build device code with clang
add_library(
xmrstak_cuda_backend
@@ -530,7 +533,7 @@ endif()
# do not install the binary if the project and install are equal
-if( NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "${PROJECT_BINARY_DIR}" )
+if( NOT CMAKE_INSTALL_PREFIX STREQUAL PROJECT_BINARY_DIR )
install(TARGETS xmr-stak
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
if(CUDA_FOUND)
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..3e996ef
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,26 @@
+# Latest version of ubuntu
+FROM nvidia/cuda:9.0-base
+
+# Default git repository
+ENV GIT_REPOSITORY https://github.com/fireice-uk/xmr-stak.git
+ENV XMRSTAK_CMAKE_FLAGS -DXMR-STAK_COMPILE=generic -DCUDA_ENABLE=ON -DOpenCL_ENABLE=OFF
+
+# Innstall packages
+RUN apt-get update \
+ && set -x \
+ && apt-get install -qq --no-install-recommends -y ca-certificates cmake cuda-core-9-0 git cuda-cudart-dev-9-0 libhwloc-dev libmicrohttpd-dev libssl-dev \
+ && git clone $GIT_REPOSITORY \
+ && cd /xmr-stak \
+ && cmake ${XMRSTAK_CMAKE_FLAGS} . \
+ && make \
+ && cd - \
+ && mv /xmr-stak/bin/* /usr/local/bin/ \
+ && rm -rf /xmr-stak \
+ && apt-get purge -y -qq cmake cuda-core-9-0 git cuda-cudart-dev-9-0 libhwloc-dev libmicrohttpd-dev libssl-dev \
+ && apt-get clean -qq
+
+VOLUME /mnt
+
+WORKDIR /mnt
+
+ENTRYPOINT ["/usr/local/bin/xmr-stak"]
diff --git a/README.md b/README.md
index 5609d9d..4131bae 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,7 @@ XMR-Stak is a universal Stratum pool miner. This miner supports CPUs, AMD and NV
## Download
-You can find the latest releases and precompiled binaries on GitHub under [Releases](https://github.com/xmr-stak/xmr-stak/releases).
+You can find the latest releases and precompiled binaries on GitHub under [Releases](https://github.com/fireice_uk/xmr-stak/releases).
If you are running on Linux (especially Linux VMs), checkout [Linux Portable Binary](doc/Linux_deployment.md).
## Default Developer Donation
diff --git a/doc/usage.md b/doc/usage.md
index 60825b4..a13586f 100644
--- a/doc/usage.md
+++ b/doc/usage.md
@@ -49,6 +49,22 @@ The Following options temporary overwrites the config file settings:
-p, --pass PASSWD pool password, in the most cases x or empty ""
```
+## Docker image usage
+
+You can run the Docker image the following way:
+
+```
+docker run --rm -it -u $(id -u):$(id -g) --name fireice-uk/xmr-stak -v "$PWD":/mnt xmr-stak
+docker stop xmr-stak
+docker run --rm -it -u $(id -u):$(id -g) --name fireice-uk/xmr-stak -v "$PWD":/mnt xmr-stak --config config.txt
+```
+
+Debug the docker image by getting inside:
+
+```
+docker run --entrypoint=/bin/bash --rm -it -u $(id -u):$(id -g) --name fireice-uk/xmr-stak -v "$PWD":/mnt xmr-stak
+```
+
## HTML and JSON API report configuraton
To configure the reports shown on the [README](README.md) side you need to edit the httpd_port variable. Then enable wifi on your phone and navigate to [miner ip address]:[httpd_port] in your phone browser. If you want to use the data in scripts, you can get the JSON version of the data at url [miner ip address]:[httpd_port]/api.json
diff --git a/scripts/build_xmr-stak_docker/build_xmr-stak_docker.sh b/scripts/build_xmr-stak_docker/build_xmr-stak_docker.sh
index e046cb0..bfee1b8 100755
--- a/scripts/build_xmr-stak_docker/build_xmr-stak_docker.sh
+++ b/scripts/build_xmr-stak_docker/build_xmr-stak_docker.sh
@@ -5,110 +5,131 @@ if [[ $EUID -ne 0 ]]; then
exit 1
fi
-if [ -d xmr-stak-cpu ]; then
- git -C xmr-stak-cpu clean -fd
+if [ -d xmr-stak ]; then
+ git -C xmr-stak clean -fd
else
- git clone https://github.com/fireice-uk/xmr-stak-cpu.git
+ git clone https://github.com/fireice-uk/xmr-stak.git
fi
+wget -c https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
+chmod a+x cuda_*_linux-run
+
########################
-# Fedora 26
+# Fedora 27
########################
-docker run --rm -it -v $PWD/xmr-stak-cpu:/xmr-stak-cpu fedora:26 /bin/bash -c "
-set -ex ;
-dnf install -y -q gcc gcc-c++ hwloc-devel libmicrohttpd-devel libstdc++-static make openssl-devel cmake ;
-cd /xmr-stak-cpu ;
-cmake -DCMAKE_LINK_STATIC=ON . ;
-make install ;
+# CUDA is not going to work on Fedora 27 beacuse it's only support these distributions: http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
+docker run --rm -it -v $PWD:/mnt fedora:27 /bin/bash -c "
+set -x ;
+dnf install -y -q cmake gcc-c++ hwloc-devel libmicrohttpd-devel libstdc++-static make openssl-devel;
+cd /mnt/xmr-stak ;
+cmake -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF . ;
+make ;
"
-mv xmr-stak-cpu/bin/xmr-stak-cpu xmr-stak-cpu_fedora_26
-git -C xmr-stak-cpu clean -fd
+
+test -d fedora_27 || mkdir fedora_27
+mv xmr-stak/bin/* fedora_27
+git -C xmr-stak clean -fd
########################
# Ubuntu (17.04)
########################
-docker run --rm -it -v $PWD/xmr-stak-cpu:/xmr-stak-cpu ubuntu:17.04 /bin/bash -c "
-set -ex ;
+docker run --rm -it -v $PWD:/mnt ubuntu:17.04 /bin/bash -c "
+set -x ;
apt update -qq ;
apt install -y -qq libmicrohttpd-dev libssl-dev cmake build-essential libhwloc-dev ;
-cd /xmr-stak-cpu ;
-cmake -DCMAKE_LINK_STATIC=ON . ;
-make install ;
+cd /mnt/xmr-stak ;
+/mnt/cuda_*_linux-run --silent --toolkit ;
+cmake -DCUDA_ENABLE=ON -DOpenCL_ENABLE=OFF . ;
+make ;
"
-mv xmr-stak-cpu/bin/xmr-stak-cpu xmr-stak-cpu_ubuntu_17.04
-git -C xmr-stak-cpu clean -fd
+
+test -d ubuntu_17.10 || mkdir ubuntu_17.10
+mv xmr-stak/bin/* ubuntu_17.10
+git -C xmr-stak clean -fd
########################
# Ubuntu 16.04
########################
-docker run --rm -it -v $PWD/xmr-stak-cpu:/xmr-stak-cpu ubuntu:16.04 /bin/bash -c "
-set -ex ;
+docker run --rm -it -v $PWD:/mnt ubuntu:16.04 /bin/bash -c "
+set -x ;
apt update -qq ;
-apt install -y -qq libmicrohttpd-dev libssl-dev cmake build-essential libhwloc-dev ;
-cd /xmr-stak-cpu ;
-cmake -DCMAKE_LINK_STATIC=ON . ;
-make install ;
+apt install -y -qq cmake g++ libmicrohttpd-dev libssl-dev libhwloc-dev ;
+cd /mnt/xmr-stak ;
+/mnt/cuda_*_linux-run --silent --toolkit ;
+cmake -DCUDA_ENABLE=ON -DOpenCL_ENABLE=OFF . ;
+make ;
"
-mv xmr-stak-cpu/bin/xmr-stak-cpu xmr-stak-cpu_ubuntu_16.04
-git -C xmr-stak-cpu clean -fd
+
+test -d ubuntu_16.04 || mkdir ubuntu_16.04
+mv xmr-stak/bin/* ubuntu_16.04
+git -C xmr-stak clean -fd
########################
# Ubuntu 14.04
########################
-docker run --rm -it -v $PWD/xmr-stak-cpu:/xmr-stak-cpu ubuntu:14.04 /bin/bash -c "
-set -ex ;
+docker run --rm -it -v $PWD:/mnt ubuntu:14.04 /bin/bash -c "
+set -x ;
apt update -qq ;
apt install -y -qq curl libmicrohttpd-dev libssl-dev libhwloc-dev software-properties-common ;
add-apt-repository -y ppa:ubuntu-toolchain-r/test ;
apt update -qq ;
-apt install -y -qq gcc-7 g++-7 make ;
-update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 1 --slave /usr/bin/g++ g++ /usr/bin/g++-7 ;
-curl -L https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz | tar -xzf - -C /tmp/ ;
-( cd /tmp/cmake-3.9.0/ && ./configure && make && sudo make install && cd - ) > /dev/null
+apt install -y -qq gcc-6 g++-6 make ;
+update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 1 --slave /usr/bin/g++ g++ /usr/bin/g++-6 ;
+curl -L https://cmake.org/files/LatestRelease/cmake-3.10.0.tar.gz | tar -xzf - -C /tmp/ ;
+( cd /tmp/cmake-*/ && ./configure && make && sudo make install && cd - ) > /dev/null
update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force ;
-cd /xmr-stak-cpu ;
-cmake -DCMAKE_LINK_STATIC=ON . ;
-make install ;
+cd /mnt/xmr-stak ;
+/mnt/cuda_*_linux-run --silent --toolkit ;
+cmake -DCUDA_ENABLE=ON -DOpenCL_ENABLE=OFF . ;
+make ;
"
-mv xmr-stak-cpu/bin/xmr-stak-cpu xmr-stak-cpu_ubuntu_14.04
-git -C xmr-stak-cpu clean -fd
+
+test -d ubuntu_14.04 || mkdir ubuntu_14.04
+mv xmr-stak/bin/* ubuntu_14.04
+git -C xmr-stak clean -fd
########################
# CentOS 7
########################
-docker run --rm -it -v $PWD/xmr-stak-cpu:/xmr-stak-cpu centos:7 /bin/bash -c "
-set -ex ;
+# CUDA is not going to work on CentOS/RHEL beacuse it's only support gcc-4 in these distributions: http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
+docker run --rm -it -v $PWD:/mnt centos:7 /bin/bash -c "
+set -x ;
yum install -y -q centos-release-scl epel-release ;
-yum install -y -q cmake3 devtoolset-4-gcc* hwloc-devel libmicrohttpd-devel openssl-devel make ;
-scl enable devtoolset-4 - << EOF
-cd /xmr-stak-cpu ;
-cmake3 -DCMAKE_LINK_STATIC=ON . ;
-make install ;
+yum install -y -q cmake3 devtoolset-7-gcc* hwloc-devel libmicrohttpd-devel make openssl-devel perl ;
+scl enable devtoolset-7 - << EOF
+cd /mnt/xmr-stak ;
+cmake3 -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF . ;
+make ;
EOF
"
-mv xmr-stak-cpu/bin/xmr-stak-cpu xmr-stak-cpu_centos_7
-git -C xmr-stak-cpu clean -fd
+
+test -d centos_7 || mkdir centos_7
+mv xmr-stak/bin/* centos_7
+git -C xmr-stak clean -fd
########################
# CentOS 6.x
########################
-docker run --rm -it -v $PWD/xmr-stak-cpu:/xmr-stak-cpu centos:6 /bin/bash -c "
-set -ex ;
+# CUDA is not going to work on CentOS/RHEL beacuse it's only support gcc-4 in these distributions: http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
+docker run --rm -it -v $PWD:/mnt centos:6 /bin/bash -c "
+set -x ;
yum install -y -q centos-release-scl epel-release ;
-yum install -y -q cmake3 devtoolset-4-gcc* hwloc-devel libmicrohttpd-devel openssl-devel make ;
-scl enable devtoolset-4 - << EOF
-cd /xmr-stak-cpu ;
-cmake3 -DCMAKE_LINK_STATIC=ON . ;
-make install ;
+yum install -y -q cmake3 devtoolset-7-gcc* hwloc-devel libmicrohttpd-devel openssl-devel make ;
+scl enable devtoolset-7 - << EOF
+cd /mnt/xmr-stak ;
+cmake3 -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF . ;
+make ;
EOF
"
-mv xmr-stak-cpu/bin/xmr-stak-cpu xmr-stak-cpu_centos_6
-git -C xmr-stak-cpu clean -fd
-rm -rf xmr-stak-cpu
+test -d centos_6 || mkdir centos_6
+mv xmr-stak/bin/* centos_6
+git -C xmr-stak clean -fd
+
+rm -rf xmr-stak
OpenPOWER on IntegriCloud