mirror of
https://github.com/RetroShare/libretroshare.git
synced 2026-09-14 11:05:45 +05:00
Merge pull request #13 from G10h4ck/gitlab_maven_repo
Distribute libretroshare as an Android library AAR
This commit is contained in:
commit
f670ba34b4
3
.gitignore
vendored
3
.gitignore
vendored
@ -6,3 +6,6 @@ build
|
||||
|
||||
# Ignore Gradle local options
|
||||
local.properties
|
||||
|
||||
# Ignore Qt Creator local CMake configuration
|
||||
CMakeLists.txt.user
|
||||
|
||||
33
.gitlab-ci.yml
Normal file
33
.gitlab-ci.yml
Normal file
@ -0,0 +1,33 @@
|
||||
android-AAR-minapi16:
|
||||
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_16
|
||||
script:
|
||||
- >
|
||||
./gradlew build publish
|
||||
-Dorg.gradle.project.buildDir=/libretroshare-build/
|
||||
-PANDROID_MIN_API_LEVEL=16
|
||||
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
|
||||
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
|
||||
|
||||
android-AAR-minapi21:
|
||||
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_21
|
||||
script:
|
||||
- >
|
||||
./gradlew build publish
|
||||
-Dorg.gradle.project.buildDir=/libretroshare-build/
|
||||
-PANDROID_MIN_API_LEVEL=21
|
||||
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
|
||||
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
|
||||
tags:
|
||||
- storage50
|
||||
|
||||
android-AAR-minapi24:
|
||||
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_24
|
||||
script:
|
||||
- >
|
||||
./gradlew build publish
|
||||
-Dorg.gradle.project.buildDir=/libretroshare-build/
|
||||
-PANDROID_MIN_API_LEVEL=24
|
||||
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
|
||||
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
|
||||
tags:
|
||||
- storage50
|
||||
@ -1,7 +1,7 @@
|
||||
# RetroShare decentralized communication platform
|
||||
#
|
||||
# Copyright (C) 2021 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
# Copyright (C) 2021 Asociación Civil Altermundi <info@altermundi.net>
|
||||
# Copyright (C) 2021-2022 Gioacchino Mazzurco <gio@retroshare.cc>
|
||||
# Copyright (C) 2021-2022 Asociación Civil Altermundi <info@altermundi.net>
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -131,6 +131,17 @@ option(
|
||||
"Export libretroshare JNI_OnLoad. See src/rs_android/rsjni.cpp for details"
|
||||
ON )
|
||||
|
||||
option(
|
||||
RS_DEVELOPMENT_BUILD
|
||||
"Disable optimization to speed up build, enable verbose build log. \
|
||||
just for development purposes, not suitable for library usage"
|
||||
OFF )
|
||||
|
||||
option(
|
||||
RS_ANDROID
|
||||
"Enable when compiling libretroshare for Android"
|
||||
OFF )
|
||||
|
||||
################################################################################
|
||||
|
||||
find_package(Git REQUIRED)
|
||||
@ -148,6 +159,13 @@ find_package(Git REQUIRED)
|
||||
|
||||
################################################################################
|
||||
|
||||
if(RS_DEVELOPMENT_BUILD)
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
endif(RS_DEVELOPMENT_BUILD)
|
||||
|
||||
################################################################################
|
||||
|
||||
include(src/CMakeLists.txt)
|
||||
list(TRANSFORM RS_SOURCES PREPEND src/)
|
||||
list(TRANSFORM RS_PUBLIC_HEADERS PREPEND src/)
|
||||
@ -170,6 +188,14 @@ target_include_directories(
|
||||
|
||||
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
if(RS_DEVELOPMENT_BUILD)
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE "-O0")
|
||||
endif(RS_DEVELOPMENT_BUILD)
|
||||
|
||||
if(RS_ANDROID)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE log)
|
||||
endif(RS_ANDROID)
|
||||
|
||||
# TODO: install public headers
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
@ -187,7 +213,7 @@ if(EXISTS "${OPENPGPSDK_DEVEL_DIR}/.git" )
|
||||
else()
|
||||
FetchContent_Declare(
|
||||
openpgpsdk
|
||||
GIT_REPOSITORY "https://gitlab.com/RetroShare/openpgpsdk.git"
|
||||
GIT_REPOSITORY "https://gitlab.com/RetroShare/OpenPGP-SDK.git"
|
||||
GIT_TAG "origin/master"
|
||||
GIT_SHALLOW TRUE
|
||||
GIT_PROGRESS TRUE
|
||||
@ -211,7 +237,7 @@ if(RS_BITDHT)
|
||||
else()
|
||||
FetchContent_Declare(
|
||||
bitdht
|
||||
GIT_REPOSITORY "https://gitlab.com/RetroShare/bitdht.git"
|
||||
GIT_REPOSITORY "https://gitlab.com/RetroShare/BitDHT.git"
|
||||
GIT_TAG "origin/master"
|
||||
GIT_SHALLOW TRUE
|
||||
GIT_PROGRESS TRUE
|
||||
@ -269,7 +295,7 @@ if(RS_JSON_API)
|
||||
APPEND
|
||||
"${JSON_API_GENERATOR_DOXYFILE}"
|
||||
"OUTPUT_DIRECTORY=${JSONAPI_GENERATOR_OUTPUT_DIR}\n"
|
||||
"INPUT=${CMAKE_CURRENT_SOURCE_DIR}" )
|
||||
"INPUT=${CMAKE_CURRENT_SOURCE_DIR}/src/" )
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
@ -292,6 +318,12 @@ if(RS_JSON_API)
|
||||
set(BUILD_TESTS OFF CACHE BOOL "Do not build restbed tests")
|
||||
set(BUILD_SSL OFF CACHE BOOL "Do not build restbed SSL support")
|
||||
|
||||
if(NOT RS_ANDROID)
|
||||
## At moment depending on restbed this way doesn't seems to work at least on
|
||||
## Android due to upstream CMake file limitation, patches should be sent
|
||||
## upstream. Restbed is therefore compiled by Android toolchain preparation
|
||||
## script
|
||||
|
||||
FetchContent_Declare(
|
||||
restbed
|
||||
GIT_REPOSITORY "https://github.com/Corvusoft/restbed.git"
|
||||
@ -303,11 +335,18 @@ if(RS_JSON_API)
|
||||
)
|
||||
FetchContent_MakeAvailable(restbed)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE restbed)
|
||||
|
||||
## TODO: work around target_include_directories should be added upstream
|
||||
include_directories(${restbed_SOURCE_DIR}/source/)
|
||||
|
||||
## TODO: work around target_link_libraries should be added upstream
|
||||
## The workaround doesn't work as per documentation
|
||||
## https://cmake.org/cmake/help/latest/command/link_directories.html
|
||||
## "The command will apply only to targets created after it is called."
|
||||
#link_directories(${restbed_BINARY_DIR})
|
||||
endif(NOT RS_ANDROID)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE restbed)
|
||||
|
||||
add_compile_definitions(RS_JSONAPI)
|
||||
endif(RS_JSON_API)
|
||||
|
||||
@ -362,6 +401,7 @@ endif(RS_DH_PRIME_INIT_CHECK)
|
||||
|
||||
if(RS_MINIUPNPC)
|
||||
add_compile_definitions(RS_USE_LIBMINIUPNPC)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE miniupnpc)
|
||||
endif(RS_MINIUPNPC)
|
||||
|
||||
if(RS_LIBUPNP)
|
||||
@ -452,6 +492,3 @@ endif(RS_ANDROID)
|
||||
#endif(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
|
||||
################################################################################
|
||||
|
||||
## Useful to debug CMake
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
25
README.asciidoc
Normal file
25
README.asciidoc
Normal file
@ -0,0 +1,25 @@
|
||||
// SPDX-FileCopyrightText: 2022 Retroshare Team <contact@retroshare.cc>
|
||||
// SPDX-FileCopyrightText: 2022 Gioacchino Mazzurco <gio@retroshare.cc>
|
||||
// SPDX-FileCopyrightText: 2022 Asociación Civil Altermundi <info@altermundi.net>
|
||||
// SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
|
||||
= RetroShare library
|
||||
|
||||
RetroShare is a decentralized, private, secure, cross-platform, communication
|
||||
software.
|
||||
|
||||
RetroShare functionalities (file sharing, chat, messages, forums, channels...)
|
||||
are implemented under the hood by libretroshare which offer a documented C++ and
|
||||
JSON API.
|
||||
|
||||
While RetroShare is an application on it's own, libretroshare is meant to be
|
||||
used as part of other programs, some of them are
|
||||
https://retroshare.cc[RetroShare-gui],
|
||||
https://retroshare.cc[RetroShare-service],
|
||||
https://elrepo.io/[elRepo.io]
|
||||
(let us know if there are more).
|
||||
|
||||
|
||||
=== Continuous integration
|
||||
|
||||
image:https://gitlab.com/RetroShare/libretroshare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/libretroshare/-/commits/master",title="pipeline status"]
|
||||
237
build.gradle
237
build.gradle
@ -7,6 +7,24 @@
|
||||
* SPDX-License-Identifier: CC0-1.0
|
||||
*/
|
||||
|
||||
/*
|
||||
* Set minumum Android API level supported by this build passing
|
||||
* -PANDROID_MIN_API_LEVEL=16 (change 16 to what you need) on the gradle command
|
||||
* line.
|
||||
*
|
||||
* LIBRETROSHARE_SOURCE_VERSION Set source version ex:
|
||||
* -PLIBRETROSHARE_SOURCE_VERSION="$(git describe --always)"
|
||||
*
|
||||
* Optionally set JNI_NATIVE_LIBS_ARCHS to a space separated target CPU
|
||||
* architectures list named as seen in AAR native libraries directories passing
|
||||
* -PJNI_NATIVE_LIBS_ARCHS="arm64-v8a armeabi-v7a" defaults to all architectures
|
||||
* supported by current script at current Android minimum API
|
||||
*
|
||||
* Optionally set NATIVE_TOOLCHAINS_DIR for easier reuse of toolchains which
|
||||
* take a lot to build and doesn't change often
|
||||
* -PNATIVE_TOOLCHAINS_DIR="/native/toolchains/path"
|
||||
*/
|
||||
|
||||
buildscript
|
||||
{
|
||||
repositories
|
||||
@ -32,6 +50,74 @@ allprojects
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'maven-publish'
|
||||
|
||||
ext.getAndroidMinApiLevel =
|
||||
{ ->
|
||||
if(project.hasProperty('ANDROID_MIN_API_LEVEL'))
|
||||
{
|
||||
return ANDROID_MIN_API_LEVEL.toInteger();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 16
|
||||
}
|
||||
}
|
||||
|
||||
ext.getJniNativeLibsArchs =
|
||||
{ ->
|
||||
if(project.hasProperty('JNI_NATIVE_LIBS_ARCHS'))
|
||||
{
|
||||
return JNI_NATIVE_LIBS_ARCHS.split(' ') as List
|
||||
}
|
||||
else
|
||||
{
|
||||
if(getAndroidMinApiLevel() <= 16)
|
||||
{
|
||||
return ['armeabi-v7a']
|
||||
}
|
||||
else
|
||||
{
|
||||
return ['arm64-v8a', 'armeabi-v7a']
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ext.getLibretroshareSourceVersion =
|
||||
{ ->
|
||||
if(project.hasProperty('LIBRETROSHARE_SOURCE_VERSION'))
|
||||
{
|
||||
return LIBRETROSHARE_SOURCE_VERSION
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'unspecified'
|
||||
}
|
||||
}
|
||||
|
||||
ext.getNativeToolchainsDir =
|
||||
{ ->
|
||||
if(project.hasProperty('NATIVE_TOOLCHAINS_DIR'))
|
||||
{
|
||||
return NATIVE_TOOLCHAINS_DIR
|
||||
}
|
||||
else
|
||||
{
|
||||
return "${buildDir}/native_toolchains/"
|
||||
}
|
||||
}
|
||||
|
||||
ext.getjniLibsDir =
|
||||
{ ->
|
||||
return "${buildDir}/native_libs/"
|
||||
}
|
||||
|
||||
ext.getArtifactBaseName =
|
||||
{ ->
|
||||
return project.name + "-MinApiLevel" + getAndroidMinApiLevel()
|
||||
}
|
||||
|
||||
ext.buildLibretroshareNativeLib =
|
||||
{
|
||||
pApiLevel, /* Android API level */
|
||||
@ -58,13 +144,13 @@ ext.buildLibretroshareNativeLib =
|
||||
break;
|
||||
}
|
||||
|
||||
def toolchainsWorkdir = "${buildDir}/native_toolchains/"
|
||||
def toolchainsWorkdir = getNativeToolchainsDir()
|
||||
mkdir toolchainsWorkdir
|
||||
|
||||
def currToolchainPath = "$toolchainsWorkdir/$pApiLevel-$toolchainArch/"
|
||||
|
||||
// Todo: use proper way to resolve the script path
|
||||
def toolChainScriptPath = "${projectDir}/../build_scripts/Android/prepare-toolchain-clang.sh"
|
||||
def toolChainScriptPath = "${projectDir}/misc/Android/prepare-toolchain-clang.sh"
|
||||
|
||||
if(!pReuseToolchain || !file(currToolchainPath).exists())
|
||||
{
|
||||
@ -75,11 +161,11 @@ ext.buildLibretroshareNativeLib =
|
||||
environment "NATIVE_LIBS_TOOLCHAIN_PATH", currToolchainPath
|
||||
environment "ANDROID_PLATFORM_VER", pApiLevel
|
||||
environment "ANDROID_NDK_ARCH", toolchainArch
|
||||
commandLine toolChainScriptPath /*, 'build_libretroshare'*/
|
||||
commandLine toolChainScriptPath
|
||||
}
|
||||
}
|
||||
else
|
||||
{/*
|
||||
{
|
||||
exec
|
||||
{
|
||||
workingDir toolchainsWorkdir
|
||||
@ -88,35 +174,65 @@ ext.buildLibretroshareNativeLib =
|
||||
environment "ANDROID_PLATFORM_VER", pApiLevel
|
||||
environment "ANDROID_NDK_ARCH", toolchainArch
|
||||
commandLine toolChainScriptPath, 'build_libretroshare'
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
def nativeLibsDir = "${buildDir}/native_libs-$pApiLevel/"
|
||||
mkdir nativeLibsDir
|
||||
mkdir getjniLibsDir()
|
||||
|
||||
def currAbiLibDir = "${nativeLibsDir}/$pAbi/"
|
||||
def currAbiLibDir = "${getjniLibsDir()}/$pAbi/"
|
||||
mkdir currAbiLibDir
|
||||
copy
|
||||
{
|
||||
from "${currToolchainPath}/sysroot/usr/lib/libretroshare.so"
|
||||
into currAbiLibDir
|
||||
}
|
||||
|
||||
|
||||
copy
|
||||
{
|
||||
from "${currToolchainPath}/sysroot/usr/lib/${libcxxsharedTriple}/libc++_shared.so"
|
||||
into currAbiLibDir
|
||||
}
|
||||
|
||||
copy
|
||||
{
|
||||
from "${currToolchainPath}/sysroot/usr/lib/${libcxxsharedTriple}/${pApiLevel}/liblog.so"
|
||||
into currAbiLibDir
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'maven-publish'
|
||||
task prepareRetroshareNativeLibs
|
||||
{
|
||||
doLast
|
||||
{
|
||||
def pNdkPath = android.getNdkDirectory().getAbsolutePath()
|
||||
getJniNativeLibsArchs().each
|
||||
{
|
||||
abi ->
|
||||
buildLibretroshareNativeLib(getAndroidMinApiLevel(), abi, pNdkPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
preBuild.dependsOn prepareRetroshareNativeLibs
|
||||
|
||||
android
|
||||
{
|
||||
// see https://stackoverflow.com/questions/27301867/what-is-compilesdkversion
|
||||
compileSdkVersion 21
|
||||
|
||||
ndkVersion "21.0.6113669"
|
||||
|
||||
defaultConfig
|
||||
{
|
||||
minSdkVersion getAndroidMinApiLevel()
|
||||
targetSdkVersion 28
|
||||
|
||||
/* Prevent proguard run at applications build time, to alter
|
||||
* libretroshare Java classes that are used by libretroshare C++ code */
|
||||
consumerProguardFiles 'misc/Android/proguard-keep-libretroshare-java-classes.pro'
|
||||
}
|
||||
|
||||
setProperty("archivesBaseName", getArtifactBaseName())
|
||||
|
||||
sourceSets
|
||||
{
|
||||
main
|
||||
@ -124,22 +240,7 @@ android
|
||||
java.srcDirs = [ 'src/rs_android/' ]
|
||||
manifest.srcFile 'src/rs_android/AndroidManifest.xml'
|
||||
assets.srcDirs = [ "${buildDir}/libretroshare-build/android-assets/" ]
|
||||
jniLibs.srcDirs = [ "${buildDir}/native_libs-16" ]
|
||||
}
|
||||
|
||||
minApi16
|
||||
{
|
||||
jniLibs.srcDirs = [ "${buildDir}/native_libs-16" ]
|
||||
}
|
||||
|
||||
minApi21
|
||||
{
|
||||
jniLibs.srcDirs = [ "${buildDir}/native_libs-21" ]
|
||||
}
|
||||
|
||||
minApi24
|
||||
{
|
||||
jniLibs.srcDirs = [ "${buildDir}/native_libs-24" ]
|
||||
jniLibs.srcDirs = [ getjniLibsDir() ]
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,48 +249,6 @@ android
|
||||
disable 'LongLogTag'
|
||||
}
|
||||
|
||||
flavorDimensions 'api'
|
||||
|
||||
def currNdk = android.getNdkDirectory().getAbsolutePath()
|
||||
|
||||
productFlavors
|
||||
{
|
||||
minApi16
|
||||
{
|
||||
minSdkVersion '16'
|
||||
targetSdkVersion '16'
|
||||
|
||||
def currApi = minSdkVersion.mApiLevel
|
||||
versionNameSuffix "-API_${currApi}"
|
||||
|
||||
buildLibretroshareNativeLib(currApi, "armeabi-v7a", currNdk)
|
||||
}
|
||||
|
||||
minApi21
|
||||
{
|
||||
minSdkVersion '21'
|
||||
targetSdkVersion '21'
|
||||
|
||||
def currApi = minSdkVersion.mApiLevel
|
||||
versionNameSuffix "-API_${currApi}"
|
||||
|
||||
buildLibretroshareNativeLib(currApi, "arm64-v8a", currNdk)
|
||||
buildLibretroshareNativeLib(currApi, "armeabi-v7a", currNdk)
|
||||
}
|
||||
|
||||
minApi24
|
||||
{
|
||||
minSdkVersion '24'
|
||||
targetSdkVersion '28'
|
||||
|
||||
def currApi = minSdkVersion.mApiLevel
|
||||
versionNameSuffix "-API_${currApi}"
|
||||
|
||||
buildLibretroshareNativeLib(currApi, "arm64-v8a", currNdk)
|
||||
buildLibretroshareNativeLib(currApi, "armeabi-v7a", currNdk)
|
||||
}
|
||||
}
|
||||
|
||||
publishing
|
||||
{
|
||||
multipleVariants
|
||||
@ -206,21 +265,37 @@ afterEvaluate
|
||||
// see https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/LibraryPublishing
|
||||
publications
|
||||
{
|
||||
android.libraryVariants.each
|
||||
debug(MavenPublication)
|
||||
{
|
||||
variant ->
|
||||
|
||||
publishing.publications.create(variant.name, MavenPublication)
|
||||
groupId = 'org.retroshare.service'
|
||||
artifactId "${getArtifactBaseName()}-debug"
|
||||
version getLibretroshareSourceVersion()
|
||||
artifact bundleReleaseAar
|
||||
}
|
||||
release(MavenPublication)
|
||||
{
|
||||
groupId = 'org.retroshare.service'
|
||||
artifactId "${getArtifactBaseName()}-release"
|
||||
version getLibretroshareSourceVersion()
|
||||
artifact bundleReleaseAar
|
||||
}
|
||||
}
|
||||
repositories
|
||||
{
|
||||
maven
|
||||
{
|
||||
url = uri("https://gitlab.com/api/v4/projects/${System.getenv('CI_PROJECT_ID')}/packages/maven")
|
||||
name = "Gitlab"
|
||||
credentials(HttpHeaderCredentials)
|
||||
{
|
||||
from components.findByName(variant.name)
|
||||
groupId = 'org.retroshare.service'
|
||||
// -${variant.flavorName}
|
||||
artifactId "${rootProject.name}-${variant.name}"
|
||||
version "0.6.6"
|
||||
|
||||
artifacts = [ "${buildDir}/outputs/aar/${rootProject.name}-${variant.flavorName}-${variant.buildType.name}.aar" ]
|
||||
name = "Job-Token"
|
||||
value = System.getenv("CI_JOB_TOKEN")
|
||||
}
|
||||
authentication
|
||||
{
|
||||
header(HttpHeaderAuthentication)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
66
misc/Android/Dockerfile-AAR
Normal file
66
misc/Android/Dockerfile-AAR
Normal file
@ -0,0 +1,66 @@
|
||||
## To prepare an image suitable as base for Gitlab CI use
|
||||
## image name must match gitlab repository name, you can play just with the tag
|
||||
## the part after :
|
||||
# export ANDROID_MIN_API_LEVEL=16
|
||||
# export CI_IMAGE_NAME="registry.gitlab.com/retroshare/retroshare:android_aar_base_$ANDROID_MIN_API_LEVEL"
|
||||
# docker build --squash --tag "${CI_IMAGE_NAME}" --build-arg ANDROID_MIN_API_LEVEL=$ANDROID_MIN_API_LEVEL --build-arg LIBRETROSHARE_SOURCE_VERSION="$(git describe --always)" --file misc/Android/Dockerfile-AAR .
|
||||
|
||||
## --squash is very important in case of GitlabCI shared runners as they are
|
||||
## limited to 25GB disk size
|
||||
|
||||
## To push it to gitlab CI registry you need first to login and the to push
|
||||
# docker login registry.gitlab.com
|
||||
# docker push ${CI_IMAGE_NAME}
|
||||
|
||||
FROM ubuntu:21.10
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV APT_UNAT="--assume-yes --quiet"
|
||||
|
||||
RUN apt-get update $APT_UNAT && apt-get upgrade --show-upgraded $APT_UNAT && \
|
||||
apt-get clean $APT_UNAT
|
||||
RUN apt-get install --no-install-recommends $APT_UNAT \
|
||||
bash build-essential bzip2 cmake curl chrpath doxygen \
|
||||
git python python3 tclsh unzip wget zip
|
||||
|
||||
# Dependencies to create Android pkg
|
||||
RUN apt-get install --no-install-recommends $APT_UNAT \
|
||||
openjdk-11-jre openjdk-11-jdk openjdk-11-jdk-headless
|
||||
|
||||
ENV ANDROID_SDK_PATH="/opt/android-sdk"
|
||||
ENV ANDROID_HOME="$ANDROID_SDK_PATH"
|
||||
ENV ANDROID_SDK_ROOT="$ANDROID_SDK_PATH"
|
||||
ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/"
|
||||
|
||||
ARG SOURCE_PATH=./
|
||||
COPY $SOURCE_PATH /libretroshare
|
||||
|
||||
WORKDIR /libretroshare-build/
|
||||
RUN /libretroshare/misc/Android/prepare-toolchain-clang.sh install_android_sdk
|
||||
|
||||
WORKDIR /libretroshare/
|
||||
ARG ANDROID_MIN_API_LEVEL=16
|
||||
ARG LIBRETROSHARE_SOURCE_VERSION="Dockerfile_AAR_unset"
|
||||
ENV NATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
|
||||
RUN ./gradlew build -Dorg.gradle.project.buildDir=/libretroshare-build/ \
|
||||
-PANDROID_MIN_API_LEVEL=$ANDROID_MIN_API_LEVEL \
|
||||
-PNATIVE_TOOLCHAINS_DIR=$NATIVE_TOOLCHAINS_DIR \
|
||||
-PLIBRETROSHARE_SOURCE_VERSION="$LIBRETROSHARE_SOURCE_VERSION"
|
||||
|
||||
WORKDIR /
|
||||
|
||||
## Save generated AAR to make life easier to newcomers that might want to use
|
||||
## this just to build the libretroshare AAR
|
||||
RUN mv /libretroshare-build/outputs/aar/ /libretroshare-aar/
|
||||
|
||||
## Cleanup all the rest now unneded stuff so squashing is more effective
|
||||
RUN rm -rf /libretroshare-build/
|
||||
|
||||
## Clean reamining cruft inside native_toolchains
|
||||
RUN rm -rf $NATIVE_TOOLCHAINS_DIR/*-build
|
||||
|
||||
## Clean apt cache
|
||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
## No need to keep sources inside the image
|
||||
RUN rm -rf /libretroshare/
|
||||
@ -212,8 +212,8 @@ export ANDROID_NDK_LLVM_STRIP="${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linu
|
||||
cat > "${ANDROID_NDK_LLVM_STRIP}" << LLVMSTRIPTRICK
|
||||
#!/bin/bash
|
||||
|
||||
echo "\${2}" | grep -q Debug ||
|
||||
"${ANDROID_NDK_LLVM_STRIP}.back" --strip-all "\${2}"
|
||||
echo "\${@}" | grep -q Debug ||
|
||||
"${ANDROID_NDK_LLVM_STRIP}.back" "\${@}"
|
||||
|
||||
LLVMSTRIPTRICK
|
||||
|
||||
|
||||
@ -39,14 +39,10 @@ define_default_value ANDROID_PLATFORM_VER "16"
|
||||
define_default_value NATIVE_LIBS_TOOLCHAIN_PATH "${HOME}/Builds/android-toolchains/retroshare-android-${ANDROID_PLATFORM_VER}-${ANDROID_NDK_ARCH}/"
|
||||
define_default_value HOST_NUM_CPU $(nproc)
|
||||
|
||||
define_default_value ANDROID_SDK_INSTALL "false"
|
||||
define_default_value ANDROID_SDK_TOOLS_VERSION "3859397"
|
||||
define_default_value ANDROID_SDK_TOOLS_SHA256 444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0
|
||||
define_default_value ANDROID_CMD_TOOLS_VERSION "8092744"
|
||||
define_default_value ANDROID_CMD_TOOLS_SHA256 d71f75333d79c9c6ef5c39d3456c6c58c613de30e6a751ea0dbd433e8f8b9cbf
|
||||
define_default_value ANDROID_SDK_VERSION "29.0.3"
|
||||
|
||||
define_default_value ANDROID_NDK_INSTALL "false"
|
||||
define_default_value ANDROID_NDK_VERSION "r21"
|
||||
define_default_value ANDROID_NDK_SHA256 b65ea2d5c5b68fb603626adcbcea6e4d12c68eb8a73e373bbb9d23c252fc647b
|
||||
define_default_value ANDROID_NDK_VERSION "21.0.6113669"
|
||||
|
||||
define_default_value BZIP2_SOURCE_VERSION "1.0.6"
|
||||
define_default_value BZIP2_SOURCE_SHA256 a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
|
||||
@ -73,6 +69,7 @@ define_default_value QT_INSTALL_PATH "${NATIVE_LIBS_TOOLCHAIN_PATH}/Qt/"
|
||||
|
||||
define_default_value QT_ANDROID_INSTALLER_SHA256 a214084e2295c9a9f8727e8a0131c37255bf724bfc69e80f7012ba3abeb1f763
|
||||
|
||||
## TODO: Report that 4.8 doesn't compile for Android and test newer versions
|
||||
define_default_value RESTBED_SOURCE_REPO "https://github.com/Corvusoft/restbed.git"
|
||||
define_default_value RESTBED_SOURCE_VERSION f74f9329dac82e662c1d570b7cd72c192b729eb4
|
||||
|
||||
@ -313,35 +310,30 @@ DUPLICATED_INCLUDES_DIR="${REPORT_DIR}/duplicated_includes/"
|
||||
task_register install_android_sdk
|
||||
install_android_sdk()
|
||||
{
|
||||
tFile="sdk-tools-linux-${ANDROID_SDK_TOOLS_VERSION}.zip"
|
||||
# old SDK manager has been deprecated use new cmdline-tools as per
|
||||
# https://stackoverflow.com/a/65782803
|
||||
# https://developer.android.com/studio#command-tools
|
||||
|
||||
verified_download "${tFile}" "${ANDROID_SDK_TOOLS_SHA256}" \
|
||||
tFile="commandlinetools-linux-${ANDROID_CMD_TOOLS_VERSION}_latest.zip"
|
||||
|
||||
verified_download "${tFile}" "${ANDROID_CMD_TOOLS_SHA256}" \
|
||||
"https://dl.google.com/android/repository/${tFile}"
|
||||
|
||||
unzip "${tFile}"
|
||||
mkdir -p "$ANDROID_SDK_PATH"
|
||||
rm -rf "$ANDROID_SDK_PATH/tools/"
|
||||
mv --verbose tools/ "$ANDROID_SDK_PATH/tools/"
|
||||
rm -rf "$ANDROID_SDK_PATH"
|
||||
CMD_TOOLS_DIR="$ANDROID_SDK_PATH/cmdline-tools/latest/"
|
||||
mkdir -p "$CMD_TOOLS_DIR"
|
||||
rm -rf "$CMD_TOOLS_DIR"
|
||||
mv --verbose cmdline-tools/ "$CMD_TOOLS_DIR"
|
||||
|
||||
ANDROID_SDK_MANAGER="$CMD_TOOLS_DIR/bin/sdkmanager --sdk_root=$ANDROID_SDK_PATH"
|
||||
|
||||
# Install Android SDK
|
||||
yes | $ANDROID_SDK_PATH/tools/bin/sdkmanager --licenses && \
|
||||
$ANDROID_SDK_PATH/tools/bin/sdkmanager --update
|
||||
$ANDROID_SDK_PATH/tools/bin/sdkmanager "platforms;android-$ANDROID_PLATFORM_VER"
|
||||
$ANDROID_SDK_PATH/tools/bin/sdkmanager "build-tools;$ANDROID_SDK_VERSION"
|
||||
}
|
||||
|
||||
task_register install_android_ndk
|
||||
install_android_ndk()
|
||||
{
|
||||
tFile="android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip"
|
||||
|
||||
verified_download "${tFile}" "${ANDROID_NDK_SHA256}" \
|
||||
"https://dl.google.com/android/repository/${tFile}"
|
||||
|
||||
unzip "${tFile}"
|
||||
mkdir -p "$ANDROID_NDK_PATH"
|
||||
rm -rf "$ANDROID_NDK_PATH"
|
||||
mv --verbose "android-ndk-${ANDROID_NDK_VERSION}/" "$ANDROID_NDK_PATH/"
|
||||
yes | $ANDROID_SDK_MANAGER --licenses && \
|
||||
$ANDROID_SDK_MANAGER --update
|
||||
$ANDROID_SDK_MANAGER "platforms;android-$ANDROID_PLATFORM_VER"
|
||||
$ANDROID_SDK_MANAGER "build-tools;$ANDROID_SDK_VERSION"
|
||||
$ANDROID_SDK_MANAGER "ndk;$ANDROID_NDK_VERSION"
|
||||
}
|
||||
|
||||
## More information available at https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html
|
||||
@ -633,7 +625,7 @@ build_xapian()
|
||||
https://oligarchy.co.uk/xapian/${XAPIAN_SOURCE_VERSION}/$D_file
|
||||
rm -rf $B_dir
|
||||
tar -xf $D_file
|
||||
cd $B_dir
|
||||
pushd $B_dir
|
||||
B_endiannes_detection_failure_workaround="ac_cv_c_bigendian=no"
|
||||
B_large_file=""
|
||||
[ "${ANDROID_PLATFORM_VER}" -lt "24" ] && B_large_file="--disable-largefile"
|
||||
@ -645,7 +637,10 @@ build_xapian()
|
||||
--prefix="${PREFIX}" --with-sysroot="${SYSROOT}"
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cd ..
|
||||
|
||||
# TODO: Fix upstream Xapian CMake package to find static library
|
||||
sed -i 's/libxapian.so/libxapian.a/g' "${SYSROOT}/usr/lib/cmake/xapian/xapian-config.cmake"
|
||||
popd
|
||||
}
|
||||
|
||||
task_register build_miniupnpc
|
||||
@ -858,22 +853,18 @@ build_mvptree()
|
||||
task_register build_libretroshare
|
||||
build_libretroshare()
|
||||
{
|
||||
S_dir="/home/gio/Development/rs-develop/libretroshare"
|
||||
S_dir="$RS_SRC_DIR"
|
||||
B_dir="libretroshare-build"
|
||||
|
||||
# -DCMAKE_SYSTEM_NAME="Android" \
|
||||
# -DCMAKE_ANDROID_NDK="$ANDROID_NDK_PATH" \
|
||||
# -DCMAKE_SYSTEM_VERSION=$ANDROID_PLATFORM_VER \
|
||||
|
||||
# -D RS_FORUM_DEEP_INDEX=ON -D RS_JSON_API=ON \
|
||||
|
||||
rm -rf $B_dir; mkdir $B_dir ; pushd $B_dir
|
||||
andro_cmake -B. -H${S_dir} -DCMAKE_BUILD_TYPE=Release \
|
||||
-D RS_ANDROID=ON -D RS_WARN_DEPRECATED=OFF -D RS_WARN_LESS=ON \
|
||||
-D RS_LIBRETROSHARE_STATIC=OFF -D RS_LIBRETROSHARE_SHARED=ON \
|
||||
-D RS_BRODCAST_DISCOVERY=ON -D RS_EXPORT_JNI_ONLOAD=ON
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
-D RS_BRODCAST_DISCOVERY=ON -D RS_EXPORT_JNI_ONLOAD=ON \
|
||||
-D RS_SQLCIPHER=OFF -D RS_DH_PRIME_INIT_CHECK=OFF \
|
||||
-D RS_FORUM_DEEP_INDEX=ON -D RS_JSON_API=ON || return $?
|
||||
make -j${HOST_NUM_CPU} || return $?
|
||||
make install || return $?
|
||||
popd
|
||||
}
|
||||
|
||||
@ -891,7 +882,7 @@ build_default_toolchain()
|
||||
task_run build_openssl || return $?
|
||||
task_run build_sqlcipher || return $?
|
||||
task_run build_rapidjson || return $?
|
||||
# task_run build_restbed || return $?
|
||||
task_run build_restbed || return $?
|
||||
# task_run build_udp-discovery-cpp || return $?
|
||||
task_run build_xapian || return $?
|
||||
task_run build_miniupnpc || return $?
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
# Keep libretroshare Java classes
|
||||
-keep class org.retroshare.service.** { *; }
|
||||
@ -138,9 +138,10 @@ endif(RS_JSON_API)
|
||||
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
pgp/pgpkeyutil.cc
|
||||
pgp/openpgpsdkhandler.cc
|
||||
pgp/pgpauxutils.cc
|
||||
pgp/pgphandler.cc
|
||||
pgp/pgpkeyutil.cc
|
||||
pgp/rscertificate.cc )
|
||||
|
||||
#./plugins/dlfcn_win32.cc
|
||||
@ -148,7 +149,10 @@ list(
|
||||
#./plugins/pluginmanager.h
|
||||
#./plugins/rscacheservice.h
|
||||
#./plugins/rspqiservice.h
|
||||
#./plugins/pluginmanager.cc
|
||||
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
plugins/pluginmanager.cc )
|
||||
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
@ -165,6 +169,7 @@ list(
|
||||
pqi/p3cfgmgr.cc
|
||||
pqi/p3notify.cc
|
||||
pqi/p3servicecontrol.cc
|
||||
pqi/pqifdbin.cc
|
||||
pqi/pqinetstatebox.cc
|
||||
pqi/pqiperson.cc
|
||||
pqi/pqiservice.cc
|
||||
@ -216,7 +221,6 @@ list(
|
||||
|
||||
#./rsitems/rsphotoitems.cc
|
||||
#./rsitems/rsphotoitems.h
|
||||
#./rsitems/rsposteditems.cc
|
||||
#./rsitems/rsposteditems.h
|
||||
#./rsitems/rswireitems.cc
|
||||
#retroshare/rswire.h
|
||||
@ -290,10 +294,12 @@ list(
|
||||
|
||||
#./services/p3photoservice.cc
|
||||
#./services/p3photoservice.h
|
||||
#./services/p3postbase.cc
|
||||
#./services/p3postbase.h
|
||||
#./services/p3posted.cc
|
||||
#./services/p3posted.h
|
||||
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
services/p3postbase.cc
|
||||
services/p3posted.cc
|
||||
rsitems/rsposteditems.cc )
|
||||
|
||||
if(RS_BRODCAST_DISCOVERY)
|
||||
list(
|
||||
@ -327,21 +333,19 @@ list(
|
||||
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
# util/contentvalue.cc
|
||||
# util/exampletst.c
|
||||
# util/rsdbbind.cc
|
||||
# util/rsdiscspace.cc
|
||||
util/contentvalue.cc
|
||||
util/rsdbbind.cc
|
||||
util/rsdiscspace.cc
|
||||
util/rsexpr.cc
|
||||
util/rsprint.cc
|
||||
# util/rsrecogn.cc
|
||||
# util/rssharedptr.h
|
||||
# util/rstickevent.cc
|
||||
util/rsrecogn.cc
|
||||
util/rstickevent.cc
|
||||
util/rstime.cc
|
||||
util/smallobject.cc
|
||||
# util/retrodb.cc
|
||||
util/retrodb.cc
|
||||
util/rsbase64.cc
|
||||
util/rsjson.cc
|
||||
# util/rskbdinput.cc
|
||||
util/rskbdinput.cc
|
||||
util/rsrandom.cc
|
||||
util/rsstring.cc
|
||||
util/rsurl.cc
|
||||
@ -383,13 +387,13 @@ list(
|
||||
if(RS_MINIUPNPC)
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
rs_upnp/upnphandler_miniupnp.cc )
|
||||
rs_upnp/upnphandler_miniupnp.cc
|
||||
rs_upnp/upnputil.cc )
|
||||
endif(RS_MINIUPNPC)
|
||||
|
||||
#./rs_upnp/UPnPBase.cpp
|
||||
#./rs_upnp/upnphandler_libupnp.cc
|
||||
#./rs_upnp/upnptest.cc
|
||||
#./rs_upnp/upnputil.cc
|
||||
|
||||
#if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
if(RS_ANDROID)
|
||||
@ -399,3 +403,22 @@ if(RS_ANDROID)
|
||||
rs_android/retroshareserviceandroid.cpp
|
||||
rs_android/rsjni.cpp )
|
||||
endif()
|
||||
|
||||
list(
|
||||
APPEND RS_SOURCES
|
||||
tor/AddOnionCommand.cpp
|
||||
tor/AuthenticateCommand.cpp
|
||||
tor/CryptoKey.cpp
|
||||
tor/GetConfCommand.cpp
|
||||
tor/HiddenService.cpp
|
||||
tor/PendingOperation.cpp
|
||||
tor/ProtocolInfoCommand.cpp
|
||||
tor/SetConfCommand.cpp
|
||||
tor/StrUtil.cpp
|
||||
tor/TorControl.cpp
|
||||
tor/TorControlCommand.cpp
|
||||
tor/TorControlSocket.cpp
|
||||
tor/TorProcess.cpp
|
||||
tor/TorManager.cpp
|
||||
pqi/rstcpsocket.cc
|
||||
pqi/pqiproxy.cc )
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
* libretroshare: retroshare core library *
|
||||
* *
|
||||
* Copyright (C) 2012 Christopher Evi-Parker *
|
||||
* Copyright (C) 2018-2021 Gioacchino Mazzurco <gio@eigenlab.org> *
|
||||
* Copyright (C) 2019-2021 Asociación Civil Altermundi <info@altermundi.net> *
|
||||
* Copyright (C) 2018-2022 Gioacchino Mazzurco <gio@eigenlab.org> *
|
||||
* Copyright (C) 2019-2022 Asociación Civil Altermundi <info@altermundi.net> *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU Lesser General Public License as *
|
||||
@ -36,7 +36,6 @@
|
||||
#include "rsgxsnetutils.h"
|
||||
#include "pqi/p3cfgmgr.h"
|
||||
#include "rsgixs.h"
|
||||
#include "util/rssharedptr.h"
|
||||
|
||||
/// keep track of transaction number
|
||||
typedef std::map<uint32_t, NxsTransaction*> TransactionIdMap;
|
||||
|
||||
@ -23,8 +23,10 @@
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <memory>
|
||||
#include <restbed>
|
||||
#include <typeinfo>
|
||||
#include <vector>
|
||||
|
||||
#include <restbed>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
|
||||
|
||||
@ -36,7 +36,6 @@ extern "C" {
|
||||
#include "openpgpsdk/keyring.h"
|
||||
}
|
||||
|
||||
/// This class offer an abstract pgp handler to be used in RetroShare.
|
||||
class OpenPGPSDKHandler: public PGPHandler
|
||||
{
|
||||
public:
|
||||
|
||||
@ -966,6 +966,23 @@ protected:
|
||||
// Integral types VLQ //
|
||||
//============================================================================//
|
||||
|
||||
/* Avoid bool-compare warning being emitted for specific sections of code, for
|
||||
* compilers that supports it, clang would warn about unkown warning if not
|
||||
* explicitely excluded (it defiles GCC macros too)
|
||||
* @see https://nelkinda.com/blog/suppress-warnings-in-gcc-and-clang/#d11e201
|
||||
* @see https://stackoverflow.com/a/28166605
|
||||
*/
|
||||
#if defined(__GNUG__) && ! defined(__clang__)
|
||||
# define RsTypeSerializer_SUPPRESS_WBC_WARNING_PUSH \
|
||||
_Pragma("GCC diagnostic push") \
|
||||
_Pragma("GCC diagnostic ignored \"-Wbool-compare\"")
|
||||
# define RsTypeSerializer_SUPPRESS_WBC_WARNING_POP \
|
||||
_Pragma("GCC diagnostic pop")
|
||||
#else
|
||||
# define RsTypeSerializer_SUPPRESS_WBC_WARNING_PUSH
|
||||
# define RsTypeSerializer_SUPPRESS_WBC_WARNING_POP
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Size calculation of unsigned integers as Variable Lenght Quantity
|
||||
* @see RsSerializationFlags::INTEGER_VLQ
|
||||
@ -979,10 +996,9 @@ protected:
|
||||
{
|
||||
std::decay_t<T> memberBackup = member;
|
||||
uint32_t ret = 1;
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wbool-compare"
|
||||
RsTypeSerializer_SUPPRESS_WBC_WARNING_PUSH
|
||||
while(member > 127) { ++ret; member >>= 7; }
|
||||
#pragma GCC diagnostic pop
|
||||
RsTypeSerializer_SUPPRESS_WBC_WARNING_POP
|
||||
Dbg2() << __PRETTY_FUNCTION__ << " memberBackup: " << memberBackup
|
||||
<< " return: " << ret << std::endl;
|
||||
return ret;
|
||||
@ -1006,8 +1022,7 @@ protected:
|
||||
#endif
|
||||
|
||||
bool ok = true;
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wbool-compare"
|
||||
RsTypeSerializer_SUPPRESS_WBC_WARNING_PUSH
|
||||
/* Check with < and not with <= here as we write last byte after
|
||||
* the loop. Order of && operands very important here! */
|
||||
while(member > 127 && (ok = (offset < size)))
|
||||
@ -1017,7 +1032,7 @@ protected:
|
||||
// Remove the seven bits we just wrote
|
||||
member >>= 7;
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
RsTypeSerializer_SUPPRESS_WBC_WARNING_POP
|
||||
|
||||
if(!(ok = ok && offset <= size))
|
||||
{
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
|
||||
#include "utest.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* must define the global variables */
|
||||
INITTEST();
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int a = 2;
|
||||
int b = 3;
|
||||
int c = 2;
|
||||
|
||||
CHECK( a == c );
|
||||
|
||||
REPORT( "Initial Tests");
|
||||
|
||||
CHECK( (0 == strcmp("123", "123")) );
|
||||
|
||||
REPORT( "Successful Tests");
|
||||
|
||||
CHECK( a == b );
|
||||
CHECK( (0 == strcmp("123", "12345")) );
|
||||
|
||||
REPORT( "Failed Tests" );
|
||||
|
||||
CHECK( 1 );
|
||||
CHECK( a == c );
|
||||
|
||||
REPORT( "Later Successful Tests");
|
||||
|
||||
|
||||
FINALREPORT( "Example Tests" );
|
||||
|
||||
return TESTRESULT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -310,7 +310,7 @@ struct hexDump {
|
||||
using Dbg4 RS_DEPRECATED_FOR(RS_DBG4) = RsDbg;
|
||||
|
||||
namespace RsLog {
|
||||
enum RS_DEPRECATED_FOR("RsErr, RsDbg, RsNoDbg") logLvl {
|
||||
enum RS_DEPRECATED_FOR("RS_ERR, RS_DBG, RS_DBG3...") logLvl {
|
||||
None = -1,
|
||||
Default = 0,
|
||||
Alert = 1,
|
||||
@ -322,7 +322,7 @@ namespace RsLog {
|
||||
};
|
||||
|
||||
// this struct must be provided by the caller (to rslog())
|
||||
struct RS_DEPRECATED_FOR("RsErr, RsDbg, RsNoDbg") logInfo {
|
||||
struct RS_DEPRECATED_FOR("RS_ERR, RS_DBG, RS_DBG3...") logInfo {
|
||||
// module specific log lvl
|
||||
logLvl lvl;
|
||||
// module name (displayed in log)
|
||||
@ -330,16 +330,16 @@ namespace RsLog {
|
||||
};
|
||||
}
|
||||
|
||||
RS_DEPRECATED_FOR("RsErr, RsDbg, RsNoDbg")
|
||||
RS_DEPRECATED_FOR("RS_ERR, RS_DBG, RS_DBG3...")
|
||||
int setDebugCrashMode(const char *cfile);
|
||||
|
||||
RS_DEPRECATED_FOR("RsErr, RsDbg, RsNoDbg")
|
||||
RS_DEPRECATED_FOR("RS_ERR, RS_DBG, RS_DBG3...")
|
||||
int setDebugFile(const char *fname);
|
||||
|
||||
RS_DEPRECATED_FOR("RsErr, RsDbg, RsNoDbg")
|
||||
RS_DEPRECATED_FOR("RS_ERR, RS_DBG, RS_DBG3...")
|
||||
int setOutputLevel(RsLog::logLvl lvl);
|
||||
|
||||
RS_DEPRECATED_FOR("RsErr, RsDbg, RsNoDbg")
|
||||
RS_DEPRECATED_FOR("RS_ERR, RS_DBG, RS_DBG3...")
|
||||
void rslog(const RsLog::logLvl lvl, RsLog::logInfo *info, const std::string &msg);
|
||||
|
||||
|
||||
|
||||
@ -28,7 +28,17 @@
|
||||
#include <namedpipeapi.h>
|
||||
#include <errno.h>
|
||||
#else
|
||||
#include <fcntl.h>
|
||||
# include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#ifdef __ANDROID__
|
||||
# include <android/api-level.h>
|
||||
# if __ANDROID_API__ < 18
|
||||
# include "util/rsdebug.h"
|
||||
# include "util/stacktrace.h"
|
||||
# include <cstdlib>
|
||||
# include <cerrno>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
int RsFileUtil::set_fd_nonblock(int fd)
|
||||
@ -101,7 +111,13 @@ ssize_t RsFileUtil::rs_getline(char **lineptr, size_t *n, FILE *stream)
|
||||
ptr = new_lineptr + diff;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(__ANDROID__) && __ANDROID_API__ < 18
|
||||
#warning "RsFileUtil::rs_getline not supported for Android API < 18"
|
||||
RS_FATAL("not supported for Android API ", __ANDROID_API__, " < 18");
|
||||
print_stacktrace();
|
||||
exit(ENOSYS);
|
||||
#else // ie UNIX
|
||||
return getline(lineptr, n, stream);
|
||||
return getline(lineptr, n, stream);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -127,4 +127,5 @@ std::string rs_getpass(const std::string& prompt, bool no_echo)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // ndef __ANDROID__
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
* libretroshare *
|
||||
* *
|
||||
* Copyright (C) 2016-2018 Gioacchino Mazzurco <gio@eigenlab.org> *
|
||||
* Copyright (C) 2016-2022 Gioacchino Mazzurco <gio@retroshare.cc> *
|
||||
* Copyright (C) 2008 Timo Bingmann http://idlebox.net/ *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
@ -37,7 +37,7 @@
|
||||
* @param[in] out output file
|
||||
* @param[in] maxFrames maximum number of stack frames you want to bu printed
|
||||
*/
|
||||
static inline void print_stacktrace(
|
||||
static void print_stacktrace(
|
||||
bool demangle = true, FILE *out = stderr, unsigned int maxFrames = 63 );
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ static inline void print_stacktrace(
|
||||
#include <execinfo.h>
|
||||
#include <cxxabi.h>
|
||||
|
||||
static inline void print_stacktrace(
|
||||
static void print_stacktrace(
|
||||
bool demangle, FILE* out, unsigned int maxFrames )
|
||||
{
|
||||
if(!out)
|
||||
@ -163,7 +163,7 @@ struct RsAndroidBacktraceState
|
||||
void** end;
|
||||
};
|
||||
|
||||
static inline _Unwind_Reason_Code android_unwind_callback(
|
||||
static _Unwind_Reason_Code android_unwind_callback(
|
||||
struct _Unwind_Context* context, void* arg )
|
||||
{
|
||||
RsAndroidBacktraceState* state = static_cast<RsAndroidBacktraceState*>(arg);
|
||||
@ -177,7 +177,7 @@ static inline _Unwind_Reason_Code android_unwind_callback(
|
||||
return _URC_NO_REASON;
|
||||
}
|
||||
|
||||
static inline void print_stacktrace(
|
||||
static void print_stacktrace(
|
||||
bool demangle, FILE* /*out*/, unsigned int /*maxFrames*/)
|
||||
{
|
||||
constexpr int max = 5000;
|
||||
@ -243,7 +243,7 @@ static inline void print_stacktrace(
|
||||
|
||||
#else // defined(__linux__) && defined(__GLIBC__)
|
||||
|
||||
static inline void print_stacktrace(
|
||||
static void print_stacktrace(
|
||||
bool /*demangle*/, FILE* out, unsigned int /*max_frames*/ )
|
||||
{
|
||||
/** Notify the user which signal was caught. We use printf, because this
|
||||
|
||||
Loading…
Reference in New Issue
Block a user