| 
									
										
										
										
											2019-03-02 01:26:14 +01:00
										 |  |  | FROM ubuntu:18.04
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENV DEBIAN_FRONTEND=noninteractive | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Create a user with sudo rights
 | 
					
						
							|  |  |  | RUN apt-get update && apt-get -y install sudo
 | 
					
						
							|  |  |  | RUN useradd -m sdr && echo "sdr:sdr" | chpasswd && adduser sdr sudo
 | 
					
						
							|  |  |  | RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
 | 
					
						
							|  |  |  | USER sdr
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-02 11:34:42 +01:00
										 |  |  | # Some essentials
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install \
 | 
					
						
							|  |  |  | 	vim \
 | 
					
						
							|  |  |  | 	openssh-server \
 | 
					
						
							|  |  |  | 	iputils-ping \
 | 
					
						
							|  |  |  | 	traceroute \
 | 
					
						
							|  |  |  | 	iproute2
 | 
					
						
							|  |  |  | 	
 | 
					
						
							|  |  |  | # Configure SSH for X-forwarding
 | 
					
						
							| 
									
										
										
										
											2019-03-02 12:39:22 +01:00
										 |  |  | RUN sudo sed -i '/X11Forwarding/c\X11Forwarding yes' /etc/ssh/sshd_config \
 | 
					
						
							|  |  |  | 	&& sudo sed -i '/X11UseLocalhost/c\X11UseLocalhost no' /etc/ssh/sshd_config
 | 
					
						
							| 
									
										
										
										
											2019-03-02 11:34:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-02 01:26:14 +01:00
										 |  |  | # Prepare buiid and install environment
 | 
					
						
							|  |  |  | RUN sudo mkdir /opt/build /opt/install \
 | 
					
						
							|  |  |  |     && sudo chown sdr:sdr /opt/build /opt/install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Configure tzdata manually
 | 
					
						
							|  |  |  | ENV TZONE=Europe/Paris
 | 
					
						
							|  |  |  | RUN sudo ln -fs /usr/share/zoneinfo/$TZONE /etc/localtime \
 | 
					
						
							|  |  |  |     && sudo apt-get update && sudo apt-get -y install tzdata
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Install base build packages dependencies - step 1
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install \
 | 
					
						
							|  |  |  |     git \
 | 
					
						
							|  |  |  |     cmake \
 | 
					
						
							|  |  |  |     g++ \
 | 
					
						
							|  |  |  |     pkg-config \
 | 
					
						
							|  |  |  |     autoconf \
 | 
					
						
							|  |  |  |     automake \
 | 
					
						
							|  |  |  |     libtool \
 | 
					
						
							|  |  |  |     libfftw3-dev \
 | 
					
						
							|  |  |  |     libusb-1.0-0-dev \
 | 
					
						
							|  |  |  |     libusb-dev
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Install base build packages dependencies - Qt5
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install \
 | 
					
						
							|  |  |  |     qt5-default \
 | 
					
						
							|  |  |  |     qtbase5-dev \
 | 
					
						
							|  |  |  |     qtchooser \
 | 
					
						
							|  |  |  |     libqt5multimedia5-plugins \
 | 
					
						
							|  |  |  |     qtmultimedia5-dev \
 | 
					
						
							|  |  |  |     qttools5-dev \
 | 
					
						
							|  |  |  |     qttools5-dev-tools \
 | 
					
						
							|  |  |  |     libqt5opengl5-dev \
 | 
					
						
							|  |  |  |     qtbase5-dev
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Install base build packages dependencies - Boost
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install \
 | 
					
						
							|  |  |  |     libboost-all-dev
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Install base build packages dependencies - the rest
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install \
 | 
					
						
							|  |  |  |     libasound2-dev \
 | 
					
						
							|  |  |  |     pulseaudio \
 | 
					
						
							|  |  |  |     libopencv-dev \
 | 
					
						
							|  |  |  |     libxml2-dev \
 | 
					
						
							|  |  |  |     bison \
 | 
					
						
							|  |  |  |     flex \
 | 
					
						
							|  |  |  |     ffmpeg \
 | 
					
						
							|  |  |  |     libavcodec-dev \
 | 
					
						
							|  |  |  |     libavformat-dev \
 | 
					
						
							|  |  |  |     libopus-dev
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # CM256cc
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/f4exb/cm256cc.git \
 | 
					
						
							|  |  |  |     && cd cm256cc \
 | 
					
						
							|  |  |  |     && git reset --hard 64beaaa \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/cm256cc .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # MBElib
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/szechyjs/mbelib.git \
 | 
					
						
							|  |  |  |     && cd mbelib \
 | 
					
						
							|  |  |  |     && git reset --hard e2d84c1 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/mbelib .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # SerialDV
 | 
					
						
							|  |  |  | RUN cd /opt/build \ 
 | 
					
						
							|  |  |  |     && git clone https://github.com/f4exb/serialDV.git \
 | 
					
						
							|  |  |  |     && cd serialDV \
 | 
					
						
							|  |  |  |     && git reset --hard 06caac6 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/serialdv .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  |     
 | 
					
						
							|  |  |  | # DSDcc    
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/f4exb/dsdcc.git \
 | 
					
						
							|  |  |  |     && cd dsdcc \
 | 
					
						
							|  |  |  |     && git reset --hard 2a89df4 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/dsdcc -DUSE_MBELIB=ON -DLIBMBE_INCLUDE_DIR=/opt/install/mbelib/include -DLIBMBE_LIBRARY=/opt/install/mbelib/lib/libmbe.so -DLIBSERIALDV_INCLUDE_DIR=/opt/install/serialdv/include/serialdv -DLIBSERIALDV_LIBRARY=/opt/install/serialdv/lib/libserialdv.so .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Codec2
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install subversion \
 | 
					
						
							|  |  |  |     libspeexdsp-dev \
 | 
					
						
							|  |  |  |     libsamplerate0-dev
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && svn co https://svn.code.sf.net/p/freetel/code/codec2-dev@4067 codec2-dev \
 | 
					
						
							|  |  |  |     && cd codec2-dev \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/codec2 .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  |     
 | 
					
						
							|  |  |  | # Airspy
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/airspy/host.git libairspy \
 | 
					
						
							|  |  |  |     && cd libairspy \
 | 
					
						
							|  |  |  |     && git reset --hard 5c86e53 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libairspy .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # RTL-SDR
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/librtlsdr/librtlsdr.git \
 | 
					
						
							|  |  |  |     && cd librtlsdr \
 | 
					
						
							|  |  |  |     && git reset --hard c7d970a \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DDETACH_KERNEL_DRIVER=ON -DCMAKE_INSTALL_PREFIX=/opt/install/librtlsdr .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # PlutoSDR
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/analogdevicesinc/libiio.git \
 | 
					
						
							|  |  |  |     && cd libiio \
 | 
					
						
							|  |  |  |     && git reset --hard 5bdc242 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libiio -DINSTALL_UDEV_RULE=OFF .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # BladeRF
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/Nuand/bladeRF.git \
 | 
					
						
							|  |  |  |     && cd bladeRF/host \
 | 
					
						
							|  |  |  |     && git reset --hard 32058c4 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libbladeRF -DINSTALL_UDEV_RULES=OFF .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  |     
 | 
					
						
							|  |  |  | # HackRF
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/mossmann/hackrf.git \
 | 
					
						
							|  |  |  |     && cd hackrf/host \
 | 
					
						
							|  |  |  |     && git reset --hard 9bbbbbf \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libhackrf -DINSTALL_UDEV_RULES=OFF .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # LimeSDR
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/myriadrf/LimeSuite.git \
 | 
					
						
							|  |  |  |     && cd LimeSuite \
 | 
					
						
							|  |  |  |     && git reset --hard 59d51d5 \
 | 
					
						
							|  |  |  |     && mkdir builddir; cd builddir \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/LimeSuite .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Airspy HF
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/airspy/airspyhf \
 | 
					
						
							|  |  |  |     && cd airspyhf \
 | 
					
						
							|  |  |  |     && git reset --hard 075b8f9 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libairspyhf .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  |     
 | 
					
						
							|  |  |  | # Perseus
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install xxd
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/f4exb/libperseus-sdr.git \
 | 
					
						
							|  |  |  |     && cd libperseus-sdr \
 | 
					
						
							|  |  |  |     && git checkout fixes \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libperseus .. \
 | 
					
						
							|  |  |  |     && make \
 | 
					
						
							|  |  |  |     && make install    
 | 
					
						
							|  |  |  |     
 | 
					
						
							|  |  |  | # XTRX
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install python-cheetah
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/xtrx-sdr/images.git xtrx-images \
 | 
					
						
							|  |  |  |     && cd xtrx-images \
 | 
					
						
							|  |  |  |     && git reset --hard 053ec82 \
 | 
					
						
							|  |  |  |     && git submodule init \
 | 
					
						
							|  |  |  |     && git submodule update \
 | 
					
						
							|  |  |  |     && cd sources \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/xtrx-images -DENABLE_SOAPY=NO .. \
 | 
					
						
							|  |  |  |     && make -j4 install    
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Soapy main
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/pothosware/SoapySDR.git \
 | 
					
						
							|  |  |  |     && cd SoapySDR \
 | 
					
						
							|  |  |  |     && git reset --hard 6d21756 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -DCMAKE_INSTALL_PREFIX=/opt/install/SoapySDR .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Soapy remote
 | 
					
						
							|  |  |  | RUN sudo apt-get update && sudo apt-get -y install libavahi-client-dev
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/pothosware/SoapyRemote.git \
 | 
					
						
							|  |  |  |     && cd SoapyRemote \
 | 
					
						
							|  |  |  |     && git reset --hard 4f5d717 \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -DCMAKE_INSTALL_PREFIX=/opt/install/SoapySDR -DSOAPY_SDR_INCLUDE_DIR=/opt/install/SoapySDR/include -DSOAPY_SDR_LIBRARY=/opt/install/SoapySDR/lib/libSoapySDR.so .. \
 | 
					
						
							|  |  |  |     && make -j4 install
 | 
					
						
							|  |  |  |     
 | 
					
						
							|  |  |  | # Finally SDRangel
 | 
					
						
							|  |  |  | RUN cd /opt/build \
 | 
					
						
							|  |  |  |     && git clone https://github.com/f4exb/sdrangel.git \
 | 
					
						
							|  |  |  |     && cd sdrangel \
 | 
					
						
							|  |  |  |     && mkdir build; cd build \
 | 
					
						
							|  |  |  |     && cmake -Wno-dev -DDEBUG_OUTPUT=ON -DBUILD_TYPE=RELEASE -DRX_SAMPLE_24BIT=ON -DMIRISDR_DIR=/opt/install/libmirisdr -DAIRSPY_DIR=/opt/install/libairspy -DAIRSPYHF_DIR=/opt/install/libairspyhf -DBLADERF_DIR=/opt/install/libbladeRF -DHACKRF_DIR=/opt/install/libhackrf -DRTLSDR_DIR=/opt/install/librtlsdr -DLIMESUITE_DIR=/opt/install/LimeSuite -DIIO_DIR=/opt/install/libiio -DCM256CC_DIR=/opt/install/cm256cc -DDSDCC_DIR=/opt/install/dsdcc -DSERIALDV_DIR=/opt/install/serialdv -DMBE_DIR=/opt/install/mbelib -DPERSEUS_DIR=/opt/install/libperseus -DXTRX_DIR=/opt/install/xtrx-images -DSOAPYSDR_DIR=/opt/install/SoapySDR -DCMAKE_INSTALL_PREFIX=/opt/install/sdrangel .. \
 | 
					
						
							|  |  |  |     && make -j8 install
 | 
					
						
							| 
									
										
										
										
											2019-03-02 11:34:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Start some services on which SDRangel depends
 | 
					
						
							|  |  |  | RUN sudo service ssh start \
 | 
					
						
							|  |  |  | 	&& sudo service dbus start \
 | 
					
						
							|  |  |  | 	&& sudo service avahi-daemon start
 |