diff --git a/README.md b/README.md index a2c28cdbf..dfbc37137 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,22 @@ RetroShare ============================== RetroShare is a decentralized, private and secure commmunication and sharing platform. RetroShare provides filesharing, chat, messages, forums and channels. +Build Status +------------ + +| Platform | Build Status | +| :------------- | :------------- | +| GNU/Linux, MacOS, (via travis-ci) | [![Build Status](https://travis-ci.org/RetroShare/RetroShare.svg?branch=master)](https://travis-ci.org/RetroShare/RetroShare) | +| Windows, `MSys2` (via appveyor) | [![Build status](https://ci.appveyor.com/api/projects/status/axkopdqj9fc48kwe?svg=true)](https://ci.appveyor.com/project/PhenomRetroShare/retroshare) | + +Compilation on Windows +---------------------------- +Follow this file : [WindowsMSys2_InstallGuide.txt](https://github.com/RetroShare/RetroShare/blob/master/WindowsMSys2_InstallGuide.txt) + +Compilation on MacOSX +---------------------------- +Follow this file : [MacOS_X_InstallGuide.txt](https://github.com/RetroShare/RetroShare/blob/master/MacOS_X_InstallGuide.txt) + Compilation on Linux ---------------------------- diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..9ae64694e --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,210 @@ +# Notes: +# - Minimal appveyor.yml file is an empty file. All sections are optional. +# - Indent each level of configuration with 2 spaces. Do not use tabs! +# - All section names are case-sensitive. +# - Section names should be unique on each level. +# from example: +# https://github.com/Phonations/Joker/blob/master/appveyor.yml +# https://github.com/unicorn-engine/autobuild/blob/master/.appveyor.yml + +#---------------------------------# +# general configuration # +#---------------------------------# + +# version format +version: RetroShare 6.0.{build}-{branch} + +# you can use {branch} name in version format too +# version: 1.0.{build}-{branch} + +# branches to build +branches: + # whitelist + #only: + # - master + + # blacklist + except: + - /^skipthisbranch$/ + +# Do not build on tags (GitHub only) +skip_tags: true + +# Skipping commits with particular message or from user +skip_commits: + message: /Created.*\.(png|jpg|jpeg|bmp|gif)/ # Regex for matching commit message + #author: Anonymous # Commit author's username, name, email or regexp maching one of these. + +#---------------------------------# +# environment configuration # +#---------------------------------# + +# Operating system (build VM template) +#os: Windows Server 2012 + +# scripts that are called at very beginning, before repo cloning +init: + - git config --global core.autocrlf input + #To get RDP while compiling + - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) +on_finish: + #To get RDP running after compiling + #- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + +# clone directory +clone_folder: c:\projects\RetroShare + +# fetch repository as zip archive +#shallow_clone: true # default is "false" + +# set clone depth +clone_depth: 1 # clone entire repository history if not defined + +environment: + global: + #Qt: https://www.appveyor.com/docs/installed-software#qt + QTDIR: C:\Qt\5.4\mingw491_32 + MSYS2_ARCH: i686 + TARGET: i686_32-pc-msys + + +# build cache to preserve files/folders between builds +cache: + - c:\projects\libs +# - packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified +# - projectA\libs +# - node_modules # local npm modules +# - %APPDATA%\npm-cache # npm cache + +# scripts that run after cloning repository +#install: +# # by default, all script lines are interpreted as batch +# - echo This is batch +# # to run script as a PowerShell command prepend it with ps: +# - ps: Write-Host 'This is PowerShell' +# # batch commands start from cmd: +# - cmd: echo This is batch again +# - cmd: set MY_VAR=12345 +install: + # Configuring MSys2 + - set PATH=C:\msys64\usr\bin;%PATH% + - set PATH=C:\msys64\mingw32\bin;%PATH% + # Configuring Qt + - set PATH=%QTDIR%\bin;C:\Qt\Tools\mingw491_32\bin;%PATH% + # Install all default programms + #- C:\msys64\usr\bin\bash -lc "pacman --noconfirm -Sy base-devel git mercurial cvs wget p7zip gcc perl ruby python2" #Already installed + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -Sy openssl-devel" + # Install toolchain + #- C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain" #Already installed + # Install other binutils + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-miniupnpc mingw-w64-x86_64-miniupnpc" + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-sqlite3 mingw-w64-x86_64-sqlite3" + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-speex mingw-w64-x86_64-speex" + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-opencv mingw-w64-x86_64-opencv" + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg" + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-libmicrohttpd mingw-w64-x86_64-libmicrohttpd" + - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-i686-libxslt mingw-w64-x86_64-libxslt" + + # Hack for new MSys2 + - copy C:\msys64\mingw32\i686-w64-mingw32\bin\ar.exe C:\msys64\mingw32\bin\i686-w64-mingw32-ar.exe + - copy C:\msys64\mingw32\i686-w64-mingw32\bin\ranlib.exe C:\msys64\mingw32\bin\i686-w64-mingw32-ranlib.exe + - copy C:\msys64\mingw32\bin\windres.exe C:\msys64\mingw32\bin\i686-w64-mingw32-windres.exe + - copy C:\msys64\mingw64\x86_64-w64-mingw32\bin\ar.exe C:\msys64\mingw64\bin\x86_64-w64-mingw32-ar.exe + - copy C:\msys64\mingw64\x86_64-w64-mingw32\bin\ranlib.exe C:\msys64\mingw64\bin\x86_64-w64-mingw32-ranlib.exe + - copy C:\msys64\mingw64\bin\windres.exe C:\msys64\mingw64\bin\x86_64-w64-mingw32-windres.exe + # Build missing Libs + - C:\msys64\mingw32_shell.bat -lc "cd /c/projects/RetroShare/msys2_build_libs/ && make" + # Clone RetroShare + #- git clone -q --branch={branch} https://github.com/RetroShare/RetroShare.git C:\projects\RetroShare + + +#---------------------------------# +# build configuration # +#---------------------------------# + +# build platform, i.e. x86, x64, Any CPU. This setting is optional. +platform: x86 + +# to add several platforms to build matrix: +#platform: +# - x86 +# - Any CPU + +# build Configuration, i.e. Debug, Release, etc. +configuration: Release + +# to add several configurations to build matrix: +#configuration: +# - Debug +# - Release + +# scripts to run before build +before_build: + +# scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services) +before_package: + +# scripts to run after build +after_build: + +# to run your custom scripts instead of automatic MSBuild +build_script: + - cd C:\projects\RetroShare + - qmake + - make + +# to disable automatic builds +#build: off + +#---------------------------------# +# artifacts configuration # +#---------------------------------# + +#artifacts: +# +# # pushing a single file +# - path: test.zip +# +# # pushing a single file with environment variable in path and "Deployment name" specified +# - path: MyProject\bin\$(configuration) +# name: myapp +# +# # pushing entire folder as a zip archive +# - path: logs + + +#---------------------------------# +# deployment configuration # +#---------------------------------# +#No deployment under unknown computer!!! + +#---------------------------------# +# global handlers # +#---------------------------------# + +# on successful build +#on_success: +# - do something + +# on build failure +#on_failure: +# - do something + +# after build failure or success +#on_finish: +# - do something + + +#---------------------------------# +# notifications # +#---------------------------------# + +notifications: + + # Email + - provider: Email + to: + - retrosharephenom@gmail.com + subject: 'Build {{status}}' # optional + message: "{{message}}, {{commitId}}, ..." # optional + on_build_status_changed: true diff --git a/msys2_build_libs/Makefile b/msys2_build_libs/Makefile index 1b818d62d..b0ac66cb2 100755 --- a/msys2_build_libs/Makefile +++ b/msys2_build_libs/Makefile @@ -1,41 +1,28 @@ -TCL_VERSION=8.6.2 -SQLCIPHER_VERSION=2.2.1 +SQLCIPHER_VERSION=3.3.1 +MSYS2AUTOMAKE=/c/msys64/usr/share/automake-1.15 -all: dirs sqlcipher copylibs +BLD=../build-libs +DLD=../downloads + +all: dirs sqlcipher dirs: - mkdir -p libs/include - mkdir -p libs/lib - mkdir -p libs/bin + mkdir -p ../../libs/include + mkdir -p ../../libs/lib + mkdir -p ../../libs/bin + mkdir -p $(DLD) + mkdir -p $(BLD) -tcl$(TCL_VERSION)-src.tar.gz: - curl.exe -L http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -o tcl$(TCL_VERSION)-src.tar.gz +sqlcipher: | ../../libs/lib/libsqlcipher.a -sqlcipher-$(SQLCIPHER_VERSION).tar.gz: - curl.exe -L -k https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -o sqlcipher-$(SQLCIPHER_VERSION).tar.gz - -sqlcipher: tcl$(TCL_VERSION)-src.tar.gz sqlcipher-$(SQLCIPHER_VERSION).tar.gz - # tcl - tar xvf tcl$(TCL_VERSION)-src.tar.gz - mkdir -p tcl$(TCL_VERSION)/build - cd tcl$(TCL_VERSION)/build && ../win/configure - cd tcl$(TCL_VERSION)/build && make - #sqlcipher - tar xvf sqlcipher-$(SQLCIPHER_VERSION).tar.gz - cd sqlcipher-$(SQLCIPHER_VERSION) && ln -s ../tcl$(TCL_VERSION)/build/tclsh86.exe tclsh - mkdir -p tcl$(TCL_VERSION)/lib - ln -s `pwd`/tcl$(TCL_VERSION)/library `pwd`/tcl$(TCL_VERSION)/lib/tcl8.6 - cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && LIBS="-L`pwd`/../libs/lib -lgdi32 $$LIBS" && export LIBS && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../libs/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make install prefix="`pwd`/install" - cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* libs/include/ - cp sqlcipher-$(SQLCIPHER_VERSION)/install/lib/libsqlcipher.a libs/lib/ - cp sqlcipher-$(SQLCIPHER_VERSION)/install/bin/sqlcipher.exe libs/bin/ - rm -r -f sqlcipher-$(SQLCIPHER_VERSION) - rm -r -f tcl$(TCL_VERSION) - touch sqlcipher - -copylibs: - read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \ - if [ "$$answer" = "yes" ] ; then \ - cp -r libs ../../ ; \ - fi +$(DLD)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz: + curl.exe -L -k https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -o $(DLD)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz +../../libs/lib/libsqlcipher.a: $(DLD)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz + tar xvf $(DLD)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz -C $(BLD) + cp $(MSYS2AUTOMAKE)/config.guess $(BLD)/sqlcipher-$(SQLCIPHER_VERSION)/config.guess + cp $(MSYS2AUTOMAKE)/config.sub $(BLD)/sqlcipher-$(SQLCIPHER_VERSION)/config.sub + cd $(BLD)/sqlcipher-$(SQLCIPHER_VERSION) && LIBS="-L`pwd`/../../libs/lib -lgdi32 $$LIBS" && export LIBS && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../../libs/include" LDFLAGS="-L`pwd`/../../libs/lib -lcrypto -lgdi32" && make install prefix="`pwd`/install" + cp -r $(BLD)/sqlcipher-$(SQLCIPHER_VERSION)/install/include/* ../../libs/include/ + cp $(BLD)/sqlcipher-$(SQLCIPHER_VERSION)/install/lib/libsqlcipher.a ../../libs/lib/ + cp $(BLD)/sqlcipher-$(SQLCIPHER_VERSION)/install/bin/sqlcipher.exe ../../libs/bin/ diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index e617922ad..69278042a 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -197,7 +197,7 @@ win32 { LIBS += -Wl,--export-all-symbols,--out-implib,lib/libretroshare-gui.a # create lib directory - QMAKE_PRE_LINK = $(CHK_DIR_EXISTS) lib $(MKDIR) lib + QMAKE_PRE_LINK = $(CHK_DIR_EXISTS) lib || $(MKDIR) lib DEFINES *= WINDOWS_SYS WIN32_LEAN_AND_MEAN _USE_32BIT_TIME_T