Gustavo Adolfo Mesa Roldan 1 week ago
parent
commit
f6ad7dbc69
4 changed files with 60 additions and 15 deletions
  1. 41 10
      Dockerfile
  2. 4 2
      docker-compose.yml
  3. 14 2
      ecoin/src/leveldb/port/atomic_pointer.h
  4. 1 1
      ecoin/src/makefile.linux

+ 41 - 10
Dockerfile

@@ -1,8 +1,10 @@
-FROM debian:latest AS build
+FROM debian:latest
+
 RUN apt-get update && \
 RUN apt-get update && \
     apt-get upgrade -y && \
     apt-get upgrade -y && \
     apt-get install -y \
     apt-get install -y \
         build-essential \
         build-essential \
+        libboost-all-dev \
         libdb5.3-dev \
         libdb5.3-dev \
         libdb5.3++-dev \
         libdb5.3++-dev \
         libminiupnpc-dev \
         libminiupnpc-dev \
@@ -12,21 +14,50 @@ RUN apt-get update && \
         miniupnpc \
         miniupnpc \
         qtbase5-dev \
         qtbase5-dev \
         qttools5-dev-tools \
         qttools5-dev-tools \
-        zlib1g-dev && \        
+        zlib1g-dev \
+        qt5-qmake \
+        qtbase5-dev \
+        gcc-aarch64-linux-gnu \
+        g++-aarch64-linux-gnu \
+        g++-arm-linux-gnueabihf && \        
     rm -rf /var/lib/apt/lists/*
     rm -rf /var/lib/apt/lists/*
 COPY ./ecoin /ecoin
 COPY ./ecoin /ecoin
 WORKDIR /ecoin
 WORKDIR /ecoin
+
+# Build el bootstrap ese.
+# Este mierda de RUN, no se por que coño peta la 1º vez.
+# Pero a mi me va siempre la 2º...
 RUN cd /ecoin/src/boost_1_68_0 && \
 RUN cd /ecoin/src/boost_1_68_0 && \
-    ./bootstrap.sh && \
-    ./b2 install --prefix=/usr/local
-# Build makefile
+    ./bootstrap.sh \
+# amr64
+    ./b2 toolset=gcc-arm cxxflags="-march=armv8-a" install --prefix=/usr/local
+# amr32
+#   ./b2 toolset=gcc-arm cxxflags="-march=armv7-a" install --prefix=/usr/local
+
+
+# Build leveldb
+RUN cd /ecoin/src \
+    rm -rf leveldb \
+    git clone --depth=1 https://github.com/google/leveldb.git \
+    cd leveldb \
+    mkdir -p build \
+    cd build \
+    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 .. \
+    make -j$(nproc)
+
+# Build qt5 make make
 RUN cd /ecoin && \
 RUN cd /ecoin && \
-    /usr/lib/x86_64-linux-gnu/qt5/bin/qmake \
+# amr64
+    /usr/lib/aarch64-linux-gnu/qt5/bin/qmake  \
+# amr64
+#    /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake \
         USE_UPNP=- USE_IPV6=- USE_QRCODE=1 \
         USE_UPNP=- USE_IPV6=- USE_QRCODE=1 \
         -o Makefile ecoin-qt.pro
         -o Makefile ecoin-qt.pro
-# Build leveldb
-RUN cd /ecoin/src/leveldb && \
-    TARGET_OS=Linux make libleveldb.a libmemenv.a
+
+# RUN cd /ecoin/src/leveldb && \
+#     TARGET_OS=Linux make libleveldb.a libmemenv.a
+
+
 # Build daemon based wallet
 # Build daemon based wallet
 RUN cd /ecoin/src && \
 RUN cd /ecoin/src && \
     make \
     make \
@@ -35,4 +66,4 @@ RUN cd /ecoin/src && \
     strip ecoind
     strip ecoind
 
 
 RUN cp -r /ecoin/src/ecoind /usr/local/bin/ecoind
 RUN cp -r /ecoin/src/ecoind /usr/local/bin/ecoind
-RUN export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH && ldconfig
+RUN export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH && ldconfig

+ 4 - 2
docker-compose.yml

@@ -2,8 +2,10 @@ version: '2'
 
 
 services:
 services:
   ecoin:
   ecoin:
-    build: ./
-    container_name: ecoin
+    platform: linux/arm64
+    build:
+      context: "."
+    container_name: ecoin  
     hostname: ecoin
     hostname: ecoin
     restart: always
     restart: always
     command: /entrypoint.sh
     command: /entrypoint.sh

+ 14 - 2
ecoin/src/leveldb/port/atomic_pointer.h

@@ -209,8 +209,20 @@ class AtomicPointer {
 
 
 // We have neither MemoryBarrier(), nor <cstdatomic>
 // We have neither MemoryBarrier(), nor <cstdatomic>
 #else
 #else
-#error Please implement AtomicPointer for this platform.
-
+  #include <atomic>
+
+  namespace leveldb {
+    class AtomicPointer {
+      private:
+        std::atomic<void*> rep_;
+      public:
+        explicit AtomicPointer(void* p = nullptr) : rep_(p) {}
+        void* Acquire_Load() const { return rep_.load(std::memory_order_acquire); }
+        void Release_Store(void* v) { rep_.store(v, std::memory_order_release); }
+        void* NoBarrier_Load() const { return rep_.load(std::memory_order_relaxed); }
+        void NoBarrier_Store(void* v) { rep_.store(v, std::memory_order_relaxed); }
+    };
+  }  // namespace leveldb
 #endif
 #endif
 
 
 #undef LEVELDB_HAVE_MEMORY_BARRIER
 #undef LEVELDB_HAVE_MEMORY_BARRIER

+ 1 - 1
ecoin/src/makefile.linux

@@ -6,7 +6,7 @@ USE_IPV6:=0
 LINK:=$(CXX)
 LINK:=$(CXX)
 ARCH:=$(system lscpu | head -n 1 | awk '{print $2}')
 ARCH:=$(system lscpu | head -n 1 | awk '{print $2}')
 
 
-BOOST_DIR := /usr/local/include
+BOOST_DIR := /usr/local
 BOOST_INCLUDE_PATH := $(BOOST_DIR)/include
 BOOST_INCLUDE_PATH := $(BOOST_DIR)/include
 BOOST_LIB_PATH := $(BOOST_DIR)/lib
 BOOST_LIB_PATH := $(BOOST_DIR)/lib