mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-04-20 07:15:52 -04:00
Merge branch 'master' into chat-colors-v2
This commit is contained in:
commit
715437d6dc
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
||||
# SPDX-FileCopyrightText: (C) 2004-2019 Retroshare Team <contact@retroshare.cc>
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
*.o
|
||||
*.sw?
|
||||
*.so
|
||||
|
53
.gitlab-ci.yml
Normal file
53
.gitlab-ci.yml
Normal file
@ -0,0 +1,53 @@
|
||||
image: docker:stable
|
||||
|
||||
services:
|
||||
- docker:stable-dind
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_MERGE_REQUEST_ID
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
|
||||
build-and-test:
|
||||
script:
|
||||
- >
|
||||
if [ -n "$CI_MERGE_REQUEST_ID" ]; then
|
||||
REPO_ARGS="--build-arg REPO_URL=$CI_MERGE_REQUEST_SOURCE_PROJECT_URL" ;
|
||||
REPO_ARGS="$REPO_ARGS --build-arg REPO_BRANCH=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ;
|
||||
else
|
||||
REPO_ARGS="--build-arg REPO_URL=$CI_REPOSITORY_URL" ;
|
||||
REPO_ARGS="$REPO_ARGS --build-arg REPO_BRANCH=$CI_COMMIT_BRANCH" ;
|
||||
fi ;
|
||||
export REPO_ARGS ;
|
||||
echo REPO_ARGS=$REPO_ARGS ;
|
||||
- mkdir Dockercontext
|
||||
- >
|
||||
docker build -t retroshare:testing $REPO_ARGS
|
||||
--file $CI_PROJECT_DIR/build_scripts/GitlabCI/gitlabCI.Dockerfile
|
||||
Dockercontext
|
||||
- >
|
||||
docker run --name retroshare --detach --tty retroshare:testing
|
||||
retroshare-service --jsonApiPort 9092
|
||||
- apk add jq
|
||||
- >
|
||||
docker exec retroshare
|
||||
curl --verbose http://127.0.0.1:9092/rsJsonApi/version | jq
|
||||
- >
|
||||
docker exec retroshare
|
||||
curl --verbose http://127.0.0.1:9092/rsLoginHelper/getLocations | jq
|
||||
- >
|
||||
docker exec retroshare
|
||||
curl --verbose --data
|
||||
'{ "location":{ "mLocationName":"Test 1", "mPgpName":"Test2" },
|
||||
"password":"Test 3", "caller_data":"Test 5" }'
|
||||
http://127.0.0.1:9092/rsLoginHelper/createLocation | jq
|
||||
- >
|
||||
docker exec retroshare
|
||||
curl --verbose http://127.0.0.1:9092/rsLoginHelper/getLocations | jq
|
||||
- >
|
||||
docker exec retroshare
|
||||
curl --verbose http://127.0.0.1:9092/rsLoginHelper/isLoggedIn | jq
|
||||
- >
|
||||
docker exec retroshare
|
||||
curl --verbose http://127.0.0.1:9092/rsMsgs/getChatLobbyList | jq
|
||||
- docker container stop retroshare
|
16
.gitmodules
vendored
Normal file
16
.gitmodules
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
[submodule "supportlibs/restbed"]
|
||||
path = supportlibs/restbed
|
||||
url = https://github.com/Corvusoft/restbed.git
|
||||
[submodule "cmark"]
|
||||
path = supportlibs/cmark
|
||||
url = https://github.com/commonmark/cmark.git
|
||||
[submodule "build_scripts/OBS"]
|
||||
path = build_scripts/OBS
|
||||
url = https://github.com/RetroShare/OBS.git
|
||||
[submodule "supportlibs/udp-discovery-cpp"]
|
||||
path = supportlibs/udp-discovery-cpp
|
||||
url = https://github.com/truvorskameikin/udp-discovery-cpp.git
|
||||
branch = develop
|
||||
[submodule "supportlibs/rapidjson"]
|
||||
path = supportlibs/rapidjson
|
||||
url = https://github.com/Tencent/rapidjson.git
|
43
.reuse/dep5
Normal file
43
.reuse/dep5
Normal file
@ -0,0 +1,43 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: RetroShare
|
||||
Upstream-Contact: RetroShare Team <contact@retroshare.cc>
|
||||
|
||||
Files: *
|
||||
Copyright: 2004-2019, Retroshare Team <contact@retroshare.cc>
|
||||
License: AGPL-3.0-only
|
||||
|
||||
Files: libbitdht/*
|
||||
Copyright: 2004-2019, Retroshare Team <contact@retroshare.cc>
|
||||
License: LGPL-3.0-or-later
|
||||
|
||||
Files: openpgpsdk/*
|
||||
Copyright: 2005-2008, Ben Laurie
|
||||
2005-2008, Rachel Willmer
|
||||
2008-2019, Retroshare Team <contact@retroshare.cc>
|
||||
License: Apache-2.0
|
||||
|
||||
Files: libretroshare/*
|
||||
Copyright: 2004-2019, Retroshare Team <contact@retroshare.cc>
|
||||
License: LGPL-3.0-or-later
|
||||
|
||||
Files: libretroshare/src/deep_search/*
|
||||
Copyright: 2018-2019, Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
License: AGPL-3.0-only
|
||||
|
||||
Files: jsonapi-generator/*
|
||||
libretroshare/src/jsonapi/*
|
||||
Copyright: 2018-2019, Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
License: AGPL-3.0-or-later
|
||||
|
||||
Files: retroshare-gui/*
|
||||
Copyright: 2004-2019, Retroshare Team <contact@retroshare.cc>
|
||||
License: GPL-3.0-or-later
|
||||
|
||||
Files: retroshare-gui/src/TorControl/
|
||||
Copyright: 2014, John Brooks <john.brooks@dereferenced.net>
|
||||
License: BSD-3-Clause
|
||||
|
||||
Files: retroshare-gui/src/gui/common/PictureFlow.*
|
||||
retroshare-gui/src/qss/qdarkstyle.qss
|
||||
Copyright: 2013, Jeff Weinstein <jeff.weinstein@gmail.com>
|
||||
License: MIT
|
109
.travis.yml
109
.travis.yml
@ -1,40 +1,41 @@
|
||||
# SPDX-FileCopyrightText: (C) 2004-2019 Retroshare Team <contact@retroshare.cc>
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
git:
|
||||
depth: 2000
|
||||
|
||||
language: cpp
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
dist: trusty
|
||||
dist: bionic
|
||||
sudo: required
|
||||
compiler: gcc
|
||||
- os: osx
|
||||
osx_image: xcode6.2
|
||||
osx_image: xcode10.1
|
||||
compiler: clang
|
||||
sudo: false
|
||||
|
||||
before_install:
|
||||
- if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get update; fi
|
||||
- if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get install -y build-essential checkinstall cmake libavutil-dev libavcodec-dev libavformat-dev libbz2-dev libcurl4-openssl-dev libcv-dev libopencv-highgui-dev libhighgui-dev libgnome-keyring-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libjasper-dev libjpeg-dev libmicrohttpd-dev libopencv-dev libprotobuf-dev libqt4-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libssl-dev libswscale-dev libtbb-dev libtiff4-dev libupnp-dev libv4l-dev libxine-dev libxslt1-dev libxss-dev pkg-config protobuf-compiler python-dev qtmobility-dev gdb ; fi
|
||||
|
||||
|
||||
# - if [ $TRAVIS_OS_NAME == osx ]; then xcode-select --install ; fi
|
||||
- >
|
||||
if [ $TRAVIS_OS_NAME == linux ]; then
|
||||
sudo apt-get install -y
|
||||
build-essential libssl-dev libsqlcipher-dev libbz2-dev libsqlite3-dev
|
||||
libupnp-dev pkg-config qt5-default libxss-dev qtmultimedia5-dev
|
||||
libqt5x11extras5-dev libqt5designer5 libxapian-dev qttools5-dev
|
||||
rapidjson-dev ;
|
||||
fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew update ; fi
|
||||
# - if [ $TRAVIS_OS_NAME == osx ]; then brew install qt55 openssl miniupnpc libmicrohttpd speex homebrew/science/opencv ffmpeg sqlcipher ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install qt55 openssl miniupnpc libmicrohttpd speex speexdsp ffmpeg sqlcipher ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt55 ; fi
|
||||
#Fix for opencv and numpy already installed by system
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then rm '/usr/local/bin/f2py'; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then rm -r '/usr/local/lib/python2.7/site-packages/numpy'; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install homebrew/science/opencv; fi
|
||||
|
||||
# FIX: Now openssl is not linked in /usr/local/include and lib
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then ln -s /usr/local/opt/openssl/include/* /usr/local/include/; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then ln -s /usr/local/opt/openssl/lib/*.a /usr/local/lib/; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then ln -s /usr/local/opt/openssl/lib/*.dylib /usr/local/lib/; fi
|
||||
|
||||
# - if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get update && sudo apt-get install -y llvm-3.4 llvm-3.4-dev; fi
|
||||
# - rvm use $RVM --install --binary --fuzzy
|
||||
# - gem update --system
|
||||
# - gem --version
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install qt5; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt5 ; fi
|
||||
- >
|
||||
if [ $TRAVIS_OS_NAME == osx ]; then
|
||||
brew install openssl miniupnpc rapidjson sqlcipher;
|
||||
fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install p7zip; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then npm install -g appdmg; fi
|
||||
|
||||
env:
|
||||
global:
|
||||
@ -48,40 +49,52 @@ addons:
|
||||
name: "RetroShare/RetroShare"
|
||||
description: "RetroShare Build submitted via Travis CI"
|
||||
build_command_prepend: "qmake CONFIG+=no_sqlcipher; make clean"
|
||||
build_command: "make -j 4"
|
||||
build_command: "make -j4"
|
||||
branch_pattern: coverity_scan
|
||||
|
||||
before_script:
|
||||
- qmake QMAKE_CC=$CC QMAKE_CXX=$CXX CONFIG+=no_sqlcipher CONFIG+=tests
|
||||
- env
|
||||
- if [ $TRAVIS_OS_NAME == linux ]; then qmake; fi
|
||||
- >
|
||||
if [ $TRAVIS_OS_NAME == osx ]; then
|
||||
qmake CONFIG+=rs_macos10.14 CONFIG+=c++14
|
||||
INCLUDEPATH+=$(find /usr/local/Cellar/miniupnpc/*/include | head -n 1)
|
||||
QMAKE_LIBDIR+=$(find /usr/local/Cellar/miniupnpc/*/lib/ | head -n 1)
|
||||
INCLUDEPATH+=$(find /usr/local/Cellar/openssl*/*/include/ | head -n 1)
|
||||
QMAKE_LIBDIR+=$(find /usr/local/Cellar/openssl*/*/lib/ | head -n 1)
|
||||
INCLUDEPATH+=$(find /usr/local/Cellar/rapidjson/*/include | head -n 1)
|
||||
INCLUDEPATH+=$(find /usr/local/Cellar/sqlcipher/*/include | head -n 1)
|
||||
QMAKE_LIBDIR+=$(find /usr/local/Cellar/sqlcipher/*/lib | head -n 1);
|
||||
fi
|
||||
|
||||
script:
|
||||
- if [ $TRAVIS_OS_NAME == linux ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make && tests/unittests/unittests >/dev/null 2>&1 ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j 4 ; fi
|
||||
- if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j4; fi
|
||||
|
||||
after_success:
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then build_scripts/OSX/travis_makeOSXPackage.sh ; fi
|
||||
- if [ $TRAVIS_OS_NAME == linux ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j2; fi
|
||||
|
||||
|
||||
#after_success:
|
||||
# - if [ $TRAVIS_BRANCH == $TRAVIS_TAG ]; then rake deploy; fi
|
||||
|
||||
#branches:
|
||||
# only:
|
||||
# - master
|
||||
# - travis
|
||||
# branches:
|
||||
# only:
|
||||
# - v0.6-MacOS-Travis-Deploy2
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
irc:
|
||||
channels:
|
||||
- "chat.freenode.net#retroshare"
|
||||
template:
|
||||
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
|
||||
- "Message: %{commit_message}"
|
||||
- "Commit details: %{compare_url}"
|
||||
# webhooks:
|
||||
# urls:
|
||||
# - https://webhooks.gitter.im/e/9502afd22ca6c8e85fb3
|
||||
# on_success: change
|
||||
# on_failure: always
|
||||
# on_start: always
|
||||
channels:
|
||||
- "chat.freenode.net#retroshare"
|
||||
template:
|
||||
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
|
||||
- "Message: %{commit_message}"
|
||||
- "Commit details: %{compare_url}"
|
||||
|
||||
#env:
|
||||
# - RVM=2.0.0 LANG="en_US.UTF-8"
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: auwuhxelaMriNaXzT8I03xrh1s+STicNyNToOWFCAYKxkWWQ4WeaCO6kRDmQrejhizMUILGU+s4FrWTEhDsviftGAF86EgzxxbSBfsHHAP4t2C0pcXX8/WxEoh1IrUs7iGCIpl7O2cvWqGidc20ROeptSEd1uQgkHnn14D9A2YmXf8g52PzqivKkb6HKfkVTPdmNJkMBT5eDtEw6DIk+DvnvRo6b6uanvVAKS9CBwXOdA3rLzaD9bz0LrdL9X1CNoTkGROyez0Lsc4zTr70id2Xfp1MMmJAV6hgQy+iwE37wRyrxJf3dkh5SUAAMUC9Xnvh/iBKNQKdQGhj2WGcV7GZV9k6u9DA1w2H0kcrwt9KHUXdhEQ67yr6Boa9ZFwdDb5VIOtC6iHAoDZXharHhiuxi0K/bCtwNAajrMjBCm9mWhEKvtoxUUYxAJajhJkkO3ERaOU3zHE+06esDzGozd2YOEH8a74HhYy4xvhR05Yj00hAWLS2kIaUITiqmBf6Yuh5XwH7KCDcapxF59ROWqyicdwtbfWpvN8IvFuGKyxYuEfoT8WxZ4lZpo4Q9CrTB7gedJYJxYNfZE/okWoFBb4cpPI94PHo3DZPR7lVyQ60RNyeR0nOeqf8NW8cBT1G4jw3u1LEyAdyvup+54aALw0DCVyoDojSXB8s+AlQG2JE=
|
||||
file: retroshare-gui/src/retroshare.dmg
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: retroshare/RetroShare
|
||||
branch: v0.6-OSX-Deploy
|
||||
|
339
LICENSE.txt
339
LICENSE.txt
@ -1,339 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{description}
|
||||
Copyright (C) {year} {fullname}
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
{signature of Ty Coon}, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
613
LICENSES/AGPL-3.0-only.txt
Normal file
613
LICENSES/AGPL-3.0-only.txt
Normal file
@ -0,0 +1,613 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for software
|
||||
and other kinds of works, specifically designed to ensure cooperation with
|
||||
the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed to take
|
||||
away your freedom to share and change the works. By contrast, our General
|
||||
Public Licenses are intended to guarantee your freedom to share and change
|
||||
all versions of a program--to make sure it remains free software for all its
|
||||
users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price. Our
|
||||
General Public Licenses are designed to make sure that you have the freedom
|
||||
to distribute copies of free software (and charge for them if you wish), that
|
||||
you receive source code or can get it if you want it, that you can change
|
||||
the software or use pieces of it in new free programs, and that you know you
|
||||
can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights with two
|
||||
steps: (1) assert copyright on the software, and (2) offer you this License
|
||||
which gives you legal permission to copy, distribute and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that improvements made
|
||||
in alternate versions of the program, if they receive widespread use, become
|
||||
available for other developers to incorporate. Many developers of free software
|
||||
are heartened and encouraged by the resulting cooperation. However, in the
|
||||
case of software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and letting
|
||||
the public access it on a server without ever releasing its source code to
|
||||
the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to ensure that,
|
||||
in such cases, the modified source code becomes available to the community.
|
||||
It requires the operator of a network server to provide the source code of
|
||||
the modified version running there to the users of that server. Therefore,
|
||||
public use of a modified version, on a publicly accessible server, gives the
|
||||
public access to the source code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and published by
|
||||
Affero, was designed to accomplish similar goals. This is a different license,
|
||||
not a version of the Affero GPL, but Affero has released a new version of
|
||||
the Affero GPL which permits relicensing under this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and modification
|
||||
follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of works,
|
||||
such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this License.
|
||||
Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals
|
||||
or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work in
|
||||
a fashion requiring copyright permission, other than the making of an exact
|
||||
copy. The resulting work is called a "modified version" of the earlier work
|
||||
or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based on the
|
||||
Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without permission,
|
||||
would make you directly or secondarily liable for infringement under applicable
|
||||
copyright law, except executing it on a computer or modifying a private copy.
|
||||
Propagation includes copying, distribution (with or without modification),
|
||||
making available to the public, and in some countries other activities as
|
||||
well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other parties
|
||||
to make or receive copies. Mere interaction with a user through a computer
|
||||
network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" to the
|
||||
extent that it includes a convenient and prominently visible feature that
|
||||
(1) displays an appropriate copyright notice, and (2) tells the user that
|
||||
there is no warranty for the work (except to the extent that warranties are
|
||||
provided), that licensees may convey the work under this License, and how
|
||||
to view a copy of this License. If the interface presents a list of user commands
|
||||
or options, such as a menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work for making
|
||||
modifications to it. "Object code" means any non-source form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official standard
|
||||
defined by a recognized standards body, or, in the case of interfaces specified
|
||||
for a particular programming language, one that is widely used among developers
|
||||
working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other than
|
||||
the work as a whole, that (a) is included in the normal form of packaging
|
||||
a Major Component, but which is not part of that Major Component, and (b)
|
||||
serves only to enable use of the work with that Major Component, or to implement
|
||||
a Standard Interface for which an implementation is available to the public
|
||||
in source code form. A "Major Component", in this context, means a major essential
|
||||
component (kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to produce
|
||||
the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all the source
|
||||
code needed to generate, install, and (for an executable work) run the object
|
||||
code and to modify the work, including scripts to control those activities.
|
||||
However, it does not include the work's System Libraries, or general-purpose
|
||||
tools or generally available free programs which are used unmodified in performing
|
||||
those activities but which are not part of the work. For example, Corresponding
|
||||
Source includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically linked
|
||||
subprograms that the work is specifically designed to require, such as by
|
||||
intimate data communication or control flow between those
|
||||
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users can regenerate
|
||||
automatically from other parts of the Corresponding Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of copyright
|
||||
on the Program, and are irrevocable provided the stated conditions are met.
|
||||
This License explicitly affirms your unlimited permission to run the unmodified
|
||||
Program. The output from running a covered work is covered by this License
|
||||
only if the output, given its content, constitutes a covered work. This License
|
||||
acknowledges your rights of fair use or other equivalent, as provided by copyright
|
||||
law.
|
||||
|
||||
You may make, run and propagate covered works that you do not convey, without
|
||||
conditions so long as your license otherwise remains in force. You may convey
|
||||
covered works to others for the sole purpose of having them make modifications
|
||||
exclusively for you, or provide you with facilities for running those works,
|
||||
provided that you comply with the terms of this License in conveying all material
|
||||
for which you do not control copyright. Those thus making or running the covered
|
||||
works for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of your copyrighted
|
||||
material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under the conditions
|
||||
stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological measure
|
||||
under any applicable law fulfilling obligations under article 11 of the WIPO
|
||||
copyright treaty adopted on 20 December 1996, or similar laws prohibiting
|
||||
or restricting circumvention of such measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid circumvention
|
||||
of technological measures to the extent such circumvention is effected by
|
||||
exercising rights under this License with respect to the covered work, and
|
||||
you disclaim any intention to limit operation or modification of the work
|
||||
as a means of enforcing, against the work's users, your or third parties'
|
||||
legal rights to forbid circumvention of technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you receive
|
||||
it, in any medium, provided that you conspicuously and appropriately publish
|
||||
on each copy an appropriate copyright notice; keep intact all notices stating
|
||||
that this License and any non-permissive terms added in accord with section
|
||||
7 apply to the code; keep intact all notices of the absence of any warranty;
|
||||
and give all recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey, and you
|
||||
may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to produce
|
||||
it from the Program, in the form of source code under the terms of section
|
||||
4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified it, and
|
||||
giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is released under
|
||||
this License and any conditions added under section 7. This requirement modifies
|
||||
the requirement in section 4 to "keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this License to anyone
|
||||
who comes into possession of a copy. This License will therefore apply, along
|
||||
with any applicable section 7 additional terms, to the whole of the work,
|
||||
and all its parts, regardless of how they are packaged. This License gives
|
||||
no permission to license the work in any other way, but it does not invalidate
|
||||
such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display Appropriate
|
||||
Legal Notices; however, if the Program has interactive interfaces that do
|
||||
not display Appropriate Legal Notices, your work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent works,
|
||||
which are not by their nature extensions of the covered work, and which are
|
||||
not combined with it such as to form a larger program, in or on a volume of
|
||||
a storage or distribution medium, is called an "aggregate" if the compilation
|
||||
and its resulting copyright are not used to limit the access or legal rights
|
||||
of the compilation's users beyond what the individual works permit. Inclusion
|
||||
of a covered work in an aggregate does not cause this License to apply to
|
||||
the other parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms of sections
|
||||
4 and 5, provided that you also convey the machine-readable Corresponding
|
||||
Source under the terms of this License, in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product (including
|
||||
a physical distribution medium), accompanied by the Corresponding Source fixed
|
||||
on a durable physical medium customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product (including
|
||||
a physical distribution medium), accompanied by a written offer, valid for
|
||||
at least three years and valid for as long as you offer spare parts or customer
|
||||
support for that product model, to give anyone who possesses the object code
|
||||
either (1) a copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical medium customarily
|
||||
used for software interchange, for a price no more than your reasonable cost
|
||||
of physically performing this conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the written
|
||||
offer to provide the Corresponding Source. This alternative is allowed only
|
||||
occasionally and noncommercially, and only if you received the object code
|
||||
with such an offer, in accord with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated place (gratis
|
||||
or for a charge), and offer equivalent access to the Corresponding Source
|
||||
in the same way through the same place at no further charge. You need not
|
||||
require recipients to copy the Corresponding Source along with the object
|
||||
code. If the place to copy the object code is a network server, the Corresponding
|
||||
Source may be on a different server (operated by you or a third party) that
|
||||
supports equivalent copying facilities, provided you maintain clear directions
|
||||
next to the object code saying where to find the Corresponding Source. Regardless
|
||||
of what server hosts the Corresponding Source, you remain obligated to ensure
|
||||
that it is available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided you inform
|
||||
other peers where the object code and Corresponding Source of the work are
|
||||
being offered to the general public at no charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded from
|
||||
the Corresponding Source as a System Library, need not be included in conveying
|
||||
the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any tangible
|
||||
personal property which is normally used for personal, family, or household
|
||||
purposes, or (2) anything designed or sold for incorporation into a dwelling.
|
||||
In determining whether a product is a consumer product, doubtful cases shall
|
||||
be resolved in favor of coverage. For a particular product received by a particular
|
||||
user, "normally used" refers to a typical or common use of that class of product,
|
||||
regardless of the status of the particular user or of the way in which the
|
||||
particular user actually uses, or expects or is expected to use, the product.
|
||||
A product is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent the
|
||||
only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods, procedures,
|
||||
authorization keys, or other information required to install and execute modified
|
||||
versions of a covered work in that User Product from a modified version of
|
||||
its Corresponding Source. The information must suffice to ensure that the
|
||||
continued functioning of the modified object code is in no case prevented
|
||||
or interfered with solely because modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or specifically
|
||||
for use in, a User Product, and the conveying occurs as part of a transaction
|
||||
in which the right of possession and use of the User Product is transferred
|
||||
to the recipient in perpetuity or for a fixed term (regardless of how the
|
||||
transaction is characterized), the Corresponding Source conveyed under this
|
||||
section must be accompanied by the Installation Information. But this requirement
|
||||
does not apply if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has been installed
|
||||
in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a requirement
|
||||
to continue to provide support service, warranty, or updates for a work that
|
||||
has been modified or installed by the recipient, or for the User Product in
|
||||
which it has been modified or installed. Access to a network may be denied
|
||||
when the modification itself materially and adversely affects the operation
|
||||
of the network or violates the rules and protocols for communication across
|
||||
the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided, in accord
|
||||
with this section must be in a format that is publicly documented (and with
|
||||
an implementation available to the public in source code form), and must require
|
||||
no special password or key for unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this License
|
||||
by making exceptions from one or more of its conditions. Additional permissions
|
||||
that are applicable to the entire Program shall be treated as though they
|
||||
were included in this License, to the extent that they are valid under applicable
|
||||
law. If additional permissions apply only to part of the Program, that part
|
||||
may be used separately under those permissions, but the entire Program remains
|
||||
governed by this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option remove any
|
||||
additional permissions from that copy, or from any part of it. (Additional
|
||||
permissions may be written to require their own removal in certain cases when
|
||||
you modify the work.) You may place additional permissions on material, added
|
||||
by you to a covered work, for which you have or can give appropriate copyright
|
||||
permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you add
|
||||
to a covered work, you may (if authorized by the copyright holders of that
|
||||
material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the terms of
|
||||
sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or author
|
||||
attributions in that material or in the Appropriate Legal Notices displayed
|
||||
by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or requiring
|
||||
that modified versions of such material be marked in reasonable ways as different
|
||||
from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or authors
|
||||
of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some trade names,
|
||||
trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that material by
|
||||
anyone who conveys the material (or modified versions of it) with contractual
|
||||
assumptions of liability to the recipient, for any liability that these contractual
|
||||
assumptions directly impose on those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further restrictions"
|
||||
within the meaning of section 10. If the Program as you received it, or any
|
||||
part of it, contains a notice stating that it is governed by this License
|
||||
along with a term that is a further restriction, you may remove that term.
|
||||
If a license document contains a further restriction but permits relicensing
|
||||
or conveying under this License, you may add to a covered work material governed
|
||||
by the terms of that license document, provided that the further restriction
|
||||
does not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you must place,
|
||||
in the relevant source files, a statement of the additional terms that apply
|
||||
to those files, or a notice indicating where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the form
|
||||
of a separately written license, or stated as exceptions; the above requirements
|
||||
apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly provided
|
||||
under this License. Any attempt otherwise to propagate or modify it is void,
|
||||
and will automatically terminate your rights under this License (including
|
||||
any patent licenses granted under the third paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your license from
|
||||
a particular copyright holder is reinstated (a) provisionally, unless and
|
||||
until the copyright holder explicitly and finally terminates your license,
|
||||
and (b) permanently, if the copyright holder fails to notify you of the violation
|
||||
by some reasonable means prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is reinstated permanently
|
||||
if the copyright holder notifies you of the violation by some reasonable means,
|
||||
this is the first time you have received notice of violation of this License
|
||||
(for any work) from that copyright holder, and you cure the violation prior
|
||||
to 30 days after your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the licenses
|
||||
of parties who have received copies or rights from you under this License.
|
||||
If your rights have been terminated and not permanently reinstated, you do
|
||||
not qualify to receive new licenses for the same material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or run a copy
|
||||
of the Program. Ancillary propagation of a covered work occurring solely as
|
||||
a consequence of using peer-to-peer transmission to receive a copy likewise
|
||||
does not require acceptance. However, nothing other than this License grants
|
||||
you permission to propagate or modify any covered work. These actions infringe
|
||||
copyright if you do not accept this License. Therefore, by modifying or propagating
|
||||
a covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically receives
|
||||
a license from the original licensors, to run, modify and propagate that work,
|
||||
subject to this License. You are not responsible for enforcing compliance
|
||||
by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an organization,
|
||||
or substantially all assets of one, or subdividing an organization, or merging
|
||||
organizations. If propagation of a covered work results from an entity transaction,
|
||||
each party to that transaction who receives a copy of the work also receives
|
||||
whatever licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the Corresponding
|
||||
Source of the work from the predecessor in interest, if the predecessor has
|
||||
it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the rights
|
||||
granted or affirmed under this License. For example, you may not impose a
|
||||
license fee, royalty, or other charge for exercise of rights granted under
|
||||
this License, and you may not initiate litigation (including a cross-claim
|
||||
or counterclaim in a lawsuit) alleging that any patent claim is infringed
|
||||
by making, using, selling, offering for sale, or importing the Program or
|
||||
any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this License
|
||||
of the Program or a work on which the Program is based. The work thus licensed
|
||||
is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims owned or controlled
|
||||
by the contributor, whether already acquired or hereafter acquired, that would
|
||||
be infringed by some manner, permitted by this License, of making, using,
|
||||
or selling its contributor version, but do not include claims that would be
|
||||
infringed only as a consequence of further modification of the contributor
|
||||
version. For purposes of this definition, "control" includes the right to
|
||||
grant patent sublicenses in a manner consistent with the requirements of this
|
||||
License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free patent
|
||||
license under the contributor's essential patent claims, to make, use, sell,
|
||||
offer for sale, import and otherwise run, modify and propagate the contents
|
||||
of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express agreement
|
||||
or commitment, however denominated, not to enforce a patent (such as an express
|
||||
permission to practice a patent or covenant not to s ue for patent infringement).
|
||||
To "grant" such a patent license to a party means to make such an agreement
|
||||
or commitment not to enforce a patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license, and the
|
||||
Corresponding Source of the work is not available for anyone to copy, free
|
||||
of charge and under the terms of this License, through a publicly available
|
||||
network server or other readily accessible means, then you must either (1)
|
||||
cause the Corresponding Source to be so available, or (2) arrange to deprive
|
||||
yourself of the benefit of the patent license for this particular work, or
|
||||
(3) arrange, in a manner consistent with the requirements of this License,
|
||||
to extend the patent
|
||||
|
||||
license to downstream recipients. "Knowingly relying" means you have actual
|
||||
knowledge that, but for the patent license, your conveying the covered work
|
||||
in a country, or your recipient's use of the covered work in a country, would
|
||||
infringe one or more identifiable patents in that country that you have reason
|
||||
to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or arrangement,
|
||||
you convey, or propagate by procuring conveyance of, a covered work, and grant
|
||||
a patent license to some of the parties receiving the covered work authorizing
|
||||
them to use, propagate, modify or convey a specific copy of the covered work,
|
||||
then the patent license you grant is automatically extended to all recipients
|
||||
of the covered work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within the scope
|
||||
of its coverage, prohibits the exercise of, or is conditioned on the non-exercise
|
||||
of one or more of the rights that are specifically granted under this License.
|
||||
You may not convey a covered work if you are a party to an arrangement with
|
||||
a third party that is in the business of distributing software, under which
|
||||
you make payment to the third party based on the extent of your activity of
|
||||
conveying the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory patent
|
||||
license (a) in connection with copies of the covered work conveyed by you
|
||||
(or copies made from those copies), or (b) primarily for and in connection
|
||||
with specific products or compilations that contain the covered work, unless
|
||||
you entered into that arrangement, or that patent license was granted, prior
|
||||
to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting any implied
|
||||
license or other defenses to infringement that may otherwise be available
|
||||
to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or otherwise)
|
||||
that contradict the conditions of this License, they do not excuse you from
|
||||
the conditions of this License. If you cannot convey a covered work so as
|
||||
to satisfy simultaneously your obligations under this License and any other
|
||||
pertinent obligations, then as a consequence you may
|
||||
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey the
|
||||
Program, the only way you could satisfy both those terms and this License
|
||||
would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the Program,
|
||||
your modified version must prominently offer all users interacting with it
|
||||
remotely through a computer network (if your version supports such interaction)
|
||||
an opportunity to receive the Corresponding Source of your version by providing
|
||||
access to the Corresponding Source from a network server at no charge, through
|
||||
some standard or customary means of facilitating copying of software. This
|
||||
Corresponding Source shall include the Corresponding Source for any work covered
|
||||
by version 3 of the GNU General Public License that is incorporated pursuant
|
||||
to the following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have permission to
|
||||
link or combine any covered work with a work licensed under version 3 of the
|
||||
GNU General Public License into a single combined work, and to convey the
|
||||
resulting work. The terms of this License will continue to apply to the part
|
||||
which is the covered work, but the work with which it is combined will remain
|
||||
governed by version 3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of the
|
||||
GNU Affero General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to address
|
||||
new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program specifies
|
||||
that a certain numbered version of the GNU Affero General Public License "or
|
||||
any later version" applies to it, you have the option of following the terms
|
||||
and conditions either of that numbered version or of any later version published
|
||||
by the Free Software Foundation. If the Program does not specify a version
|
||||
number of the GNU Affero General Public License, you may choose any version
|
||||
ever published by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future versions of
|
||||
the GNU Affero General Public License can be used, that proxy's public statement
|
||||
of acceptance of a version permanently authorizes you to choose that version
|
||||
for the Program.
|
||||
|
||||
Later license versions may give you additional or different permissions. However,
|
||||
no additional obligations are imposed on any author or copyright holder as
|
||||
a result of your choosing to follow a later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
||||
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
|
||||
PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
|
||||
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM
|
||||
AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||||
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
|
||||
USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
|
||||
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
|
||||
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided above cannot
|
||||
be given local legal effect according to their terms, reviewing courts shall
|
||||
apply local law that most closely approximates an absolute waiver of all civil
|
||||
liability in connection with the Program, unless a warranty or assumption
|
||||
of liability accompanies a copy of the Program in return for a fee. END OF
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest possible
|
||||
use to the public, the best way to achieve this is to make it free software
|
||||
which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to attach
|
||||
them to the start of each source file to most effectively state the exclusion
|
||||
of warranty; and each file should have at least the "copyright" line and a
|
||||
pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it under
|
||||
the terms of the GNU Affero General Public License as published by the Free
|
||||
Software Foundation, either version 3 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License along
|
||||
with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If your software can interact with users remotely through a computer network,
|
||||
you should also make sure that it provides a way for users to get its source.
|
||||
For example, if your program is a web application, its interface could display
|
||||
a "Source" link that leads users to an archive of the code. There are many
|
||||
ways you could offer source, and different solutions will be better for different
|
||||
programs; see section 13 for the specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
613
LICENSES/AGPL-3.0-or-later.txt
Normal file
613
LICENSES/AGPL-3.0-or-later.txt
Normal file
@ -0,0 +1,613 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for software
|
||||
and other kinds of works, specifically designed to ensure cooperation with
|
||||
the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed to take
|
||||
away your freedom to share and change the works. By contrast, our General
|
||||
Public Licenses are intended to guarantee your freedom to share and change
|
||||
all versions of a program--to make sure it remains free software for all its
|
||||
users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price. Our
|
||||
General Public Licenses are designed to make sure that you have the freedom
|
||||
to distribute copies of free software (and charge for them if you wish), that
|
||||
you receive source code or can get it if you want it, that you can change
|
||||
the software or use pieces of it in new free programs, and that you know you
|
||||
can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights with two
|
||||
steps: (1) assert copyright on the software, and (2) offer you this License
|
||||
which gives you legal permission to copy, distribute and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that improvements made
|
||||
in alternate versions of the program, if they receive widespread use, become
|
||||
available for other developers to incorporate. Many developers of free software
|
||||
are heartened and encouraged by the resulting cooperation. However, in the
|
||||
case of software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and letting
|
||||
the public access it on a server without ever releasing its source code to
|
||||
the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to ensure that,
|
||||
in such cases, the modified source code becomes available to the community.
|
||||
It requires the operator of a network server to provide the source code of
|
||||
the modified version running there to the users of that server. Therefore,
|
||||
public use of a modified version, on a publicly accessible server, gives the
|
||||
public access to the source code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and published by
|
||||
Affero, was designed to accomplish similar goals. This is a different license,
|
||||
not a version of the Affero GPL, but Affero has released a new version of
|
||||
the Affero GPL which permits relicensing under this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and modification
|
||||
follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of works,
|
||||
such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this License.
|
||||
Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals
|
||||
or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work in
|
||||
a fashion requiring copyright permission, other than the making of an exact
|
||||
copy. The resulting work is called a "modified version" of the earlier work
|
||||
or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based on the
|
||||
Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without permission,
|
||||
would make you directly or secondarily liable for infringement under applicable
|
||||
copyright law, except executing it on a computer or modifying a private copy.
|
||||
Propagation includes copying, distribution (with or without modification),
|
||||
making available to the public, and in some countries other activities as
|
||||
well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other parties
|
||||
to make or receive copies. Mere interaction with a user through a computer
|
||||
network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" to the
|
||||
extent that it includes a convenient and prominently visible feature that
|
||||
(1) displays an appropriate copyright notice, and (2) tells the user that
|
||||
there is no warranty for the work (except to the extent that warranties are
|
||||
provided), that licensees may convey the work under this License, and how
|
||||
to view a copy of this License. If the interface presents a list of user commands
|
||||
or options, such as a menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work for making
|
||||
modifications to it. "Object code" means any non-source form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official standard
|
||||
defined by a recognized standards body, or, in the case of interfaces specified
|
||||
for a particular programming language, one that is widely used among developers
|
||||
working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other than
|
||||
the work as a whole, that (a) is included in the normal form of packaging
|
||||
a Major Component, but which is not part of that Major Component, and (b)
|
||||
serves only to enable use of the work with that Major Component, or to implement
|
||||
a Standard Interface for which an implementation is available to the public
|
||||
in source code form. A "Major Component", in this context, means a major essential
|
||||
component (kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to produce
|
||||
the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all the source
|
||||
code needed to generate, install, and (for an executable work) run the object
|
||||
code and to modify the work, including scripts to control those activities.
|
||||
However, it does not include the work's System Libraries, or general-purpose
|
||||
tools or generally available free programs which are used unmodified in performing
|
||||
those activities but which are not part of the work. For example, Corresponding
|
||||
Source includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically linked
|
||||
subprograms that the work is specifically designed to require, such as by
|
||||
intimate data communication or control flow between those
|
||||
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users can regenerate
|
||||
automatically from other parts of the Corresponding Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of copyright
|
||||
on the Program, and are irrevocable provided the stated conditions are met.
|
||||
This License explicitly affirms your unlimited permission to run the unmodified
|
||||
Program. The output from running a covered work is covered by this License
|
||||
only if the output, given its content, constitutes a covered work. This License
|
||||
acknowledges your rights of fair use or other equivalent, as provided by copyright
|
||||
law.
|
||||
|
||||
You may make, run and propagate covered works that you do not convey, without
|
||||
conditions so long as your license otherwise remains in force. You may convey
|
||||
covered works to others for the sole purpose of having them make modifications
|
||||
exclusively for you, or provide you with facilities for running those works,
|
||||
provided that you comply with the terms of this License in conveying all material
|
||||
for which you do not control copyright. Those thus making or running the covered
|
||||
works for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of your copyrighted
|
||||
material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under the conditions
|
||||
stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological measure
|
||||
under any applicable law fulfilling obligations under article 11 of the WIPO
|
||||
copyright treaty adopted on 20 December 1996, or similar laws prohibiting
|
||||
or restricting circumvention of such measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid circumvention
|
||||
of technological measures to the extent such circumvention is effected by
|
||||
exercising rights under this License with respect to the covered work, and
|
||||
you disclaim any intention to limit operation or modification of the work
|
||||
as a means of enforcing, against the work's users, your or third parties'
|
||||
legal rights to forbid circumvention of technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you receive
|
||||
it, in any medium, provided that you conspicuously and appropriately publish
|
||||
on each copy an appropriate copyright notice; keep intact all notices stating
|
||||
that this License and any non-permissive terms added in accord with section
|
||||
7 apply to the code; keep intact all notices of the absence of any warranty;
|
||||
and give all recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey, and you
|
||||
may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to produce
|
||||
it from the Program, in the form of source code under the terms of section
|
||||
4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified it, and
|
||||
giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is released under
|
||||
this License and any conditions added under section 7. This requirement modifies
|
||||
the requirement in section 4 to "keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this License to anyone
|
||||
who comes into possession of a copy. This License will therefore apply, along
|
||||
with any applicable section 7 additional terms, to the whole of the work,
|
||||
and all its parts, regardless of how they are packaged. This License gives
|
||||
no permission to license the work in any other way, but it does not invalidate
|
||||
such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display Appropriate
|
||||
Legal Notices; however, if the Program has interactive interfaces that do
|
||||
not display Appropriate Legal Notices, your work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent works,
|
||||
which are not by their nature extensions of the covered work, and which are
|
||||
not combined with it such as to form a larger program, in or on a volume of
|
||||
a storage or distribution medium, is called an "aggregate" if the compilation
|
||||
and its resulting copyright are not used to limit the access or legal rights
|
||||
of the compilation's users beyond what the individual works permit. Inclusion
|
||||
of a covered work in an aggregate does not cause this License to apply to
|
||||
the other parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms of sections
|
||||
4 and 5, provided that you also convey the machine-readable Corresponding
|
||||
Source under the terms of this License, in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product (including
|
||||
a physical distribution medium), accompanied by the Corresponding Source fixed
|
||||
on a durable physical medium customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product (including
|
||||
a physical distribution medium), accompanied by a written offer, valid for
|
||||
at least three years and valid for as long as you offer spare parts or customer
|
||||
support for that product model, to give anyone who possesses the object code
|
||||
either (1) a copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical medium customarily
|
||||
used for software interchange, for a price no more than your reasonable cost
|
||||
of physically performing this conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the written
|
||||
offer to provide the Corresponding Source. This alternative is allowed only
|
||||
occasionally and noncommercially, and only if you received the object code
|
||||
with such an offer, in accord with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated place (gratis
|
||||
or for a charge), and offer equivalent access to the Corresponding Source
|
||||
in the same way through the same place at no further charge. You need not
|
||||
require recipients to copy the Corresponding Source along with the object
|
||||
code. If the place to copy the object code is a network server, the Corresponding
|
||||
Source may be on a different server (operated by you or a third party) that
|
||||
supports equivalent copying facilities, provided you maintain clear directions
|
||||
next to the object code saying where to find the Corresponding Source. Regardless
|
||||
of what server hosts the Corresponding Source, you remain obligated to ensure
|
||||
that it is available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided you inform
|
||||
other peers where the object code and Corresponding Source of the work are
|
||||
being offered to the general public at no charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded from
|
||||
the Corresponding Source as a System Library, need not be included in conveying
|
||||
the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any tangible
|
||||
personal property which is normally used for personal, family, or household
|
||||
purposes, or (2) anything designed or sold for incorporation into a dwelling.
|
||||
In determining whether a product is a consumer product, doubtful cases shall
|
||||
be resolved in favor of coverage. For a particular product received by a particular
|
||||
user, "normally used" refers to a typical or common use of that class of product,
|
||||
regardless of the status of the particular user or of the way in which the
|
||||
particular user actually uses, or expects or is expected to use, the product.
|
||||
A product is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent the
|
||||
only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods, procedures,
|
||||
authorization keys, or other information required to install and execute modified
|
||||
versions of a covered work in that User Product from a modified version of
|
||||
its Corresponding Source. The information must suffice to ensure that the
|
||||
continued functioning of the modified object code is in no case prevented
|
||||
or interfered with solely because modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or specifically
|
||||
for use in, a User Product, and the conveying occurs as part of a transaction
|
||||
in which the right of possession and use of the User Product is transferred
|
||||
to the recipient in perpetuity or for a fixed term (regardless of how the
|
||||
transaction is characterized), the Corresponding Source conveyed under this
|
||||
section must be accompanied by the Installation Information. But this requirement
|
||||
does not apply if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has been installed
|
||||
in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a requirement
|
||||
to continue to provide support service, warranty, or updates for a work that
|
||||
has been modified or installed by the recipient, or for the User Product in
|
||||
which it has been modified or installed. Access to a network may be denied
|
||||
when the modification itself materially and adversely affects the operation
|
||||
of the network or violates the rules and protocols for communication across
|
||||
the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided, in accord
|
||||
with this section must be in a format that is publicly documented (and with
|
||||
an implementation available to the public in source code form), and must require
|
||||
no special password or key for unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this License
|
||||
by making exceptions from one or more of its conditions. Additional permissions
|
||||
that are applicable to the entire Program shall be treated as though they
|
||||
were included in this License, to the extent that they are valid under applicable
|
||||
law. If additional permissions apply only to part of the Program, that part
|
||||
may be used separately under those permissions, but the entire Program remains
|
||||
governed by this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option remove any
|
||||
additional permissions from that copy, or from any part of it. (Additional
|
||||
permissions may be written to require their own removal in certain cases when
|
||||
you modify the work.) You may place additional permissions on material, added
|
||||
by you to a covered work, for which you have or can give appropriate copyright
|
||||
permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you add
|
||||
to a covered work, you may (if authorized by the copyright holders of that
|
||||
material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the terms of
|
||||
sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or author
|
||||
attributions in that material or in the Appropriate Legal Notices displayed
|
||||
by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or requiring
|
||||
that modified versions of such material be marked in reasonable ways as different
|
||||
from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or authors
|
||||
of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some trade names,
|
||||
trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that material by
|
||||
anyone who conveys the material (or modified versions of it) with contractual
|
||||
assumptions of liability to the recipient, for any liability that these contractual
|
||||
assumptions directly impose on those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further restrictions"
|
||||
within the meaning of section 10. If the Program as you received it, or any
|
||||
part of it, contains a notice stating that it is governed by this License
|
||||
along with a term that is a further restriction, you may remove that term.
|
||||
If a license document contains a further restriction but permits relicensing
|
||||
or conveying under this License, you may add to a covered work material governed
|
||||
by the terms of that license document, provided that the further restriction
|
||||
does not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you must place,
|
||||
in the relevant source files, a statement of the additional terms that apply
|
||||
to those files, or a notice indicating where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the form
|
||||
of a separately written license, or stated as exceptions; the above requirements
|
||||
apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly provided
|
||||
under this License. Any attempt otherwise to propagate or modify it is void,
|
||||
and will automatically terminate your rights under this License (including
|
||||
any patent licenses granted under the third paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your license from
|
||||
a particular copyright holder is reinstated (a) provisionally, unless and
|
||||
until the copyright holder explicitly and finally terminates your license,
|
||||
and (b) permanently, if the copyright holder fails to notify you of the violation
|
||||
by some reasonable means prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is reinstated permanently
|
||||
if the copyright holder notifies you of the violation by some reasonable means,
|
||||
this is the first time you have received notice of violation of this License
|
||||
(for any work) from that copyright holder, and you cure the violation prior
|
||||
to 30 days after your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the licenses
|
||||
of parties who have received copies or rights from you under this License.
|
||||
If your rights have been terminated and not permanently reinstated, you do
|
||||
not qualify to receive new licenses for the same material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or run a copy
|
||||
of the Program. Ancillary propagation of a covered work occurring solely as
|
||||
a consequence of using peer-to-peer transmission to receive a copy likewise
|
||||
does not require acceptance. However, nothing other than this License grants
|
||||
you permission to propagate or modify any covered work. These actions infringe
|
||||
copyright if you do not accept this License. Therefore, by modifying or propagating
|
||||
a covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically receives
|
||||
a license from the original licensors, to run, modify and propagate that work,
|
||||
subject to this License. You are not responsible for enforcing compliance
|
||||
by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an organization,
|
||||
or substantially all assets of one, or subdividing an organization, or merging
|
||||
organizations. If propagation of a covered work results from an entity transaction,
|
||||
each party to that transaction who receives a copy of the work also receives
|
||||
whatever licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the Corresponding
|
||||
Source of the work from the predecessor in interest, if the predecessor has
|
||||
it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the rights
|
||||
granted or affirmed under this License. For example, you may not impose a
|
||||
license fee, royalty, or other charge for exercise of rights granted under
|
||||
this License, and you may not initiate litigation (including a cross-claim
|
||||
or counterclaim in a lawsuit) alleging that any patent claim is infringed
|
||||
by making, using, selling, offering for sale, or importing the Program or
|
||||
any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this License
|
||||
of the Program or a work on which the Program is based. The work thus licensed
|
||||
is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims owned or controlled
|
||||
by the contributor, whether already acquired or hereafter acquired, that would
|
||||
be infringed by some manner, permitted by this License, of making, using,
|
||||
or selling its contributor version, but do not include claims that would be
|
||||
infringed only as a consequence of further modification of the contributor
|
||||
version. For purposes of this definition, "control" includes the right to
|
||||
grant patent sublicenses in a manner consistent with the requirements of this
|
||||
License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free patent
|
||||
license under the contributor's essential patent claims, to make, use, sell,
|
||||
offer for sale, import and otherwise run, modify and propagate the contents
|
||||
of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express agreement
|
||||
or commitment, however denominated, not to enforce a patent (such as an express
|
||||
permission to practice a patent or covenant not to s ue for patent infringement).
|
||||
To "grant" such a patent license to a party means to make such an agreement
|
||||
or commitment not to enforce a patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license, and the
|
||||
Corresponding Source of the work is not available for anyone to copy, free
|
||||
of charge and under the terms of this License, through a publicly available
|
||||
network server or other readily accessible means, then you must either (1)
|
||||
cause the Corresponding Source to be so available, or (2) arrange to deprive
|
||||
yourself of the benefit of the patent license for this particular work, or
|
||||
(3) arrange, in a manner consistent with the requirements of this License,
|
||||
to extend the patent
|
||||
|
||||
license to downstream recipients. "Knowingly relying" means you have actual
|
||||
knowledge that, but for the patent license, your conveying the covered work
|
||||
in a country, or your recipient's use of the covered work in a country, would
|
||||
infringe one or more identifiable patents in that country that you have reason
|
||||
to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or arrangement,
|
||||
you convey, or propagate by procuring conveyance of, a covered work, and grant
|
||||
a patent license to some of the parties receiving the covered work authorizing
|
||||
them to use, propagate, modify or convey a specific copy of the covered work,
|
||||
then the patent license you grant is automatically extended to all recipients
|
||||
of the covered work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within the scope
|
||||
of its coverage, prohibits the exercise of, or is conditioned on the non-exercise
|
||||
of one or more of the rights that are specifically granted under this License.
|
||||
You may not convey a covered work if you are a party to an arrangement with
|
||||
a third party that is in the business of distributing software, under which
|
||||
you make payment to the third party based on the extent of your activity of
|
||||
conveying the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory patent
|
||||
license (a) in connection with copies of the covered work conveyed by you
|
||||
(or copies made from those copies), or (b) primarily for and in connection
|
||||
with specific products or compilations that contain the covered work, unless
|
||||
you entered into that arrangement, or that patent license was granted, prior
|
||||
to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting any implied
|
||||
license or other defenses to infringement that may otherwise be available
|
||||
to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or otherwise)
|
||||
that contradict the conditions of this License, they do not excuse you from
|
||||
the conditions of this License. If you cannot convey a covered work so as
|
||||
to satisfy simultaneously your obligations under this License and any other
|
||||
pertinent obligations, then as a consequence you may
|
||||
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey the
|
||||
Program, the only way you could satisfy both those terms and this License
|
||||
would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the Program,
|
||||
your modified version must prominently offer all users interacting with it
|
||||
remotely through a computer network (if your version supports such interaction)
|
||||
an opportunity to receive the Corresponding Source of your version by providing
|
||||
access to the Corresponding Source from a network server at no charge, through
|
||||
some standard or customary means of facilitating copying of software. This
|
||||
Corresponding Source shall include the Corresponding Source for any work covered
|
||||
by version 3 of the GNU General Public License that is incorporated pursuant
|
||||
to the following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have permission to
|
||||
link or combine any covered work with a work licensed under version 3 of the
|
||||
GNU General Public License into a single combined work, and to convey the
|
||||
resulting work. The terms of this License will continue to apply to the part
|
||||
which is the covered work, but the work with which it is combined will remain
|
||||
governed by version 3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of the
|
||||
GNU Affero General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to address
|
||||
new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program specifies
|
||||
that a certain numbered version of the GNU Affero General Public License "or
|
||||
any later version" applies to it, you have the option of following the terms
|
||||
and conditions either of that numbered version or of any later version published
|
||||
by the Free Software Foundation. If the Program does not specify a version
|
||||
number of the GNU Affero General Public License, you may choose any version
|
||||
ever published by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future versions of
|
||||
the GNU Affero General Public License can be used, that proxy's public statement
|
||||
of acceptance of a version permanently authorizes you to choose that version
|
||||
for the Program.
|
||||
|
||||
Later license versions may give you additional or different permissions. However,
|
||||
no additional obligations are imposed on any author or copyright holder as
|
||||
a result of your choosing to follow a later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
||||
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
|
||||
PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
|
||||
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM
|
||||
AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||||
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
|
||||
USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
|
||||
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
|
||||
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided above cannot
|
||||
be given local legal effect according to their terms, reviewing courts shall
|
||||
apply local law that most closely approximates an absolute waiver of all civil
|
||||
liability in connection with the Program, unless a warranty or assumption
|
||||
of liability accompanies a copy of the Program in return for a fee. END OF
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest possible
|
||||
use to the public, the best way to achieve this is to make it free software
|
||||
which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to attach
|
||||
them to the start of each source file to most effectively state the exclusion
|
||||
of warranty; and each file should have at least the "copyright" line and a
|
||||
pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it under
|
||||
the terms of the GNU Affero General Public License as published by the Free
|
||||
Software Foundation, either version 3 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License along
|
||||
with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If your software can interact with users remotely through a computer network,
|
||||
you should also make sure that it provides a way for users to get its source.
|
||||
For example, if your program is a web application, its interface could display
|
||||
a "Source" link that leads users to an archive of the code. There are many
|
||||
ways you could offer source, and different solutions will be better for different
|
||||
programs; see section 13 for the specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
208
LICENSES/Apache-2.0.txt
Normal file
208
LICENSES/Apache-2.0.txt
Normal file
@ -0,0 +1,208 @@
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
|
||||
AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution
|
||||
as defined by Sections 1 through 9 of this document.
|
||||
|
||||
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that entity.
|
||||
For the purposes of this definition, "control" means (i) the power, direct
|
||||
or indirect, to cause the direction or management of such entity, whether
|
||||
by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
|
||||
of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
|
||||
granted by this License.
|
||||
|
||||
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and configuration
|
||||
files.
|
||||
|
||||
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation
|
||||
or translation of a Source form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that
|
||||
is included in or attached to the work (an example is provided in the Appendix
|
||||
below).
|
||||
|
||||
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form,
|
||||
that is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative
|
||||
Works shall not include works that remain separable from, or merely link (or
|
||||
bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version
|
||||
of the Work and any modifications or additions to that Work or Derivative
|
||||
Works thereof, that is intentionally submitted to Licensor for inclusion in
|
||||
the Work by the copyright owner or by an individual or Legal Entity authorized
|
||||
to submit on behalf of the copyright owner. For the purposes of this definition,
|
||||
"submitted" means any form of electronic, verbal, or written communication
|
||||
sent to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems, and
|
||||
issue tracking systems that are managed by, or on behalf of, the Licensor
|
||||
for the purpose of discussing and improving the Work, but excluding communication
|
||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
||||
owner as "Not a Contribution."
|
||||
|
||||
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently incorporated
|
||||
within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
|
||||
Derivative Works of, publicly display, publicly perform, sublicense, and distribute
|
||||
the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License,
|
||||
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and otherwise
|
||||
transfer the Work, where such license applies only to those patent claims
|
||||
licensable by such Contributor that are necessarily infringed by their Contribution(s)
|
||||
alone or by combination of their Contribution(s) with the Work to which such
|
||||
Contribution(s) was submitted. If You institute patent litigation against
|
||||
any entity (including a cross-claim or counterclaim in a lawsuit) alleging
|
||||
that the Work or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses granted to You
|
||||
under this License for that Work shall terminate as of the date such litigation
|
||||
is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications, and
|
||||
in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or Derivative Works a copy
|
||||
of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices stating that
|
||||
You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works that You distribute,
|
||||
all copyright, patent, trademark, and attribution notices from the Source
|
||||
form of the Work, excluding those notices that do not pertain to any part
|
||||
of the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its distribution,
|
||||
then any Derivative Works that You distribute must include a readable copy
|
||||
of the attribution notices contained within such NOTICE file, excluding those
|
||||
notices that do not pertain to any part of the Derivative Works, in at least
|
||||
one of the following places: within a NOTICE text file distributed as part
|
||||
of the Derivative Works; within the Source form or documentation, if provided
|
||||
along with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and do not modify the
|
||||
License. You may add Your own attribution notices within Derivative Works
|
||||
that You distribute, alongside or as an addendum to the NOTICE text from the
|
||||
Work, provided that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction,
|
||||
or distribution of Your modifications, or for any such Derivative Works as
|
||||
a whole, provided Your use, reproduction, and distribution of the Work otherwise
|
||||
complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any
|
||||
Contribution intentionally submitted for inclusion in the Work by You to the
|
||||
Licensor shall be under the terms and conditions of this License, without
|
||||
any additional terms or conditions. Notwithstanding the above, nothing herein
|
||||
shall supersede or modify the terms of any separate license agreement you
|
||||
may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names,
|
||||
trademarks, service marks, or product names of the Licensor, except as required
|
||||
for reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to
|
||||
in writing, Licensor provides the Work (and each Contributor provides its
|
||||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
|
||||
of using or redistributing the Work and assume any risks associated with Your
|
||||
exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether
|
||||
in tort (including negligence), contract, or otherwise, unless required by
|
||||
applicable law (such as deliberate and grossly negligent acts) or agreed to
|
||||
in writing, shall any Contributor be liable to You for damages, including
|
||||
any direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of the use or inability
|
||||
to use the Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all other commercial
|
||||
damages or losses), even if such Contributor has been advised of the possibility
|
||||
of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work
|
||||
or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||
acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such obligations,
|
||||
You may act only on Your own behalf and on Your sole responsibility, not on
|
||||
behalf of any other Contributor, and only if You agree to indemnify, defend,
|
||||
and hold each Contributor harmless for any liability incurred by, or claims
|
||||
asserted against, such Contributor by reason of your accepting any such warranty
|
||||
or additional liability. END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following boilerplate
|
||||
notice, with the fields enclosed by brackets "[]" replaced with your own identifying
|
||||
information. (Don't include the brackets!) The text should be enclosed in
|
||||
the appropriate comment syntax for the file format. We also recommend that
|
||||
a file or class name and description of purpose be included on the same "printed
|
||||
page" as the copyright notice for easier identification within third-party
|
||||
archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
See the License for the specific language governing permissions and
|
||||
|
||||
limitations under the License.
|
350
LICENSES/CC-BY-SA-4.0.txt
Normal file
350
LICENSES/CC-BY-SA-4.0.txt
Normal file
@ -0,0 +1,350 @@
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Creative Commons
|
||||
Corporation ("Creative Commons") is not a law firm and does not provide legal
|
||||
services or legal advice. Distribution of Creative Commons public licenses
|
||||
does not create a lawyer-client or other relationship. Creative Commons makes
|
||||
its licenses and related information available on an "as-is" basis. Creative
|
||||
Commons gives no warranties regarding its licenses, any material licensed
|
||||
under their terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the fullest
|
||||
extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and conditions
|
||||
that creators and other rights holders may use to share original works of
|
||||
authorship and other material subject to copyright and certain other rights
|
||||
specified in the public license below. The following considerations are for
|
||||
informational purposes only, are not exhaustive, and do not form part of our
|
||||
licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are intended for use by
|
||||
those authorized to give the public permission to use material in ways otherwise
|
||||
restricted by copyright and certain other rights. Our licenses are irrevocable.
|
||||
Licensors should read and understand the terms and conditions of the license
|
||||
they choose before applying it. Licensors should also secure all rights necessary
|
||||
before applying our licenses so that the public can reuse the material as
|
||||
expected. Licensors should clearly mark any material not subject to the license.
|
||||
This includes other CC-licensed material, or material used under an exception
|
||||
or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public licenses, a licensor
|
||||
grants the public permission to use the licensed material under specified
|
||||
terms and conditions. If the licensor's permission is not necessary for any
|
||||
reason–for example, because of any applicable exception or limitation to copyright–then
|
||||
that use is not regulated by the license. Our licenses grant only permissions
|
||||
under copyright and certain other rights that a licensor has authority to
|
||||
grant. Use of the licensed material may still be restricted for other reasons,
|
||||
including because others have copyright or other rights in the material. A
|
||||
licensor may make special requests, such as asking that all changes be marked
|
||||
or described.
|
||||
|
||||
Although not required by our licenses, you are encouraged to respect those
|
||||
requests where reasonable. More considerations for the public : wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to
|
||||
be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike
|
||||
4.0 International Public License ("Public License"). To the extent this Public
|
||||
License may be interpreted as a contract, You are granted the Licensed Rights
|
||||
in consideration of Your acceptance of these terms and conditions, and the
|
||||
Licensor grants You such rights in consideration of benefits the Licensor
|
||||
receives from making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
Section 1 – Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar Rights
|
||||
that is derived from or based upon the Licensed Material and in which the
|
||||
Licensed Material is translated, altered, arranged, transformed, or otherwise
|
||||
modified in a manner requiring permission under the Copyright and Similar
|
||||
Rights held by the Licensor. For purposes of this Public License, where the
|
||||
Licensed Material is a musical work, performance, or sound recording, Adapted
|
||||
Material is always produced where the Licensed Material is synched in timed
|
||||
relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright and Similar
|
||||
Rights in Your contributions to Adapted Material in accordance with the terms
|
||||
and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses,
|
||||
approved by Creative Commons as essentially the equivalent of this Public
|
||||
License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights closely
|
||||
related to copyright including, without limitation, performance, broadcast,
|
||||
sound recording, and Sui Generis Database Rights, without regard to how the
|
||||
rights are labeled or categorized. For purposes of this Public License, the
|
||||
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the absence
|
||||
of proper authority, may not be circumvented under laws fulfilling obligations
|
||||
under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,
|
||||
and/or similar international agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or any other
|
||||
exception or limitation to Copyright and Similar Rights that applies to Your
|
||||
use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name of a Creative
|
||||
Commons Public License. The License Elements of this Public License are Attribution
|
||||
and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database, or other
|
||||
material to which the Licensor applied this Public License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the terms and
|
||||
conditions of this Public License, which are limited to all Copyright and
|
||||
Similar Rights that apply to Your use of the Licensed Material and that the
|
||||
Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights under this
|
||||
Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or process that
|
||||
requires permission under the Licensed Rights, such as reproduction, public
|
||||
display, public performance, distribution, dissemination, communication, or
|
||||
importation, and to make material available to the public including in ways
|
||||
that members of the public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright resulting
|
||||
from Directive 96/9/EC of the European Parliament and of the Council of 11
|
||||
March 1996 on the legal protection of databases, as amended and/or succeeded,
|
||||
as well as other essentially equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights under
|
||||
this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 – Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License, the Licensor
|
||||
hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,
|
||||
irrevocable license to exercise the Licensed Rights in the Licensed Material
|
||||
to:
|
||||
|
||||
A. reproduce and Share the Licensed Material, in whole or in part; and
|
||||
|
||||
B. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
|
||||
and Limitations apply to Your use, this Public License does not apply, and
|
||||
You do not need to comply with its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section 6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The Licensor authorizes
|
||||
You to exercise the Licensed Rights in all media and formats whether now known
|
||||
or hereafter created, and to make technical modifications necessary to do
|
||||
so. The Licensor waives and/or agrees not to assert any right or authority
|
||||
to forbid You from making technical modifications necessary to exercise the
|
||||
Licensed Rights, including technical modifications necessary to circumvent
|
||||
Effective Technological Measures. For purposes of this Public License, simply
|
||||
making modifications authorized by this Section 2(a)(4) never produces Adapted
|
||||
Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
|
||||
Material automatically receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this Public License.
|
||||
|
||||
B. Additional offer from the Licensor – Adapted Material. Every recipient
|
||||
of Adapted Material from You automatically receives an offer from the Licensor
|
||||
to exercise the Licensed Rights in the Adapted Material under the conditions
|
||||
of the Adapter's License You apply.
|
||||
|
||||
C. No downstream restrictions. You may not offer or impose any additional
|
||||
or different terms or conditions on, or apply any Effective Technological
|
||||
Measures to, the Licensed Material if doing so restricts exercise of the Licensed
|
||||
Rights by any recipient of the Licensed Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or may be construed
|
||||
as permission to assert or imply that You are, or that Your use of the Licensed
|
||||
Material is, connected with, or sponsored, endorsed, or granted official status
|
||||
by, the Licensor or others designated to receive attribution as provided in
|
||||
Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not licensed under this
|
||||
Public License, nor are publicity, privacy, and/or other similar personality
|
||||
rights; however, to the extent possible, the Licensor waives and/or agrees
|
||||
not to assert any such rights held by the Licensor to the limited extent necessary
|
||||
to allow You to exercise the Licensed Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to collect royalties
|
||||
from You for the exercise of the Licensed Rights, whether directly or through
|
||||
a collecting society under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly reserves any right
|
||||
to collect such royalties.
|
||||
|
||||
Section 3 – License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the following
|
||||
conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified form), You must:
|
||||
|
||||
A. retain the following if it is supplied by the Licensor with the Licensed
|
||||
Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed Material and any others
|
||||
designated to receive attribution, in any reasonable manner requested by the
|
||||
Licensor (including by pseudonym if designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||
|
||||
B. indicate if You modified the Licensed Material and retain an indication
|
||||
of any previous modifications; and
|
||||
|
||||
C. indicate the Licensed Material is licensed under this Public License, and
|
||||
include the text of, or the URI or hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner
|
||||
based on the medium, means, and context in which You Share the Licensed Material.
|
||||
For example, it may be reasonable to satisfy the conditions by providing a
|
||||
URI or hyperlink to a resource that includes the required information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the information required
|
||||
by Section 3(a)(1)(A) to the extent reasonably practicable.
|
||||
|
||||
b. ShareAlike.In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons license with
|
||||
the same License Elements, this version or later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the Adapter's
|
||||
License You apply. You may satisfy this condition in any reasonable manner
|
||||
based on the medium, means, and context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms or conditions
|
||||
on, or apply any Effective Technological Measures to, Adapted Material that
|
||||
restrict exercise of the rights granted under the Adapter's License You apply.
|
||||
|
||||
Section 4 – Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to
|
||||
Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
|
||||
reuse, reproduce, and Share all or a substantial portion of the contents of
|
||||
the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database contents in
|
||||
a database in which You have Sui Generis Database Rights, then the database
|
||||
in which You have Sui Generis Database Rights (but not its individual contents)
|
||||
is Adapted Material, including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or
|
||||
a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace
|
||||
Your obligations under this Public License where the Licensed Rights include
|
||||
other Copyright and Similar Rights.
|
||||
|
||||
Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. Unless otherwise separately undertaken by the Licensor, to the extent possible,
|
||||
the Licensor offers the Licensed Material as-is and as-available, and makes
|
||||
no representations or warranties of any kind concerning the Licensed Material,
|
||||
whether express, implied, statutory, or other. This includes, without limitation,
|
||||
warranties of title, merchantability, fitness for a particular purpose, non-infringement,
|
||||
absence of latent or other defects, accuracy, or the presence or absence of
|
||||
errors, whether or not known or discoverable. Where disclaimers of warranties
|
||||
are not allowed in full or in part, this disclaimer may not apply to You.
|
||||
|
||||
b. To the extent possible, in no event will the Licensor be liable to You
|
||||
on any legal theory (including, without limitation, negligence) or otherwise
|
||||
for any direct, special, indirect, incidental, consequential, punitive, exemplary,
|
||||
or other losses, costs, expenses, or damages arising out of this Public License
|
||||
or use of the Licensed Material, even if the Licensor has been advised of
|
||||
the possibility of such losses, costs, expenses, or damages. Where a limitation
|
||||
of liability is not allowed in full or in part, this limitation may not apply
|
||||
to You.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided above
|
||||
shall be interpreted in a manner that, to the extent possible, most closely
|
||||
approximates an absolute disclaimer and waiver of all liability.
|
||||
|
||||
Section 6 – Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights
|
||||
licensed here. However, if You fail to comply with this Public License, then
|
||||
Your rights under this Public License terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under Section
|
||||
6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided it is cured
|
||||
within 30 days of Your discovery of the violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
c. For the avoidance of doubt, this Section 6(b) does not affect any right
|
||||
the Licensor may have to seek remedies for Your violations of this Public
|
||||
License.
|
||||
|
||||
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material
|
||||
under separate terms or conditions or stop distributing the Licensed Material
|
||||
at any time; however, doing so will not terminate this Public License.
|
||||
|
||||
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||
|
||||
Section 7 – Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different terms or
|
||||
conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed
|
||||
Material not stated herein are separate from and independent of the terms
|
||||
and conditions of this Public License.
|
||||
|
||||
Section 8 – Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not
|
||||
be interpreted to, reduce, limit, restrict, or impose conditions on any use
|
||||
of the Licensed Material that could lawfully be made without permission under
|
||||
this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is deemed
|
||||
unenforceable, it shall be automatically reformed to the minimum extent necessary
|
||||
to make it enforceable. If the provision cannot be reformed, it shall be severed
|
||||
from this Public License without affecting the enforceability of the remaining
|
||||
terms and conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no failure
|
||||
to comply consented to unless expressly agreed to by the Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation
|
||||
upon, or waiver of, any privileges and immunities that apply to the Licensor
|
||||
or You, including from the legal processes of any jurisdiction or authority.
|
||||
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative
|
||||
Commons may elect to apply one of its public licenses to material it publishes
|
||||
and in those instances will be considered the "Licensor." The text of the
|
||||
Creative Commons public licenses is dedicated to the public domain under the
|
||||
CC0 Public Domain Dedication. Except for the limited purpose of indicating
|
||||
that material is shared under a Creative Commons public license or as otherwise
|
||||
permitted by the Creative Commons policies published at creativecommons.org/policies,
|
||||
Creative Commons does not authorize the use of the trademark "Creative Commons"
|
||||
or any other trademark or logo of Creative Commons without its prior written
|
||||
consent including, without limitation, in connection with any unauthorized
|
||||
modifications to any of its public licenses or any other arrangements, understandings,
|
||||
or agreements concerning use of licensed material. For the avoidance of doubt,
|
||||
this paragraph does not form part of the public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
119
LICENSES/CC0-1.0.txt
Normal file
119
LICENSES/CC0-1.0.txt
Normal file
@ -0,0 +1,119 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
|
||||
NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
|
||||
AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
|
||||
ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
|
||||
OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
|
||||
LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
|
||||
OR WORKS PROVIDED HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer exclusive
|
||||
Copyright and Related Rights (defined below) upon the creator and subsequent
|
||||
owner(s) (each and all, an "owner") of an original work of authorship and/or
|
||||
a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for the
|
||||
purpose of contributing to a commons of creative, cultural and scientific
|
||||
works ("Commons") that the public can reliably and without fear of later claims
|
||||
of infringement build upon, modify, incorporate in other works, reuse and
|
||||
redistribute as freely as possible in any form whatsoever and for any purposes,
|
||||
including without limitation commercial purposes. These owners may contribute
|
||||
to the Commons to promote the ideal of a free culture and the further production
|
||||
of creative, cultural and scientific works, or to gain reputation or greater
|
||||
distribution for their Work in part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any expectation
|
||||
of additional consideration or compensation, the person associating CC0 with
|
||||
a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
||||
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
||||
and publicly distribute the Work under its terms, with knowledge of his or
|
||||
her Copyright and Related Rights in the Work and the meaning and intended
|
||||
legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be protected
|
||||
by copyright and related or neighboring rights ("Copyright and Related Rights").
|
||||
Copyright and Related Rights include, but are not limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
||||
and translate a Work;
|
||||
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
|
||||
iii. publicity and privacy rights pertaining to a person's image or likeness
|
||||
depicted in a Work;
|
||||
|
||||
iv. rights protecting against unfair competition in regards to a Work, subject
|
||||
to the limitations in paragraph 4(a), below;
|
||||
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal protection
|
||||
of databases, and under any national implementation thereof, including any
|
||||
amended or successor version of such directive); and
|
||||
|
||||
vii. other similar, equivalent or corresponding rights throughout the world
|
||||
based on applicable law or treaty, and any national implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
||||
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
||||
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
||||
and Related Rights and associated claims and causes of action, whether now
|
||||
known or unknown (including existing as well as future claims and causes of
|
||||
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
||||
duration provided by applicable law or treaty (including future time extensions),
|
||||
(iii) in any current or future medium and for any number of copies, and (iv)
|
||||
for any purpose whatsoever, including without limitation commercial, advertising
|
||||
or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
|
||||
benefit of each member of the public at large and to the detriment of Affirmer's
|
||||
heirs and successors, fully intending that such Waiver shall not be subject
|
||||
to revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason be
|
||||
judged legally invalid or ineffective under applicable law, then the Waiver
|
||||
shall be preserved to the maximum extent permitted taking into account Affirmer's
|
||||
express Statement of Purpose. In addition, to the extent the Waiver is so
|
||||
judged Affirmer hereby grants to each affected person a royalty-free, non
|
||||
transferable, non sublicensable, non exclusive, irrevocable and unconditional
|
||||
license to exercise Affirmer's Copyright and Related Rights in the Work (i)
|
||||
in all territories worldwide, (ii) for the maximum duration provided by applicable
|
||||
law or treaty (including future time extensions), (iii) in any current or
|
||||
future medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional purposes
|
||||
(the "License"). The License shall be deemed effective as of the date CC0
|
||||
was applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder of
|
||||
the License, and in such case Affirmer hereby affirms that he or she will
|
||||
not (i) exercise any of his or her remaining Copyright and Related Rights
|
||||
in the Work or (ii) assert any associated claims and causes of action with
|
||||
respect to the Work, in either case contrary to Affirmer's express Statement
|
||||
of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
|
||||
licensed or otherwise affected by this document.
|
||||
|
||||
b. Affirmer offers the Work as-is and makes no representations or warranties
|
||||
of any kind concerning the Work, express, implied, statutory or otherwise,
|
||||
including without limitation warranties of title, merchantability, fitness
|
||||
for a particular purpose, non infringement, or the absence of latent or other
|
||||
defects, accuracy, or the present or absence of errors, whether or not discoverable,
|
||||
all to the greatest extent permissible under applicable law.
|
||||
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without limitation
|
||||
any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
|
||||
responsibility for obtaining any necessary consents, permissions or other
|
||||
rights required for any use of the Work.
|
||||
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a party
|
||||
to this document and has no duty or obligation with respect to this CC0 or
|
||||
use of the Work.
|
625
LICENSES/GPL-3.0-or-later.txt
Normal file
625
LICENSES/GPL-3.0-or-later.txt
Normal file
@ -0,0 +1,625 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for software and
|
||||
other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed to take
|
||||
away your freedom to share and change the works. By contrast, the GNU General
|
||||
Public License is intended to guarantee your freedom to share and change all
|
||||
versions of a program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public License for most
|
||||
of our software; it applies also to any other work released this way by its
|
||||
authors. You can apply it to your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price. Our
|
||||
General Public Licenses are designed to make sure that you have the freedom
|
||||
to distribute copies of free software (and charge for them if you wish), that
|
||||
you receive source code or can get it if you want it, that you can change
|
||||
the software or use pieces of it in new free programs, and that you know you
|
||||
can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you these rights
|
||||
or asking you to surrender the rights. Therefore, you have certain responsibilities
|
||||
if you distribute copies of the software, or if you modify it: responsibilities
|
||||
to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether gratis or
|
||||
for a fee, you must pass on to the recipients the same freedoms that you received.
|
||||
You must make sure that they, too, receive or can get the source code. And
|
||||
you must show them these terms so they know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps: (1) assert
|
||||
copyright on the software, and (2) offer you this License giving you legal
|
||||
permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains that
|
||||
there is no warranty for this free software. For both users' and authors'
|
||||
sake, the GPL requires that modified versions be marked as changed, so that
|
||||
their problems will not be attributed erroneously to authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run modified
|
||||
versions of the software inside them, although the manufacturer can do so.
|
||||
This is fundamentally incompatible with the aim of protecting users' freedom
|
||||
to change the software. The systematic pattern of such abuse occurs in the
|
||||
area of products for individuals to use, which is precisely where it is most
|
||||
unacceptable. Therefore, we have designed this version of the GPL to prohibit
|
||||
the practice for those products. If such problems arise substantially in other
|
||||
domains, we stand ready to extend this provision to those domains in future
|
||||
versions of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents. States
|
||||
should not allow patents to restrict development and use of software on general-purpose
|
||||
computers, but in those that do, we wish to avoid the special danger that
|
||||
patents applied to a free program could make it effectively proprietary. To
|
||||
prevent this, the GPL assures that patents cannot be used to render the program
|
||||
non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and modification
|
||||
follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of works,
|
||||
such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this License.
|
||||
Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals
|
||||
or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work in
|
||||
a fashion requiring copyright permission, other than the making of an exact
|
||||
copy. The resulting work is called a "modified version" of the earlier work
|
||||
or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based on the
|
||||
Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without permission,
|
||||
would make you directly or secondarily liable for infringement under applicable
|
||||
copyright law, except executing it on a computer or modifying a private copy.
|
||||
Propagation includes copying, distribution (with or without modification),
|
||||
making available to the public, and in some countries other activities as
|
||||
well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other parties
|
||||
to make or receive copies. Mere interaction with a user through a computer
|
||||
network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" to the
|
||||
extent that it includes a convenient and prominently visible feature that
|
||||
(1) displays an appropriate copyright notice, and (2) tells the user that
|
||||
there is no warranty for the work (except to the extent that warranties are
|
||||
provided), that licensees may convey the work under this License, and how
|
||||
to view a copy of this License. If the interface presents a list of user commands
|
||||
or options, such as a menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work for making
|
||||
modifications to it. "Object code" means any non-source form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official standard
|
||||
defined by a recognized standards body, or, in the case of interfaces specified
|
||||
for a particular programming language, one that is widely used among developers
|
||||
working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other than
|
||||
the work as a whole, that (a) is included in the normal form of packaging
|
||||
a Major Component, but which is not part of that Major Component, and (b)
|
||||
serves only to enable use of the work with that Major Component, or to implement
|
||||
a Standard Interface for which an implementation is available to the public
|
||||
in source code form. A "Major Component", in this context, means a major essential
|
||||
component (kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to produce
|
||||
the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all the source
|
||||
code needed to generate, install, and (for an executable work) run the object
|
||||
code and to modify the work, including scripts to control those activities.
|
||||
However, it does not include the work's System Libraries, or general-purpose
|
||||
tools or generally available free programs which are used unmodified in performing
|
||||
those activities but which are not part of the work. For example, Corresponding
|
||||
Source includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically linked
|
||||
subprograms that the work is specifically designed to require, such as by
|
||||
intimate data communication or control flow between those subprograms and
|
||||
other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users can regenerate
|
||||
automatically from other parts of the Corresponding Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of copyright
|
||||
on the Program, and are irrevocable provided the stated conditions are met.
|
||||
This License explicitly affirms your unlimited permission to run the unmodified
|
||||
Program. The output from running a covered work is covered by this License
|
||||
only if the output, given its content, constitutes a covered work. This License
|
||||
acknowledges your rights of fair use or other equivalent, as provided by copyright
|
||||
law.
|
||||
|
||||
You may make, run and propagate covered works that you do not convey, without
|
||||
conditions so long as your license otherwise remains in force. You may convey
|
||||
covered works to others for the sole purpose of having them make modifications
|
||||
exclusively for you, or provide you with facilities for running those works,
|
||||
provided that you comply with the terms of this License in conveying all material
|
||||
for which you do not control copyright. Those thus making or running the covered
|
||||
works for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of your copyrighted
|
||||
material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under the conditions
|
||||
stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological measure
|
||||
under any applicable law fulfilling obligations under article 11 of the WIPO
|
||||
copyright treaty adopted on 20 December 1996, or similar laws prohibiting
|
||||
or restricting circumvention of such measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid circumvention
|
||||
of technological measures to the extent such circumvention is effected by
|
||||
exercising rights under this License with respect to the covered work, and
|
||||
you disclaim any intention to limit operation or modification of the work
|
||||
as a means of enforcing, against the work's users, your or third parties'
|
||||
legal rights to forbid circumvention of technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you receive
|
||||
it, in any medium, provided that you conspicuously and appropriately publish
|
||||
on each copy an appropriate copyright notice; keep intact all notices stating
|
||||
that this License and any non-permissive terms added in accord with section
|
||||
7 apply to the code; keep intact all notices of the absence of any warranty;
|
||||
and give all recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey, and you
|
||||
may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to produce
|
||||
it from the Program, in the form of source code under the terms of section
|
||||
4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified it, and
|
||||
giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is released under
|
||||
this License and any conditions added under section 7. This requirement modifies
|
||||
the requirement in section 4 to "keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this License to anyone
|
||||
who comes into possession of a copy. This License will therefore apply, along
|
||||
with any applicable section 7 additional terms, to the whole of the work,
|
||||
and all its parts, regardless of how they are packaged. This License gives
|
||||
no permission to license the work in any other way, but it does not invalidate
|
||||
such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display Appropriate
|
||||
Legal Notices; however, if the Program has interactive interfaces that do
|
||||
not display Appropriate Legal Notices, your work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent works,
|
||||
which are not by their nature extensions of the covered work, and which are
|
||||
not combined with it such as to form a larger program, in or on a volume of
|
||||
a storage or distribution medium, is called an "aggregate" if the compilation
|
||||
and its resulting copyright are not used to limit the access or legal rights
|
||||
of the compilation's users beyond what the individual works permit. Inclusion
|
||||
of a covered work in an aggregate does not cause this License to apply to
|
||||
the other parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms of sections
|
||||
4 and 5, provided that you also convey the machine-readable Corresponding
|
||||
Source under the terms of this License, in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product (including
|
||||
a physical distribution medium), accompanied by the Corresponding Source fixed
|
||||
on a durable physical medium customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product (including
|
||||
a physical distribution medium), accompanied by a written offer, valid for
|
||||
at least three years and valid for as long as you offer spare parts or customer
|
||||
support for that product model, to give anyone who possesses the object code
|
||||
either (1) a copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical medium customarily
|
||||
used for software interchange, for a price no more than your reasonable cost
|
||||
of physically performing this conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the written
|
||||
offer to provide the Corresponding Source. This alternative is allowed only
|
||||
occasionally and noncommercially, and only if you received the object code
|
||||
with such an offer, in accord with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated place (gratis
|
||||
or for a charge), and offer equivalent access to the Corresponding Source
|
||||
in the same way through the same place at no further charge. You need not
|
||||
require recipients to copy the Corresponding Source along with the object
|
||||
code. If the place to copy the object code is a network server, the Corresponding
|
||||
Source may be on a different server (operated by you or a third party) that
|
||||
supports equivalent copying facilities, provided you maintain clear directions
|
||||
next to the object code saying where to find the Corresponding Source. Regardless
|
||||
of what server hosts the Corresponding Source, you remain obligated to ensure
|
||||
that it is available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided you inform
|
||||
other peers where the object code and Corresponding Source of the work are
|
||||
being offered to the general public at no charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded from
|
||||
the Corresponding Source as a System Library, need not be included in conveying
|
||||
the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any tangible
|
||||
personal property which is normally used for personal, family, or household
|
||||
purposes, or (2) anything designed or sold for incorporation into a dwelling.
|
||||
In determining whether a product is a consumer product, doubtful cases shall
|
||||
be resolved in favor of coverage. For a particular product received by a particular
|
||||
user, "normally used" refers to a typical or common use of that class of product,
|
||||
regardless of the status of the particular user or of the way in which the
|
||||
particular user actually uses, or expects or is expected to use, the product.
|
||||
A product is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent the
|
||||
only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods, procedures,
|
||||
authorization keys, or other information required to install and execute modified
|
||||
versions of a covered work in that User Product from a modified version of
|
||||
its Corresponding Source. The information must suffice to ensure that the
|
||||
continued functioning of the modified object code is in no case prevented
|
||||
or interfered with solely because modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or specifically
|
||||
for use in, a User Product, and the conveying occurs as part of a transaction
|
||||
in which the right of possession and use of the User Product is transferred
|
||||
to the recipient in perpetuity or for a fixed term (regardless of how the
|
||||
transaction is characterized), the Corresponding Source conveyed under this
|
||||
section must be accompanied by the Installation Information. But this requirement
|
||||
does not apply if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has been installed
|
||||
in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a requirement
|
||||
to continue to provide support service, warranty, or updates for a work that
|
||||
has been modified or installed by the recipient, or for the User Product in
|
||||
which it has been modified or installed. Access to a network may be denied
|
||||
when the modification itself materially and adversely affects the operation
|
||||
of the network or violates the rules and protocols for communication across
|
||||
the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided, in accord
|
||||
with this section must be in a format that is publicly documented (and with
|
||||
an implementation available to the public in source code form), and must require
|
||||
no special password or key for unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this License
|
||||
by making exceptions from one or more of its conditions. Additional permissions
|
||||
that are applicable to the entire Program shall be treated as though they
|
||||
were included in this License, to the extent that they are valid under applicable
|
||||
law. If additional permissions apply only to part of the Program, that part
|
||||
may be used separately under those permissions, but the entire Program remains
|
||||
governed by this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option remove any
|
||||
additional permissions from that copy, or from any part of it. (Additional
|
||||
permissions may be written to require their own removal in certain cases when
|
||||
you modify the work.) You may place additional permissions on material, added
|
||||
by you to a covered work, for which you have or can give appropriate copyright
|
||||
permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you add
|
||||
to a covered work, you may (if authorized by the copyright holders of that
|
||||
material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the terms of
|
||||
sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or author
|
||||
attributions in that material or in the Appropriate Legal Notices displayed
|
||||
by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or requiring
|
||||
that modified versions of such material be marked in reasonable ways as different
|
||||
from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or authors
|
||||
of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some trade names,
|
||||
trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that material by
|
||||
anyone who conveys the material (or modified versions of it) with contractual
|
||||
assumptions of liability to the recipient, for any liability that these contractual
|
||||
assumptions directly impose on those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further restrictions"
|
||||
within the meaning of section 10. If the Program as you received it, or any
|
||||
part of it, contains a notice stating that it is governed by this License
|
||||
along with a term that is a further restriction, you may remove that term.
|
||||
If a license document contains a further restriction but permits relicensing
|
||||
or conveying under this License, you may add to a covered work material governed
|
||||
by the terms of that license document, provided that the further restriction
|
||||
does not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you must place,
|
||||
in the relevant source files, a statement of the additional terms that apply
|
||||
to those files, or a notice indicating where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the form
|
||||
of a separately written license, or stated as exceptions; the above requirements
|
||||
apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly provided
|
||||
under this License. Any attempt otherwise to propagate or modify it is void,
|
||||
and will automatically terminate your rights under this License (including
|
||||
any patent licenses granted under the third paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your license from
|
||||
a particular copyright holder is reinstated (a) provisionally, unless and
|
||||
until the copyright holder explicitly and finally terminates your license,
|
||||
and (b) permanently, if the copyright holder fails to notify you of the violation
|
||||
by some reasonable means prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is reinstated permanently
|
||||
if the copyright holder notifies you of the violation by some reasonable means,
|
||||
this is the first time you have received notice of violation of this License
|
||||
(for any work) from that copyright holder, and you cure the violation prior
|
||||
to 30 days after your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the licenses
|
||||
of parties who have received copies or rights from you under this License.
|
||||
If your rights have been terminated and not permanently reinstated, you do
|
||||
not qualify to receive new licenses for the same material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or run a copy
|
||||
of the Program. Ancillary propagation of a covered work occurring solely as
|
||||
a consequence of using peer-to-peer transmission to receive a copy likewise
|
||||
does not require acceptance. However, nothing other than this License grants
|
||||
you permission to propagate or modify any covered work. These actions infringe
|
||||
copyright if you do not accept this License. Therefore, by modifying or propagating
|
||||
a covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically receives
|
||||
a license from the original licensors, to run, modify and propagate that work,
|
||||
subject to this License. You are not responsible for enforcing compliance
|
||||
by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an organization,
|
||||
or substantially all assets of one, or subdividing an organization, or merging
|
||||
organizations. If propagation of a covered work results from an entity transaction,
|
||||
each party to that transaction who receives a copy of the work also receives
|
||||
whatever licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the Corresponding
|
||||
Source of the work from the predecessor in interest, if the predecessor has
|
||||
it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the rights
|
||||
granted or affirmed under this License. For example, you may not impose a
|
||||
license fee, royalty, or other charge for exercise of rights granted under
|
||||
this License, and you may not initiate litigation (including a cross-claim
|
||||
or counterclaim in a lawsuit) alleging that any patent claim is infringed
|
||||
by making, using, selling, offering for sale, or importing the Program or
|
||||
any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this License
|
||||
of the Program or a work on which the Program is based. The work thus licensed
|
||||
is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims owned or controlled
|
||||
by the contributor, whether already acquired or hereafter acquired, that would
|
||||
be infringed by some manner, permitted by this License, of making, using,
|
||||
or selling its contributor version, but do not include claims that would be
|
||||
infringed only as a consequence of further modification of the contributor
|
||||
version. For purposes of this definition, "control" includes the right to
|
||||
grant patent sublicenses in a manner consistent with the requirements of this
|
||||
License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free patent
|
||||
license under the contributor's essential patent claims, to make, use, sell,
|
||||
offer for sale, import and otherwise run, modify and propagate the contents
|
||||
of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express agreement
|
||||
or commitment, however denominated, not to enforce a patent (such as an express
|
||||
permission to practice a patent or covenant not to sue for patent infringement).
|
||||
To "grant" such a patent license to a party means to make such an agreement
|
||||
or commitment not to enforce a patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license, and the
|
||||
Corresponding Source of the work is not available for anyone to copy, free
|
||||
of charge and under the terms of this License, through a publicly available
|
||||
network server or other readily accessible means, then you must either (1)
|
||||
cause the Corresponding Source to be so available, or (2) arrange to deprive
|
||||
yourself of the benefit of the patent license for this particular work, or
|
||||
(3) arrange, in a manner consistent with the requirements of this License,
|
||||
to extend the patent license to downstream recipients. "Knowingly relying"
|
||||
means you have actual knowledge that, but for the patent license, your conveying
|
||||
the covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that country
|
||||
that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or arrangement,
|
||||
you convey, or propagate by procuring conveyance of, a covered work, and grant
|
||||
a patent license to some of the parties receiving the covered work authorizing
|
||||
them to use, propagate, modify or convey a specific copy of the covered work,
|
||||
then the patent license you grant is automatically extended to all recipients
|
||||
of the covered work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within the scope
|
||||
of its coverage, prohibits the exercise of, or is conditioned on the non-exercise
|
||||
of one or more of the rights that are specifically granted under this License.
|
||||
You may not convey a covered work if you are a party to an arrangement with
|
||||
a third party that is in the business of distributing software, under which
|
||||
you make payment to the third party based on the extent of your activity of
|
||||
conveying the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory patent
|
||||
license (a) in connection with copies of the covered work conveyed by you
|
||||
(or copies made from those copies), or (b) primarily for and in connection
|
||||
with specific products or compilations that contain the covered work, unless
|
||||
you entered into that arrangement, or that patent license was granted, prior
|
||||
to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting any implied
|
||||
license or other defenses to infringement that may otherwise be available
|
||||
to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or otherwise)
|
||||
that contradict the conditions of this License, they do not excuse you from
|
||||
the conditions of this License. If you cannot convey a covered work so as
|
||||
to satisfy simultaneously your obligations under this License and any other
|
||||
pertinent obligations, then as a consequence you may not convey it at all.
|
||||
For example, if you agree to terms that obligate you to collect a royalty
|
||||
for further conveying from those to whom you convey the Program, the only
|
||||
way you could satisfy both those terms and this License would be to refrain
|
||||
entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have permission to
|
||||
link or combine any covered work with a work licensed under version 3 of the
|
||||
GNU Affero General Public License into a single combined work, and to convey
|
||||
the resulting work. The terms of this License will continue to apply to the
|
||||
part which is the covered work, but the special requirements of the GNU Affero
|
||||
General Public License, section 13, concerning interaction through a network
|
||||
will apply to the combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of the
|
||||
GNU General Public License from time to time. Such new versions will be similar
|
||||
in spirit to the present version, but may differ in detail to address new
|
||||
problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program specifies
|
||||
that a certain numbered version of the GNU General Public License "or any
|
||||
later version" applies to it, you have the option of following the terms and
|
||||
conditions either of that numbered version or of any later version published
|
||||
by the Free Software Foundation. If the Program does not specify a version
|
||||
number of the GNU General Public License, you may choose any version ever
|
||||
published by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future versions of
|
||||
the GNU General Public License can be used, that proxy's public statement
|
||||
of acceptance of a version permanently authorizes you to choose that version
|
||||
for the Program.
|
||||
|
||||
Later license versions may give you additional or different permissions. However,
|
||||
no additional obligations are imposed on any author or copyright holder as
|
||||
a result of your choosing to follow a later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
||||
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
|
||||
PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
|
||||
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM
|
||||
AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||||
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
|
||||
USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
|
||||
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
|
||||
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided above cannot
|
||||
be given local legal effect according to their terms, reviewing courts shall
|
||||
apply local law that most closely approximates an absolute waiver of all civil
|
||||
liability in connection with the Program, unless a warranty or assumption
|
||||
of liability accompanies a copy of the Program in return for a fee. END OF
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest possible
|
||||
use to the public, the best way to achieve this is to make it free software
|
||||
which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to attach
|
||||
them to the start of each source file to most effectively state the exclusion
|
||||
of warranty; and each file should have at least the "copyright" line and a
|
||||
pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option) any later
|
||||
version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short notice like
|
||||
this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
|
||||
This is free software, and you are welcome to redistribute it under certain
|
||||
conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands might
|
||||
be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General Public
|
||||
License instead of this License. But first, please read <https://www.gnu.org/
|
||||
licenses /why-not-lgpl.html>.
|
163
LICENSES/LGPL-3.0-or-later.txt
Normal file
163
LICENSES/LGPL-3.0-or-later.txt
Normal file
@ -0,0 +1,163 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates the terms
|
||||
and conditions of version 3 of the GNU General Public License, supplemented
|
||||
by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser General
|
||||
Public License, and the "GNU GPL" refers to version 3 of the GNU General Public
|
||||
License.
|
||||
|
||||
|
||||
|
||||
"The Library" refers to a covered work governed by this License, other than
|
||||
an Application or a Combined Work as defined below.
|
||||
|
||||
|
||||
|
||||
An "Application" is any work that makes use of an interface provided by the
|
||||
Library, but which is not otherwise based on the Library. Defining a subclass
|
||||
of a class defined by the Library is deemed a mode of using an interface provided
|
||||
by the Library.
|
||||
|
||||
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an Application
|
||||
with the Library. The particular version of the Library with which the Combined
|
||||
Work was made is also called the "Linked Version".
|
||||
|
||||
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the Corresponding
|
||||
Source for the Combined Work, excluding any source code for portions of the
|
||||
Combined Work that, considered in isolation, are based on the Application,
|
||||
and not on the Linked Version.
|
||||
|
||||
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the object
|
||||
code and/or source code for the Application, including any data and utility
|
||||
programs needed for reproducing the Combined Work from the Application, but
|
||||
excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License without
|
||||
being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a facility
|
||||
refers to a function or data to be supplied by an Application that uses the
|
||||
facility (other than as an argument passed when the facility is invoked),
|
||||
then you may convey a copy of the modified version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to ensure
|
||||
that, in the event an Application does not supply the function or data, the
|
||||
facility still operates, and performs whatever part of its purpose remains
|
||||
meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of this License
|
||||
applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from a header
|
||||
file that is part of the Library. You may convey such object code under terms
|
||||
of your choice, provided that, if the incorporated material is not limited
|
||||
to numerical parameters, data structure layouts and accessors, or small macros,
|
||||
inline functions and templates (ten or fewer lines in length), you do both
|
||||
of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the Library
|
||||
is used in it and that the Library and its use are covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that, taken together,
|
||||
effectively do not restrict modification of the portions of the Library contained
|
||||
in the Combined Work and reverse engineering for debugging such modifications,
|
||||
if you also do each of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that the Library
|
||||
is used in it and that the Library and its use are covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during execution, include
|
||||
the copyright notice for the Library among these notices, as well as a reference
|
||||
directing the user to the copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this License,
|
||||
and the Corresponding Application Code in a form suitable for, and under terms
|
||||
that permit, the user to recombine or relink the Application with a modified
|
||||
version of the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the Library. A
|
||||
suitable mechanism is one that (a) uses at run time a copy of the Library
|
||||
already present on the user's computer system, and (b) will operate properly
|
||||
with a modified version of the Library that is interface-compatible with the
|
||||
Linked Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise be required
|
||||
to provide such information under section 6 of the GNU GPL, and only to the
|
||||
extent that such information is necessary to install and execute a modified
|
||||
version of the Combined Work produced by recombining or relinking the Application
|
||||
with a modified version of the Linked Version. (If you use option 4d0, the
|
||||
Installation Information must accompany the Minimal Corresponding Source and
|
||||
Corresponding Application Code. If you use option 4d1, you must provide the
|
||||
Installation Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the Library side
|
||||
by side in a single library together with other library facilities that are
|
||||
not Applications and are not covered by this License, and convey such a combined
|
||||
library under terms of your choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based on the
|
||||
Library, uncombined with any other library facilities, conveyed under the
|
||||
terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it is a work
|
||||
based on the Library, and explaining where to find the accompanying uncombined
|
||||
form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of the
|
||||
GNU Lesser General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to address
|
||||
new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library as you
|
||||
received it specifies that a certain numbered version of the GNU Lesser General
|
||||
Public License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that published version or of
|
||||
any later version published by the Free Software Foundation. If the Library
|
||||
as you received it does not specify a version number of the GNU Lesser General
|
||||
Public License, you may choose any version of the GNU Lesser General Public
|
||||
License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide whether
|
||||
future versions of the GNU Lesser General Public License shall apply, that
|
||||
proxy's public statement of acceptance of any version is permanent authorization
|
||||
for you to choose that version for the Library.
|
19
LICENSES/MIT.txt
Normal file
19
LICENSES/MIT.txt
Normal file
@ -0,0 +1,19 @@
|
||||
MIT License Copyright (c) <year> <copyright holders>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -1,119 +0,0 @@
|
||||
Compile Retroshare for Android
|
||||
==============================
|
||||
|
||||
== Introduction
|
||||
|
||||
Compiling an application for Android is not as easy as one would imagine,
|
||||
expecially one like RetroShare that has a big codebase and is not well
|
||||
documented.
|
||||
This document is aimed to empower the reader so she can hopefully succed or at
|
||||
least have a significant help in compiling her own RetroShare APK package
|
||||
installable on Android.
|
||||
|
||||
== Preparing The Environement
|
||||
|
||||
First of all setup your Qt for Android development environement following the
|
||||
guide on the link:http://doc.qt.io/qt-5/androidgs.html[Qt for android web site].
|
||||
At this point you should have Android SDK, Android NDK, and Qt for Android
|
||||
working fine, and you should be capable of executing on an Android emulator or
|
||||
on your Android phone Qt for Android examples.
|
||||
|
||||
But RetroShare is not as simple to compile as those examples. The good news is
|
||||
that Android NDK ships all the necessary to build a custom toolchain that is
|
||||
suitable to build RetroShare.
|
||||
In order to build the toolchain with needed library RetroShare provides the
|
||||
+android-prepare-toolchain.sh+ script; before you execute it you should define
|
||||
some variables the script cannot determine in an easy and reliable manner by
|
||||
itself in your terminal.
|
||||
|
||||
[source,bash]
|
||||
-------------------------------------------------------------------------------
|
||||
## The path where Android NDK is installed in your system
|
||||
export ANDROID_NDK_PATH="/opt/android-ndk/"
|
||||
|
||||
## The path where your fresh compiled toolchain will be installed, make sure
|
||||
## the parent exists
|
||||
export NDK_TOOLCHAIN_PATH="/home/$(whoami)/Development/android-toolchains/retroshare-android/"
|
||||
|
||||
## The CPU architecture of the Android device you want to target
|
||||
export ANDROID_NDK_ARCH="arm"
|
||||
|
||||
## The Android API level the Android device you want to target
|
||||
export ANDROID_PLATFORM_VER="19"
|
||||
|
||||
## The number of core that yout host CPU have (just to speed up compilation) set
|
||||
## it to 1 if unsure
|
||||
export HOST_NUM_CPU=1
|
||||
|
||||
./android-prepare-toolchain.sh
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
== Preparing Qt Creator
|
||||
|
||||
Now that your environement is set up you should configure Qt Creator for Android
|
||||
following the
|
||||
link:http://doc.qt.io/qtcreator/creator-developing-android.html[official guide].
|
||||
At the end of this step your Qt Creator should recognize the Android compiler
|
||||
and the Qt for Android kit.
|
||||
|
||||
Your Kit is now ready to use. Now you can open RetroShare as a Qt Creator
|
||||
project and in the Projects left menu add the newly created kit if not already
|
||||
present, so you can select it on the build type selection button down on the
|
||||
left.
|
||||
|
||||
As we use a custom toolchain one more step is needed +
|
||||
|
||||
_Qt Creator left pane -> Projects -> Build and Run -> Android SOMESTUFF kit ->
|
||||
Build Environement -> Add
|
||||
|
||||
Variable: +NATIVE_LIBS_TOOLCHAIN_PATH+
|
||||
Value: +Same value as NDK_TOOLCHAIN_PATH in Preparing The Environement step+
|
||||
|
||||
Some of RetroShare modules like +retroshare-gui+ and +WebUI+ are not available
|
||||
on Android so to be able to compile RetroShare without errors you will have to
|
||||
go to +
|
||||
|
||||
_Qt Creator left pane -> Projects -> Build and Run -> Android SOMESTUFF kit ->
|
||||
Build Steps -> qmake -> Additional arguments_
|
||||
|
||||
and add the following configurations
|
||||
|
||||
[source,makefile]
|
||||
-------------------------------------------------------------------------------
|
||||
CONFIG+=no_retroshare_gui CONFIG+=no_retroshare_nogui CONFIG+=no_retroshare_plugins CONFIG+=retroshare_android_service CONFIG+=libresapilocalserver CONFIG+=no_libresapihttpserver CONFIG+=retroshare_qml_app
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
WARNING: SQLCipher is not supported yet on RetroShare for Android. This poses a
|
||||
major security concern, we are working to fix this ASAP.
|
||||
|
||||
WARNING: Some versions of QtCreator try to find the Android SDK in
|
||||
+/opt/android/sdk+. A workaround to this is to make a symbolic link there
|
||||
pointing to your SDK installation path, like
|
||||
+mkdir -p /opt/android/sdk && ln -s /home/user/android-sdk-linux
|
||||
/opt/android/sdk+
|
||||
|
||||
== Quircks
|
||||
|
||||
On some Android devices like +Huawei ALE-L21+ background applications are
|
||||
killed when screen is turned off unless they are in the _protected app_ list.
|
||||
At moment seems apps developers don't have a way to have the application
|
||||
_protected_ by default, unless the phone vendor decide the app is _popular_ so
|
||||
the user have to enable _protection_ for RetroShare manually on those mobile
|
||||
phones. +
|
||||
|
||||
{empty} +
|
||||
To enable enable _protection_: +Android menu -> Settings -> Privacy & security
|
||||
-> Protected apps -> RetroShare+ +
|
||||
{empty} +
|
||||
|
||||
Other devices may offer similar _features_ please report them.
|
||||
|
||||
|
||||
== Furter Readings
|
||||
|
||||
- link:http://doc.qt.io/qt-5/android-support.html[]
|
||||
- link:https://developer.android.com/ndk/guides/libs.html[]
|
||||
- link:retroshare://forum?name=Compiling%20nogui%20for%20android&id=8fd22bd8f99754461e7ba1ca8a727995&msgid=4e0f92330600bba9cf978f384f4b7b2f2ca64eff[]
|
||||
- link:retroshare://file?name=Android%20Native%20Development%20Kit%20Cookbook.pdf&size=29214468&hash=0123361c1b14366ce36118e82b90faf7c7b1b136[]
|
||||
- link:https://groups.google.com/forum/#!topic/android-developers/srATPaL0aRU[]
|
||||
- link:https://stackoverflow.com/questions/31638986/protected-apps-setting-on-huawei-phones-and-how-to-handle-it[]
|
56
README.asciidoc
Normal file
56
README.asciidoc
Normal file
@ -0,0 +1,56 @@
|
||||
// SPDX-FileCopyrightText: Retroshare Team <contact@retroshare.cc>
|
||||
// SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
|
||||
= RetroShare
|
||||
|
||||
RetroShare is a decentralized, private, secure, cross-platform, communication
|
||||
toolkit.
|
||||
RetroShare provides file sharing, chat, messages, forums, channels and more.
|
||||
|
||||
.Build Status
|
||||
|===============================================================================
|
||||
|GNU/Linux (via Gitlab CI) | image:https://gitlab.com/RetroShare/RetroShare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/RetroShare/-/commits/master",title="pipeline status"]
|
||||
|GNU/Linux, macOS, (via Travis CI) | image:https://travis-ci.org/RetroShare/RetroShare.svg?branch=master[link="https://travis-ci.org/RetroShare/RetroShare"]
|
||||
|Windows (via AppVeyor) | image:https://ci.appveyor.com/api/projects/status/github/RetroShare/RetroShare?svg=true[link="https://ci.appveyor.com/project/RetroShare58622/retroshare"]
|
||||
|===============================================================================
|
||||
|
||||
|
||||
== Compilation
|
||||
|
||||
Short of comprehensive and updated documentation on how to build RetroShare
|
||||
(for the many supported platforms it runs on), scripts and recipes are provided
|
||||
in the aim of creating packages for the supported platforms (and more)
|
||||
in the `build_scripts` directory of this repository.
|
||||
|
||||
Those packaging receipts together with the continuous integration files
|
||||
`.travis.yml` and `appveyor.yml` are a good source of knowledge on how to
|
||||
compile RetroShare on different platforms.
|
||||
|
||||
|
||||
== Using RetroShare on a headless computer with web UI
|
||||
|
||||
WARNING: This section is outdated need to be adapted to the new web UI
|
||||
|
||||
The web UI needs to be enabled as a parameter option to the retroshare-service:
|
||||
|
||||
[source,bash]
|
||||
--------
|
||||
./retroshare-nogui --webinterface 9090 --docroot /usr/share/retroshare/webui/
|
||||
--------
|
||||
|
||||
The web UI is only accessible on localhost:9090. It is advised to keep it that way so that your RS
|
||||
cannot be controlled using an untrusted connection.
|
||||
|
||||
To access your web UI from a distance, just open a SSH tunnel to it:
|
||||
|
||||
[source,bash]
|
||||
--------
|
||||
distant_machine:~/ > ssh rs_host -L 9090:localhost:9090 -N
|
||||
--------
|
||||
|
||||
"rs_host" is the machine running `retroshare-nogui`. Then on the distant machine, access your web UI on
|
||||
|
||||
|
||||
http://localhost:9090
|
||||
|
||||
(This can also be done from the RetroShare GUI.)
|
151
README.md
151
README.md
@ -1,151 +0,0 @@
|
||||
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) | [](https://travis-ci.org/RetroShare/RetroShare) |
|
||||
| Windows, `MSys2` (via appveyor) | [](https://ci.appveyor.com/project/PhenomRetroShare/retroshare-59qxh) |
|
||||
|
||||
Compilation on Windows
|
||||
----------------------------
|
||||
Follow this file : [WindowsMSys2_InstallGuide.md](https://github.com/RetroShare/RetroShare/blob/master/WindowsMSys2_InstallGuide.md)
|
||||
|
||||
Compilation on MacOSX
|
||||
----------------------------
|
||||
Follow this file : [MacOS_X_InstallGuide](https://github.com/RetroShare/RetroShare/blob/master/MacOS_X_InstallGuide.md)
|
||||
|
||||
Compilation for Android
|
||||
---------------------------
|
||||
Follow this file : [README-Android](https://github.com/RetroShare/RetroShare/blob/master/README-Android.asciidoc)
|
||||
|
||||
Compilation on Linux
|
||||
----------------------------
|
||||
|
||||
1. Install package dependencies:
|
||||
* Debian/Ubuntu
|
||||
```bash
|
||||
sudo apt-get install libglib2.0-dev libupnp-dev qt4-dev-tools \
|
||||
libqt4-dev libssl-dev libxss-dev libgnome-keyring-dev libbz2-dev \
|
||||
libqt4-opengl-dev libqtmultimediakit1 qtmobility-dev libsqlcipher-dev \
|
||||
libspeex-dev libspeexdsp-dev libxslt1-dev libcurl4-openssl-dev \
|
||||
libopencv-dev tcl8.5 libmicrohttpd-dev
|
||||
```
|
||||
* openSUSE
|
||||
```bash
|
||||
sudo zypper install gcc-c++ libqt4-devel libgnome-keyring-devel \
|
||||
glib2-devel speex-devel libssh-devel protobuf-devel libcurl-devel \
|
||||
libxml2-devel libxslt-devel sqlcipher-devel libmicrohttpd-devel \
|
||||
opencv-devel speexdsp-devel libupnp-devel libavcodec-devel
|
||||
```
|
||||
* Arch Linux
|
||||
```bash
|
||||
pacman -S base-devel libgnome-keyring libmicrohttpd libupnp libxslt \
|
||||
libxss opencv qt4 speex speexdsp sqlcipher
|
||||
```
|
||||
|
||||
2. Checkout the source code
|
||||
```bash
|
||||
mkdir ~/retroshare
|
||||
cd ~/retroshare
|
||||
git clone https://github.com/RetroShare/RetroShare.git trunk
|
||||
```
|
||||
|
||||
3. Compile
|
||||
```bash
|
||||
cd trunk
|
||||
qmake CONFIG+=debug
|
||||
make
|
||||
```
|
||||
|
||||
4. Install
|
||||
```bash
|
||||
sudo make install
|
||||
```
|
||||
|
||||
The executables produced will be:
|
||||
|
||||
/usr/bin/retroshare
|
||||
/usr/bin/retroshare-nogui
|
||||
|
||||
5. Uninstall:
|
||||
```bash
|
||||
sudo make uninstall
|
||||
```
|
||||
|
||||
Compile only retroshare-nogui
|
||||
-----------------------------
|
||||
If you want to run RetroShare on a server and don’t need the gui and plugins,
|
||||
you can run the following commands to only compile/install the nogui version:
|
||||
|
||||
```bash
|
||||
qmake
|
||||
make retroshare-nogui
|
||||
sudo make retroshare-nogui-install_subtargets
|
||||
```
|
||||
|
||||
For packagers
|
||||
-------------
|
||||
Packagers can use PREFIX and LIB\_DIR to customize the installation paths:
|
||||
```bash
|
||||
qmake PREFIX=/usr LIB_DIR=/usr/lib64 "CONFIG-=debug" "CONFIG+=release"
|
||||
make
|
||||
make INSTALL_ROOT=${PKGDIR} install
|
||||
```
|
||||
|
||||
If libsqlcipher is not available as a package
|
||||
---------------------------------------------
|
||||
|
||||
You need to place sqlcipher so that the hierarchy is:
|
||||
|
||||
retroshare
|
||||
|
|
||||
+--- trunk
|
||||
|
|
||||
+--- lib
|
||||
|
|
||||
+---- sqlcipher
|
||||
```bash
|
||||
mkdir lib
|
||||
cd lib
|
||||
git clone git://github.com/sqlcipher/sqlcipher.git
|
||||
cd sqlcipher
|
||||
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
|
||||
make
|
||||
cd ..
|
||||
```
|
||||
|
||||
Using retroshare-nogui & webUI
|
||||
------------------------------
|
||||
|
||||
The webUI needs to be enabled as a parameter option in retroshare-nogui:
|
||||
|
||||
```bash
|
||||
./retroshare-nogui --webinterface 9090 --docroot /usr/share/retroshare/webui/
|
||||
```
|
||||
|
||||
The webUI is only accessible on localhost:9090. It is advised to keep it that way so that your RS
|
||||
cannot be controlled using an untrusted connection.
|
||||
|
||||
To access your web UI from a distance, just open a SSH tunnel on it:
|
||||
|
||||
```bash
|
||||
distant_machine:~/ > ssh rs_host -L 9090:localhost:9090 -N
|
||||
```
|
||||
|
||||
"rs_host" is the machine running retroshare-nogui. Then on the distant machine, access your webUI on
|
||||
|
||||
|
||||
http://localhost:9090
|
||||
|
||||
That also works with a retroshare GUI of course.
|
||||
|
||||
Compile and run tests
|
||||
---------------------
|
||||
|
||||
qmake CONFIG+=tests
|
||||
make
|
||||
tests/unittests/unittests
|
@ -1,59 +1,58 @@
|
||||
# RetroShare main qmake build script
|
||||
#
|
||||
# Copyright (C) 2004-2019, Retroshare Team <contact@retroshare.cc>
|
||||
# Copyright (C) 2016-2019, Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-FileCopyrightText: Retroshare Team <contact@retroshare.cc>
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
CONFIG += c++14
|
||||
|
||||
!include("retroshare.pri"): error("Could not include file retroshare.pri")
|
||||
|
||||
TEMPLATE = subdirs
|
||||
#CONFIG += tests
|
||||
|
||||
SUBDIRS += openpgpsdk
|
||||
openpgpsdk.file = openpgpsdk/src/openpgpsdk.pro
|
||||
|
||||
rs_jsonapi:isEmpty(JSONAPI_GENERATOR_EXE) {
|
||||
SUBDIRS += jsonapi-generator
|
||||
jsonapi-generator.file = jsonapi-generator/src/jsonapi-generator.pro
|
||||
libretroshare.depends += jsonapi-generator
|
||||
}
|
||||
|
||||
SUBDIRS += libbitdht
|
||||
libbitdht.file = libbitdht/src/libbitdht.pro
|
||||
libretroshare.depends += openpgpsdk libbitdht
|
||||
|
||||
SUBDIRS += libretroshare
|
||||
libretroshare.file = libretroshare/src/libretroshare.pro
|
||||
libretroshare.depends = openpgpsdk libbitdht
|
||||
|
||||
SUBDIRS += libresapi
|
||||
libresapi.file = libresapi/src/libresapi.pro
|
||||
libresapi.depends = libretroshare
|
||||
|
||||
retroshare_gui {
|
||||
SUBDIRS += retroshare_gui
|
||||
retroshare_gui.file = retroshare-gui/src/retroshare-gui.pro
|
||||
retroshare_gui.depends = libretroshare libresapi
|
||||
retroshare_gui.target = retroshare_gui
|
||||
retroshare_gui.depends = libretroshare
|
||||
}
|
||||
|
||||
retroshare_nogui {
|
||||
SUBDIRS += retroshare_nogui
|
||||
retroshare_nogui.file = retroshare-nogui/src/retroshare-nogui.pro
|
||||
retroshare_nogui.depends = libretroshare libresapi
|
||||
retroshare_nogui.target = retroshare_nogui
|
||||
}
|
||||
|
||||
retroshare_android_service {
|
||||
SUBDIRS += retroshare_android_service
|
||||
retroshare_android_service.file = retroshare-android-service/src/retroshare-android-service.pro
|
||||
retroshare_android_service.depends = libresapi
|
||||
retroshare_android_service.target = retroshare_android_service
|
||||
}
|
||||
|
||||
retroshare_android_notify_service {
|
||||
SUBDIRS += retroshare_android_notify_service
|
||||
retroshare_android_notify_service.file = retroshare-android-notify-service/src/retroshare-android-notify-service.pro
|
||||
retroshare_android_notify_service.depends = retroshare_android_service
|
||||
retroshare_android_notify_service.target = retroshare_android_notify_service
|
||||
}
|
||||
|
||||
retroshare_qml_app {
|
||||
SUBDIRS += retroshare_qml_app
|
||||
retroshare_qml_app.file = retroshare-qml-app/src/retroshare-qml-app.pro
|
||||
retroshare_qml_app.depends = retroshare_android_service
|
||||
retroshare_qml_app.target = retroshare_qml_app
|
||||
|
||||
android-g++ {
|
||||
retroshare_qml_app.depends += retroshare_android_notify_service
|
||||
}
|
||||
retroshare_service {
|
||||
SUBDIRS += retroshare_service
|
||||
retroshare_service.file = retroshare-service/src/retroshare-service.pro
|
||||
retroshare_service.depends = libretroshare
|
||||
retroshare_service.target = retroshare_service
|
||||
}
|
||||
|
||||
retroshare_plugins {
|
||||
|
@ -1,11 +0,0 @@
|
||||
set QTDIR=C:\Qt\5.5\mingw492_32
|
||||
set LIBS=..\libs
|
||||
set RSPATH=.\retroshare-gui\src\debug
|
||||
|
||||
set PATH=%QTDIR%\bin;%LIBS%\bin;%PATH%
|
||||
|
||||
If not exist %RSPATH%\retroshare.exe (
|
||||
build-all-mingw32make.bat
|
||||
)
|
||||
|
||||
%RSPATH%\retroshare.exe
|
@ -1,47 +0,0 @@
|
||||
Legend:
|
||||
[X]: done, [ ]: pending, [-]: Cancelled, [/]: ongoing
|
||||
|
||||
GUI
|
||||
[X] disable edit circles or make it work
|
||||
[X] make GUI update when creating a circle
|
||||
[ ] handle the display of encrypted forums/channels/etc when we do not have the keys
|
||||
[ ] disable posting to circles for which we do not have the rights
|
||||
[ ] warn about creating a circle without one of your ids in it
|
||||
[X] group "show details" should be made up to date for restrinction options
|
||||
[ ] allow to share circles publish rights
|
||||
[X] allow non admin to see circles details but not edit
|
||||
|
||||
[ ] update TS of groups linked to a modified circle, so as to cause updates when a new member is addded to the group
|
||||
[X] forums GUI should show correct restriction options for restricted forums
|
||||
[X] changing a circle's name should update the GUI
|
||||
[ ] make sure we cannot post in forums using IDs that are not in the circle
|
||||
[ ] make sure unauthorised ids are rejected when validating posts from a circle restricted group
|
||||
[ ] add GUI for local circles in circle GUI
|
||||
[ ] share publish rights between circles
|
||||
[ ] clean GUI (hide IDs)
|
||||
|
||||
|
||||
Tests
|
||||
[X] create a safe testing environment: 2 peers with no other contacts, 2 IDs each, and some forums
|
||||
[X] test #001: transactions should encrypt and decrypt ok on both sides
|
||||
[X] test #002: peers inside a circles should see the data
|
||||
[X] test #003: peers outside of a circles shouldn't see the data
|
||||
[-] test #004: peers subscribed to encrypted circles shouldn't keep asking for the data if they cannot decrypt
|
||||
[X] test #005: peers can be added/removed from circles, and the circles update between friends
|
||||
[ ] test #006: peers subscribed to encrypted circles who recently got added to the circle should get the data
|
||||
[ ] test #007: peers outside a circle shouldn't be able to post (or posts shouldn't propagate)
|
||||
|
||||
Backend
|
||||
[X] add debug output later RS_NXS_DEBUG_7 in rsgxsnetservice.cc for the crypto layer
|
||||
|
||||
Bugs
|
||||
[X] Peers cannot be removed from a circle
|
||||
[X] Context menu should not allow to edit non admin circles
|
||||
[X] Editing circles make them subscribed, even non admin ones.
|
||||
[X] Disable autosync for circles (in rsinit.cc)
|
||||
[-] Add explicit circle sync request for all grps restricted to a circle (same as IDs)
|
||||
[X] when a peer receives a circle, there is no way to view its details, only the id is available
|
||||
[X] if a peer has circles available in "Circles (others)"... if you click on
|
||||
"Create Circle" on the gui, then all circles are automatically subscribed
|
||||
|
||||
|
135
TODO.txt
135
TODO.txt
@ -1,135 +0,0 @@
|
||||
Legend:
|
||||
E: easy. Just GUI stuff, no algorithmics involved. That does not mean it's easy to come up with.
|
||||
M: medium, either because it's a big task, or because it needs to understand a lot of code.
|
||||
H: hard. Needs digging deep into libretroshare, possibly involving some crypto.
|
||||
|
||||
[ ] pending
|
||||
[/] half-done, someone's on it
|
||||
[-] cancelled
|
||||
[?] needs discussion. Not sure we need this.
|
||||
[X] done
|
||||
|
||||
PS: no tabs in this file,thx ;-)
|
||||
|
||||
---------------------------------------- TODO for RC ---------------------------------------------
|
||||
|
||||
E [ ] Implement creation of a default (signed) gxs id in startup wizard. Needs to show to the user a proper separation between nodes (network layer) and GXS ids (service layer).
|
||||
E [ ] add tooltips in in permission matrix when hovering over the top most button/service name explain what the service does and the dependencies
|
||||
E [ ] finish pass of GXS network service
|
||||
|
||||
----------------------------------------- TODO list ----------------------------------------------
|
||||
|
||||
GUI
|
||||
E [X] add a "Contact" list to help selecting peers in People/FriendChooser/messages/etc.
|
||||
E [ ] fix posted GUI. Needs to be more handy and more appealing.
|
||||
E [ ] add RS links for GXS identities, so that they can be transferred easily between nodes in forums, etc
|
||||
E [ ] enable people dialog
|
||||
M [ ] Personal Page (Profile Page for GXS ID Users,view latest Posts, public forum/channels,posted posts, comments in all areas, Reputation Infos, Popularity and more)
|
||||
E [ ] fix RSButtonOnText::eventFilter, and fix all places where RSButtonOnText gets deleted
|
||||
E [ ] find all places where the deprecated(in Qt5) Q_WS_WIN and other Q_WS* macros are used, and replace with something else
|
||||
E [ ] Make RS fully compatible with High DPI screens.
|
||||
M [ ] improve comments in channels. Comments should be more available, more visible, and easier to handle.
|
||||
E [ ] make GRouter statistics less CPU greedy
|
||||
M [ ] Merge the various help systems. there's 3 of them now. Lots of duplicate code, etc.
|
||||
M [ ] New and consistent icon set (Purplehaze420 said he would provide a consistent set of icons. Is that still alive?)
|
||||
M [ ] add in options->Network a way to select which network interface is used to talk (choice between "auto" or selected from a list)
|
||||
M [?] add a RS link for encrypted messages (encrypt for multiple GXS ids at once). Messages will appear as a link when encrypted and
|
||||
be automatically decrypted when a suitable GXS id is available for it. Could be a way to securely post something in a public place.
|
||||
|
||||
File transfer (all 3 tasks are related)
|
||||
E [ ] Add a limit of the total number of files simultaneously asked to the same peer using direct transfer.
|
||||
H [ ] implement a new file list management, with new info such as access time,total upload, popularity, etc
|
||||
H [ ] implement a new file list sharing service based on auto-sync system
|
||||
M [ ] get rid of the old cache system (remove CacheStrapper, CacheSource,etc)
|
||||
M [ ] implement end-to-end encryption using chacha20 and H(F), requesting file on H(H(F)). Make this optional and backward compatible.
|
||||
|
||||
DHT
|
||||
H [-] improve DHT lookups to find masquerading peers using fake peers. First experiments (by cyril) do not prove very efficient.
|
||||
|
||||
GXS
|
||||
M [X] create a tunnel service from distant chat code to make it (1) more generic (2) resistant to packet loss.
|
||||
M [X] optimise GXS sync BW. For the moment too much is sent between nodes.
|
||||
H [/] add the ability to use anonymous identities into circles. Needs new distribution model using items encrypted for multiple GXS keys.
|
||||
H [ ] use different and incompatible classes for public and private keys in GxsSecurity
|
||||
|
||||
VOIP
|
||||
H [ ] use proper video encoding. What we have now is decent for video, but sound should be prioritized. Experiments
|
||||
with QtAV seem to work nicely. Finish and integrate!
|
||||
M [ ] Deactivate Voip Buttons, when Friend has no Voip plugin enabled.
|
||||
M [ ] Implement Voice for Video Chat
|
||||
M [ ] Improve Voice and Video Quality
|
||||
M [ ] Video Quality/Resolution Settings (High, Medium, Low) HD, HQ, SD )
|
||||
M [ ] Video Device: WebCam(s) or Desktop Selection
|
||||
M [ ] Audio Input Device Selection (Microphone)
|
||||
M [ ] Audio Output Device Selection (Speaker)
|
||||
M [ ] Video Snapshots https://support.skype.com/en/faq/FA1222/what-is-video-snapshot
|
||||
M [ ] Voice Messaging (record and send a voice message)
|
||||
M [ ] Video Messages (send a video greeting to multiple friends/coworkers/developers at once.)
|
||||
M [ ] Add Call status (when im on the phone changes my status with phone icon)
|
||||
H [ ] Audio Conference
|
||||
H [ ] Video Conference
|
||||
|
||||
Messages
|
||||
H [X] make the mail system re-send failed emails notified by the global router. This is hard because it needs a proper management of duplicate messages
|
||||
E [X] add flags to allow distant messaging from contact list only / everyone / noone / only signed ids.
|
||||
M [ ] add Signature feature to messages
|
||||
M [ ] add vacation responser for messages (automatic replies)
|
||||
|
||||
Chat
|
||||
E [X] add flags to allow distant chat from contact list only / everyone / noone / only signed ids.
|
||||
|
||||
Libretroshare
|
||||
E [X] groups small packets in pqistreamer::handleoutgoing_locked(), and see if that removes some padding overhead
|
||||
E [ ] make sure at least one location is kept when removing old locations as it avoids lots of connection problems.
|
||||
M [ ] improve serialisation system. Lots of serialisation tasks (header, verifications, serialiser=>template, can be factored)
|
||||
M [ ] separate chat stuff from rsmsgs.h into rschat.h
|
||||
M [ ] crash at shutdown due to memory management already cleared while new objects keep being requested.
|
||||
|
||||
#0 0x0000000000da52eb in RsMemoryManagement:¿mallObject:¿mallObject() ()
|
||||
#1 0x0000000000da3694 in RsItem::RsItem(unsigned int) ()
|
||||
#2 0x0000000000dcb365 in RsRawItem::RsRawItem (this=0x0, t=33559555, size=38) at ./serialiser/rsserial.h
|
||||
#3 0x0000000000fc1643 in RsServiceSerialiser::deserialise(void*, unsigned int*) ()
|
||||
#4 0x0000000000da4451 in RsSerialiser::deserialise(void*, unsigned int*) ()
|
||||
#5 0x0000000000fb5b4b in pqistreamer::handleincoming_locked() ()
|
||||
#6 0x0000000000fb4b3e in pqistreamer::tick_recv(unsigned int) ()
|
||||
#7 0x0000000000fb744a in pqithreadstreamer::data_tick() ()
|
||||
#8 0x0000000000e19b27 in RsTickingThread::runloop (this=0x7fffb004e7e8) at util/rsthreads.cc:196
|
||||
#9 0x0000000000e19748 in RsThread::rsthread_init (p=0x7fffb004e7e8) at util/rsthreads.cc:63
|
||||
#10 0x00007ffff4006f6b in start_thread () from /lib64/libpthread.so.0
|
||||
#11 0x00007ffff351c7ed in clone () from /lib64/libc.so.6
|
||||
|
||||
Channels
|
||||
E [ ] allow to set a download directory per channel
|
||||
M [ ] Thumbnail View for Channels
|
||||
M [ ] Count commments on Comments Button
|
||||
M [ ] Notify Channel comments/replies
|
||||
|
||||
Posted
|
||||
E [ ] Show an info page for unsubscribed posted threads (same as forums)
|
||||
E [ ] Make the GUI of Posted more sexy: more compact items, remove unecessary text, use consistent icons,...
|
||||
|
||||
Forums
|
||||
E [ ] do we keep "Getting Started" ? the look needs to be improved. Any help doing this is welcome!
|
||||
E [ ] some widgets in the GUI do not follow the system style => GUI looks bad on these systems
|
||||
|
||||
Bugs
|
||||
E [ ] find the bug that shows some peers online in Network although they are not.
|
||||
M [X] Selecting different options in messages composer -> contact list then come back,
|
||||
shows disappearing / re-appearing people. What causes this???
|
||||
|
||||
Sounds
|
||||
E [ ] add default sounds for Friend go online, New Chat Message, Message arrived, Download complete
|
||||
M [ ] make sure sound is working for users on linux. We also need a "test sound" button in config->sound.
|
||||
|
||||
Packaging
|
||||
E [ ] Sound files should be part of the install package at least on ubuntu (put them in /usr/share)
|
||||
|
||||
List of pending non backward compatible changes
|
||||
===============================================
|
||||
|
||||
* RsGxsGrpMetaData::deserialis should use a proper TLV_STR_TYPE_NAME instead of 0 for
|
||||
mGroupName and mMsgName, in rsgxsdata.cc
|
||||
* p3IdService::service_CreateGroup() should convert the mPgpSign member to radix64!! For now
|
||||
it is hard-coded in binary in a string.
|
||||
|
||||
|
@ -1,88 +0,0 @@
|
||||
##Compilation on Windows
|
||||
|
||||
###Qt Installation
|
||||
|
||||
Install Qt via: [Qt Download](http://www.qt.io/download/)
|
||||
|
||||
Use default options.
|
||||
Add to the PATH environment variable
|
||||
|
||||
;C:\Qt\5.5\mingw492_32\bin;C:\Qt\Tools\mingw492_32\bin;C:\Qt\Tools\mingw492_32\opt\bin
|
||||
|
||||
Depends on wich version of Qt you use.
|
||||
Change build-all-mingw32make.bat with these values too if you don't use MSys2.
|
||||
|
||||
###MSYS2 INSTALLATION
|
||||
|
||||
Choose your MSYS2 installer here: [MSYS2](http://msys2.github.io/)
|
||||
|
||||
Follow install procedure.
|
||||
Don't forget to sync & Update pacman.
|
||||
|
||||
pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
|
||||
|
||||
Restart console
|
||||
|
||||
pacman -Su
|
||||
|
||||
Install all default programms
|
||||
|
||||
pacman -S base-devel git mercurial cvs wget p7zip gcc perl ruby python2
|
||||
|
||||
Choose only w64-i686 if you want only compilation in 32b architecture.
|
||||
|
||||
pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
|
||||
|
||||
###Install other binutils:
|
||||
pacman -S mingw-w64-i686-miniupnpc mingw-w64-x86_64-miniupnpc
|
||||
pacman -S mingw-w64-i686-sqlite3 mingw-w64-x86_64-sqlite3
|
||||
pacman -S mingw-w64-i686-speex mingw-w64-x86_64-speex
|
||||
pacman -S mingw-w64-i686-speexdsp mingw-w64-x86_64-speexdsp
|
||||
pacman -S mingw-w64-i686-opencv mingw-w64-x86_64-opencv
|
||||
pacman -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg
|
||||
pacman -S mingw-w64-i686-libmicrohttpd mingw-w64-x86_64-libmicrohttpd
|
||||
pacman -S mingw-w64-i686-libxslt mingw-w64-x86_64-libxslt
|
||||
|
||||
Add MSYS2 to PATH environment variable depends your windows
|
||||
|
||||
;C:\msys64\mingw32\bin
|
||||
;C:\msys32\mingw32\bin
|
||||
|
||||
|
||||
###Git Installation
|
||||
|
||||
Install Git Gui or other client: [Git Scm](https://git-scm.com/download/win)
|
||||
|
||||
Create a new directory named:
|
||||
|
||||
C:\Development\GIT
|
||||
|
||||
Right-click on it and choose: *Git Bash Here*
|
||||
|
||||
Paste this text on git console:
|
||||
git clone https://github.com/RetroShare/RetroShare.git
|
||||
|
||||
|
||||
###Last Settings
|
||||
|
||||
|
||||
In QtCreator Option Git add its path: *C:\Program Files\Git\bin*
|
||||
and select "Pull" with "Rebase"
|
||||
|
||||
|
||||
Open an MSys2 32|64 shell
|
||||
Move to build_scripts:
|
||||
|
||||
cd /c/Development/GIT/RetroShare/msys2_build_libs/
|
||||
|
||||
###Compile missing library
|
||||
make
|
||||
|
||||
You can now compile RS into Qt Creator
|
||||
|
||||
For using, and debugging Plugins, you can use [Symlinker](http://amd989.github.io/Symlinker/) to link
|
||||
the files in
|
||||
|
||||
\build-RetroShare-Desktop_Qt_X_Y_Z_MinGW_32bit-Debug\plugins\PluginName\debug\*.dll
|
||||
to
|
||||
*%appdata%\RetroShare\extensions6*
|
@ -1,152 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
## You are supposed to provide the following variables according to your system setup
|
||||
[ -z ${ANDROID_NDK_PATH+x} ] && export ANDROID_NDK_PATH="/opt/android-ndk/"
|
||||
[ -z ${ANDROID_NDK_ARCH+x} ] && export ANDROID_NDK_ARCH="arm"
|
||||
[ -z ${ANDROID_NDK_ABI_VER+x} ] && export ANDROID_NDK_ABI_VER="4.9"
|
||||
[ -z ${ANDROID_PLATFORM_VER+x} ] && export ANDROID_PLATFORM_VER="18"
|
||||
[ -z ${NDK_TOOLCHAIN_PATH+x} ] && export NDK_TOOLCHAIN_PATH="/home/$(whoami)/Development/android-toolchains/retroshare-android-${ANDROID_PLATFORM_VER}-${ANDROID_NDK_ARCH}-abi${ANDROID_NDK_ABI_VER}/"
|
||||
[ -z ${HOST_NUM_CPU+x} ] && export HOST_NUM_CPU=4
|
||||
|
||||
runDir="$(pwd)"
|
||||
|
||||
## You should not edit the following variables
|
||||
if [ "${ANDROID_NDK_ARCH}" == "x86" ]; then
|
||||
cArch="i686"
|
||||
eABI=""
|
||||
else
|
||||
cArch="${ANDROID_NDK_ARCH}"
|
||||
eABI="eabi"
|
||||
fi
|
||||
export SYSROOT="${NDK_TOOLCHAIN_PATH}/sysroot"
|
||||
export PREFIX="${SYSROOT}"
|
||||
export CC="${NDK_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-gcc"
|
||||
export CXX="${NDK_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-g++"
|
||||
export AR="${NDK_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-ar"
|
||||
export RANLIB="${NDK_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-ranlib"
|
||||
export ANDROID_DEV="${ANDROID_NDK_PATH}/platforms/android-${ANDROID_PLATFORM_VER}/arch-${ANDROID_NDK_ARCH}/usr"
|
||||
|
||||
|
||||
## More information available at https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html
|
||||
build_toolchain()
|
||||
{
|
||||
rm -rf ${NDK_TOOLCHAIN_PATH}
|
||||
[ "${ANDROID_NDK_ARCH}" == "x86" ] && toolchainName="${ANDROID_NDK_ARCH}-${ANDROID_NDK_ABI_VER}" || toolchainName="${ANDROID_NDK_ARCH}-linux-androideabi-${ANDROID_NDK_ABI_VER}"
|
||||
${ANDROID_NDK_PATH}/build/tools/make-standalone-toolchain.sh --ndk-dir=${ANDROID_NDK_PATH} --arch=${ANDROID_NDK_ARCH} --install-dir=${NDK_TOOLCHAIN_PATH} --platform=android-${ANDROID_PLATFORM_VER} --toolchain=${toolchainName} --verbose
|
||||
}
|
||||
|
||||
## More information available at retroshare://file?name=Android%20Native%20Development%20Kit%20Cookbook.pdf&size=29214468&hash=0123361c1b14366ce36118e82b90faf7c7b1b136
|
||||
build_bzlib()
|
||||
{
|
||||
B_dir="bzip2-1.0.6"
|
||||
rm -rf $B_dir
|
||||
[ -f $B_dir.tar.gz ] || wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
sed -i "/^CC=.*/d" Makefile
|
||||
sed -i "/^AR=.*/d" Makefile
|
||||
sed -i "/^RANLIB=.*/d" Makefile
|
||||
sed -i "/^LDFLAGS=.*/d" Makefile
|
||||
sed -i "s/^all: libbz2.a bzip2 bzip2recover test/all: libbz2.a bzip2 bzip2recover/" Makefile
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install PREFIX=${SYSROOT}/usr
|
||||
# sed -i "/^CC=.*/d" Makefile-libbz2_so
|
||||
# make -f Makefile-libbz2_so -j${HOST_NUM_CPU}
|
||||
# cp libbz2.so.1.0.6 ${SYSROOT}/usr/lib/libbz2.so
|
||||
cd ..
|
||||
}
|
||||
|
||||
## More information available at http://doc.qt.io/qt-5/opensslsupport.html
|
||||
build_openssl()
|
||||
{
|
||||
B_dir="openssl-1.0.2h"
|
||||
rm -rf $B_dir
|
||||
[ -f $B_dir.tar.gz ] || wget https://www.openssl.org/source/$B_dir.tar.gz
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
if [ "${ANDROID_NDK_ARCH}" == "arm" ]; then
|
||||
oArch="armv7"
|
||||
else
|
||||
oArch="${ANDROID_NDK_ARCH}"
|
||||
fi
|
||||
# ANDROID_NDK_ROOT="${ANDROID_NDK_PATH}" ./Configure android-${oArch} shared --prefix="${SYSROOT}/usr" --openssldir="${SYSROOT}/etc/ssl"
|
||||
## We link openssl statically to avoid android silently sneaking in his own
|
||||
## version of libssl.so (we noticed this because it had some missing symbol
|
||||
## that made RS crash), the crash in some android version is only one of the
|
||||
## possible problems the fact that android insert his own binary libssl.so pose
|
||||
## non neglegible security concerns.
|
||||
ANDROID_NDK_ROOT="${ANDROID_NDK_PATH}" ./Configure android-${oArch} --prefix="${SYSROOT}/usr" --openssldir="${SYSROOT}/etc/ssl"
|
||||
sed -i 's/LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \\/LIBNAME=$$i \\/g' Makefile
|
||||
sed -i '/LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \\/d' Makefile
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
# cp *.so "${SYSROOT}/usr/lib"
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_sqlite()
|
||||
{
|
||||
B_dir="sqlite-autoconf-3130000"
|
||||
[ -f $B_dir.tar.gz ] || wget https://www.sqlite.org/2016/$B_dir.tar.gz
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
./configure --prefix="${SYSROOT}/usr" --host=${ANDROID_NDK_ARCH}-linux
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
rm -f ${SYSROOT}/usr/lib/libsqlite3.so*
|
||||
${CC} -shared -o libsqlite3.so -fPIC sqlite3.o -ldl
|
||||
cp libsqlite3.so "${SYSROOT}/usr/lib"
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_sqlcipher()
|
||||
{
|
||||
echo "sqlcipher not supported yet on android"
|
||||
return 0
|
||||
|
||||
cd sqlcipher
|
||||
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="${SYSROOT}/usr/lib/libcrypto.a"
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_libupnp()
|
||||
{
|
||||
B_dir="libupnp-1.6.20"
|
||||
rm -rf $B_dir
|
||||
[ -f $B_dir.tar.bz2 ] || wget https://sourceforge.net/projects/pupnp/files/pupnp/libUPnP%201.6.20/$B_dir.tar.bz2
|
||||
tar -xf $B_dir.tar.bz2
|
||||
cd $B_dir
|
||||
## liupnp must be configured as static library because if not the linker will
|
||||
## look for libthreadutils.so.6 at runtime that cannot be packaged on android
|
||||
## as it supports only libname.so format for libraries, thus resulting in a
|
||||
## crash at startup.
|
||||
./configure --enable-static --disable-shared --disable-samples --prefix="${SYSROOT}/usr" --host=${ANDROID_NDK_ARCH}-linux
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_libmicrohttpd()
|
||||
{
|
||||
echo "libmicrohttpd not supported yet on android"
|
||||
return 0
|
||||
|
||||
B_dir="libmicrohttpd-0.9.50"
|
||||
rm -rf $B_dir
|
||||
[ -f $B_dir.tar.gz ] || wget ftp://ftp.gnu.org/gnu/libmicrohttpd/$B_dir.tar.gz
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
./configure --prefix="${SYSROOT}/usr" --host=${ANDROID_NDK_ARCH}-linux
|
||||
#make -e ?
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_toolchain
|
||||
build_bzlib
|
||||
build_openssl
|
||||
build_sqlite
|
||||
build_libupnp
|
174
appveyor.yml
174
appveyor.yml
@ -1,3 +1,6 @@
|
||||
# SPDX-FileCopyrightText: (C) 2004-2019 Retroshare Team <contact@retroshare.cc>
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
# 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!
|
||||
@ -12,7 +15,8 @@
|
||||
#---------------------------------#
|
||||
|
||||
# version format
|
||||
version: RetroShare 0.6.0.{build}-{branch}
|
||||
version: RetroShare-git-{branch}-{build}
|
||||
image: Visual Studio 2019
|
||||
|
||||
# you can use {branch} name in version format too
|
||||
# version: 1.0.{build}-{branch}
|
||||
@ -52,29 +56,28 @@ on_finish:
|
||||
#- 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
|
||||
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
|
||||
clone_depth: 2000 # 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
|
||||
## Qt: https://www.appveyor.com/docs/installed-software#qt
|
||||
# QTDIR: C:\Qt\5.10.1\mingw53_32
|
||||
MSYS2_ARCH: i686
|
||||
TARGET: i686_32-pc-msys
|
||||
MINGW_PREFIX: C:\msys64\mingw32
|
||||
RS_DEPLOY: RetroShare_deploy
|
||||
|
||||
|
||||
# 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
|
||||
#cache:
|
||||
# Disabled because it's bigger then supported by appveyor free plan
|
||||
# - C:\msys64\var\cache\pacman\pkg
|
||||
|
||||
# scripts that run after cloning repository
|
||||
#install:
|
||||
@ -86,26 +89,19 @@ cache:
|
||||
# - cmd: echo This is batch again
|
||||
# - cmd: set MY_VAR=12345
|
||||
install:
|
||||
# We cannot get OBS submodule as it use illegal folder name for windows.
|
||||
#- git submodule update --init
|
||||
# Configuring MSys2
|
||||
- set PATH=C:\msys64\usr\bin;%PATH%
|
||||
- set PATH=C:\msys64\mingw32\bin;%PATH%
|
||||
- >
|
||||
pacman --noconfirm -Sy
|
||||
mingw-w64-i686-qt5 mingw-w64-i686-miniupnpc mingw-w64-i686-rapidjson
|
||||
mingw-w64-i686-sqlcipher mingw-w64-i686-xapian-core mingw-w64-i686-cmark
|
||||
#- set PATH=C:\msys64\mingw32\qt5-static\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-curl mingw-w64-x86_64-curl"
|
||||
- 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-speexdsp mingw-w64-x86_64-speexdsp"
|
||||
- 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"
|
||||
# - set PATH=%QTDIR%\bin;C:\Qt\Tools\mingw491_32\bin;%PATH%
|
||||
|
||||
# Hack for new MSys2
|
||||
- copy C:\msys64\mingw32\i686-w64-mingw32\bin\ar.exe C:\msys64\mingw32\bin\i686-w64-mingw32-ar.exe
|
||||
@ -114,10 +110,15 @@ install:
|
||||
- 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.exe -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
|
||||
|
||||
# Work-around linker looking for Qt dll in wrong place
|
||||
- copy C:\msys64\mingw32\bin\Qt5PrintSupport.dll C:\msys64\mingw32\lib\Qt5PrintSupport.dll
|
||||
- copy C:\msys64\mingw32\bin\Qt5Widgets.dll C:\msys64\mingw32\lib\Qt5Widgets.dll
|
||||
- copy C:\msys64\mingw32\bin\Qt5Multimedia.dll C:\msys64\mingw32\lib\Qt5Multimedia.dll
|
||||
- copy C:\msys64\mingw32\bin\Qt5Gui.dll C:\msys64\mingw32\lib\Qt5Gui.dll
|
||||
- copy C:\msys64\mingw32\bin\Qt5Network.dll C:\msys64\mingw32\lib\Qt5Network.dll
|
||||
- copy C:\msys64\mingw32\bin\Qt5Xml.dll C:\msys64\mingw32\lib\Qt5Xml.dll
|
||||
- copy C:\msys64\mingw32\bin\Qt5Core.dll C:\msys64\mingw32\lib\Qt5Core.dll
|
||||
|
||||
|
||||
#---------------------------------#
|
||||
@ -142,18 +143,113 @@ configuration: Release
|
||||
|
||||
# scripts to run before build
|
||||
before_build:
|
||||
- cd C:\projects\RetroShare
|
||||
- git submodule update --init
|
||||
- cd C:\projects\
|
||||
- mkdir RetroShare-build
|
||||
- cd RetroShare-build
|
||||
# - find C:\ > filelist.txt
|
||||
|
||||
# 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
|
||||
- env
|
||||
- qmake ../RetroShare -spec win32-g++ "CONFIG+=debug"
|
||||
- mingw32-make -j3
|
||||
|
||||
# scripts to run after build
|
||||
after_build:
|
||||
- find .
|
||||
|
||||
- mkdir %RS_DEPLOY%
|
||||
- copy retroshare-gui\src\debug\retroshare.exe %RS_DEPLOY%\
|
||||
- copy retroshare-service\src\debug\retroshare-service.exe %RS_DEPLOY%\
|
||||
# - copy retroshare-service\src\retroshare-service.exe %RS_DEPLOY%\
|
||||
# - copy retroshare-gui\src\retroshare.exe %RS_DEPLOY%\
|
||||
|
||||
## In Debug build winedeplyqt forget the non debug Qt libs
|
||||
- copy C:\msys64\mingw32\bin\Qt5Svg.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5Core.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5Multimedia.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5Widgets.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5Xml.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5PrintSupport.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5Gui.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\Qt5Network.dll %RS_DEPLOY%\
|
||||
|
||||
- mkdir %RS_DEPLOY%\playlistformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\playlistformats\qtmultimedia_m3u.dll %RS_DEPLOY%\playlistformats
|
||||
|
||||
- mkdir %RS_DEPLOY%\printsupport\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\printsupport\windowsprintersupport.dll %RS_DEPLOY%\printsupport\
|
||||
|
||||
- mkdir %RS_DEPLOY%\iconengines\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\iconengines\qsvgicon.dll %RS_DEPLOY%\iconengines\
|
||||
|
||||
- mkdir %RS_DEPLOY%\bearer\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\bearer\qgenericbearer.dll %RS_DEPLOY%\bearer\
|
||||
|
||||
- mkdir %RS_DEPLOY%\mediaservice\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\mediaservice\qtmedia_audioengine.dll %RS_DEPLOY%\mediaservice\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\mediaservice\dsengine.dll %RS_DEPLOY%\mediaservice\
|
||||
|
||||
- mkdir %RS_DEPLOY%\styles\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\styles\qwindowsvistastyle.dll %RS_DEPLOY%\styles\
|
||||
|
||||
- mkdir %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qwebp.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qicns.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qjpeg.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qtiff.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qtga.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qjp2.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qico.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qwbmp.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qicns.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qgif.dll %RS_DEPLOY%\imageformats\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qsvg.dll %RS_DEPLOY%\imageformats\
|
||||
|
||||
- mkdir %RS_DEPLOY%\platforms\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\platforms\qwindows.dll %RS_DEPLOY%\platforms\
|
||||
|
||||
- mkdir %RS_DEPLOY%\audio\
|
||||
- copy C:\msys64\mingw32\share\qt5\plugins\audio\qtaudio_windows.dll %RS_DEPLOY%\audio\
|
||||
|
||||
- windeployqt %RS_DEPLOY%\retroshare.exe
|
||||
|
||||
- copy C:\msys64\mingw32\bin\libbz2*.dll %RS_DEPLOY%\
|
||||
#- copy C:\msys64\mingw32\bin\libeay32.dll %RS_DEPLOY%\
|
||||
- copy C:\OpenSSL-Win32\libeay32.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libminiupnpc.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libsqlcipher*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libsqlite3*.dll %RS_DEPLOY%\
|
||||
#- copy C:\msys64\mingw32\bin\ssleay32.dll %RS_DEPLOY%\
|
||||
- copy C:\OpenSSL-Win32\ssleay32.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\zlib*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libgcc_s_dw2*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libstdc*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libwinpthread*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libicu*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libpcre*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libharfbuzz*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libpng*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libfreetype*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libglib*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libgraphite2.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libintl*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libiconv*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libjasper*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libjpeg*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libtiff*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libwebp*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libwebpdemux*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\liblzma*.dll %RS_DEPLOY%\
|
||||
|
||||
## Needed for cmark
|
||||
- copy C:\msys64\mingw32\bin\libcmark*.dll %RS_DEPLOY%\
|
||||
- copy C:\msys64\mingw32\bin\libdouble-conversion*.dll %RS_DEPLOY%\
|
||||
|
||||
# to disable automatic builds
|
||||
#build: off
|
||||
@ -163,6 +259,10 @@ build_script:
|
||||
#---------------------------------#
|
||||
|
||||
#artifacts:
|
||||
# - path: '**\*.exe'
|
||||
# - path: filelist.txt
|
||||
# - path: $(RS_DEPLOY)
|
||||
|
||||
#
|
||||
# # pushing a single file
|
||||
# - path: test.zip
|
||||
|
@ -1,217 +0,0 @@
|
||||
set QTDIR=C:\Qt\5.5\mingw492_32\
|
||||
set MINGW=C:\Qt\Tools\mingw492_32
|
||||
|
||||
set PATH=%QTDIR%\bin;%MINGW%\bin;%PATH%
|
||||
set DEBUG=1
|
||||
|
||||
@echo off
|
||||
rem emptying used variables in case the script was aborted and tempfile
|
||||
set pack=
|
||||
set clean=
|
||||
set errorlevel=
|
||||
if exist tmp.txt del tmp.txt
|
||||
|
||||
|
||||
:loop1
|
||||
if %1x == x (
|
||||
rem if not exist tmp.txt echo debug >>tmp.txt
|
||||
goto :end1
|
||||
)
|
||||
if /i %1==clean (
|
||||
set clean=clean
|
||||
shift
|
||||
goto :loop1
|
||||
)
|
||||
if /i %1==pack (
|
||||
set pack=pack
|
||||
shift
|
||||
goto :loop1
|
||||
)
|
||||
echo.%1>>tmp.txt
|
||||
shift
|
||||
goto :loop1
|
||||
|
||||
:end1
|
||||
if %clean%x==cleanx (
|
||||
if not exist tmp.txt echo %clean% >>tmp.txt
|
||||
)
|
||||
|
||||
if not exist tmp.txt (
|
||||
if not %pack%x==packx (
|
||||
echo debug >>tmp.txt
|
||||
set clean=clean
|
||||
)
|
||||
)
|
||||
|
||||
for /f %%a in (tmp.txt) do (
|
||||
if ECHO==1 @echo on
|
||||
|
||||
|
||||
|
||||
|
||||
rem TODO: Remove these lines
|
||||
rem GOTO :retroshare-gui
|
||||
|
||||
|
||||
|
||||
|
||||
:libbitdht
|
||||
rem ###################################
|
||||
rem ### libbitdht #####################
|
||||
rem ###################################
|
||||
cd libbitdht\src
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
qmake libbitdht.pro
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make %%a
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### libbitdht done ################
|
||||
echo ###################################
|
||||
cd ..\..
|
||||
|
||||
:openpgpsdk
|
||||
rem ###################################
|
||||
rem ### openpgpsdk ####################
|
||||
rem ###################################
|
||||
cd openpgpsdk\src
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
qmake openpgpsdk.pro
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### openpgpsdk done ###############
|
||||
echo ###################################
|
||||
cd ..\..
|
||||
|
||||
:libresapi
|
||||
rem ###################################
|
||||
rem ### libresapi #####################
|
||||
rem ###################################
|
||||
cd libresapi\src
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
qmake libresapi.pro
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make %%a
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### libresapi done ################
|
||||
echo ###################################
|
||||
cd ..\..
|
||||
|
||||
:libretroshare
|
||||
rem ###################################
|
||||
rem ### libretroshare #################
|
||||
rem ###################################
|
||||
cd libretroshare\src
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
qmake libretroshare.pro "CONFIG+=version_detail_bash_script"
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make %%a
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### libretroshare done ############
|
||||
echo ###################################
|
||||
cd ..\..
|
||||
|
||||
:pegmarkdown
|
||||
rem ###################################
|
||||
rem ### pegmarkdown ###################
|
||||
rem ###################################
|
||||
cd supportlibs\pegmarkdown
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
qmake pegmarkdown.pro
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make %%a
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### pegmarkdown done ##############
|
||||
echo ###################################
|
||||
cd ..\..
|
||||
|
||||
:retroshare-nogui
|
||||
rem ###################################
|
||||
rem ### retroshare-nogui ##############
|
||||
rem ###################################
|
||||
cd retroshare-nogui\src
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
qmake retroshare-nogui.pro
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make %%a
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### retroshare-nogui done #########
|
||||
echo ###################################
|
||||
cd ..\..
|
||||
|
||||
:retroshare-gui
|
||||
rem ###################################
|
||||
rem ### retroshare-gui ################
|
||||
rem ###################################
|
||||
cd retroshare-gui\src
|
||||
|
||||
if not %clean%x==x mingw32-make clean
|
||||
|
||||
rem qmake -r -spec ..\mkspecs\win32-g++ "CONFIG+=version_detail_bash_script" retroshare-gui.pro
|
||||
qmake retroshare-gui.pro "CONFIG+=version_detail_bash_script"
|
||||
CALL :TEST_ERROR
|
||||
|
||||
mingw32-make %%a
|
||||
CALL :TEST_ERROR
|
||||
echo ###################################
|
||||
echo ### retroshare-gui done ###########
|
||||
echo ###################################
|
||||
|
||||
cd ..\..
|
||||
@echo off
|
||||
)
|
||||
|
||||
|
||||
@echo off
|
||||
if %pack%x==packx call packaging.bat
|
||||
rem ###################################
|
||||
rem ### clean up ######################
|
||||
rem ###################################
|
||||
set clean=
|
||||
del tmp.txt
|
||||
set pack=
|
||||
pause
|
||||
|
||||
rem ###################################
|
||||
rem ### END ###########################
|
||||
rem ###################################
|
||||
GOTO :EOF
|
||||
|
||||
|
||||
:TEST_ERROR
|
||||
@echo off
|
||||
if errorlevel 1 (
|
||||
pause
|
||||
set clean=
|
||||
del tmp.txt
|
||||
set pack=
|
||||
EXIT
|
||||
)
|
||||
if ECHO==1 @echo on
|
||||
EXIT /B
|
||||
|
||||
:EOF
|
399
build_scripts/Android/README.asciidoc
Normal file
399
build_scripts/Android/README.asciidoc
Normal file
@ -0,0 +1,399 @@
|
||||
= RetroShare development on Android
|
||||
|
||||
// SPDX-FileCopyrightText: RetroShare Team <contact@retroshare.cc>
|
||||
// SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
|
||||
|
||||
Compiling an application for Android is not as easy as one would imagine,
|
||||
expecially one like RetroShare that has a big codebase and is not well
|
||||
documented. This document is aimed to empower the reader so she can hopefully
|
||||
succed or at least have a significant help in compiling her own RetroShare APK
|
||||
installable on Android.
|
||||
|
||||
|
||||
== Preparing The Environement
|
||||
|
||||
First of all setup your Qt for Android development environement following the
|
||||
guide on the link:http://doc.qt.io/qt-5/androidgs.html[Qt for android web site].
|
||||
At this point you should have Android SDK, Android NDK, and Qt for Android
|
||||
working fine, and you should be capable of executing on an Android emulator or
|
||||
on your Android phone Qt for Android examples.
|
||||
|
||||
But RetroShare is not as simple to compile as those examples. The good news is
|
||||
that Android NDK ships all the necessary to build a custom toolchain that is
|
||||
suitable to build RetroShare.
|
||||
In order to build the toolchain with needed libraries RetroShare provides the
|
||||
+android-prepare-toolchain.sh+ script; before you execute it you should define
|
||||
some variables the script cannot determine in an easy and reliable manner by
|
||||
itself in your terminal.
|
||||
|
||||
[source,bash]
|
||||
-------------------------------------------------------------------------------
|
||||
## The path where Android NDK is installed in your system
|
||||
export ANDROID_NDK_PATH="/opt/android-ndk/"
|
||||
|
||||
## The path where your fresh compiled toolchain will be installed, make sure
|
||||
## the parent exists
|
||||
export NATIVE_LIBS_TOOLCHAIN_PATH="${HOME}/Builds/android-toolchains/retroshare-android/"
|
||||
|
||||
## The CPU architecture of the Android device you want to target
|
||||
export ANDROID_NDK_ARCH="arm"
|
||||
|
||||
## The Android API level the Android device you want to target
|
||||
export ANDROID_PLATFORM_VER="16"
|
||||
|
||||
## The number of core that yout host CPU have (just to speed up compilation) set
|
||||
## it to 1 if unsure
|
||||
export HOST_NUM_CPU=1
|
||||
|
||||
./android-prepare-toolchain.sh
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
== Preparing Qt Creator
|
||||
|
||||
Now that your environement is set up you should configure Qt Creator for Android
|
||||
following the
|
||||
link:http://doc.qt.io/qtcreator/creator-developing-android.html[official guide].
|
||||
At the end of this step your Qt Creator should recognize the Android compiler
|
||||
and the Qt for Android kit.
|
||||
|
||||
Your Kit is now ready to use. Now you can open RetroShare as a Qt Creator
|
||||
project and in the Projects left menu add the newly created kit if not already
|
||||
present, so you can select it on the build type selection button down on the
|
||||
left.
|
||||
|
||||
Now you need to set properly a few options like `JSONAPI_GENERATOR_EXE` and
|
||||
disable some of RetroShare modules like `retroshare-gui` that are not available
|
||||
on Android so you will have to go to
|
||||
|
||||
_Qt Creator left pane -> Projects -> Build and Run -> Android SOMESTUFF kit ->
|
||||
Build Steps -> qmake -> Additional arguments_ +
|
||||
|
||||
and add the following configurations (change `Your_Path` according to your
|
||||
deployment)
|
||||
|
||||
[source,makefile]
|
||||
-------------------------------------------------------------------------------
|
||||
CONFIG+=retroshare_service CONFIG+=rs_jsonapi CONFIG+=rs_deep_search
|
||||
RS_UPNP_LIB=miniupnpc
|
||||
JSONAPI_GENERATOR_EXE=Your_Path/jsonapi-generator/src/jsonapi-generator
|
||||
NATIVE_LIBS_TOOLCHAIN_PATH=Your_Path/retroshare-android-16-arm/
|
||||
CONFIG+=no_retroshare_gui CONFIG+=no_rs_service_webui_terminal_password
|
||||
CONFIG+=no_rs_service_terminal_login
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
TIP: Some versions of QtCreator try to find the Android SDK in
|
||||
`/opt/android/sdk`. A workaround to this is to make a symbolic link there
|
||||
pointing to your SDK installation path, like
|
||||
+mkdir -p /opt/android/sdk && ln -s /home/user/android-sdk-linux
|
||||
/opt/android/sdk+
|
||||
|
||||
|
||||
== Quircks
|
||||
|
||||
=== Protected Apps
|
||||
|
||||
On some Android devices like +Huawei ALE-L21+ background applications are
|
||||
killed when screen is turned off unless they are in the _protected app_ list.
|
||||
At moment seems apps developers don't have a way to have the application
|
||||
_protected_ by default, unless the phone vendor decide the app is _popular_ so
|
||||
the user have to enable _protection_ for RetroShare manually on those mobile
|
||||
phones. +
|
||||
|
||||
{empty} +
|
||||
To enable enable _protection_: +Android menu -> Settings -> Privacy & security
|
||||
-> Protected apps -> RetroShare+ +
|
||||
{empty} +
|
||||
|
||||
Other devices may offer similar _features_ please report them.
|
||||
|
||||
|
||||
=== APK signature mismatch
|
||||
|
||||
If you try to install a RetroShare APK that comes from a different source
|
||||
(eg: if you try to upgrade from F-Droid when you originally installed an APK
|
||||
build by yourself) Android will prevent that from happening. In that case the
|
||||
only solution is to uninstall the app and then install the new APK but if you do
|
||||
it also the application data and your precious cryptographic keys, friend list
|
||||
etc. will be lost forever.
|
||||
To avoid that you can attempt to manually backup and then restore from the
|
||||
command-line (`adb backup` seems not working either) to change the app source
|
||||
without erasing the appliation data.
|
||||
|
||||
CAUTION: Following steps require root access on your Android device
|
||||
|
||||
.Backup RetroShare Android application data
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
export ORIG_DIR="/data/data/org.retroshare.android.qml_app"
|
||||
export BACKUP_DIR="org.retroshare.android.qml_app.backup"
|
||||
|
||||
adb root
|
||||
|
||||
adb shell am force-stop org.retroshare.android.qml_app
|
||||
sleep 1s
|
||||
|
||||
mkdir ${BACKUP_DIR}
|
||||
|
||||
# Avoid adb pull failing
|
||||
adb shell rm ${ORIG_DIR}/files/.retroshare/libresapi.sock
|
||||
adb pull ${ORIG_DIR}/files/ ${BACKUP_DIR}/files/
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
After this you should be able to uninstall the old APK with your preferred
|
||||
method, as example from the command-line.
|
||||
|
||||
.Uninstall RetroShare Android from the command-line
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
adb uninstall org.retroshare.android.qml_app
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Now you can install a different signature APK and then restore the application
|
||||
data with the following commands.
|
||||
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
export ORIG_DIR="/data/data/org.retroshare.android.qml_app"
|
||||
export BACKUP_DIR="org.retroshare.android.qml_app.backup"
|
||||
|
||||
adb root
|
||||
|
||||
## Launch the app to make sure the parent directory exists and has proper owner
|
||||
adb shell monkey -p org.retroshare.android.qml_app -c android.intent.category.LAUNCHER 1
|
||||
sleep 1s
|
||||
|
||||
adb shell am force-stop org.retroshare.android.qml_app
|
||||
sleep 1s
|
||||
|
||||
|
||||
APP_OWNER="$(adb shell busybox ls -lnd ${ORIG_DIR} | awk '{print $3":"$4}')"
|
||||
adb shell rm -rf ${ORIG_DIR}/files
|
||||
adb push ${BACKUP_DIR}/files/ ${ORIG_DIR}/files/
|
||||
adb shell busybox chown -R ${APP_OWNER} ${ORIG_DIR}/files/
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Opening RetroShare android app now should show your old profile.
|
||||
|
||||
|
||||
== Debugging with GDB
|
||||
|
||||
If building RetroShare Android package seems tricky, setting up a functional
|
||||
debugging environement for it feels like black magic. This section is meant to
|
||||
help you doing it with less headache and hopefully in a reproducible way.
|
||||
|
||||
Unfortunately at the time of the last update to this guide, Qt build system
|
||||
strips debugging symbols from the package and from the buildroot also if you
|
||||
compile with debugging enabled. Fiddling with `qmake` configurations and
|
||||
variables like `CONFIG+=debug`, `CONFIG+=force_debug_info` or `QMAKE_STRIP`
|
||||
either as commandline arguments or inside retroshare `.pro` and `.pri` files is
|
||||
uneffective. IMHO Qt should handle this on itself so it is probably worth
|
||||
reporting a bug to them. So to workaround this problem you need to fiddle a bit
|
||||
with the Android NDK. In my case I always keep +Debug+ or +Release+ suffix in
|
||||
my build directory name depending on what kind of build it is, so I use this
|
||||
information and modify `llvm-strip` in a way that it will strip only if stripped
|
||||
file path doesn't contain +Debug+.
|
||||
|
||||
.Modify llvm-strip inside Android NDK
|
||||
--------------------------------------------------------------------------------
|
||||
## Set ANDROID_NDK_PATH to your Android NDK installation path
|
||||
export ANDROID_NDK_PATH="/opt/android-ndk/"
|
||||
|
||||
## Define a convenience variable with llvm-strip path
|
||||
export ANDROID_NDK_LLVM_STRIP="${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip"
|
||||
|
||||
## If not existing yer create a backup of the original llvm-strip
|
||||
[ -f "${ANDROID_NDK_LLVM_STRIP}.back" ] ||
|
||||
cp "${ANDROID_NDK_LLVM_STRIP}" "${ANDROID_NDK_LLVM_STRIP}.back"
|
||||
|
||||
## Create a new llvm-strip that does nothing if the argument path contains Debug
|
||||
cat > "${ANDROID_NDK_LLVM_STRIP}" << LLVMSTRIPTRICK
|
||||
#!/bin/bash
|
||||
|
||||
echo "\${2}" | grep -q Debug ||
|
||||
"${ANDROID_NDK_LLVM_STRIP}.back" --strip-all "\${2}"
|
||||
|
||||
LLVMSTRIPTRICK
|
||||
|
||||
## Eventually you can revert back simply by running
|
||||
# `mv "${ANDROID_NDK_LLVM_STRIP}.back" "${ANDROID_NDK_LLVM_STRIP}"`
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
To attach to the `retroshare-service` running on Android you need also to pull a
|
||||
debugging sysroot out of your device first, RetroShare sources provides an
|
||||
helper script to do that.
|
||||
|
||||
.Prepare debugging sysroot with helper script
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
## Set RetroShare source path
|
||||
export RS_SOURCE_DIR="${HOME}/Development/rs-develop"
|
||||
|
||||
## Optionally set your device ID first available will be used, you can run
|
||||
## `adb devices` to list available devices.
|
||||
#export ANDROID_SERIAL="YT013PSPGK"
|
||||
|
||||
## Optionally set a path where to save the debugging sysroot otherwise default
|
||||
## is used.
|
||||
#export DEBUG_SYSROOT="${HOME}/Builds/debug_sysroot/${ANDROID_SERIAL}/"
|
||||
|
||||
## Run the helper script
|
||||
${RS_SOURCE_DIR}/build_scripts/Android/pull_sysroot.sh
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
.Prepare Android NDK GDB configurations
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
## Optionally set Qt version variable consistently with your installation
|
||||
export QT_VERSION="5.12.7"
|
||||
|
||||
## Optionally set Qt architecture variable consistently with Android device
|
||||
export QT_ARCH="arm64_v8a"
|
||||
|
||||
## Optionally set Qt path variable consistently with your installation
|
||||
export QT_DIR="/opt/Qt-${QT_VERSION}/${QT_VERSION}/"
|
||||
|
||||
## Optionally set RetroShare buildroot path
|
||||
export RS_BUILD_DIR="${HOME}/Builds/RetroShare-Android_for_${QT_ARCH}_Clang_Qt_${QT_VERSION//./_}_android_${QT_ARCH}-Debug/"
|
||||
|
||||
## Optionally set gdb config file path
|
||||
export GDB_CONFIGS_FILE="${HOME}/Builds/gdb_configs_${QT_ARCH}"
|
||||
|
||||
## Generate Android NDK GDB configuration
|
||||
${RS_SOURCE_DIR}/build_scripts/Android/generate_gdb_init_commands.sh
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
You will need to run the following steps everytime you want to debug
|
||||
`retroshare-service` on Android.
|
||||
|
||||
Make sure `retroshare-service` is running on your connected Android device.
|
||||
|
||||
.Run GDB server on your Android device from your host console
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
${RS_SOURCE_DIR}/build_scripts/Android/start_gdbserver.sh
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
.Run Android NDK GDB on your workstation and attach
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
## Start NDK gdb
|
||||
${ANDROID_NDK_PATH}/prebuilt/linux-x86_64/bin/gdb
|
||||
|
||||
## Instruct GDB how and where to find debugging symbols
|
||||
(gdb) source $GDB_CONFIGS_FILE
|
||||
|
||||
## Connect to the gdbserver running on the phone
|
||||
(gdb) target remote 127.0.01:5039
|
||||
|
||||
## Have fun debugging
|
||||
(gdb)
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
== Debugging with Qt Creator
|
||||
|
||||
WARNING: As of the last update to this guide, debugging retroshare-service
|
||||
running on Android via Qt creator doesn't wrok even with all the trickery
|
||||
explained in this section, you better learn how to debug with GDB reading
|
||||
carefully previous section.
|
||||
|
||||
Qt Creator actually support debugging only for the foreground activity, so to
|
||||
debug what's happening in the core extra trickery is needed.
|
||||
|
||||
- Run the App in Debug mode from QtCreator "Start Debugging" button
|
||||
- Enable QtCreator debugger console view Menu->Window->Debugger Log
|
||||
- Run +show solib-search-path+ in the QtCreator GDB console
|
||||
- Take note of the output you get in the right pane of the console
|
||||
- Thanks https://stackoverflow.com/a/31164313 for the idea
|
||||
|
||||
TIP: QtCreator GDB console seems a bit buggy and easly trigger timeout
|
||||
message when a command is run, in that case attempt to run the command while the
|
||||
debugging is paused or at breakpoint, or with other similar tricks.
|
||||
|
||||
CAUTION: Following steps require root access on your Android device
|
||||
|
||||
Now on your phone yuo need to authorize root access to applications, then once
|
||||
you plug your sacrifical Android phone run this commands
|
||||
|
||||
.Run gdbserver as root on Android phone
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
## Open a shell from your workstation on the connected Android phone
|
||||
adb shell
|
||||
|
||||
## take the note of the phone IP address
|
||||
ip address show
|
||||
|
||||
## Gain root permissions on the shell
|
||||
su
|
||||
|
||||
## Attach with gdbserver and listen on one TCP port
|
||||
gdbserver :4567 --attach $(pgrep org.retroshare.android.qml_app:rs)
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
.Prepare and run Android NDK GDB on your workstation
|
||||
[source,bash]
|
||||
--------------------------------------------------------------------------------
|
||||
## Setup some convenience variables
|
||||
NDK_GDB="${ANDROID_NDK_PATH}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gdb"
|
||||
RS_BUILD_PATH="${HOME}/Builds/RetroShare-Android_for_armeabi_v7a_GCC_4_9_Qt_5_9_2_android_armv7-Debug/"
|
||||
|
||||
## Start Android NDK GDB of your phone architecture passing the executable
|
||||
$NDK_GDB $RS_BUILD_PATH/retroshare-android-service/src/libretroshare-android-service.so
|
||||
|
||||
## Instruct GDB how and where to find debugging symbols
|
||||
(gdb) set auto-solib-add on
|
||||
(gdb) set solib-search-path THE:BIG:LIST:OF:DIRECTORIES:YOU:TAKE:NOTE:BEFORE
|
||||
|
||||
## Connect to the gdbserver running on the phone
|
||||
(gdb) target remote $PHONE_IP:4567
|
||||
|
||||
## Have fun debugging
|
||||
(gdb)
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
TIP: Some time WiFi power saving on Android mess with the GDB connection,
|
||||
to prevent that from appening open another +adb shell+ and live +ping+ toward
|
||||
your work-station running
|
||||
|
||||
== Embedding into other Android packages
|
||||
|
||||
As showed by https://elrepo.io/[elRepo.io] developers it is possible and quite
|
||||
easy to embed `retroshare-service` into other Android packages see description
|
||||
|
||||
https://gitlab.com/elRepo.io/elRepo.io-android/-/blob/master/README.adoc
|
||||
|
||||
And implementation details
|
||||
|
||||
https://gitlab.com/elRepo.io/elRepo.io-android/-/blob/master/android/app/build.gradle
|
||||
|
||||
|
||||
== Furter Readings
|
||||
|
||||
- link:http://doc.qt.io/qt-5/android-support.html[]
|
||||
- link:https://developer.android.com/ndk/guides/libs.html[]
|
||||
- link:retroshare://forum?name=Compiling%20nogui%20for%20android&id=8fd22bd8f99754461e7ba1ca8a727995&msgid=4e0f92330600bba9cf978f384f4b7b2f2ca64eff[]
|
||||
- link:retroshare://file?name=Android%20Native%20Development%20Kit%20Cookbook.pdf&size=29214468&hash=0123361c1b14366ce36118e82b90faf7c7b1b136[]
|
||||
- link:https://groups.google.com/forum/#!topic/android-developers/srATPaL0aRU[]
|
||||
- link:https://stackoverflow.com/questions/31638986/protected-apps-setting-on-huawei-phones-and-how-to-handle-it[]
|
||||
- link:https://tthtlc.wordpress.com/2012/09/19/how-to-do-remote-debugging-via-gdbserver-running-inside-the-android-phone/[]
|
||||
- link:https://source.android.com/devices/tech/debug/[]
|
||||
- link:https://source.android.com/devices/tech/debug/gdb[]
|
||||
- link:https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html[]
|
||||
- link:https://fragglet.livejournal.com/19646.html[]
|
||||
- link:https://github.com/android-ndk/ndk/issues/773[How to build without using standalone toolchain?]
|
||||
|
||||
== License
|
||||
|
||||
Copyright (C) 2016-2020 Gioacchino Mazzurco <gio@eigenlab.org> +
|
||||
Copyright (C) 2020 Asociación Civil Altermundi <info@altermundi.net> +
|
||||
|
||||
This work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.
|
||||
|
||||
image::https://i.creativecommons.org/l/by-sa/4.0/88x31.png[Creative Commons License, link=http://creativecommons.org/licenses/by-sa/4.0/]
|
85
build_scripts/Android/generate_gdb_init_commands.sh
Executable file
85
build_scripts/Android/generate_gdb_init_commands.sh
Executable file
@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to prepare Android NDK GDB configurations to debug retroshare-service
|
||||
#
|
||||
# Copyright (C) 2020 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
# Copyright (C) 2020 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 Affero General Public License as published by the
|
||||
# Free Software Foundation, version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
|
||||
## Define default value for variable, take two arguments, $1 variable name,
|
||||
## $2 default variable value, if the variable is not already define define it
|
||||
## with default value.
|
||||
function define_default_value()
|
||||
{
|
||||
VAR_NAME="${1}"
|
||||
DEFAULT_VALUE="${2}"
|
||||
|
||||
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}"
|
||||
}
|
||||
|
||||
define_default_value QT_VERSION "5.12.4"
|
||||
define_default_value QT_ARCH "arm64_v8a"
|
||||
define_default_value QT_DIR "/opt/Qt-${QT_VERSION}/${QT_VERSION}/"
|
||||
define_default_value ANDROID_SERIAL "$(adb devices | head -n 2 | tail -n 1 | awk '{print $1}')"
|
||||
define_default_value RS_BUILD_DIR "${HOME}/Builds/RetroShare-Android_for_${QT_ARCH}_Clang_Qt_${QT_VERSION//./_}_android_${QT_ARCH}-Debug/"
|
||||
define_default_value RS_SOURCE_DIR "${HOME}/Development/rs-develop/"
|
||||
define_default_value DEBUG_SYSROOT "${HOME}/Builds/debug_sysroot/${ANDROID_SERIAL}/"
|
||||
define_default_value GDB_CONFIGS_FILE "${HOME}/Builds/gdb_configs_${QT_ARCH}"
|
||||
|
||||
scanDir()
|
||||
{
|
||||
find "$1" -type d -not -path '*/\.git/*' | tr '\n' ':' >> $GDB_CONFIGS_FILE
|
||||
}
|
||||
|
||||
putSeparator()
|
||||
{
|
||||
echo >> $GDB_CONFIGS_FILE
|
||||
echo >> $GDB_CONFIGS_FILE
|
||||
}
|
||||
|
||||
echo "set sysroot ${DEBUG_SYSROOT}" > $GDB_CONFIGS_FILE
|
||||
putSeparator
|
||||
|
||||
echo "set auto-solib-add on" >> $GDB_CONFIGS_FILE
|
||||
echo -n "set solib-search-path " >> $GDB_CONFIGS_FILE
|
||||
scanDir "${RS_BUILD_DIR}"
|
||||
scanDir "${DEBUG_SYSROOT}"
|
||||
scanDir "${QT_DIR}/android_${QT_ARCH}/lib/"
|
||||
scanDir "${QT_DIR}/android_${QT_ARCH}/plugins/"
|
||||
scanDir "${QT_DIR}/android_${QT_ARCH}/qml/"
|
||||
putSeparator
|
||||
|
||||
echo -n "directory " >> $GDB_CONFIGS_FILE
|
||||
scanDir ${RS_SOURCE_DIR}/jsonapi-generator/src
|
||||
scanDir ${RS_SOURCE_DIR}/libbitdht/src
|
||||
scanDir ${RS_SOURCE_DIR}/openpgpsdk/src
|
||||
scanDir ${RS_SOURCE_DIR}/libretroshare/src
|
||||
scanDir ${RS_SOURCE_DIR}/retroshare-service/src
|
||||
scanDir ${RS_SOURCE_DIR}/supportlibs/rapidjson/include/
|
||||
scanDir ${RS_SOURCE_DIR}/supportlibs/restbed/source/
|
||||
scanDir ${RS_SOURCE_DIR}/supportlibs/udp-discovery-cpp/
|
||||
scanDir ${RS_SOURCE_DIR}/supportlibs/restbed/dependency/asio/asio/include/
|
||||
scanDir ${RS_SOURCE_DIR}/supportlibs/restbed/dependency/catch/include/
|
||||
putSeparator
|
||||
|
||||
## see https://stackoverflow.com/questions/28972367/gdb-backtrace-without-stopping
|
||||
echo "catch signal SIGSEGV" >> $GDB_CONFIGS_FILE
|
||||
echo "commands
|
||||
bt
|
||||
continue
|
||||
end" >> $GDB_CONFIGS_FILE
|
||||
putSeparator
|
||||
|
||||
echo GDB_CONFIGS_FILE=$GDB_CONFIGS_FILE
|
549
build_scripts/Android/prepare-toolchain-clang.sh
Executable file
549
build_scripts/Android/prepare-toolchain-clang.sh
Executable file
@ -0,0 +1,549 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to prepare RetroShare Android package building toolchain
|
||||
#
|
||||
# Copyright (C) 2016-2020 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Affero General Public License as published by the
|
||||
# Free Software Foundation, version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#
|
||||
# SPDX-FileCopyrightText: Retroshare Team <contact@retroshare.cc>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
|
||||
## Define default value for variable, take two arguments, $1 variable name,
|
||||
## $2 default variable value, if the variable is not already define define it
|
||||
## with default value.
|
||||
function define_default_value()
|
||||
{
|
||||
VAR_NAME="${1}"
|
||||
DEFAULT_VALUE="${2}"
|
||||
|
||||
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}"
|
||||
}
|
||||
|
||||
## You are supposed to provide the following variables according to your system setup
|
||||
define_default_value ANDROID_NDK_PATH "/opt/android-ndk/"
|
||||
define_default_value ANDROID_NDK_ARCH "arm"
|
||||
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 BZIP2_SOURCE_VERSION "1.0.6"
|
||||
define_default_value BZIP2_SOURCE_SHA256 a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
|
||||
|
||||
define_default_value OPENSSL_SOURCE_VERSION "1.1.1c"
|
||||
define_default_value OPENSSL_SOURCE_SHA256 f6fb3079ad15076154eda9413fed42877d668e7069d9b87396d0804fdb3f4c90
|
||||
|
||||
define_default_value SQLITE_SOURCE_YEAR "2018"
|
||||
define_default_value SQLITE_SOURCE_VERSION "3250200"
|
||||
define_default_value SQLITE_SOURCE_SHA256 da9a1484423d524d3ac793af518cdf870c8255d209e369bd6a193e9f9d0e3181
|
||||
|
||||
define_default_value SQLCIPHER_SOURCE_VERSION "4.2.0"
|
||||
define_default_value SQLCIPHER_SOURCE_SHA256 105c1b813f848da038c03647a8bfc9d42fb46865e6aaf4edfd46ff3b18cdccfc
|
||||
|
||||
define_default_value LIBUPNP_SOURCE_VERSION "1.8.4"
|
||||
define_default_value LIBUPNP_SOURCE_SHA256 976c3e4555604cdd8391ed2f359c08c9dead3b6bf131c24ce78e64d6669af2ed
|
||||
|
||||
define_default_value INSTALL_QT_ANDROID "false"
|
||||
define_default_value QT_VERSION "5.12.0"
|
||||
define_default_value QT_ANDROID_INSTALLER_SHA256 a214084e2295c9a9f8727e8a0131c37255bf724bfc69e80f7012ba3abeb1f763
|
||||
|
||||
define_default_value RESTBED_SOURCE_VERSION f74f9329dac82e662c1d570b7cd72c192b729eb4
|
||||
|
||||
define_default_value UDP_DISCOVERY_CPP_SOURCE "https://github.com/truvorskameikin/udp-discovery-cpp.git"
|
||||
define_default_value UDP_DISCOVERY_CPP_VERSION "develop"
|
||||
|
||||
define_default_value XAPIAN_SOURCE_VERSION "1.4.7"
|
||||
define_default_value XAPIAN_SOURCE_SHA256 13f08a0b649c7afa804fa0e85678d693fd6069dd394c9b9e7d41973d74a3b5d3
|
||||
|
||||
define_default_value RAPIDJSON_SOURCE_VERSION "1.1.0"
|
||||
define_default_value RAPIDJSON_SOURCE_SHA256 bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e
|
||||
|
||||
define_default_value MINIUPNPC_SOURCE_VERSION "2.1.20190625"
|
||||
define_default_value MINIUPNPC_SOURCE_SHA256 8723f5d7fd7970de23635547700878cd29a5c2bb708b5e5475b2d1d2510317fb
|
||||
|
||||
|
||||
## $1 filename, $2 sha256 hash
|
||||
function check_sha256()
|
||||
{
|
||||
echo ${2} "${1}" | sha256sum -c &> /dev/null
|
||||
}
|
||||
|
||||
## $1 filename, $2 sha256 hash, $3 url
|
||||
function verified_download()
|
||||
{
|
||||
FILENAME="$1"
|
||||
SHA256="$2"
|
||||
URL="$3"
|
||||
|
||||
check_sha256 "${FILENAME}" "${SHA256}" ||
|
||||
{
|
||||
rm -rf "${FILENAME}"
|
||||
|
||||
wget -O "${FILENAME}" "$URL" ||
|
||||
{
|
||||
echo "Failed downloading ${FILENAME} from $URL"
|
||||
exit 1
|
||||
}
|
||||
|
||||
check_sha256 "${FILENAME}" "${SHA256}" ||
|
||||
{
|
||||
echo "SHA256 mismatch for ${FILENAME} from ${URL} expected sha256 ${SHA256} got $(sha256sum ${FILENAME} | awk '{print $1}')"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cArch=""
|
||||
eABI=""
|
||||
|
||||
case "${ANDROID_NDK_ARCH}" in
|
||||
"arm")
|
||||
cArch="${ANDROID_NDK_ARCH}"
|
||||
eABI="eabi"
|
||||
;;
|
||||
"arm64")
|
||||
cArch="aarch64"
|
||||
eABI=""
|
||||
;;
|
||||
"x86")
|
||||
cArch="i686"
|
||||
eABI=""
|
||||
;;
|
||||
esac
|
||||
|
||||
export SYSROOT="${NATIVE_LIBS_TOOLCHAIN_PATH}/sysroot/"
|
||||
export PREFIX="${SYSROOT}/usr/"
|
||||
export CC="${NATIVE_LIBS_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-clang"
|
||||
export CXX="${NATIVE_LIBS_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-clang++"
|
||||
export AR="${NATIVE_LIBS_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-ar"
|
||||
export RANLIB="${NATIVE_LIBS_TOOLCHAIN_PATH}/bin/${cArch}-linux-android${eABI}-ranlib"
|
||||
|
||||
|
||||
## More information available at https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html
|
||||
build_toolchain()
|
||||
{
|
||||
echo "build_toolchain()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
rm -rf ${NATIVE_LIBS_TOOLCHAIN_PATH}
|
||||
${ANDROID_NDK_PATH}/build/tools/make_standalone_toolchain.py --verbose \
|
||||
--arch ${ANDROID_NDK_ARCH} --install-dir ${NATIVE_LIBS_TOOLCHAIN_PATH} \
|
||||
--api ${ANDROID_PLATFORM_VER}
|
||||
find "${PREFIX}/include/" -not -type d > "${NATIVE_LIBS_TOOLCHAIN_PATH}/deletefiles"
|
||||
}
|
||||
|
||||
## This avoid <cmath> include errors due to -isystem and -I ordering issue
|
||||
delete_copied_includes()
|
||||
{
|
||||
echo "delete_copied_includes()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
cat "${NATIVE_LIBS_TOOLCHAIN_PATH}/deletefiles" | while read delFile ; do
|
||||
rm "$delFile"
|
||||
done
|
||||
}
|
||||
|
||||
## More information available at https://gitlab.com/relan/provisioners/merge_requests/1 and http://stackoverflow.com/a/34032216
|
||||
install_qt_android()
|
||||
{
|
||||
echo "install_qt_android()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
QT_VERSION_CODE=$(echo $QT_VERSION | tr -d .)
|
||||
QT_INSTALL_PATH=${NATIVE_LIBS_TOOLCHAIN_PATH}/Qt
|
||||
QT_INSTALLER="qt-unified-linux-x64-3.0.2-online.run"
|
||||
|
||||
verified_download $QT_INSTALLER $QT_ANDROID_INSTALLER_SHA256 \
|
||||
http://master.qt.io/archive/online_installers/3.0/${QT_INSTALLER}
|
||||
|
||||
chmod a+x ${QT_INSTALLER}
|
||||
|
||||
QT_INSTALLER_SCRIPT="qt_installer_script.js"
|
||||
cat << EOF > "${QT_INSTALLER_SCRIPT}"
|
||||
function Controller() {
|
||||
installer.autoRejectMessageBoxes();
|
||||
installer.installationFinished.connect(function() {
|
||||
gui.clickButton(buttons.NextButton);
|
||||
});
|
||||
|
||||
var welcomePage = gui.pageWidgetByObjectName("WelcomePage");
|
||||
welcomePage.completeChanged.connect(function() {
|
||||
if (gui.currentPageWidget().objectName == welcomePage.objectName)
|
||||
gui.clickButton(buttons.NextButton);
|
||||
});
|
||||
}
|
||||
|
||||
Controller.prototype.WelcomePageCallback = function() {
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.CredentialsPageCallback = function() {
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.IntroductionPageCallback = function() {
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.TargetDirectoryPageCallback = function() {
|
||||
gui.currentPageWidget().TargetDirectoryLineEdit.setText("$QT_INSTALL_PATH");
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.ComponentSelectionPageCallback = function() {
|
||||
var widget = gui.currentPageWidget();
|
||||
|
||||
// You can get these component names by running the installer with the
|
||||
// --verbose flag. It will then print out a resource tree.
|
||||
|
||||
widget.deselectComponent("qt.tools.qtcreator");
|
||||
widget.deselectComponent("qt.tools.doc");
|
||||
widget.deselectComponent("qt.tools.examples");
|
||||
|
||||
widget.selectComponent("qt.$QT_VERSION_CODE.android_armv7");
|
||||
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.LicenseAgreementPageCallback = function() {
|
||||
gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.StartMenuDirectoryPageCallback = function() {
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.ReadyForInstallationPageCallback = function() {
|
||||
gui.clickButton(buttons.NextButton);
|
||||
}
|
||||
|
||||
Controller.prototype.FinishedPageCallback = function() {
|
||||
var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm;
|
||||
if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox)
|
||||
checkBoxForm.launchQtCreatorCheckBox.checked = false;
|
||||
gui.clickButton(buttons.FinishButton);
|
||||
}
|
||||
EOF
|
||||
|
||||
QT_QPA_PLATFORM=minimal ./${QT_INSTALLER} --script ${QT_INSTALLER_SCRIPT}
|
||||
}
|
||||
|
||||
## More information available at retroshare://file?name=Android%20Native%20Development%20Kit%20Cookbook.pdf&size=29214468&hash=0123361c1b14366ce36118e82b90faf7c7b1b136
|
||||
build_bzlib()
|
||||
{
|
||||
echo "build_bzlib()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="bzip2-${BZIP2_SOURCE_VERSION}"
|
||||
rm -rf $B_dir
|
||||
|
||||
verified_download $B_dir.tar.gz $BZIP2_SOURCE_SHA256 \
|
||||
http://distfiles.gentoo.org/distfiles/bzip2-${BZIP2_SOURCE_VERSION}.tar.gz
|
||||
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
sed -i "/^CC=.*/d" Makefile
|
||||
sed -i "/^AR=.*/d" Makefile
|
||||
sed -i "/^RANLIB=.*/d" Makefile
|
||||
sed -i "/^LDFLAGS=.*/d" Makefile
|
||||
sed -i "s/^all: libbz2.a bzip2 bzip2recover test/all: libbz2.a bzip2 bzip2recover/" Makefile
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install PREFIX=${PREFIX}
|
||||
# sed -i "/^CC=.*/d" Makefile-libbz2_so
|
||||
# make -f Makefile-libbz2_so -j${HOST_NUM_CPU}
|
||||
# cp libbz2.so.1.0.6 ${SYSROOT}/usr/lib/libbz2.so
|
||||
cd ..
|
||||
}
|
||||
|
||||
## More information available at http://doc.qt.io/qt-5/opensslsupport.html
|
||||
build_openssl()
|
||||
{
|
||||
echo "build_openssl()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="openssl-${OPENSSL_SOURCE_VERSION}"
|
||||
rm -rf $B_dir
|
||||
|
||||
verified_download $B_dir.tar.gz $OPENSSL_SOURCE_SHA256 \
|
||||
https://www.openssl.org/source/$B_dir.tar.gz
|
||||
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
## We link openssl statically to avoid android silently sneaking in his own
|
||||
## version of libssl.so (we noticed this because it had some missing symbol
|
||||
## that made RS crash), the crash in some android version is only one of the
|
||||
## possible problems the fact that android insert his own binary libssl.so pose
|
||||
## non neglegible security concerns.
|
||||
oBits="32"
|
||||
[[ ${ANDROID_NDK_ARCH} =~ .*64.* ]] && oBits=64
|
||||
|
||||
ANDROID_NDK="${ANDROID_NDK_PATH}" PATH="${SYSROOT}/bin/:${PATH}" \
|
||||
./Configure linux-generic${oBits} -fPIC --prefix="${PREFIX}" \
|
||||
--openssldir="${SYSROOT}/etc/ssl"
|
||||
# sed -i 's/LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \\/LIBNAME=$$i \\/g' Makefile
|
||||
# sed -i '/LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \\/d' Makefile
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
rm -f ${PREFIX}/lib/libssl.so*
|
||||
rm -f ${PREFIX}/lib/libcrypto.so*
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_sqlite()
|
||||
{
|
||||
echo "build_sqlite()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="sqlite-autoconf-${SQLITE_SOURCE_VERSION}"
|
||||
rm -rf $B_dir
|
||||
|
||||
verified_download $B_dir.tar.gz $SQLITE_SOURCE_SHA256 \
|
||||
https://www.sqlite.org/${SQLITE_SOURCE_YEAR}/$B_dir.tar.gz
|
||||
|
||||
tar -xf $B_dir.tar.gz
|
||||
cd $B_dir
|
||||
./configure --with-pic --prefix="${PREFIX}" --host=${cArch}-linux
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
rm -f ${PREFIX}/lib/libsqlite3.so*
|
||||
# ${CC} -shared -o libsqlite3.so -fPIC sqlite3.o -ldl
|
||||
# cp libsqlite3.so "${SYSROOT}/usr/lib"
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_sqlcipher()
|
||||
{
|
||||
echo "build_sqlcipher()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="sqlcipher-${SQLCIPHER_SOURCE_VERSION}"
|
||||
rm -rf $B_dir
|
||||
|
||||
T_file="${B_dir}.tar.gz"
|
||||
|
||||
verified_download $T_file $SQLCIPHER_SOURCE_SHA256 \
|
||||
https://github.com/sqlcipher/sqlcipher/archive/v${SQLCIPHER_SOURCE_VERSION}.tar.gz
|
||||
|
||||
tar -xf $T_file
|
||||
cd $B_dir
|
||||
case "${ANDROID_NDK_ARCH}" in
|
||||
"arm64")
|
||||
# SQLCipher config.sub is outdated and doesn't recognize newer architectures
|
||||
rm config.sub
|
||||
autoreconf --verbose --install --force
|
||||
automake --add-missing --copy --force-missing
|
||||
;;
|
||||
esac
|
||||
./configure --with-pic --build=$(sh ./config.guess) \
|
||||
--host=${cArch}-linux \
|
||||
--prefix="${PREFIX}" --with-sysroot="${SYSROOT}" \
|
||||
--enable-tempstore=yes \
|
||||
--disable-tcl --disable-shared \
|
||||
CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="${PREFIX}/lib/libcrypto.a"
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_libupnp()
|
||||
{
|
||||
echo "build_libupnp()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="pupnp-release-${LIBUPNP_SOURCE_VERSION}"
|
||||
B_ext=".tar.gz"
|
||||
B_file="${B_dir}${B_ext}"
|
||||
rm -rf $B_dir
|
||||
|
||||
verified_download $B_file $LIBUPNP_SOURCE_SHA256 \
|
||||
https://github.com/mrjimenez/pupnp/archive/release-${LIBUPNP_SOURCE_VERSION}${B_ext}
|
||||
|
||||
tar -xf $B_file
|
||||
cd $B_dir
|
||||
./bootstrap
|
||||
## liupnp must be configured as static library because if not the linker will
|
||||
## look for libthreadutils.so.6 at runtime that cannot be packaged on android
|
||||
## as it supports only libname.so format for libraries, thus resulting in a
|
||||
## crash at startup.
|
||||
./configure --with-pic --enable-static --disable-shared --disable-samples \
|
||||
--disable-largefile \
|
||||
--prefix="${PREFIX}" --host=${cArch}-linux
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_rapidjson()
|
||||
{
|
||||
echo "build_rapidjson()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="rapidjson-${RAPIDJSON_SOURCE_VERSION}"
|
||||
D_file="${B_dir}.tar.gz"
|
||||
verified_download $D_file $RAPIDJSON_SOURCE_SHA256 \
|
||||
https://github.com/Tencent/rapidjson/archive/v${RAPIDJSON_SOURCE_VERSION}.tar.gz
|
||||
tar -xf $D_file
|
||||
cp -r "${B_dir}/include/rapidjson/" "${PREFIX}/include/rapidjson"
|
||||
}
|
||||
|
||||
build_restbed()
|
||||
{
|
||||
echo "build_restbed()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
[ -d restbed ] || git clone --depth=2000 https://github.com/Corvusoft/restbed.git
|
||||
cd restbed
|
||||
# git fetch --tags
|
||||
# git checkout tags/${RESTBED_SOURCE_VERSION}
|
||||
git checkout ${RESTBED_SOURCE_VERSION}
|
||||
git submodule update --init dependency/asio
|
||||
git submodule update --init dependency/catch
|
||||
git submodule update --init dependency/kashmir
|
||||
cd ..
|
||||
|
||||
rm -rf restbed-build; mkdir restbed-build ; cd restbed-build
|
||||
cmake \
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON BUILD_TESTS=OFF \
|
||||
-DBUILD_SSL=OFF -DCMAKE_INSTALL_PREFIX="${PREFIX}" -B. -H../restbed
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
cp "${PREFIX}/library/librestbed.a" "${PREFIX}/lib/"
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_udp-discovery-cpp()
|
||||
{
|
||||
echo "build_udp-discovery-cpp()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
S_dir="udp-discovery-cpp"
|
||||
[ -d $S_dir ] || git clone $UDP_DISCOVERY_CPP_SOURCE $S_dir
|
||||
cd $S_dir
|
||||
git checkout $UDP_DISCOVERY_CPP_VERSION
|
||||
cd ..
|
||||
|
||||
B_dir="udp-discovery-cpp-build"
|
||||
rm -rf ${B_dir}; mkdir ${B_dir}; cd ${B_dir}
|
||||
cmake \
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="${PREFIX}" -B. -H../udp-discovery-cpp
|
||||
make -j${HOST_NUM_CPU}
|
||||
cp libudp-discovery.a "${PREFIX}/lib/"
|
||||
cp ../$S_dir/*.hpp "${PREFIX}/include/"
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_xapian()
|
||||
{
|
||||
echo "build_xapian()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
|
||||
B_dir="xapian-core-${XAPIAN_SOURCE_VERSION}"
|
||||
D_file="$B_dir.tar.xz"
|
||||
verified_download $D_file $XAPIAN_SOURCE_SHA256 \
|
||||
https://oligarchy.co.uk/xapian/${XAPIAN_SOURCE_VERSION}/$D_file
|
||||
rm -rf $B_dir
|
||||
tar -xf $D_file
|
||||
cd $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"
|
||||
./configure ${B_endiannes_detection_failure_workaround} ${B_large_file} \
|
||||
--with-pic \
|
||||
--disable-backend-inmemory --disable-backend-remote \
|
||||
--disable--backend-chert --enable-backend-glass \
|
||||
--host=${cArch}-linux --enable-static --disable-shared \
|
||||
--prefix="${PREFIX}" --with-sysroot="${SYSROOT}"
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
}
|
||||
|
||||
build_miniupnpc()
|
||||
{
|
||||
echo "build_miniupnpc()
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
"
|
||||
S_dir="miniupnpc-${MINIUPNPC_SOURCE_VERSION}"
|
||||
B_dir="miniupnpc-${MINIUPNPC_SOURCE_VERSION}-build"
|
||||
D_file="$S_dir.tar.gz"
|
||||
verified_download $D_file $MINIUPNPC_SOURCE_SHA256 \
|
||||
http://miniupnp.free.fr/files/${D_file}
|
||||
rm -rf $S_dir $B_dir
|
||||
tar -xf $D_file
|
||||
mkdir $B_dir
|
||||
cd $B_dir
|
||||
cmake \
|
||||
-DUPNPC_BUILD_STATIC=TRUE \
|
||||
-DUPNPC_BUILD_SHARED=FALSE \
|
||||
-DUPNPC_BUILD_TESTS=FALSE \
|
||||
-DUPNPC_BUILD_SAMPLE=FALSE \
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="${PREFIX}" -B. -S../$S_dir
|
||||
make -j${HOST_NUM_CPU}
|
||||
make install
|
||||
}
|
||||
|
||||
build_toolchain
|
||||
[ "${INSTALL_QT_ANDROID}X" != "trueX" ] || install_qt_android
|
||||
build_bzlib
|
||||
build_openssl
|
||||
build_sqlite
|
||||
build_sqlcipher
|
||||
build_libupnp
|
||||
build_rapidjson
|
||||
build_restbed
|
||||
build_udp-discovery-cpp
|
||||
build_xapian
|
||||
build_miniupnpc
|
||||
delete_copied_includes
|
||||
|
||||
echo NATIVE_LIBS_TOOLCHAIN_PATH=${NATIVE_LIBS_TOOLCHAIN_PATH}
|
90
build_scripts/Android/pull_sysroot.sh
Executable file
90
build_scripts/Android/pull_sysroot.sh
Executable file
@ -0,0 +1,90 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to pull debugging sysroot from Android devices
|
||||
#
|
||||
# Copyright (C) 2020 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
# Copyright (C) 2020 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 Affero General Public License as published by the
|
||||
# Free Software Foundation, version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
<<"ASCIIDOC"
|
||||
|
||||
Pull files from Android device to prepare a debugging sysroot
|
||||
Inspired by:
|
||||
https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html
|
||||
|
||||
The goal is to have a local copy of the sysroot of the connected device.
|
||||
For that we use the command `adb pull <remote_dir_or_file> <local_dir_or_file>`
|
||||
|
||||
We will get a copy of:
|
||||
|
||||
- `/system/lib/`
|
||||
- `/vendor/lib/`
|
||||
- `libc.so`
|
||||
- `libcutils.so`
|
||||
|
||||
As well as the binaries `linker` and `app_process`
|
||||
|
||||
IMPORTANT:
|
||||
from one device to another, the remote file `app_process` can be a binary file
|
||||
or a symlink to a binary file - which is NOT ok for us.
|
||||
That's so we will try to pull every known possible variants of `app_process`,
|
||||
e.g. `app_process32` or `app_process_init`
|
||||
|
||||
ASCIIDOC
|
||||
|
||||
|
||||
## Define default value for variable, take two arguments, $1 variable name,
|
||||
## $2 default variable value, if the variable is not already define define it
|
||||
## with default value.
|
||||
function define_default_value()
|
||||
{
|
||||
VAR_NAME="${1}"
|
||||
DEFAULT_VALUE="${2}"
|
||||
|
||||
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}"
|
||||
}
|
||||
|
||||
define_default_value ANDROID_SERIAL "$(adb devices | head -n 2 | tail -n 1 | awk '{print $1}')"
|
||||
define_default_value DEBUG_SYSROOT "${HOME}/Builds/debug_sysroot/${ANDROID_SERIAL}/"
|
||||
|
||||
rm -rf "${DEBUG_SYSROOT}"
|
||||
|
||||
for mDir in "/system/lib/" "/vendor/lib/"; do
|
||||
mkdir -p "${DEBUG_SYSROOT}/${mDir}"
|
||||
# adb pull doesn't behave like rsync dirA/ dirB/ so avoid nesting the
|
||||
# directory by deleting last one before copying
|
||||
rmdir "${DEBUG_SYSROOT}/${mDir}"
|
||||
adb pull "${mDir}" "${DEBUG_SYSROOT}/${mDir}"
|
||||
done
|
||||
|
||||
# Retrieve the specific binaries - some of these adb commands will fail, since
|
||||
# some files may not exist, but that's ok.
|
||||
|
||||
mkdir -p "${DEBUG_SYSROOT}/system/bin/"
|
||||
for mBin in "/system/bin/linker" "/system/bin/app_process" \
|
||||
"/system/bin/app_process_init" "/system/bin/app_process32" \
|
||||
"/system/bin/app_process64" ; do
|
||||
adb pull "${mBin}" "${DEBUG_SYSROOT}/${mBin}"
|
||||
done
|
||||
|
||||
# Verify which variants of the specific binaries could be pulled
|
||||
echo
|
||||
echo "Found the following specific binaries:"
|
||||
echo
|
||||
ls -1 "${DEBUG_SYSROOT}/system/bin/"*
|
||||
ls -1 "${DEBUG_SYSROOT}/system/lib/libc.so"*
|
||||
ls -1 "${DEBUG_SYSROOT}/system/lib/libcutils.so"*
|
||||
echo
|
||||
|
||||
echo DEBUG_SYSROOT="${DEBUG_SYSROOT}"
|
116
build_scripts/Android/start_gdbserver.sh
Executable file
116
build_scripts/Android/start_gdbserver.sh
Executable file
@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to start gdbserver on Android device and attach to retroshare-service
|
||||
#
|
||||
# Copyright (C) 2020 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||
# Copyright (C) 2020 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 Affero General Public License as published by the
|
||||
# Free Software Foundation, version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
<<"ASCIIDOC"
|
||||
|
||||
Start gdbserver on Android device and attach it to the retroshare service
|
||||
process
|
||||
|
||||
Inspired by:
|
||||
https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html
|
||||
|
||||
ASCIIDOC
|
||||
|
||||
|
||||
## Define default value for variable, take two arguments, $1 variable name,
|
||||
## $2 default variable value, if the variable is not already define define it
|
||||
## with default value.
|
||||
function define_default_value()
|
||||
{
|
||||
VAR_NAME="${1}"
|
||||
DEFAULT_VALUE="${2}"
|
||||
|
||||
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}"
|
||||
}
|
||||
|
||||
define_default_value ANDROID_APK_PACKAGE "org.retroshare.service"
|
||||
define_default_value ANDROID_PROCESS_NAME "org.retroshare.service:rs"
|
||||
define_default_value ANDROID_INSTALL_PATH ""
|
||||
define_default_value LIB_GDB_SERVER_PATH ""
|
||||
define_default_value ANDROID_SERIAL "$(adb devices | head -n 2 | tail -n 1 | awk '{print $1}')"
|
||||
define_default_value GDB_SERVER_PORT 5039
|
||||
|
||||
adb_ushell()
|
||||
{
|
||||
adb shell run-as ${ANDROID_APK_PACKAGE} $@
|
||||
}
|
||||
|
||||
[ -z "${ANDROID_INSTALL_PATH}" ] &&
|
||||
{
|
||||
ANDROID_INSTALL_PATH="$(adb_ushell pm path "${ANDROID_APK_PACKAGE}")"
|
||||
ANDROID_INSTALL_PATH="$(dirname ${ANDROID_INSTALL_PATH#"package:"})"
|
||||
[ -z "${ANDROID_INSTALL_PATH}" ] &&
|
||||
cat <<EOF
|
||||
Cannot find install path for ${ANDROID_APK_PACKAGE} make sure it is installed,
|
||||
or manually specify ANDROID_INSTALL_PATH
|
||||
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
## If not passed as environement variable try to determine gdbserver path
|
||||
## shipped withing APK
|
||||
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
|
||||
{
|
||||
|
||||
for mUsualPath in \
|
||||
"${ANDROID_INSTALL_PATH}/lib/libgdbserver.so" \
|
||||
"${ANDROID_INSTALL_PATH}/lib/arm64/libgdbserver.so"
|
||||
do
|
||||
adb_ushell ls "${mUsualPath}" &&
|
||||
export LIB_GDB_SERVER_PATH="${mUsualPath}" && break
|
||||
done
|
||||
}
|
||||
|
||||
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
|
||||
{
|
||||
cat <<EOF
|
||||
libgdbserver.so not found in any of the usual path attempting to look for it
|
||||
with find, it will take a little more time. Take note of the discovered path and
|
||||
define LIB_GDB_SERVER_PATH on your commandline at next run to avoid waiting
|
||||
again.
|
||||
|
||||
|
||||
EOF
|
||||
tFile="$(mktemp)"
|
||||
adb_ushell find ${ANDROID_INSTALL_PATH} -type f -name 'libgdbserver.so' | \
|
||||
tee "${tFile}"
|
||||
|
||||
LIB_GDB_SERVER_PATH="$(head -n 1 "${tFile}")"
|
||||
rm "${tFile}"
|
||||
}
|
||||
|
||||
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
|
||||
{
|
||||
echo "Cannot find libgdbserver.so, are you sure your package ships it?"
|
||||
exit -1
|
||||
}
|
||||
|
||||
mPid="$(adb_ushell ps | grep ${ANDROID_PROCESS_NAME} | awk '{print $2}')"
|
||||
[ -z "${mPid}" ] &&
|
||||
{
|
||||
echo "Failed ${ANDROID_PROCESS_NAME} PID retrival are you sure it is running?"
|
||||
exit -2
|
||||
}
|
||||
|
||||
|
||||
## Establish port forwarding so we can connect to gdbserver with gdb
|
||||
adb forward tcp:${GDB_SERVER_PORT} tcp:${GDB_SERVER_PORT}
|
||||
|
||||
((adb_ushell ${LIB_GDB_SERVER_PATH} 127.0.0.1:${GDB_SERVER_PORT} --attach ${mPid})&)
|
10
build_scripts/AppImage/README.txt
Normal file
10
build_scripts/AppImage/README.txt
Normal file
@ -0,0 +1,10 @@
|
||||
In order to generate the appImage, just run makeAppImage.sh
|
||||
|
||||
This app image recipe has been obtained from
|
||||
|
||||
https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages
|
||||
|
||||
... using method 1.
|
||||
|
||||
The script Recipe is https://raw.githubusercontent.com/probonopd/AppImages/master/recipes/meta/Recipe from https://github.com/probonopd/AppImages/blob/master/recipes/meta/RetroShare.yml which as been adapted to the newest naming conventions
|
||||
|
418
build_scripts/AppImage/Recipe
Executable file
418
build_scripts/AppImage/Recipe
Executable file
@ -0,0 +1,418 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
usage() {
|
||||
echo "usage:"
|
||||
echo " $0 [--no-di] META-NAME|YAMLFILE"
|
||||
echo ""
|
||||
echo "options:"
|
||||
echo " --no-di disable desktop integration"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ] || [ "x${!#}" = "x--no-di" ] ; then
|
||||
usage
|
||||
fi
|
||||
if [ $# -eq 2 ] && [ "x$1" != "x--no-di" ] ; then
|
||||
usage
|
||||
fi
|
||||
|
||||
if [ "x$1" = "x--no-di" ] ; then
|
||||
ENABLE_DI="no"
|
||||
else
|
||||
ENABLE_DI="yes"
|
||||
fi
|
||||
|
||||
# Halt on errors
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# Check dependencies
|
||||
which wget >/dev/null 2>&1 || ( echo wget missing && exit 1 )
|
||||
which grep >/dev/null 2>&1 || ( echo grep missing && exit 1 )
|
||||
which sed >/dev/null 2>&1 || ( echo sed missing && exit 1 )
|
||||
which cut >/dev/null 2>&1 || ( echo cut missing && exit 1 )
|
||||
|
||||
# If the yaml file doesn't exist locally, get it from GitHub
|
||||
if [ ! -f "${!#}" ] ; then
|
||||
YAMLFILE=/tmp/_recipe.yml
|
||||
rm -f "$YAMLFILE"
|
||||
wget -q "https://github.com/probonopd/AppImages/raw/master/recipes/meta/${!#}.yml" -O "$YAMLFILE"
|
||||
else
|
||||
YAMLFILE=$(readlink -f "${!#}")
|
||||
fi
|
||||
|
||||
# Lightweight bash-only dpkg-scanpackages replacement
|
||||
scanpackages() {
|
||||
for deb in *.deb ; do
|
||||
dpkg -I $deb | sed 's/^ *//g' | grep -i -E '(package|version|installed-size|architecture|depends|priority):'
|
||||
echo "Filename: $(readlink -f $deb)"
|
||||
echo "MD5sum: $(md5sum -b $deb | cut -d' ' -f1)"
|
||||
echo "SHA1: $(sha1sum -b $deb | cut -d' ' -f1)"
|
||||
echo "SHA256: $(sha256sum -b $deb | cut -d' ' -f1)"
|
||||
echo
|
||||
done
|
||||
}
|
||||
|
||||
# Function to parse yaml
|
||||
# https://gist.github.com/epiloque/8cf512c6d64641bde388
|
||||
# based on https://gist.github.com/pkuczynski/8665367
|
||||
parse_yaml() {
|
||||
local prefix=$2
|
||||
local s
|
||||
local w
|
||||
local fs
|
||||
s='[[:space:]]*'
|
||||
w='[a-zA-Z0-9_]*'
|
||||
fs="$(echo @|tr @ '\034')"
|
||||
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
|
||||
-e "s|^\($s\)\($w\)$s[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" "$1" |
|
||||
awk -F"$fs" '{
|
||||
indent = length($1)/2;
|
||||
vname[indent] = $2;
|
||||
for (i in vname) {if (i > indent) {delete vname[i]}}
|
||||
if (length($3) > 0) {
|
||||
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
|
||||
printf("%s%s%s=(\"%s\")\n", "'"$prefix"'",vn, $2, $3);
|
||||
}
|
||||
}' | sed 's/_=/+=/g'
|
||||
}
|
||||
|
||||
# Read yaml file
|
||||
parse_yaml $YAMLFILE "_"
|
||||
eval $(parse_yaml $YAMLFILE "_")
|
||||
|
||||
# Execute multiple script lines together as one
|
||||
# shell_execute filename key_of_group_of_commands
|
||||
shell_execute() {
|
||||
if [ -f /tmp/recipe_script ] ; then
|
||||
rm /tmp/recipe_script
|
||||
fi
|
||||
parse_yaml $YAMLFILE "_" | grep "^$2+=" > /tmp/recipe_script
|
||||
sed -i -e 's|^'$2'+=("||g' /tmp/recipe_script
|
||||
sed -i -e 's|")$||g' /tmp/recipe_script
|
||||
bash -ex /tmp/recipe_script
|
||||
rm /tmp/recipe_script
|
||||
}
|
||||
|
||||
APP=$_app
|
||||
LOWERAPP=${APP,,}
|
||||
if [ ! -z $_lowerapp ] ; then
|
||||
LOWERAPP=$_lowerapp
|
||||
fi
|
||||
|
||||
mkdir -p ./$APP/$APP.AppDir/usr/lib
|
||||
cd ./$APP/
|
||||
|
||||
if [ -d "./$APP.AppDir/" ] ; then
|
||||
rm -rf ./$APP.AppDir/
|
||||
fi
|
||||
|
||||
# Source a user-provided functions.sh if the environment
|
||||
# variable FUNCTIONS_SH was set and the file exists
|
||||
if [ -z "$FUNCTIONS_SH" ] ; then
|
||||
if [ ! -e functions.sh ] ; then
|
||||
wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh
|
||||
fi
|
||||
. ./functions.sh
|
||||
else
|
||||
if [ -e "$FUNCTIONS_SH" ] ; then
|
||||
. "$FUNCTIONS_SH"
|
||||
fi
|
||||
fi
|
||||
|
||||
# If there is an ARCH environment variable, then use that
|
||||
# architecture to for apt-get. Not that for the AppImage to be
|
||||
# operable, we also need to embed a matching AppImage runtime
|
||||
# and ingredients of that architecture. Debian packages
|
||||
# should be available for most architectures, e.g., oldstable
|
||||
# has "armhf"
|
||||
if [ ! -z $ARCH] ; then
|
||||
OPTIONS="$OPTIONS -o APT::Architecture=$ARCH"
|
||||
fi
|
||||
|
||||
if [ ! -z "${_ingredients_ghreleases[0]}" ] ; then
|
||||
for GHREPO in "${_ingredients_ghreleases[@]}" ; do
|
||||
wget -q "https://github.com/${GHREPO}/releases/" -O /tmp/gh-release.html
|
||||
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep x86_64 | head -n 1 | cut -d '"' -f 2)
|
||||
if [ -z "$DEB" ] ; then
|
||||
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep amd64 | head -n 1 | cut -d '"' -f 2)
|
||||
fi
|
||||
if [ -z "$DEB" ] ; then
|
||||
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep x64 | head -n 1 | cut -d '"' -f 2)
|
||||
fi
|
||||
if [ -z "$DEB" ] ; then
|
||||
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep linux64 | head -n 1 | cut -d '"' -f 2)
|
||||
fi
|
||||
rm /tmp/gh-release.html
|
||||
wget -c "https://github.com/${DEB}"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ ! -z "${_ingredients_dist}" ] ; then
|
||||
rm status 2>/dev/null || true
|
||||
generate_status
|
||||
|
||||
# Some packages depend on packages which we do not want to bundle,
|
||||
# in addition to the global excludes defined in excludedeblist.
|
||||
# Use
|
||||
# ingredients:
|
||||
# exclude:
|
||||
# - packagename
|
||||
if [ ! -z "${_ingredients_exclude[0]}" ] ; then
|
||||
for PACKAGE in "${_ingredients_exclude[@]}" ; do
|
||||
printf "Package: $PACKAGE\nStatus: install ok installed\nArchitecture: all\nVersion: 9:999.999.999\n\n" >> status
|
||||
done
|
||||
fi
|
||||
|
||||
# Some packages depend on an exact version of a dependency to be installed.
|
||||
# Use
|
||||
# ingredients:
|
||||
# pretend:
|
||||
# - packagename version_to_be_pretended
|
||||
if [ ! -z "${_ingredients_pretend[0]}" ] ; then
|
||||
for PRETEND in "${_ingredients_pretend[@]}" ; do
|
||||
P_PKG=$(echo "$PRETEND" | cut -d " " -f 1)
|
||||
P_VER=$(echo "$PRETEND" | cut -d " " -f 2)
|
||||
cat status | tr '\n' '@' | sed -e 's|@@|\n\n|g' | sed -e 's|Package: '"$P_PKG"'@Status: install ok installed@Architecture: all@Version: 9:999.999.999|Package: '"$P_PKG"'@Status: install ok installed@Architecture: all@Version: '"$P_VER"'|g' | sed -e 's|@|\n|g' > status.temp
|
||||
mv status.temp status
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -e sources.list ] ; then
|
||||
rm sources.list
|
||||
fi
|
||||
for SOURCE in "${_ingredients_sources[@]}" ; do
|
||||
echo "${SOURCE}" >> sources.list
|
||||
done
|
||||
for PPA in "${_ingredients_ppas[@]}" ; do
|
||||
echo "deb http://ppa.launchpad.net/${PPA}/ubuntu ${_ingredients_dist} main" >> sources.list
|
||||
done
|
||||
# Use libcurl-slim to reduce AppImage size, thanks darealshinji
|
||||
# Not really compiled on xenial but CentOS 6, https://github.com/AppImage/AppImages/issues/187
|
||||
echo "deb http://ppa.launchpad.net/djcj/libcurl-slim/ubuntu xenial main" >> sources.list
|
||||
fi
|
||||
|
||||
if [ ! -z "${_ingredients_script[0]}" ] ; then
|
||||
# Execute extra steps defined in recipe
|
||||
shell_execute $YAMLFILE _ingredients_script
|
||||
fi
|
||||
|
||||
if [ ! -z "${_ingredients_dist}" ] ; then
|
||||
# Some projects provide raw .deb files without a repository
|
||||
# hence we create our own local repository as part of
|
||||
# the AppImage creation process in order to "install"
|
||||
# the package using apt-get as normal
|
||||
if [ ! -z "${_ingredients_debs[0]}" ] ; then
|
||||
for DEB in "${_ingredients_debs[@]}" ; do
|
||||
if [ ! -f $(basename "$DEB") ] ; then
|
||||
wget -c $DEB
|
||||
fi
|
||||
done
|
||||
fi
|
||||
scanpackages | gzip -9c > Packages.gz
|
||||
echo "deb file:$(readlink -e $PWD) ./" >> sources.list
|
||||
|
||||
INSTALL=$LOWERAPP
|
||||
if [ ! -z "${_ingredients_package}" ] ; then
|
||||
INSTALL="${_ingredients_package}"
|
||||
fi
|
||||
if [ ! -z "${_ingredients_packages}" ] ; then
|
||||
INSTALL=""
|
||||
fi
|
||||
|
||||
# If packages are specifically listed, only install these, not a package with the name of the app
|
||||
if [ ! -z "${_ingredients_packages[0]}" ] ; then
|
||||
INSTALL=${_ingredients_packages[@]}
|
||||
fi
|
||||
|
||||
apt-get $OPTIONS update || true
|
||||
URLS=$(apt-get $OPTIONS -y install --print-uris $INSTALL | cut -d "'" -f 2 | grep -e "^http")
|
||||
if which aria2c &>/dev/null; then
|
||||
dltool=aria2c
|
||||
else
|
||||
dltool=wget
|
||||
fi
|
||||
|
||||
$dltool -c -i- <<<"$URLS"
|
||||
fi
|
||||
|
||||
mkdir -p ./$APP.AppDir/
|
||||
cd ./$APP.AppDir/
|
||||
|
||||
mkdir -p usr/bin usr/lib
|
||||
find ../*.deb -exec dpkg -x {} . \; || true
|
||||
|
||||
# Try to copy icons to standard locations where appimaged can pick them up
|
||||
mkdir -p usr/share/icons/hicolor/{22x22,24x24,32x32,48x48,64x64,128x128,256x256,512x512}/apps/
|
||||
find . -path *icons* -path *22* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/22x22/apps/ \; || true
|
||||
find . -path *icons* -path *24* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/24x24/apps/ \; || true
|
||||
find . -path *icons* -path *32* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/32x32/apps/ \; || true
|
||||
find . -path *icons* -path *48* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/48x48/apps/ \; || true
|
||||
find . -path *icons* -path *64* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/64x64/apps/ \; || true
|
||||
find . -path *icons* -path *128* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/128x128/apps/ \; || true
|
||||
find . -path *icons* -path *256* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/256x256/apps/ \; || true
|
||||
find . -path *icons* -path *512* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/512x512/apps/ \; || true
|
||||
|
||||
get_icon
|
||||
|
||||
if [ -z "${_union}" ] ; then
|
||||
get_apprun
|
||||
else
|
||||
cat > AppRun <<\EOF
|
||||
#!/bin/sh
|
||||
HERE="$(dirname "$(readlink -f "${0}")")"
|
||||
export UNION_PRELOAD="${HERE}"
|
||||
export LD_PRELOAD="${HERE}/libunionpreload.so"
|
||||
export PATH="${HERE}"/usr/bin/:"${HERE}"/usr/sbin/:"${HERE}"/usr/games/:"${HERE}"/bin/:"${HERE}"/sbin/:"${PATH}"
|
||||
export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib/i386-linux-gnu/:"${HERE}"/usr/lib/x86_64-linux-gnu/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
|
||||
export PYTHONPATH="${HERE}"/usr/share/pyshared/:"${PYTHONPATH}"
|
||||
export PYTHONHOME="${HERE}"/usr/
|
||||
export XDG_DATA_DIRS="${HERE}"/usr/share/:"${XDG_DATA_DIRS}"
|
||||
export PERLLIB="${HERE}"/usr/share/perl5/:"${HERE}"/usr/lib/perl5/:"${PERLLIB}"
|
||||
export GSETTINGS_SCHEMA_DIR="${HERE}"/usr/share/glib-2.0/schemas/:"${GSETTINGS_SCHEMA_DIR}"
|
||||
export QT_PLUGIN_PATH="${HERE}"/usr/lib/qt4/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib32/qt4/plugins/:"${HERE}"/usr/lib64/qt4/plugins/:"${HERE}"/usr/lib/qt5/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib32/qt5/plugins/:"${HERE}"/usr/lib64/qt5/plugins/:"${QT_PLUGIN_PATH}"
|
||||
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2- | sed -e 's|%.||g')
|
||||
exec ${EXEC} $@
|
||||
EOF
|
||||
chmod a+x AppRun
|
||||
fi
|
||||
|
||||
get_desktop
|
||||
|
||||
# Prevent Qt from loading plugins from the system
|
||||
unset QTPATH
|
||||
QTPATH=$(find usr/lib -type d -name qt4 -or -name qt5 | sed -e 's|usr/|../|g')
|
||||
if [ ! -z $QTPATH ] ; then
|
||||
cat > usr/bin/qt.conf <<EOF
|
||||
[Paths]
|
||||
Prefix = $QTPATH
|
||||
EOF
|
||||
fi
|
||||
|
||||
# http://www.mono-project.com/docs/advanced/assemblies-and-the-gac/
|
||||
# At runtime, Mono looks in three places for assemblies necessary
|
||||
# to run a program. It first searches the location of the executing assembly.
|
||||
# For this to work without setting $MONO_PATH, we need to move the
|
||||
# main *.exe to usr/lib/mono/exe, because we move all "assemblies" (sic)
|
||||
# there in this script
|
||||
|
||||
if [ -e usr/lib/mono ] ; then
|
||||
# Force all so files referenced in config files into LD_LIBRARY_PATH
|
||||
find . -name "*.dll.config" -exec cat {} > temp \;
|
||||
# Remove all absolute paths
|
||||
sed -i -E 's|target=\"\/(.*\/)([a-z0-9].*?)>|target=\"\2>|g' temp
|
||||
SONAMES=$(cat temp | cut -d '"' -f 4 | grep ".so")
|
||||
for SONAME in $SONAMES; do
|
||||
find . -name "$SONAME" -exec mv {} usr/lib \;
|
||||
done
|
||||
rm temp
|
||||
PATH_OF_THE_EXE="usr/lib/mono/exe"
|
||||
mkdir -p "PATH_OF_THE_EXE"
|
||||
# Force all dll files into PATH_OF_THE_EXE (or MONO_PATH which we would have to set)
|
||||
find . -name "*.dll" -and -not -name "mscorlib.dll" -exec mv {} "$PATH_OF_THE_EXE" \;
|
||||
# Edit all config files in place to remove absolute paths
|
||||
find . -name "*.dll.config" -exec sed -i -E 's|target=\"\/(.*\/)([a-z0-9].*?)>|target=\"\2>|g' {} \;
|
||||
# Force all config files into the PATH_OF_THE_EXE (or MONO_PATH which we would have to set)
|
||||
find . -name "*.dll.config" -exec mv {} "$PATH_OF_THE_EXE" \;
|
||||
# Remove gac, we are not using it since it is convoluted
|
||||
rm -rf usr/lib/mono/gac/
|
||||
fi
|
||||
|
||||
if [ -d "./usr/lib/x86_64-linux-gnu/gstreamer-1.0/" ] ; then
|
||||
mv ./usr/lib/x86_64-linux-gnu/gstreamer-1.0/* ./usr/lib/x86_64-linux-gnu/
|
||||
rm -r ./usr/lib/x86_64-linux-gnu/gstreamer-1.0
|
||||
fi
|
||||
|
||||
if [ -d "./usr/lib/x86_64-linux-gnu/pulseaudio/" ] ; then
|
||||
mv ./usr/lib/x86_64-linux-gnu/pulseaudio/* ./usr/lib/x86_64-linux-gnu/
|
||||
rm -r ./usr/lib/x86_64-linux-gnu/pulseaudio
|
||||
fi
|
||||
|
||||
# Execute extra steps defined in recipe
|
||||
if [ ! -z "${_script}" ] ; then
|
||||
shell_execute $YAMLFILE _script
|
||||
fi
|
||||
|
||||
DESKTOP=$(find . -name '*.desktop' | sort | head -n 1)
|
||||
|
||||
# desktop-file-validate complains about missing trailing semicolons for some
|
||||
# keys although the format definition says that they are optional
|
||||
fix_desktop "$DESKTOP"
|
||||
|
||||
# Some non-distribution provided applications have an absolute
|
||||
# path in the Exec= line which we remove for relocateability
|
||||
if [ -z "$DESKTOP" ] ; then
|
||||
echo "desktop file not found, aborting"
|
||||
exit 1
|
||||
else
|
||||
desktop-file-validate "$DESKTOP" || exit 1
|
||||
ORIG=$(grep -o "^Exec=.*$" "${DESKTOP}" | head -n 1| cut -d " " -f 1)
|
||||
REPL=$(basename $(grep -o "^Exec=.*$" "${DESKTOP}" | head -n 1 | cut -d " " -f 1 | sed -e 's|Exec=||g'))
|
||||
sed -i -e 's|'"${ORIG}"'|Exec='"${REPL}"'|g' "${DESKTOP}"
|
||||
fi
|
||||
|
||||
# Compile GLib schemas if the subdirectory is present in the AppImage
|
||||
# AppRun has to export GSETTINGS_SCHEMA_DIR for this to work
|
||||
if [ -d usr/share/glib-2.0/schemas/ ] ; then
|
||||
( cd usr/share/glib-2.0/schemas/ ; glib-compile-schemas . )
|
||||
fi
|
||||
|
||||
if [ -f ../VERSION ] ; then
|
||||
VERSION=$(cat ../VERSION)
|
||||
else
|
||||
get_version || true
|
||||
fi
|
||||
|
||||
# patch_usr
|
||||
# Patching only the executable files seems not to be enough for some apps
|
||||
if [ ! -z "${_binpatch}" ] ; then
|
||||
find usr/ -type f -exec sed -i -e 's|/usr|././|g' {} \;
|
||||
find usr/ -type f -exec sed -i -e 's@././/bin/env@/usr/bin/env@g' {} \;
|
||||
fi
|
||||
|
||||
# Don't suffer from NIH; use LD_PRELOAD to override calls to /usr paths
|
||||
if [ ! -z "${_union}" ] ; then
|
||||
mkdir -p usr/src/
|
||||
wget -q "https://raw.githubusercontent.com/mikix/deb2snap/master/src/preload.c" -O - | \
|
||||
sed -e 's|SNAPPY|UNION|g' | sed -e 's|SNAPP|UNION|g' | sed -e 's|SNAP|UNION|g' | \
|
||||
sed -e 's|snappy|union|g' > usr/src/libunionpreload.c
|
||||
gcc -shared -fPIC usr/src/libunionpreload.c -o libunionpreload.so -ldl -DUNION_LIBNAME=\"libunionpreload.so\"
|
||||
strip libunionpreload.so
|
||||
fi
|
||||
|
||||
delete_blacklisted
|
||||
|
||||
if [ "$ENABLE_DI" = "yes" ] ; then
|
||||
get_desktopintegration $LOWERAPP
|
||||
fi
|
||||
|
||||
# Fix desktop files that have file endings for icons
|
||||
sed -i -e 's|\.png||g' *.desktop || true
|
||||
sed -i -e 's|\.svg||g' *.desktop || true
|
||||
sed -i -e 's|\.svgz||g' *.desktop || true
|
||||
sed -i -e 's|\.xpm||g' *.desktop || true
|
||||
|
||||
# Setting PYTHONHOME instead
|
||||
# Fix Python imports,
|
||||
# https://github.com/probonopd/AppImages/issues/172
|
||||
# SITECUSTOMIZEFILES=$(find . -name "sitecustomize.py")
|
||||
# for SITECUSTOMIZEFILE in $SITECUSTOMIZEFILES ; do
|
||||
# rm $SITECUSTOMIZEFILE # Remove symlinks, replace by files
|
||||
# cat > $SITECUSTOMIZEFILE <<\EOF
|
||||
# import sys,os
|
||||
# if sys.version_info[0] < 3:
|
||||
# prefix = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(sys.path[0]))))
|
||||
# sys.path = [ prefix+s for s in sys.path if not s.startswith(prefix) ]
|
||||
# EOF
|
||||
# done
|
||||
|
||||
# Execute extra steps defined in recipe
|
||||
if [ ! -z "${_post}" ] ; then
|
||||
shell_execute $YAMLFILE _post
|
||||
fi
|
||||
|
||||
# Go out of AppImage
|
||||
cd ..
|
||||
|
||||
generate_type2_appimage
|
||||
ls -lh ../out/*.AppImage
|
6
build_scripts/AppImage/clean.sh
Executable file
6
build_scripts/AppImage/clean.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -rf ./out
|
||||
rm *~
|
||||
rm -rf ./retroshare
|
||||
|
3
build_scripts/AppImage/makeAppImage.sh
Executable file
3
build_scripts/AppImage/makeAppImage.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
./Recipe retroshare.yml
|
||||
|
3
build_scripts/AppImage/makeAppImage_retrotor.sh
Executable file
3
build_scripts/AppImage/makeAppImage_retrotor.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
./Recipe retrotor.yml
|
||||
|
18
build_scripts/AppImage/retroshare.yml
Normal file
18
build_scripts/AppImage/retroshare.yml
Normal file
@ -0,0 +1,18 @@
|
||||
app: retroshare
|
||||
union: true
|
||||
|
||||
ingredients:
|
||||
dist: trusty
|
||||
sources:
|
||||
- deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
|
||||
- deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
|
||||
ppas:
|
||||
- retroshare/unstable
|
||||
packages:
|
||||
- libqt4-svg
|
||||
- retroshare
|
||||
|
||||
script:
|
||||
- rm -rf usr/share/glib-2.0/schemas/
|
||||
- sed -i -e 's|/usr/share/pixmaps/||g' retroshare.desktop
|
||||
- sed -i -e 's|/usr/bin/||g' retroshare.desktop
|
20
build_scripts/AppImage/retrotor.yml
Normal file
20
build_scripts/AppImage/retrotor.yml
Normal file
@ -0,0 +1,20 @@
|
||||
app: retroshare
|
||||
union: true
|
||||
|
||||
ingredients:
|
||||
dist: trusty
|
||||
sources:
|
||||
- deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
|
||||
- deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
|
||||
- deb http://deb.torproject.org/torproject.org/ trusty main
|
||||
ppas:
|
||||
- retroshare/testing
|
||||
packages:
|
||||
- libqt5svg5
|
||||
- tor
|
||||
- retrotor
|
||||
|
||||
script:
|
||||
- rm -rf usr/share/glib-2.0/schemas/
|
||||
- sed -i -e 's|/usr/share/pixmaps/||g' retroshare.desktop
|
||||
- sed -i -e 's|/usr/bin/||g' retroshare.desktop
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -f ./libssh-0.5.4.tar.gz.*
|
||||
rm -f ./retroshare_0.6.3-1.*_source.build
|
||||
rm -f ./retroshare_0.6.3-1.*_source.changes
|
||||
rm -f ./retroshare_0.6.3-1.*.tar.gz
|
||||
rm -f ./retroshare_0.6.3-1.*.diff.gz
|
||||
rm -f ./retroshare_0.6.3-1.*.dsc
|
||||
rm -f ./retroshare_0.?.?-1.*_source.build
|
||||
rm -f ./retroshare_0.?.?-1.*_source.changes
|
||||
rm -f ./retroshare_0.?.?-1.*.tar.gz
|
||||
rm -f ./retroshare_0.?.?-1.*.diff.gz
|
||||
rm -f ./retroshare_0.?.?-1.*.dsc
|
||||
rm -f *.upload
|
||||
|
||||
rm -f *~
|
||||
|
46
build_scripts/Debian+Ubuntu/control.artful
Normal file
46
build_scripts/Debian+Ubuntu/control.artful
Normal file
@ -0,0 +1,46 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), git, libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
Package: retroshare-voip-plugin
|
||||
Architecture: any
|
||||
Conflicts: retroshare06-voip-plugin
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare, libspeex1, libspeexdsp1, libqt5multimedia5
|
||||
Description: RetroShare VOIP plugin
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
plateform. The plugin adds voice-over-IP functionality to the private chat window. Both
|
||||
friends chatting together need the plugin installed to be able to talk together.
|
||||
|
||||
Package: retroshare-feedreader-plugin
|
||||
Architecture: any
|
||||
Conflicts: retroshare06-feedreader-plugin
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare
|
||||
Description: RetroShare FeedReader plugin
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
plateform. The plugin adds a RSS feed reader tab to retroshare.
|
||||
|
||||
Package: retroshare-nogui
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare,retroshare06-nogui
|
||||
Description: Secure communication with friends
|
||||
This is the command-line client for RetroShare network. This client
|
||||
can be contacted and talked-to using SSL. Clients exist for portable
|
||||
devices running e.g. Android.
|
||||
|
||||
Package: retroshare
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare-nogui,retroshare06
|
||||
Description: Secure communication with friends
|
||||
RetroShare is a Open Source cross-platform, private and secure decentralised
|
||||
commmunication platform. It lets you to securely chat and share files with your
|
||||
friends and family, using a web-of-trust to authenticate peers and OpenSSL to
|
||||
encrypt all communication. RetroShare provides filesharing, chat, messages,
|
||||
forums and channels.
|
||||
|
||||
|
46
build_scripts/Debian+Ubuntu/control.bionic
Normal file
46
build_scripts/Debian+Ubuntu/control.bionic
Normal file
@ -0,0 +1,46 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), git, libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
Package: retroshare-voip-plugin
|
||||
Architecture: any
|
||||
Conflicts: retroshare06-voip-plugin
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare, libspeex1, libspeexdsp1, libqt5multimedia5
|
||||
Description: RetroShare VOIP plugin
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
plateform. The plugin adds voice-over-IP functionality to the private chat window. Both
|
||||
friends chatting together need the plugin installed to be able to talk together.
|
||||
|
||||
Package: retroshare-feedreader-plugin
|
||||
Architecture: any
|
||||
Conflicts: retroshare06-feedreader-plugin
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare
|
||||
Description: RetroShare FeedReader plugin
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
plateform. The plugin adds a RSS feed reader tab to retroshare.
|
||||
|
||||
Package: retroshare-nogui
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare,retroshare06-nogui
|
||||
Description: Secure communication with friends
|
||||
This is the command-line client for RetroShare network. This client
|
||||
can be contacted and talked-to using SSL. Clients exist for portable
|
||||
devices running e.g. Android.
|
||||
|
||||
Package: retroshare
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare-nogui,retroshare06
|
||||
Description: Secure communication with friends
|
||||
RetroShare is a Open Source cross-platform, private and secure decentralised
|
||||
commmunication platform. It lets you to securely chat and share files with your
|
||||
friends and family, using a web-of-trust to authenticate peers and OpenSSL to
|
||||
encrypt all communication. RetroShare provides filesharing, chat, messages,
|
||||
forums and channels.
|
||||
|
||||
|
@ -2,7 +2,7 @@ Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev (>= 3.4.0), libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Build-Depends: debhelper (>= 7), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev (>= 3.4.1), libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
|
20
build_scripts/Debian+Ubuntu/control.trusty_retrotor
Normal file
20
build_scripts/Debian+Ubuntu/control.trusty_retrotor
Normal file
@ -0,0 +1,20 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: http://retroshare.net
|
||||
|
||||
Package: retrotor
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring, tor (>= 0.2.6)
|
||||
Conflicts: retroshare-nogui,retroshare06,retroshare
|
||||
Description: Secure communication with friends
|
||||
RetroShare is a Open Source cross-platform, private and secure decentralised
|
||||
commmunication platform. It lets you to securely chat and share files with your
|
||||
friends and family, using a web-of-trust to authenticate peers and OpenSSL to
|
||||
encrypt all communication. RetroShare provides filesharing, chat, messages,
|
||||
forums and channels.
|
||||
|
||||
|
@ -2,7 +2,7 @@ Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Build-Depends: debhelper (>= 7), git, libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
|
20
build_scripts/Debian+Ubuntu/control.xenial_retrotor
Normal file
20
build_scripts/Debian+Ubuntu/control.xenial_retrotor
Normal file
@ -0,0 +1,20 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qt5-default
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
Package: retrotor
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring, tor (>= 0.2.6)
|
||||
Conflicts: retroshare-nogui,retroshare06,retroshare
|
||||
Description: Secure communication with friends
|
||||
RetroShare is a Open Source cross-platform, private and secure decentralised
|
||||
commmunication platform. It lets you to securely chat and share files with your
|
||||
friends and family, using a web-of-trust to authenticate peers and OpenSSL to
|
||||
encrypt all communication. RetroShare provides filesharing, chat, messages,
|
||||
forums and channels.
|
||||
|
||||
|
5
build_scripts/Debian+Ubuntu/debian/changelog
Normal file
5
build_scripts/Debian+Ubuntu/debian/changelog
Normal file
@ -0,0 +1,5 @@
|
||||
retroshare (0.6.4) UNRELEASED; urgency=medium
|
||||
|
||||
* Initial release for Debian. (Closes: #659069)
|
||||
|
||||
-- Cyril Soler <csoler@users.sourceforge.net> Wed, 09 May 2018 10:11:31 +0200
|
@ -1 +1 @@
|
||||
7
|
||||
10
|
||||
|
@ -1,46 +1,41 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Priority: optional
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 7), libglib2.0-dev, libupnp-dev, qt4-dev-tools, libqt4-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libqt4-opengl-dev, libqtmultimediakit1, qtmobility-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.5, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev
|
||||
Standards-Version: 3.9.3
|
||||
Build-Depends: debhelper (>= 9), git, libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qtbase5-dev, qt5-qmake, qtbase5-dev-tools
|
||||
Standards-Version: 4.1.4
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
Package: retroshare-voip-plugin
|
||||
Architecture: any
|
||||
Conflicts: retroshare06-voip-plugin
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare, libspeex1, libspeexdsp1, libqtmultimediakit1
|
||||
Conflicts:
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare, libspeex1, libspeexdsp1, libqt5multimedia5
|
||||
Description: RetroShare VOIP plugin
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
plateform. The plugin adds voice-over-IP functionality to the private chat window. Both
|
||||
friends chatting together need the plugin installed to be able to talk together.
|
||||
|
||||
Package: retroshare-feedreader-plugin
|
||||
Architecture: any
|
||||
Conflicts: retroshare06-feedreader-plugin
|
||||
Conflicts:
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare
|
||||
Description: RetroShare FeedReader plugin
|
||||
This package provides a plugin for RetroShare, a secured Friend-to-Friend communication
|
||||
plateform. The plugin adds a RSS feed reader tab to retroshare.
|
||||
Plugin for Retroshare, adding a RSS feed reader tab to retroshare.
|
||||
|
||||
Package: retroshare-nogui
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare,retroshare06-nogui
|
||||
Description: Secure communication with friends
|
||||
This is the command-line client for RetroShare network. This client
|
||||
can be contacted and talked-to using SSL. Clients exist for portable
|
||||
devices running e.g. Android.
|
||||
Conflicts: retroshare
|
||||
Description: headless version of Retroshare
|
||||
Headless version of the Retroshare platform.
|
||||
|
||||
Package: retroshare
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare-nogui,retroshare06
|
||||
Conflicts: retroshare-nogui
|
||||
Description: Secure communication with friends
|
||||
RetroShare is a Open Source cross-platform, private and secure decentralised
|
||||
commmunication platform. It lets you to securely chat and share files with your
|
||||
friends and family, using a web-of-trust to authenticate peers and OpenSSL to
|
||||
encrypt all communication. RetroShare provides filesharing, chat, messages,
|
||||
forums and channels.
|
||||
RetroShare is a Open Source, private and secure decentralised
|
||||
commmunication platform. It creates mesh of computers linked with TLS connections,
|
||||
on top of which it provides file transfer, asynchronous email, forums, channels and chat.
|
||||
|
||||
|
||||
|
@ -1,44 +0,0 @@
|
||||
This package was debianized by:
|
||||
|
||||
Cyril Soler <csoler@sourceforge.net> <csoler@sourceforge.net> on Sat, 06 Feb 2010 07:15:46 +0100
|
||||
|
||||
It was downloaded from:
|
||||
|
||||
<url://example.com>
|
||||
|
||||
Upstream Author(s):
|
||||
|
||||
<put author's name and email here>
|
||||
<likewise for another author>
|
||||
|
||||
Copyright:
|
||||
|
||||
<Copyright (C) YYYY Firstname Lastname>
|
||||
<likewise for another author>
|
||||
|
||||
License:
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License version 3 can be found in `/usr/share/common-licenses/GPL-3'.
|
||||
|
||||
The Debian packaging is:
|
||||
|
||||
Copyright (C) 2010 Cyril Soler <csoler@sourceforge.net> <csoler@sourceforge.net>
|
||||
|
||||
and is licensed under the GPL version 3, see above.
|
||||
|
||||
# Please also look if there are files or directories which have a
|
||||
# different copyright/license attached and list them here.
|
1
build_scripts/Debian+Ubuntu/debian/copyright
Symbolic link
1
build_scripts/Debian+Ubuntu/debian/copyright
Symbolic link
@ -0,0 +1 @@
|
||||
../../../.reuse/dep5
|
5
build_scripts/Debian+Ubuntu/debian/retrotor.install
Normal file
5
build_scripts/Debian+Ubuntu/debian/retrotor.install
Normal file
@ -0,0 +1,5 @@
|
||||
debian/tmp/usr/bin/retroshare
|
||||
debian/tmp/usr/share/applications/retroshare.desktop
|
||||
debian/tmp/usr/share/icons/hicolor/*
|
||||
debian/tmp/usr/share/pixmaps/retroshare.xpm
|
||||
debian/tmp/usr/share/retroshare/*
|
@ -3,35 +3,35 @@
|
||||
configure: configure-stamp
|
||||
configure-stamp:
|
||||
dh_testdir
|
||||
cd src && qmake "CONFIG-=debug" "CONFIG+=release" "CONFIG+=rs_autologin" PREFIX=/usr LIB_DIR=/usr/lib RetroShare.pro
|
||||
cd src && qmake "RS_MAJOR_VERSION=0" "RS_MINOR_VERSION=6" "RS_MINI_VERSION=4" "RS_EXTRA_VERSION=XXXXXX" "CONFIG-=debug" "CONFIG+=release" "CONFIG+=rs_autologin" "CONFIG+=retroshare_plugins" PREFIX=/usr LIB_DIR=/usr/lib RetroShare.pro
|
||||
touch $@
|
||||
|
||||
|
||||
build: build-stamp
|
||||
build: build-arch build-indep
|
||||
|
||||
build-stamp: configure-stamp
|
||||
dh_testdir
|
||||
# Add here commands to compile the package.
|
||||
# cd libssh-0.6.4 && mkdir -p build && cd build && cmake -DWITH_STATIC_LIB=ON .. && make
|
||||
# cd sqlcipher && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" && make
|
||||
# mkdir lib
|
||||
# cp -r libssh-0.6.4 lib/
|
||||
#cp -r sqlcipher lib/
|
||||
#cd src/rsctrl/src && make
|
||||
cd src && $(MAKE)
|
||||
touch $@
|
||||
|
||||
build-indep: build-stamp
|
||||
|
||||
build-arch: build-stamp
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f configure-stamp build-stamp
|
||||
# Add here commands to clean up after the build process.
|
||||
[ ! -f src/Makefile ] || (cd src && $(MAKE) distclean)
|
||||
dh_prep
|
||||
dh_clean
|
||||
|
||||
install: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
dh_prep
|
||||
dh_clean
|
||||
#dh_installdirs
|
||||
cd src && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/tmp install
|
||||
|
||||
|
1
build_scripts/Debian+Ubuntu/debian/source/format
Normal file
1
build_scripts/Debian+Ubuntu/debian/source/format
Normal file
@ -0,0 +1 @@
|
||||
1.0
|
49
build_scripts/Debian+Ubuntu/debian_release_howto.txt
Normal file
49
build_scripts/Debian+Ubuntu/debian_release_howto.txt
Normal file
@ -0,0 +1,49 @@
|
||||
Creation of a new Debian changelog:
|
||||
|
||||
dch --create --package retroshare --newversion 0.6.4-1
|
||||
|
||||
Note: dch reads email in $DEBMAIL or $USER@$HOSTNAME, so it should be made correct in debian/changlog
|
||||
If the email does not match the email in mentors, the package will be rejected.
|
||||
|
||||
dget command to retrieve source package:
|
||||
|
||||
dget -u https://launchpad.net/~retroshare/+archive/ubuntu/stable/+files/retroshare_0.6.4-1.20180313.0e6d27ad~xenial.dsc
|
||||
|
||||
(-u means don't check PGP signature)
|
||||
|
||||
When ready:
|
||||
* updload the package in a place that can be used to dget the package on mentors.debian.net.
|
||||
|
||||
dput mentors retroshare_0.6.4-1_source.changes
|
||||
|
||||
Checking with lintian:
|
||||
lintian -EI --pedantic --profile debian retroshare_0.6.4-1_source.changes
|
||||
echo -e 'display-info=y\ndisplay-experimental=y\npedantic=y\ncolor=auto' > ~/.config/lintian/lintianrc
|
||||
|
||||
Also apply lintian to binaries
|
||||
* fix overlinking in voip plugin
|
||||
|
||||
Turn the RFP bug into ITP
|
||||
you have to send an e-mail to control@bugs.debian.org and use the "retitle" command
|
||||
[05/13/2018] successfully retitled. The mail *body* (instead of subject) needs to contain the command in a single line.
|
||||
|
||||
Todo
|
||||
x make a sid binary package.
|
||||
* test in sid using pbuilder chroot system (pbuilder login)
|
||||
x upload to mentors
|
||||
x request for sponsorship
|
||||
*
|
||||
|
||||
Getting help:
|
||||
https://webchat.oftc.net/
|
||||
|
||||
Bug creation/report
|
||||
reportbug -B debian
|
||||
|
||||
Re-do debian/rules according to
|
||||
https://sources.debian.org/src/sleepyhead/1.0.0-beta-2+dfsg-5/debian/rules/
|
||||
the proper way to use qtchooser in d/rules is exporting QT_SELECT in d/rules, see https://pkg-kde.alioth.debian.org/packagingqtbasedstuff.html
|
||||
disable autologin
|
||||
|
||||
Put the package on salsa:
|
||||
salsa.debian.org
|
36
build_scripts/Debian+Ubuntu/how_to_build_for_stretch.txt
Normal file
36
build_scripts/Debian+Ubuntu/how_to_build_for_stretch.txt
Normal file
@ -0,0 +1,36 @@
|
||||
Aug 09, 2017
|
||||
============
|
||||
|
||||
Building packages for debian stretch requires an extra dependency of libsqlcipher0-3.4.1, which is not shipped mainstream with Debian.
|
||||
As a consequence, the package needs to be added to pbuilder before it's creating the .deb
|
||||
|
||||
0 - create the .dsc for debian stretch using the RS packaging script
|
||||
|
||||
> ./makeSourcePackage.sh -distribution stretch
|
||||
|
||||
This should produce the file retroshare_0.6.3-1.20170806.3ae85dbc~stretch.dsc
|
||||
|
||||
1 - add /home/csoler/pbuilder/stretch_result as an extra deb repository for pbuilder:
|
||||
|
||||
> cat ~/.pbuilderrc
|
||||
HOOKDIR="/var/cache/pbuilder/hook.d"
|
||||
BINDMOUNTS="/home/csoler/pbuilder/stretch_result"
|
||||
|
||||
> cat /var/cache/pbuilder/hook.d/D70results
|
||||
cd /home/csoler/pbuilder/stretch_result
|
||||
/usr/bin/dpkg-scanpackages . /dev/null > /home/csoler/pbuilder/stretch_result/Packages
|
||||
/usr/bin/apt-get update
|
||||
|
||||
2 - make sure that the directory /home/csoler/pbuilder/stretch-result/ contains the packages needed:
|
||||
|
||||
> ls -l ~/pbuilder/stretch_result/
|
||||
total 1344
|
||||
-rw-r--r-- libsqlcipher0_3.4.1-1_amd64.deb
|
||||
-rw-r--r-- libsqlcipher-dev_3.4.1-1_amd64.deb
|
||||
|
||||
3 - build the package using additional arguments to pbuilder-dist:
|
||||
|
||||
> pbuilder-dist stretch build --override-config --othermirror "deb [trusted=yes] file:///home/csoler/pbuilder/stretch_result ./" retroshare_0.6.3-1.20170806.3ae85dbc~stretch.dsc
|
||||
|
||||
Sources:
|
||||
* http://blog.anthonywong.net/2014/10/26/how-to-include-local-packages-for-pbuilder/
|
@ -1,13 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
###################### PARAMETERS ####################
|
||||
version="0.6.3"
|
||||
gitpath="https://github.com/RetroShare/RetroShare.git"
|
||||
workdir=retroshare-${version}
|
||||
branch="master"
|
||||
#bubba3="Y" # comment out to compile for bubba3
|
||||
#branch="v0.6.4-official_release"
|
||||
#bubba3="Y" # comment out to compile for bubba3
|
||||
######################################################
|
||||
|
||||
RS_MAJOR_VERSION=0
|
||||
RS_MINOR_VERSION=6
|
||||
RS_BUILD_NUMBER=4
|
||||
|
||||
# echo "RS_MAJOR_VERSION="${RS_MAJOR_VERSION}
|
||||
# echo "RS_MINOR_VERSION="${RS_MINOR_VERSION}
|
||||
# echo "RS_BUILD_NUMBER="${RS_BUILD_NUMBER}
|
||||
|
||||
version_number="${RS_MAJOR_VERSION}"'.'"${RS_MINOR_VERSION}"'.'"${RS_BUILD_NUMBER}"
|
||||
workdir=retroshare-${version_number}
|
||||
|
||||
echo This script is going to build the debian source package for RetroShare, from the Git repository.
|
||||
|
||||
if test -d "${workdir}" ; then
|
||||
@ -23,9 +33,10 @@ gpgkey="0932399B"
|
||||
|
||||
date=`git log --pretty=format:"%ai" | head -1 | cut -d\ -f1 | sed -e s/-//g`
|
||||
time=`git log --pretty=format:"%aD" | head -1 | cut -d\ -f5 | sed -e s/://g`
|
||||
hhsh=`git log --pretty=format:"%H" | head -1 | cut -c1-8`
|
||||
hhsh=`git log --pretty=format:"%H" | head -1 | cut -c1-8`
|
||||
|
||||
rev=${date}.${hhsh}
|
||||
useretrotor="false"
|
||||
|
||||
while [ ${#} -gt 0 ]; do
|
||||
case ${1} in
|
||||
@ -33,6 +44,9 @@ while [ ${#} -gt 0 ]; do
|
||||
rev=${1}
|
||||
shift
|
||||
;;
|
||||
"-retrotor") shift
|
||||
useretrotor="true"
|
||||
;;
|
||||
"-distribution") shift
|
||||
dist=${1}
|
||||
shift
|
||||
@ -53,26 +67,45 @@ while [ ${#} -gt 0 ]; do
|
||||
esac
|
||||
done
|
||||
|
||||
if test "${useretrotor}" = "true"; then
|
||||
if ! test "${dist}" = "trusty"; then
|
||||
echo ERROR: retro-tor can only be packaged for trusty for now.
|
||||
exit 1;
|
||||
fi
|
||||
#gitpath="https://github.com/csoler/RetroShare.git"
|
||||
#branch="v0.6-TorOnly"
|
||||
fi
|
||||
|
||||
if test "${dist}" = "" ; then
|
||||
dist="precise trusty vivid xenial yakkety zesty"
|
||||
dist="trusty xenial artful bionic"
|
||||
fi
|
||||
|
||||
echo Attempting to get revision number...
|
||||
ccount=`git rev-list --count --all`
|
||||
ccount=`expr $ccount + 8613 - 8267`
|
||||
|
||||
echo " "Using PGP key id : ${gpgkey}
|
||||
echo " "Using distributions: ${dist}
|
||||
echo " "Commit count : ${ccount}
|
||||
echo " "Date : ${date}
|
||||
echo " "Time : ${time}
|
||||
echo " "Hash : ${hhsh}
|
||||
echo " "Using branch : ${branch}
|
||||
echo " "Using revision : ${rev}
|
||||
gitrev=`git describe | cut -d- -f2-3`
|
||||
|
||||
echo " Workdir :"${workdir}
|
||||
echo " Version :"${version_number}
|
||||
echo " Using revision :"${rev}
|
||||
echo " Git Revision :"${gitrev}
|
||||
echo " Commit count :"${ccount}
|
||||
echo " Hash :"${hhsh}
|
||||
echo " Date :"${date}
|
||||
echo " Time :"${time}
|
||||
echo " Using branch :"${branch}
|
||||
echo " Using distributions:"${dist}
|
||||
echo " Using PGP key id :"${gpgkey}
|
||||
|
||||
if test ${useretrotor} = "true"; then
|
||||
echo " "Specific flags : retrotor
|
||||
fi
|
||||
|
||||
echo Done.
|
||||
version="${version}"."${rev}"
|
||||
echo Got version number ${version}.
|
||||
version="${version_number}"."${rev}"
|
||||
echo Got version number ${version}
|
||||
echo
|
||||
echo Please check that the changelog is up to date.
|
||||
echo Hit ENTER if this is correct. Otherwise hit Ctrl+C
|
||||
read tmp
|
||||
@ -82,12 +115,18 @@ echo Extracting base archive...
|
||||
mkdir -p ${workdir}/src
|
||||
echo Checking out latest snapshot...
|
||||
cd ${workdir}/src
|
||||
git clone --depth 1 https://github.com/RetroShare/RetroShare.git --single-branch --branch $branch .
|
||||
git clone --depth 1 ${gitpath} --single-branch --branch $branch .
|
||||
|
||||
# if ! test "$hhsh" = "" ; then
|
||||
# echo Checking out revision $hhsh
|
||||
# git checkout $hhsh
|
||||
# fi
|
||||
|
||||
cd -
|
||||
|
||||
if ! test -d ${workdir}/src/libretroshare/; then
|
||||
echo Git clone failed.
|
||||
exit
|
||||
echo Git clone failed.
|
||||
exit
|
||||
fi
|
||||
|
||||
cp -r debian ${workdir}/debian
|
||||
@ -95,6 +134,12 @@ cp -r debian ${workdir}/debian
|
||||
# VOIP tweak
|
||||
cp ${workdir}/src/retroshare-gui/src/gui/chat/PopupChatDialog.ui ${workdir}/src/plugins/VOIP/gui/PopupChatDialog.ui
|
||||
|
||||
# remove unised qml code, only needed on Android
|
||||
|
||||
rm -rf ${workdir}/src/retroshare-qml-app/
|
||||
rm -rf ${workdir}/src/build_scripts/
|
||||
rm ${workdir}/debian/*~
|
||||
|
||||
# Cloning sqlcipher
|
||||
# git clone https://github.com/sqlcipher/sqlcipher.git
|
||||
|
||||
@ -102,7 +147,7 @@ cd ${workdir}
|
||||
echo Setting version numbers...
|
||||
|
||||
# setup version numbers
|
||||
sed -e "s%RS_REVISION_NUMBER.*%RS_REVISION_NUMBER 0x${hhsh}%" src/libretroshare/src/retroshare/rsversion.in > src/libretroshare/src/retroshare/rsversion.h
|
||||
#sed -e "s%RS_REVISION_NUMBER.*%RS_REVISION_NUMBER 0x${hhsh}%" src/libretroshare/src/retroshare/rsversion.in > src/libretroshare/src/retroshare/rsversion.h
|
||||
|
||||
# Various cleaning
|
||||
echo Cleaning...
|
||||
@ -111,30 +156,28 @@ echo Cleaning...
|
||||
|
||||
echo Calling debuild...
|
||||
for i in ${dist}; do
|
||||
echo copying changelog for ${i}
|
||||
sed -e s/XXXXXX/"${rev}"/g -e s/YYYYYY/"${i}"/g ../changelog > debian/changelog
|
||||
|
||||
if test "${i}" = "lucid" ; then
|
||||
cp ../control.ubuntu_lucid debian/control
|
||||
elif test "${i}" = "zesty" ; then
|
||||
cp ../control.zesty debian/control
|
||||
elif test "${i}" = "squeeze" ; then
|
||||
cp ../control.squeeze_bubba3 debian/control
|
||||
elif test "${i}" = "precise" ; then
|
||||
cp ../control.precise debian/control
|
||||
elif test "${i}" = "xenial" ; then
|
||||
cp ../control.xenial debian/control
|
||||
elif test "${i}" = "yakkety" ; then
|
||||
cp ../control.yakkety debian/control
|
||||
elif test "${i}" = "stretch" ; then
|
||||
cp ../control.${i} debian/control
|
||||
elif test "${i}" = "jessie" ; then
|
||||
cp ../control.${i} debian/control
|
||||
else
|
||||
if ! test "${i}" = "debian"; then
|
||||
echo copying changelog for ${i}
|
||||
sed -e s/XXXXXX/"${rev}"/g -e s/YYYYYY/"${i}"/g -e s/ZZZZZZ/"${version_number}"/g ../changelog > debian/changelog
|
||||
sed -e s/XXXXXX/"-${gitrev}"/g debian/rules > debian_rules_tmp
|
||||
cp debian_rules_tmp debian/rules
|
||||
|
||||
if test ${useretrotor} = "true"; then
|
||||
cp ../rules.retrotor debian/rules
|
||||
cp ../control.trusty_retrotor debian/control
|
||||
elif test -f ../control."${i}" ; then
|
||||
echo \/\!\\ Using specific control file for distribution "${i}"
|
||||
cp ../control."${i}" debian/control
|
||||
else
|
||||
echo Using standard control file control."${i}" for distribution "${i}"
|
||||
cp ../debian/control debian/control
|
||||
fi
|
||||
else
|
||||
echo creating official debian release. Using built-in changelog and control files
|
||||
fi
|
||||
|
||||
debuild -S -k${gpgkey}
|
||||
debuild -S -k${gpgkey} --lintian-opts +pedantic -EviIL
|
||||
done
|
||||
cd -
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
for i in `ls retroshare_0.6.3-1.*.changes` ; do
|
||||
for i in `ls retroshare_0.6.4-1.*.changes` ; do
|
||||
dput ppa:retroshare/unstable $i
|
||||
done
|
||||
|
61
build_scripts/Debian+Ubuntu/rules.retrotor
Executable file
61
build_scripts/Debian+Ubuntu/rules.retrotor
Executable file
@ -0,0 +1,61 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
configure: configure-stamp
|
||||
configure-stamp:
|
||||
dh_testdir
|
||||
cd src && qmake "CONFIG-=debug" "CONFIG+=release retrotor" "CONFIG+=rs_autologin" PREFIX=/usr LIB_DIR=/usr/lib RetroShare.pro
|
||||
touch $@
|
||||
|
||||
|
||||
build: build-stamp
|
||||
build-stamp: configure-stamp
|
||||
dh_testdir
|
||||
# Add here commands to compile the package.
|
||||
# cd libssh-0.6.4 && mkdir -p build && cd build && cmake -DWITH_STATIC_LIB=ON .. && make
|
||||
# cd sqlcipher && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" && make
|
||||
# mkdir lib
|
||||
# cp -r libssh-0.6.4 lib/
|
||||
#cp -r sqlcipher lib/
|
||||
#cd src/rsctrl/src && make
|
||||
cd src && $(MAKE)
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f configure-stamp build-stamp
|
||||
# Add here commands to clean up after the build process.
|
||||
[ ! -f src/Makefile ] || (cd src && $(MAKE) distclean)
|
||||
dh_clean
|
||||
|
||||
install: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
#dh_installdirs
|
||||
cd src && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/tmp install
|
||||
|
||||
# Build architecture-independent files here.
|
||||
binary-indep: build install
|
||||
# We have nothing to do by default.
|
||||
|
||||
# Build architecture-dependent files here.
|
||||
binary-arch: build install
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_install --list-missing
|
||||
#dh_installdocs
|
||||
#dh_installexamples
|
||||
#dh_installman
|
||||
dh_link
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_installdeb
|
||||
dh_shlibdeps
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
.PHONY: build clean binary-indep binary-arch binary install configure
|
11
build_scripts/Debian/clean.sh
Executable file
11
build_scripts/Debian/clean.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -f ./retroshare_0.?.?-1_source.build
|
||||
rm -f ./retroshare_0.?.?-1_source.changes
|
||||
rm -f ./retroshare_0.?.?-1.tar.gz
|
||||
rm -f ./retroshare_0.?.?-1.diff.gz
|
||||
rm -f ./retroshare_0.?.?-1.dsc
|
||||
|
||||
rm -f *~
|
||||
find . -name "*~" -exec rm {} \;
|
||||
|
6
build_scripts/Debian/debian/README.Debian
Normal file
6
build_scripts/Debian/debian/README.Debian
Normal file
@ -0,0 +1,6 @@
|
||||
retroshare for Debian
|
||||
---------------------
|
||||
|
||||
<possible notes regarding this package - if none, delete this file>
|
||||
|
||||
-- Cyril Soler <csoler@sourceforge.net> Sat, 06 Feb 2010 07:15:46 +0100
|
5
build_scripts/Debian/debian/changelog
Normal file
5
build_scripts/Debian/debian/changelog
Normal file
@ -0,0 +1,5 @@
|
||||
retroshare (0.6.5-1) UNRELEASED; urgency=medium
|
||||
|
||||
* Initial release for Debian. (Closes: #659069)
|
||||
|
||||
-- Cyril Soler <csoler@users.sourceforge.net> Wed, 09 May 2018 10:11:31 +0200
|
1
build_scripts/Debian/debian/compat
Normal file
1
build_scripts/Debian/debian/compat
Normal file
@ -0,0 +1 @@
|
||||
10
|
39
build_scripts/Debian/debian/control
Normal file
39
build_scripts/Debian/debian/control
Normal file
@ -0,0 +1,39 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: optional
|
||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||
Build-Depends: debhelper (>= 10), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qtbase5-dev, qt5-qmake, qtbase5-dev-tools
|
||||
Standards-Version: 4.1.4
|
||||
Homepage: http://retroshare.sourceforge.net
|
||||
|
||||
# Package: retroshare-voip-plugin
|
||||
# Architecture: any
|
||||
# Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare, libspeex1, libspeexdsp1, libqt5multimedia5
|
||||
# Description: VOIP plugin for the Retroshare communication platform
|
||||
# This package provides a plugin for RetroShare, a secured Friend-to-Friend
|
||||
# communication plateform. The plugin adds voice-over-IP functionality to the
|
||||
# private chat window. Both friends chatting together need the plugin installed
|
||||
# to be able to talk together.
|
||||
#
|
||||
# Package: retroshare-feedreader-plugin
|
||||
# Architecture: any
|
||||
# Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare
|
||||
# Description: FeedReader plugin for the Retroshare communication platform
|
||||
# Plugin for Retroshare, adding a RSS feed reader tab to retroshare.
|
||||
|
||||
Package: retroshare-nogui
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare
|
||||
Description: headless version of Retroshare software
|
||||
Headless version of the Retroshare platform.
|
||||
|
||||
Package: retroshare
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||
Conflicts: retroshare-nogui
|
||||
Description: Secure communication with friends
|
||||
RetroShare is a Open Source, private and secure decentralised
|
||||
commmunication platform. It creates mesh of computers linked with TLS
|
||||
connections, on top of which it provides file transfer, asynchronous email,
|
||||
forums, channels and chat.
|
1
build_scripts/Debian/debian/copyright
Symbolic link
1
build_scripts/Debian/debian/copyright
Symbolic link
@ -0,0 +1 @@
|
||||
../../../.reuse/dep5
|
0
build_scripts/Debian/debian/docs
Normal file
0
build_scripts/Debian/debian/docs
Normal file
@ -0,0 +1 @@
|
||||
debian/tmp/usr/lib/retroshare/extensions6/libFeedReader.so*
|
3
build_scripts/Debian/debian/retroshare-nogui.install
Normal file
3
build_scripts/Debian/debian/retroshare-nogui.install
Normal file
@ -0,0 +1,3 @@
|
||||
debian/tmp/usr/bin/retroshare-nogui
|
||||
debian/tmp/usr/share/retroshare/bdboot.txt
|
||||
debian/tmp/usr/share/retroshare/webui/*
|
@ -0,0 +1 @@
|
||||
debian/tmp/usr/lib/retroshare/extensions6/libVOIP.so*
|
6
build_scripts/Debian/debian/retroshare.install
Normal file
6
build_scripts/Debian/debian/retroshare.install
Normal file
@ -0,0 +1,6 @@
|
||||
debian/tmp/usr/bin/retroshare
|
||||
debian/tmp/usr/bin/retroshare-nogui
|
||||
debian/tmp/usr/share/applications/retroshare.desktop
|
||||
debian/tmp/usr/share/icons/hicolor/*
|
||||
debian/tmp/usr/share/pixmaps/retroshare.xpm
|
||||
debian/tmp/usr/share/retroshare/*
|
5
build_scripts/Debian/debian/retrotor.install
Normal file
5
build_scripts/Debian/debian/retrotor.install
Normal file
@ -0,0 +1,5 @@
|
||||
debian/tmp/usr/bin/retroshare
|
||||
debian/tmp/usr/share/applications/retroshare.desktop
|
||||
debian/tmp/usr/share/icons/hicolor/*
|
||||
debian/tmp/usr/share/pixmaps/retroshare.xpm
|
||||
debian/tmp/usr/share/retroshare/*
|
24
build_scripts/Debian/debian/rules
Executable file
24
build_scripts/Debian/debian/rules
Executable file
@ -0,0 +1,24 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
export DH_VERBOSE = 1
|
||||
|
||||
DPKG_EXPORT_BUILDFLAGS = 1
|
||||
|
||||
# skip *-dbgsym packages
|
||||
DEB_BUILD_OPTIONS=noddebs
|
||||
|
||||
include /usr/share/dpkg/default.mk
|
||||
|
||||
#export DEB_BUILD_MAINT_PTIONS = hardening=+all
|
||||
export QT_SELECT = qt5
|
||||
|
||||
MY_BUILDDIR = _build
|
||||
|
||||
%:
|
||||
dh $@ --buildsystem=qmake --builddirectory=$(MY_BUILDDIR)
|
||||
|
||||
# Override dh_auto_configure in order to call qmake on the parent dir. We call mkdir here because of #800738.
|
||||
|
||||
override_dh_auto_configure:
|
||||
@mkdir -p $(MY_BUILDDIR)
|
||||
dh_auto_configure -- CONFIG="unix release retroshare_plugins rs_autologin" PREFIX=/usr LIB_DIR=/usr/lib ../src
|
1
build_scripts/Debian/debian/source/format
Normal file
1
build_scripts/Debian/debian/source/format
Normal file
@ -0,0 +1 @@
|
||||
1.0
|
151
build_scripts/Debian/debian_release_howto.txt
Normal file
151
build_scripts/Debian/debian_release_howto.txt
Normal file
@ -0,0 +1,151 @@
|
||||
Creation of a new Debian changelog:
|
||||
|
||||
dch --create --package retroshare --newversion 0.6.4-1
|
||||
|
||||
Note: dch reads email in $DEBMAIL or $USER@$HOSTNAME, so it should be made correct in debian/changlog
|
||||
If the email does not match the email in mentors, the package will be rejected.
|
||||
|
||||
dget command to retrieve source package:
|
||||
|
||||
dget -u https://launchpad.net/~retroshare/+archive/ubuntu/stable/+files/retroshare_0.6.4-1.20180313.0e6d27ad~xenial.dsc
|
||||
|
||||
(-u means don't check PGP signature)
|
||||
|
||||
When ready:
|
||||
* updload the package in a place that can be used to dget the package on mentors.debian.net.
|
||||
|
||||
dput mentors retroshare_0.6.4-1_source.changes
|
||||
|
||||
Checking with lintian:
|
||||
lintian -EI --pedantic --profile debian retroshare_0.6.4-1_source.changes
|
||||
echo -e 'display-info=y\ndisplay-experimental=y\npedantic=y\ncolor=auto' > ~/.config/lintian/lintianrc
|
||||
|
||||
Also apply lintian to binaries
|
||||
* fix overlinking in voip plugin
|
||||
|
||||
Turn the RFP bug into ITP
|
||||
you have to send an e-mail to control@bugs.debian.org and use the "retitle" command
|
||||
[05/13/2018] successfully retitled. The mail *body* (instead of subject) needs to contain the command in a single line.
|
||||
|
||||
Todo
|
||||
x make a sid binary package.
|
||||
* test in sid using pbuilder chroot system (pbuilder login)
|
||||
x upload to mentors
|
||||
x request for sponsorship
|
||||
*
|
||||
|
||||
Getting help:
|
||||
https://webchat.oftc.net/
|
||||
|
||||
Bug creation/report
|
||||
reportbug -B debian
|
||||
|
||||
Re-do debian/rules according to
|
||||
https://sources.debian.org/src/sleepyhead/1.0.0-beta-2+dfsg-5/debian/rules/
|
||||
the proper way to use qtchooser in d/rules is exporting QT_SELECT in d/rules, see https://pkg-kde.alioth.debian.org/packagingqtbasedstuff.html
|
||||
disable autologin
|
||||
|
||||
Put the package on salsa:
|
||||
salsa.debian.org
|
||||
|
||||
Debian binary changes file signature:
|
||||
gpg --clearsign -u 0932399B retroshare_0.6.4-1_amd64.changes
|
||||
|
||||
Signature does only work when done with debsign:
|
||||
debsign -k0932399B retroshare_0.6.4-1.dsc
|
||||
debsign -k0932399B retroshare_0.6.4-1_source.changes
|
||||
debsign -k0932399B retroshare_0.6.4-1_amd64.changes
|
||||
|
||||
Uploading-to-mentors bug:
|
||||
Apparently the system prevents you from uploading while a package is in the
|
||||
queue. So the upload responds "403 forbidden" whene e.g. the previous
|
||||
upload was cancelled by ^C.
|
||||
|
||||
|
||||
Licensing issues:
|
||||
Various licenses involved:
|
||||
|
||||
L: re-licence to LGPLv3
|
||||
A: re-licence to AGPLv3
|
||||
D: delete
|
||||
d: delete in debian package to avoid licensing problems
|
||||
|
||||
Code part | Licenses | A| Authors | Comment
|
||||
------------------------------------------+------------------------+--+----------------------------------------------+-------------------------------------------------
|
||||
libbitdht | GPLv3 | | drbob, csoler, Retroshare team |
|
||||
bitdht/bencode.h | Public domain | | Mike Frysinger <vapier@gmail.com> |
|
||||
bitdht/bdrandom.h | GPLv2 | L| csoler |
|
||||
------------------------------------------+------------------------+--+----------------------------------------------+-------------------------------------------------
|
||||
libresapi | GPLv3 | | G10H4ck, [], electron128 | Most files are unlicenced
|
||||
src/api/json.h | MIT | | Jeff Weinstein (jeff.weinstein at gmail) |
|
||||
src/api/webui-src/app/mithril.min.js | MIT | | Leo Horie |
|
||||
libretroshare | GPLv2,GPLv3 | | csoler,drbob,Mr-alice,Chris,Thunder | Some files unversionned.
|
||||
plugins/dlfcn_win32.cc | GPLv2.1 | L| Ramiro Polla |
|
||||
pqi/authgpg.h | GPLv2 | L| Raghu Dev R. | .cc is authed by drbob
|
||||
upnp/UPnPBase.h | GPLv2 | L| Marcelo Roberto Jimenez, aMule Team | other code in upnp/ not copyrighted. Re-licensed with permission 10/11/2018
|
||||
util/pugiconfig.h | MIT | | Arseny Kapoulkyne | [unused file!]
|
||||
util/rsstring.h | GPLv2 | L| Thomas Kister |
|
||||
util/rswin.h | GPLv2 | L| Thomas Kister |
|
||||
util/rsversioninfo.h | [none] | | Alexandrut |
|
||||
util/stacktrace.h | GPLv2 | R| Timo Bingmann, G10H4ck |
|
||||
librssimulator | [None] |dA| No authors |
|
||||
openpgpsdk | Apache | | Rachell Wilmer, Ben Laurie |
|
||||
pegmarkdown | All right reserved | | Daniel Jalkut - Code currently unused | will be deleted when creating debian package
|
||||
plugins/feedreader | GPLv2 | A| Thunder |
|
||||
plugins/VOIP | | | |
|
||||
AudioInputConfig.h+ | All right reserved | A| Thorvald Natvig | Permission to re-license on 04/11/2018
|
||||
AudioStats.h+ | All right reserved | A| Thorvald Natvig |
|
||||
AudioWizard.h+ | All right reserved | A| Thorvald Natvig |
|
||||
SpeexProcessor.h | | | Peter Zotov |
|
||||
retroshare-android-notify-* | GPLv3 | | G10H4ck |
|
||||
retroshare-android-service | GPLv3 | | G10H4ck |
|
||||
retroshare-gui/src | | | Thunder, csoler, drbob, crypton |
|
||||
control/* | GPLv2 | | Matt Edman, crypton, Justin Hiple | [Unused code]
|
||||
common/ElideLabel.h | BSD | | Qt Toolkit |
|
||||
common/FlowLayout.h | BSD | | Qt Toolkit | Is that really Qt code?? Qt examples can be used.
|
||||
common/html.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
common/rwindow.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
common/vmessagebox.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
common/PictureFlow | unclear | | Ariya Hidayat (@kde.org) | [Unused code]
|
||||
elastic/* | LGPL | | Trolltech |
|
||||
FileTransfer/FTIWidget | GPLv2 | | defnax, lsn752 |
|
||||
FileTransfer/xprogressb | GPLv2 | | Xesc |
|
||||
help/browser.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
images/retroshare_win.rc.h | GPLv2 | | crypton | [Unused code]
|
||||
msgs/textformat.h | GPLv3 | | Merdhah Momeny, Golnaz Nilieh | very simple .h. Can be re-implemented
|
||||
settings/rsettings.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
statistics/BandwidthGraphW.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
statistics/dhtgraph.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||
toaster/MessageToaster.h | GPLv3 | | Xesc |
|
||||
toaster/DownloadToaster.h | GPLv3 | | Xesc |
|
||||
About{Widget,Dialog}.h | GPLv2 | | Unipro, Russia | Very small file.
|
||||
linetypes.h | GPLv2 | | Merdhah Momeny, Golnaz Nilieh | very simple .h. Can be re-implemented
|
||||
mainpagestack.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||
land/langagesupport.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||
util/log.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||
idle/idle.h | GPLv2 | | Justin Karneges | May be re-implemented
|
||||
TorControl/* |* Public domaine | | John Brooks | Code from Ricochet.im
|
||||
util/HandleRichText.h | GPLv2 | | Thomas Kister |
|
||||
util/misc.h | GPLv2 | | defnax, Christophe Dumez |
|
||||
util/printpreview.h | GPLv2 | | Trolltech example |
|
||||
util/retrosharewin32.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||
util/stringutil.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||
rshare.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||
retroshare-nogui/* | GPLv2 | | drbob |
|
||||
|
||||
|
||||
Plan: move to GPLv3 with OpenSSL exception
|
||||
|
||||
- Appache is compatible with GPLv3
|
||||
|
||||
Many files unversionned.
|
||||
|
||||
Use a pointer to the top level licence file
|
||||
|
||||
|
||||
Files after switch:
|
||||
|
||||
libresapi/api/json.h MIT license Copyright (c) 2013 Jeff Weinstein (jeff.weinstein at gmail)
|
||||
libretroshare/src/tcponudp/bss_tou.cc SSL Licence Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
libretroshare/src/upnp/UPnPBase.{h,cpp} GPL Licence Copyright (c) 2004-2009 Marcelo Roberto Jimenez ( phoenix@amule.org )
|
||||
|
193
build_scripts/Debian/makeSourcePackage.sh
Executable file
193
build_scripts/Debian/makeSourcePackage.sh
Executable file
@ -0,0 +1,193 @@
|
||||
#!/bin/sh
|
||||
|
||||
###################### PARAMETERS ####################
|
||||
gitpath="https://github.com/csoler/RetroShare.git"
|
||||
#branch="master"
|
||||
branch="v0.6.5-DebianPackaging"
|
||||
#bubba3="Y" # comment out to compile for bubba3
|
||||
######################################################
|
||||
|
||||
RS_MAJOR_VERSION=0
|
||||
RS_MINOR_VERSION=6
|
||||
RS_BUILD_NUMBER=5
|
||||
|
||||
# echo "RS_MAJOR_VERSION="${RS_MAJOR_VERSION}
|
||||
# echo "RS_MINOR_VERSION="${RS_MINOR_VERSION}
|
||||
# echo "RS_BUILD_NUMBER="${RS_BUILD_NUMBER}
|
||||
|
||||
version_number="${RS_MAJOR_VERSION}"'.'"${RS_MINOR_VERSION}"'.'"${RS_BUILD_NUMBER}"
|
||||
workdir=retroshare-${version_number}
|
||||
|
||||
echo This script is going to build the debian source package for RetroShare, from the Git repository.
|
||||
|
||||
if test -d "${workdir}" ; then
|
||||
echo Removing the ${workdir} directory...
|
||||
rm -rf ${workdir}
|
||||
fi
|
||||
|
||||
# Parse options
|
||||
rev=""
|
||||
dist=""
|
||||
# This is the key for "Cyril Soler <csoler@sourceforge.net>"
|
||||
gpgkey="0932399B"
|
||||
|
||||
date=`git log --pretty=format:"%ai" | head -1 | cut -d\ -f1 | sed -e s/-//g`
|
||||
time=`git log --pretty=format:"%aD" | head -1 | cut -d\ -f5 | sed -e s/://g`
|
||||
hhsh=`git log --pretty=format:"%H" | head -1 | cut -c1-8`
|
||||
|
||||
rev=${date}.${hhsh}
|
||||
useretrotor="false"
|
||||
|
||||
while [ ${#} -gt 0 ]; do
|
||||
case ${1} in
|
||||
"-rev") shift
|
||||
rev=${1}
|
||||
shift
|
||||
;;
|
||||
"-key") shift
|
||||
gpgkey=${1}
|
||||
shift
|
||||
;;
|
||||
"-nodl")
|
||||
nodl=yes
|
||||
shift
|
||||
;;
|
||||
"-makeorig")
|
||||
makeorig=yes
|
||||
shift
|
||||
;;
|
||||
"-h") shift
|
||||
echo Package building script for debian/ubuntu distributions
|
||||
echo Usage:
|
||||
echo " "${0} '-key [PGP key id] -rev [svn revision number] -distribution [distrib name list with quotes, in (wheezy, sid, precise, saucy, etc)]'
|
||||
exit 1
|
||||
;;
|
||||
"*") echo "Unknown option"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
removeIrrelevantFiles() {
|
||||
echo Removing irrelevant files in directory ${workdir}...
|
||||
# remove unised qml code, only needed on Android
|
||||
rm -rf ${workdir}/src/retroshare-qml-app/
|
||||
rm -rf ${workdir}/src/librssimulator/
|
||||
rm -rf ${workdir}/src/libretroshare/src/tests/
|
||||
rm -rf ${workdir}/src/libretroshare/src/unfinished/
|
||||
rm -rf ${workdir}/src/libretroshare/unused/
|
||||
rm -rf ${workdir}/src/retroshare-android-notify-service/
|
||||
rm -rf ${workdir}/src/retroshare-android-service/
|
||||
rm -rf ${workdir}/src/libretroshare/src/unused/
|
||||
rm -rf ${workdir}/src/supportlibs/
|
||||
rm -rf ${workdir}/src/retroshare-service/
|
||||
rm -rf ${workdir}/src/plugins/
|
||||
rm -rf ${workdir}/src/unittests/
|
||||
rm -rf ${workdir}/src/tests/
|
||||
rm -rf ${workdir}/src/build_scripts/
|
||||
rm -rf ${workdir}/src/libbitdht/src/tests/
|
||||
rm -rf ${workdir}/src/libbitdht/src/example/
|
||||
rm -rf ${workdir}/src/retroshare-gui/src/gui/WikiPoos/
|
||||
rm -rf ${workdir}/src/retroshare-gui/src/Unused/
|
||||
rm -f ${workdir}/debian/*~
|
||||
rm -f ${workdir}/debian/.*.sw?
|
||||
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble_Compact/private/images.sh
|
||||
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/src/images.sh
|
||||
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/public/images.sh
|
||||
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/"history"/images.sh
|
||||
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/private/images.sh
|
||||
}
|
||||
|
||||
echo Attempting to get revision number...
|
||||
ccount=`git rev-list --count --all`
|
||||
ccount=`expr $ccount + 8613 - 8267`
|
||||
|
||||
gitrev=`git describe | cut -d- -f2-3`
|
||||
|
||||
echo " Workdir :"${workdir}
|
||||
echo " Version :"${version_number}
|
||||
echo " Using revision :"${rev}
|
||||
echo " Git Revision :"${gitrev}
|
||||
echo " Commit count :"${ccount}
|
||||
echo " Hash :"${hhsh}
|
||||
echo " Date :"${date}
|
||||
echo " Time :"${time}
|
||||
echo " Using branch :"${branch}
|
||||
echo " Using PGP key id :"${gpgkey}
|
||||
|
||||
if test ${useretrotor} = "true"; then
|
||||
echo " "Specific flags : retrotor
|
||||
fi
|
||||
|
||||
echo Done.
|
||||
version="${version_number}"."${rev}"
|
||||
echo Got version number ${version}
|
||||
echo
|
||||
echo Please check that the changelog is up to date.
|
||||
echo Hit ENTER if this is correct. Otherwise hit Ctrl+C
|
||||
read tmp
|
||||
|
||||
echo Extracting base archive...
|
||||
|
||||
if ! test "${makeorig}" = "yes" ; then
|
||||
if ! test -f retroshare_${version_number}.orig.tar.gz; then
|
||||
echo Error: no orig file found. Please call with -makeorig option first
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! test "${nodl}" = "yes"; then
|
||||
mkdir -p ${workdir}/src
|
||||
echo Checking out latest snapshot...
|
||||
cd ${workdir}/src
|
||||
git clone --depth 1 ${gitpath} --single-branch --branch $branch .
|
||||
|
||||
cd -
|
||||
|
||||
if ! test -d ${workdir}/src/libretroshare/; then
|
||||
echo Git clone failed.
|
||||
exit
|
||||
fi
|
||||
|
||||
cp -r debian ${workdir}/debian
|
||||
|
||||
# VOIP tweak
|
||||
cp ${workdir}/src/retroshare-gui/src/gui/chat/PopupChatDialog.ui ${workdir}/src/plugins/VOIP/gui/PopupChatDialog.ui
|
||||
|
||||
removeIrrelevantFiles
|
||||
|
||||
cd ${workdir}
|
||||
echo Setting version numbers...
|
||||
|
||||
# setup version numbers
|
||||
# sed -e "s%RS_REVISION_NUMBER.*%RS_REVISION_NUMBER 0x${hhsh}%" src/libretroshare/src/retroshare/rsversion.in > src/libretroshare/src/retroshare/rsversion.h
|
||||
|
||||
# Various cleaning
|
||||
echo Cleaning...
|
||||
|
||||
\rm -rf src/.git
|
||||
|
||||
if test "${makeorig}" = "yes" ; then
|
||||
echo making orig archive
|
||||
cd -
|
||||
tar zcvf retroshare_${version_number}.orig.tar.gz ${workdir}
|
||||
exit
|
||||
fi
|
||||
|
||||
cd -
|
||||
else
|
||||
tar zxvf retroshare_${version_number}.orig.tar.gz
|
||||
|
||||
cp -r debian/* ${workdir}/debian/
|
||||
removeIrrelevantFiles
|
||||
fi
|
||||
|
||||
# Cloning sqlcipher
|
||||
# git clone https://github.com/sqlcipher/sqlcipher.git
|
||||
|
||||
echo Calling debuild...
|
||||
cd ${workdir}
|
||||
debuild -S -k${gpgkey} --lintian-opts +pedantic -EviIL
|
||||
cd -
|
||||
|
||||
exit 0
|
43
build_scripts/GitlabCI/base.Dockerfile
Normal file
43
build_scripts/GitlabCI/base.Dockerfile
Normal file
@ -0,0 +1,43 @@
|
||||
## Add +--build-arg FRESHCLONE=$(date +%s)+ to docker build commandline to
|
||||
## force cloning a new
|
||||
|
||||
## To prepare an image suitable as base for Gitlab CI use
|
||||
# docker build -t "${CI_REGISTRY_IMAGE}:base" --build-arg KEEP_SOURCE=true --build-arg REPO_DEPTH="" -f base.Dockerfile .
|
||||
|
||||
## Now you need to tag it so you can later push it
|
||||
# docker tag ${ID_OF_THE_CREATED_IMAGE} registry.gitlab.com/retroshare/${CI_REGISTRY_IMAGE}:base
|
||||
|
||||
## To push it to gitlab CI registry you need first to login and the to push
|
||||
# docker login registry.gitlab.com
|
||||
# docker push registry.gitlab.com/retroshare/${CI_REGISTRY_IMAGE}:base
|
||||
|
||||
|
||||
## To run the container
|
||||
# docker run -it -p 127.0.0.1:9092:9092 "${CI_REGISTRY_IMAGE}:base" retroshare-service --jsonApiPort 9092 --jsonApiBindAddress 0.0.0.0
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
ARG CACHEBUST=0
|
||||
RUN \
|
||||
apt-get update -y && apt-get upgrade -y && \
|
||||
apt-get install -y build-essential libssl-dev libbz2-dev libsqlite3-dev \
|
||||
libsqlcipher-dev libupnp-dev pkg-config libz-dev \
|
||||
qt5-default libxapian-dev qttools5-dev doxygen rapidjson-dev \
|
||||
git cmake curl
|
||||
|
||||
ARG FRESHCLONE=0
|
||||
ARG REPO_URL=https://gitlab.com/RetroShare/RetroShare.git
|
||||
ARG REPO_BRANCH=master
|
||||
ARG REPO_DEPTH="--depth 2000"
|
||||
ARG KEEP_SOURCE=false
|
||||
RUN apt-get update -y && apt-get upgrade -y
|
||||
RUN git clone $REPO_DEPTH $REPO_URL -b $REPO_BRANCH && cd RetroShare && \
|
||||
git fetch --tags && cd ..
|
||||
RUN \
|
||||
mkdir RetroShare-build && cd RetroShare-build && \
|
||||
qmake ../RetroShare \
|
||||
CONFIG+=no_retroshare_plugins CONFIG+=ipv6 \
|
||||
CONFIG+=retroshare_service CONFIG+=no_retroshare_gui \
|
||||
CONFIG+=rs_jsonapi CONFIG+=rs_deep_search && \
|
||||
(make -j$(nproc) || make -j$(nproc) || make) && make install && \
|
||||
cd .. && rm -rf RetroShare-build && ($KEEP_SOURCE || rm -rf RetroShare)
|
18
build_scripts/GitlabCI/gitlabCI.Dockerfile
Normal file
18
build_scripts/GitlabCI/gitlabCI.Dockerfile
Normal file
@ -0,0 +1,18 @@
|
||||
FROM registry.gitlab.com/retroshare/retroshare:base
|
||||
|
||||
RUN apt-get update -y && apt-get upgrade -y
|
||||
|
||||
ARG REPO_URL=https://gitlab.com/RetroShare/RetroShare.git
|
||||
ARG REPO_BRANCH=master
|
||||
RUN \
|
||||
cd RetroShare && git remote add testing $REPO_URL && \
|
||||
git fetch --tags testing $REPO_BRANCH && \
|
||||
git reset --hard testing/$REPO_BRANCH && \
|
||||
git --no-pager log --max-count 1
|
||||
RUN \
|
||||
mkdir RetroShare-build && cd RetroShare-build && \
|
||||
qmake ../RetroShare CONFIG+=no_retroshare_gui \
|
||||
CONFIG+=retroshare_service \
|
||||
CONFIG+=rs_jsonapi CONFIG+=rs_deep_search && \
|
||||
(make -j$(nproc) || make -j$(nproc) || make) && make install && \
|
||||
cd .. && rm -rf RetroShare-build
|
1
build_scripts/OBS
Submodule
1
build_scripts/OBS
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit b0d7ae39fe9d9192848bbf7b8902d2188da895c9
|
@ -10,7 +10,7 @@ Add to the PATH environment variable by editing your *~/.profile* file.
|
||||
|
||||
export PATH="/users/$USER/Qt/5.5/clang_64/bin:$PATH"
|
||||
|
||||
Depends on wich version of Qt you use.
|
||||
Depends on which version of Qt you use.
|
||||
|
||||
## ***Choose if you use MacPort or HomeBrew***
|
||||
|
37
build_scripts/OSX/travis_makeOSXPackage.sh
Executable file
37
build_scripts/OSX/travis_makeOSXPackage.sh
Executable file
@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Install the 7z to create dmg archives.
|
||||
brew install p7zip
|
||||
|
||||
# Package your app
|
||||
echo "Packaging retroshare..."
|
||||
#cd ${project_dir}/build/macOS/clang/x86_64/release/
|
||||
cd retroshare-gui/src/
|
||||
|
||||
# Remove build directories that you don't want to deploy
|
||||
rm -rf moc
|
||||
rm -rf obj
|
||||
rm -rf qrc
|
||||
|
||||
# if test "${TAG_NAME}" = "" ; then
|
||||
# TAG_NAME = "no_tag" ;
|
||||
# echo No specific tag used.
|
||||
# fi
|
||||
|
||||
# This automatically creates retroshare.dmg
|
||||
|
||||
echo "Creating dmg archive..."
|
||||
macdeployqt retroshare.app -dmg
|
||||
|
||||
#mv retroshare.dmg "retroshare_${TAG_NAME}.dmg"
|
||||
|
||||
# You can use the appdmg command line app to create your dmg file if
|
||||
# you want to use a custom background and icon arrangement. I'm still
|
||||
# working on this for my apps, myself. If you want to do this, you'll
|
||||
# remove the -dmg option above.
|
||||
# appdmg json-path YourApp_${TRAVIS_TAG}.dmg
|
||||
|
||||
# Copy other project files
|
||||
# cp "${project_dir}/README.md" "README.md"
|
||||
# cp "${project_dir}/LICENSE" "LICENSE"
|
||||
# cp "${project_dir}/Qt License" "Qt License"
|
1
build_scripts/Windows-msys2/.gitignore
vendored
Normal file
1
build_scripts/Windows-msys2/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build/env-mod.bat
|
89
build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md
Normal file
89
build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md
Normal file
@ -0,0 +1,89 @@
|
||||
## Compilation on Windows
|
||||
|
||||
The preferred build method on Windows is by using MSYS2 which is a collection
|
||||
of packages providing unix-like tools to build native Windows software.
|
||||
|
||||
Requirements: about 12 GB of free space
|
||||
|
||||
The resulting binary is a 32-bit build of Retroshare which will also work
|
||||
fine on a 64-bit system.
|
||||
|
||||
**If you want to make complet solution without debugging it, prefer to use \build_scripts\Windows-msys2\build.bat**
|
||||
|
||||
This batch will install and build all for you.
|
||||
|
||||
You only have to clone this repository (with [git for windows](https://gitforwindows.org/)) to a local folder, then start it in a terminal.
|
||||
|
||||
At the end, you'll get at ..\\*-msys2\deploy\ the Portable 7zip file.
|
||||
|
||||
### MSYS2 INSTALLATION (for editing or debugging)
|
||||
|
||||
Download MSYS2 from [MSYS2](http://www.msys2.org/). Get the i686 version
|
||||
if you run a 32-bit Windows or the x86_64 if you run a 64-bit Windows.
|
||||
|
||||
Run the installer and install MSYS2.
|
||||
|
||||
At the end of the installation, it'll automatically open an MSYS shell terminal.
|
||||
You can also find it on the start menu as MSYS2 MSYS. This is the shell you'll
|
||||
use to install packages with pacman and do maintenance but NOT to build
|
||||
RetroShare.
|
||||
|
||||
First, update your MSYS2 environment to the latest version by typing:
|
||||
|
||||
pacman -Syu
|
||||
|
||||
Close the terminal window.
|
||||
|
||||
Run MSYS2 MSYS again and finish updating with:
|
||||
|
||||
pacman -Su
|
||||
|
||||
Install the default programs needed to build:
|
||||
|
||||
pacman -S base-devel git wget p7zip gcc perl ruby python2 doxygen cmake
|
||||
|
||||
Install the 32-bit toolchain:
|
||||
|
||||
pacman -S mingw-w64-i686-toolchain
|
||||
|
||||
Install all needed dependencies:
|
||||
|
||||
pacman -S mingw-w64-i686-miniupnpc
|
||||
pacman -S mingw-w64-i686-libmicrohttpd
|
||||
pacman -S mingw-w64-i686-libxslt
|
||||
pacman -S mingw-w64-i686-xapian-core
|
||||
pacman -S mingw-w64-i686-sqlcipher
|
||||
pacman -S mingw-w64-i686-qt5
|
||||
pacman -S mingw32/mingw-w64-i686-cmake
|
||||
pacman -S mingw-w64-i686-rapidjson
|
||||
|
||||
If you want to use QtCreator as IDE, prefer using this one publish by MSYS2 as all build Kit are already setted.
|
||||
|
||||
pacman -S mingw-w64-i686-qt-creator
|
||||
*You can start it from MSYS2 terminal.*
|
||||
|
||||
|
||||
We're done installing MSYS2, close the shell terminal.
|
||||
|
||||
### BUILDING RETROSHARE
|
||||
|
||||
Now run the MSYS2 MinGW 32-bit shell terminal (it's in the start menu).
|
||||
We will use it to checkout Retroshare and build it:
|
||||
|
||||
git clone https://github.com/RetroShare/RetroShare.git
|
||||
|
||||
Go to the RetroShare directory and configure to your liking, for example:
|
||||
|
||||
cd RetroShare
|
||||
qmake -r -Wall -spec win32-g++ "CONFIG+=debug" "CONFIG+=rs_autologin"
|
||||
|
||||
Now we're ready to build Retroshare. Use the '-j' option with the number of
|
||||
cores you have for a faster build, for instance if you have 4 cores:
|
||||
|
||||
mingw32-make -j4
|
||||
|
||||
Make sure your current Retroshare is not running. Then just run:
|
||||
|
||||
retroshare-gui/src/debug/retroshare.exe
|
||||
|
||||
You'll get debug output in the terminal and a running Retroshare instance.
|
23
build_scripts/Windows-msys2/build-tor.bat
Normal file
23
build_scripts/Windows-msys2/build-tor.bat
Normal file
@ -0,0 +1,23 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
%cecho% info "Build %SourceName%"
|
||||
call "%~dp0build\build.bat" 64 release tor autologin "CONFIG+=rs_use_native_dialogs"
|
||||
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
||||
|
||||
%cecho% info "Pack %SourceName%"
|
||||
call "%~dp0build\pack.bat" 64 release tor autologin "CONFIG+=rs_use_native_dialogs"
|
||||
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
||||
|
||||
exit /B 0
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
exit /B 1
|
23
build_scripts/Windows-msys2/build.bat
Normal file
23
build_scripts/Windows-msys2/build.bat
Normal file
@ -0,0 +1,23 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
%cecho% info "Build %SourceName%"
|
||||
call "%~dp0build\build.bat" 64 release autologin "CONFIG+=rs_use_native_dialogs"
|
||||
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
||||
|
||||
%cecho% info "Pack %SourceName%"
|
||||
call "%~dp0build\pack.bat" 64 release autologin "CONFIG+=rs_use_native_dialogs"
|
||||
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
||||
|
||||
exit /B 0
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
exit /B 1
|
67
build_scripts/Windows-msys2/build/build-installer.bat
Normal file
67
build_scripts/Windows-msys2/build/build-installer.bat
Normal file
@ -0,0 +1,67 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env-msys2.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
if not "%ParamNoupdate%"=="1" (
|
||||
:: Install NSIS
|
||||
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-nsis"
|
||||
)
|
||||
|
||||
:: Check deployment
|
||||
if not exist "%RsDeployPath%\retroshare.exe" echo Project is not deployed. Run pack.bat first! & goto error
|
||||
|
||||
:: Get compiled revision
|
||||
set GetRsVersion=%SourcePath%\build_scripts\Windows-msys2\tools\get-rs-version.bat
|
||||
if not exist "%GetRsVersion%" (
|
||||
%cecho% error "File not found"
|
||||
echo %GetRsVersion%
|
||||
goto error
|
||||
)
|
||||
|
||||
:: Get compiled version
|
||||
call "%GetRsVersion%" "%RsDeployPath%\retroshare.exe" RsVersion
|
||||
if errorlevel 1 %cecho% error "Revision not found."& goto error
|
||||
if "%RsVersion.Extra%"=="" %cecho% error "Extra number not found".& goto error
|
||||
|
||||
:: Build defines for script
|
||||
set NSIS_PARAM=
|
||||
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DDEPLOYDIR="%RsDeployPath%"
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DARCHITECTURE="%RsArchitecture%"
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DREVISION=%RsVersion.Extra%
|
||||
|
||||
set QtMainVersion=%QtVersion:~0,1%
|
||||
|
||||
:: Create installer
|
||||
echo %path%
|
||||
rem makensis %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare-Qt%QtMainVersion%.nsi"
|
||||
rem pushd "%SourcePath%\build_scripts\Windows-msys2\installer"
|
||||
rem %EnvMSYS2Cmd% "makensis $0 retroshare-Qt%QtMainVersion%.nsi" "%NSIS_PARAM%"
|
||||
rem popd
|
||||
"%RsMinGWPath%\bin\makensis" %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare-Qt%QtMainVersion%.nsi"
|
||||
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:error
|
||||
endlocal
|
||||
exit /B 1
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
endlocal
|
||||
exit /B 1
|
35
build_scripts/Windows-msys2/build/build-webui.bat
Normal file
35
build_scripts/Windows-msys2/build/build-webui.bat
Normal file
@ -0,0 +1,35 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env-msys2.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
:: Initialize base environment
|
||||
call "%~dp0env-base.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
call "%~dp0..\tools\webui.bat"
|
||||
|
||||
:error
|
||||
|
||||
title %COMSPEC%
|
||||
|
||||
if errorlevel 1 echo.& echo Webui generation failed& echo.
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
endlocal
|
||||
exit /B 1
|
105
build_scripts/Windows-msys2/build/build.bat
Normal file
105
build_scripts/Windows-msys2/build/build.bat
Normal file
@ -0,0 +1,105 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env-msys2.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
:: Initialize base environment
|
||||
call "%~dp0env-base.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
if not "%ParamNoupdate%"=="1" (
|
||||
:: Install needed things
|
||||
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-cmake mingw-w64-%RsMSYS2Architecture%-rapidjson"
|
||||
|
||||
:: Webui
|
||||
if "%ParamWebui%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-doxygen"
|
||||
|
||||
:: Plugins
|
||||
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"
|
||||
|
||||
:: Clang
|
||||
if "%ParamClang%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-clang"
|
||||
|
||||
:: Indexing
|
||||
if "%ParamIndexing%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-xapian-core mingw-w64-%RsMSYS2Architecture%-libvorbis mingw-w64-%RsMSYS2Architecture%-flac mingw-w64-%RsMSYS2Architecture%-taglib"
|
||||
)
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
echo.
|
||||
echo === Version
|
||||
echo.
|
||||
|
||||
title Build - %SourceName%-%RsBuildConfig% [Version]
|
||||
|
||||
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
||||
:: Touch resource file
|
||||
copy /b retroshare_win.rc +,,
|
||||
popd
|
||||
|
||||
if not exist "%RsBuildPath%" mkdir "%RsBuildPath%"
|
||||
pushd "%RsBuildPath%"
|
||||
|
||||
echo.
|
||||
echo === qmake
|
||||
echo.
|
||||
|
||||
title Build - %SourceName%-%RsBuildConfig% [qmake]
|
||||
|
||||
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=%RsBuildConfig%"
|
||||
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_autologin"
|
||||
if "%ParamPlugins%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=retroshare_plugins"
|
||||
|
||||
:: Dump the active build config into a file
|
||||
echo %RS_QMAKE_CONFIG% > buildinfo.txt
|
||||
echo %RsBuildConfig% >> buildinfo.txt
|
||||
echo %RsArchitecture% >> buildinfo.txt
|
||||
echo Qt %QtVersion% >> buildinfo.txt
|
||||
echo %RsCompiler% >> buildinfo.txt
|
||||
|
||||
call "%ToolsPath%\msys2-path.bat" "%SourcePath%" MSYS2SourcePath
|
||||
call "%ToolsPath%\msys2-path.bat" "%EnvMSYS2Path%" MSYS2EnvMSYS2Path
|
||||
if "%ParamClang%"=="1" (
|
||||
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-clang-g++ %RS_QMAKE_CONFIG%"
|
||||
) else (
|
||||
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%"
|
||||
)
|
||||
if errorlevel 1 goto error
|
||||
|
||||
echo.
|
||||
echo === make
|
||||
echo.
|
||||
|
||||
title Build - %SourceName%-%RsBuildConfig% [make]
|
||||
|
||||
%EnvMSYS2Cmd% "make -j %CoreCount%"
|
||||
if errorlevel 1 goto error
|
||||
|
||||
:: Webui
|
||||
if "%ParamWebui%"=="1" (
|
||||
call "%~dp0..\tools\webui.bat"
|
||||
)
|
||||
|
||||
:error
|
||||
popd
|
||||
|
||||
title %COMSPEC%
|
||||
|
||||
if errorlevel 1 echo.& echo Build failed& echo.
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
endlocal
|
||||
exit /B 1
|
25
build_scripts/Windows-msys2/build/clean.bat
Normal file
25
build_scripts/Windows-msys2/build/clean.bat
Normal file
@ -0,0 +1,25 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env-msys2.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
call "%~dp0env.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
if not exist "%RsBuildPath%" exit /B 0
|
||||
call "%ToolsPath%\remove-dir.bat" "%RsBuildPath%"
|
||||
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
endlocal
|
||||
exit /B 1
|
130
build_scripts/Windows-msys2/build/env-base.bat
Normal file
130
build_scripts/Windows-msys2/build/env-base.bat
Normal file
@ -0,0 +1,130 @@
|
||||
:: Process commandline parameter
|
||||
set Param32=0
|
||||
set Param64=0
|
||||
set ParamRelease=0
|
||||
set ParamDebug=0
|
||||
set ParamAutologin=0
|
||||
set ParamPlugins=0
|
||||
set ParamTor=0
|
||||
set ParamWebui=0
|
||||
set ParamClang=0
|
||||
set ParamIndexing=0
|
||||
set ParamNoupdate=0
|
||||
set CoreCount=%NUMBER_OF_PROCESSORS%
|
||||
set RS_QMAKE_CONFIG=
|
||||
|
||||
:parameter_loop
|
||||
if "%~1" NEQ "" (
|
||||
for /f "tokens=1,2 delims==" %%a in ("%~1") do (
|
||||
if "%%~a"=="32" (
|
||||
set Param32=1
|
||||
) else if "%%~a"=="64" (
|
||||
set Param64=1
|
||||
) else if "%%~a"=="release" (
|
||||
set ParamRelease=1
|
||||
) else if "%%~a"=="debug" (
|
||||
set ParamDebug=1
|
||||
) else if "%%~a"=="autologin" (
|
||||
set ParamAutologin=1
|
||||
) else if "%%~a"=="plugins" (
|
||||
set ParamPlugins=1
|
||||
) else if "%%~a"=="tor" (
|
||||
set ParamTor=1
|
||||
) else if "%%~a"=="webui" (
|
||||
set ParamWebui=1
|
||||
) else if "%%~a"=="singlethread" (
|
||||
set CoreCount=1
|
||||
) else if "%%~a"=="clang" (
|
||||
set ParamClang=1
|
||||
) else if "%%~a"=="indexing" (
|
||||
set ParamIndexing=1
|
||||
) else if "%%~a"=="noupdate" (
|
||||
set ParamNoupdate=1
|
||||
) else if "%%~a"=="CONFIG+" (
|
||||
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% %1
|
||||
) else (
|
||||
echo.
|
||||
echo Unknown parameter %1
|
||||
goto :usage
|
||||
)
|
||||
)
|
||||
shift /1
|
||||
goto parameter_loop
|
||||
)
|
||||
|
||||
if "%Param32%"=="1" (
|
||||
if "%Param64%"=="1" (
|
||||
echo.
|
||||
echo 32-bit or 64-bit?
|
||||
goto :usage
|
||||
)
|
||||
|
||||
set RsBit=32
|
||||
set RsArchitecture=x86
|
||||
set RsMSYS2Architecture=i686
|
||||
)
|
||||
|
||||
if "%Param64%"=="1" (
|
||||
set RsBit=64
|
||||
set RsArchitecture=x64
|
||||
set RsMSYS2Architecture=x86_64
|
||||
)
|
||||
|
||||
if "%ParamClang%"=="1" (
|
||||
set RsCompiler=Clang
|
||||
) else (
|
||||
set RsCompiler=GCC
|
||||
)
|
||||
|
||||
if "%RsBit%"=="" goto :usage
|
||||
|
||||
if "%ParamRelease%"=="1" (
|
||||
if "%ParamDebug%"=="1" (
|
||||
echo.
|
||||
echo Release or Debug?
|
||||
goto :usage
|
||||
)
|
||||
|
||||
set RsBuildConfig=release
|
||||
) else if "%ParamDebug%"=="1" (
|
||||
set RsBuildConfig=debug
|
||||
) else goto :usage
|
||||
|
||||
if "%ParamTor%"=="1" (
|
||||
set RsType=-tor
|
||||
) else (
|
||||
set RsType=
|
||||
)
|
||||
|
||||
if "%ParamWebui%"=="1" (
|
||||
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_jsonapi" "CONFIG+=rs_webui"
|
||||
)
|
||||
|
||||
if "%ParamIndexing%"=="1" (
|
||||
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_deep_channels_index" "CONFIG+=rs_deep_files_index" "CONFIG+=rs_deep_files_index_ogg" "CONFIG+=rs_deep_files_index_flac" "CONFIG+=rs_deep_files_index_taglib"
|
||||
)
|
||||
|
||||
exit /B 0
|
||||
|
||||
:usage
|
||||
echo.
|
||||
echo Usage: 32^|64 release^|debug [autologin plugins webui singlethread clang indexing noupdate] ["CONFIG+=..."]
|
||||
echo.
|
||||
echo Mandatory parameter
|
||||
echo 32^|64 32-bit or 64-bit Version
|
||||
echo release^|debug Build release or debug version
|
||||
echo.
|
||||
echo Optional parameter (need clean when changed)
|
||||
echo autologin Build with autologin
|
||||
echo plugins Build plugins
|
||||
echo webui Enable JsonAPI and pack webui files
|
||||
echo singlethread Use only 1 thread for building
|
||||
echo clang Use clang compiler instead of GCC
|
||||
echo indexing Build with deep channel and file indexing support
|
||||
echo noupdate Skip updating the libraries
|
||||
echo "CONFIG+=..." Enable some extra features, you can find the almost complete list in retroshare.pri
|
||||
echo.
|
||||
echo Parameter for pack
|
||||
echo tor Pack tor version
|
||||
echo.
|
||||
exit /B 2
|
30
build_scripts/Windows-msys2/build/env.bat
Normal file
30
build_scripts/Windows-msys2/build/env.bat
Normal file
@ -0,0 +1,30 @@
|
||||
call "%~dp0env-base.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
set MSYSTEM=MINGW%RsBit%
|
||||
|
||||
set BuildPath=%EnvRootPath%\builds
|
||||
set DeployPath=%EnvRootPath%\deploy
|
||||
|
||||
if not exist "%BuildPath%" mkdir "%BuildPath%"
|
||||
if not exist "%DeployPath%" mkdir "%DeployPath%"
|
||||
|
||||
:: Get Qt version
|
||||
call "%ToolsPath%\get-qt-version.bat" QtVersion
|
||||
if "%QtVersion%"=="" %cecho% error "Cannot get Qt version." & exit /B 1
|
||||
|
||||
set RsMinGWPath=%EnvMSYS2BasePath%\mingw%RsBit%
|
||||
|
||||
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsArchitecture%-%RsCompiler%-%RsBuildConfig%
|
||||
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsArchitecture%-%RsCompiler%-%RsBuildConfig%
|
||||
set RsPackPath=%DeployPath%
|
||||
set RsArchiveAdd=
|
||||
set RsWebuiPath=%RootPath%\%SourceName%-webui
|
||||
|
||||
if not exist "%~dp0env-mod.bat" goto no_mod
|
||||
call "%~dp0env-mod.bat"
|
||||
if errorlevel 1 exit /B %ERRORLEVEL%
|
||||
:no_mod
|
||||
|
||||
exit /B 0
|
43
build_scripts/Windows-msys2/build/git-log.bat
Normal file
43
build_scripts/Windows-msys2/build/git-log.bat
Normal file
@ -0,0 +1,43 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
if "%~2"=="" (
|
||||
echo.
|
||||
echo Parameter error.
|
||||
echo Usage git-log sourcepath outputfile
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
set logfile=%~2
|
||||
copy nul %logfile% > nul
|
||||
|
||||
pushd %~1
|
||||
|
||||
set last=HEAD
|
||||
for /f %%t in ('git tag --sort=-taggerdate --merged ^| findstr v') do (
|
||||
echo generating changelog for !last!..%%t
|
||||
echo ----------------------------------------------- >> %logfile%
|
||||
if !last! neq HEAD (
|
||||
git tag -n !last! >> %logfile%
|
||||
) else (
|
||||
echo HEAD >> %logfile%
|
||||
)
|
||||
rem echo !last! ---^> %%t >> %logfile%
|
||||
echo ----------------------------------------------- >> %logfile%
|
||||
echo. >> %logfile%
|
||||
git log %%t..!last! --no-merges "--pretty=format:%%h %%ai %%<(10,trunc)%%an %%s" >> %logfile%
|
||||
echo. >> %logfile%
|
||||
echo. >> %logfile%
|
||||
set last=%%t
|
||||
)
|
||||
|
||||
echo generating changelog for %last%
|
||||
echo ----------------------------------------------- >> %logfile%
|
||||
git tag -n %last% >> %logfile%
|
||||
echo ----------------------------------------------- >> %logfile%
|
||||
echo. >> %logfile%
|
||||
git log %last% --no-merges "--pretty=format:%%h %%ai %%<(10,trunc)%%an %%s" >> %logfile%
|
||||
|
||||
popd
|
||||
|
||||
endlocal enabledelayedexpansion
|
228
build_scripts/Windows-msys2/build/pack.bat
Normal file
228
build_scripts/Windows-msys2/build/pack.bat
Normal file
@ -0,0 +1,228 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set Quite=^>nul
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env-msys2.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat" %*
|
||||
if errorlevel 2 exit /B 2
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
if not "%ParamNoupdate%"=="1" (
|
||||
:: Install ntldd
|
||||
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-ntldd-git"
|
||||
|
||||
:: Install tor
|
||||
if "%ParamTor%"=="1" (
|
||||
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-tor"
|
||||
)
|
||||
)
|
||||
|
||||
:: Remove deploy path
|
||||
if exist "%RsDeployPath%" rmdir /S /Q "%RsDeployPath%"
|
||||
|
||||
:: Check compilation
|
||||
if not exist "%RsBuildPath%\Makefile" echo Project is not compiled.& goto error
|
||||
|
||||
:: Get compiled revision
|
||||
set GetRsVersion=%SourcePath%\build_scripts\Windows-msys2\tools\get-rs-version.bat
|
||||
if not exist "%GetRsVersion%" (
|
||||
%cecho% error "File not found"
|
||||
echo %GetRsVersion%
|
||||
goto error
|
||||
)
|
||||
|
||||
:: Get compiled version
|
||||
call "%GetRsVersion%" "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\retroshare.exe" RsVersion
|
||||
if errorlevel 1 %cecho% error "Revision not found."& goto error
|
||||
|
||||
if "%RsVersion.Major%"=="" %cecho% error "Major version not found."& goto error
|
||||
if "%RsVersion.Minor%"=="" %cecho% error "Minor version not found."& goto error
|
||||
if "%RsVersion.Mini%"=="" %cecho% error "Mini number not found".& goto error
|
||||
if "%RsVersion.Extra%"=="" %cecho% error "Extra number not found".& goto error
|
||||
|
||||
set RsVersion=%RsVersion.Major%.%RsVersion.Minor%.%RsVersion.Mini%
|
||||
|
||||
:: Check WMIC is available
|
||||
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& goto error
|
||||
|
||||
:: Use WMIC to retrieve date in format YYYYMMDD
|
||||
set RsDate=
|
||||
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
|
||||
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
||||
|
||||
set QtMainVersion=%QtVersion:~0,1%
|
||||
set QtSharePath=%RsMinGWPath%\share\qt%QtMainVersion%\
|
||||
|
||||
rem Qt 4 = QtSvg4.dll
|
||||
rem Qt 5 = Qt5Svg.dll
|
||||
set QtMainVersion1=
|
||||
set QtMainVersion2=
|
||||
if "%QtMainVersion%"=="4" set QtMainVersion2=4
|
||||
if "%QtMainVersion%"=="5" set QtMainVersion1=5
|
||||
|
||||
if "%RsBuildConfig%" NEQ "release" (
|
||||
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-%RsArchitecture%-msys2%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
|
||||
) else (
|
||||
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-%RsArchitecture%-msys2%RsType%%RsArchiveAdd%.7z
|
||||
)
|
||||
|
||||
if exist "%Archive%" del /Q "%Archive%"
|
||||
|
||||
:: Create deploy path
|
||||
mkdir "%RsDeployPath%"
|
||||
|
||||
title Pack - %SourceName%%RsType%-%RsBuildConfig% [copy files]
|
||||
|
||||
set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc
|
||||
set Extensions=
|
||||
for /f %%e in ('type "%ExtensionsFile%" ^| sed.exe -n "s/^.*\/\(extensions[^/]*\)\/.*$/\1/p" ^| sed.exe -n "1,1p"') do set Extensions=%%e
|
||||
if "%Extensions%"=="" echo Folder for extensions not found in %ExtensionsFile%& goto error
|
||||
|
||||
:: Copy files
|
||||
mkdir "%RsDeployPath%\Data\%Extensions%"
|
||||
mkdir "%RsDeployPath%\imageformats"
|
||||
mkdir "%RsDeployPath%\qss"
|
||||
mkdir "%RsDeployPath%\stylesheets"
|
||||
mkdir "%RsDeployPath%\sounds"
|
||||
mkdir "%RsDeployPath%\translations"
|
||||
mkdir "%RsDeployPath%\license"
|
||||
|
||||
copy nul "%RsDeployPath%\portable" %Quite%
|
||||
|
||||
echo copy binaries
|
||||
copy "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\RetroShare*.exe" "%RsDeployPath%" %Quite%
|
||||
copy "%RsBuildPath%\retroshare-nogui\src\%RsBuildConfig%\retroshare*-nogui.exe" "%RsDeployPath%" %Quite%
|
||||
copy "%RsBuildPath%\retroshare-service\src\%RsBuildConfig%\retroshare*-service.exe" "%RsDeployPath%" %Quite%
|
||||
copy "%RsBuildPath%\supportlibs\cmark\build\src\libcmark.dll" "%RsDeployPath%" %Quite%
|
||||
|
||||
echo copy extensions
|
||||
for /D %%D in ("%RsBuildPath%\plugins\*") do (
|
||||
call :copy_extension "%%D" "%RsDeployPath%\Data\%Extensions%"
|
||||
)
|
||||
|
||||
echo copy Qt DLL's
|
||||
copy "%RsMinGWPath%\bin\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
|
||||
|
||||
if "%QtMainVersion%"=="5" (
|
||||
mkdir "%RsDeployPath%\platforms"
|
||||
copy "%QtSharePath%\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite%
|
||||
mkdir "%RsDeployPath%\audio"
|
||||
copy "%QtSharePath%\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite%
|
||||
)
|
||||
|
||||
if exist "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" (
|
||||
echo copy styles
|
||||
mkdir "%RsDeployPath%\styles" %Quite%
|
||||
copy "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
|
||||
)
|
||||
|
||||
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
|
||||
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
|
||||
|
||||
if "%ParamTor%"=="1" (
|
||||
echo copy tor
|
||||
copy "%RsMinGWPath%\bin\tor.exe" "%RsDeployPath%" %Quite%
|
||||
copy "%RsMinGWPath%\bin\tor-gencert.exe" "%RsDeployPath%" %Quite%
|
||||
)
|
||||
|
||||
echo copy dependencies
|
||||
for /R "%RsDeployPath%" %%D in (*.dll, *.exe) do (
|
||||
call :copy_dependencies "%%D" "%RsDeployPath%"
|
||||
)
|
||||
|
||||
echo copy qss
|
||||
xcopy /S "%SourcePath%\retroshare-gui\src\qss" "%RsDeployPath%\qss" %Quite%
|
||||
|
||||
echo copy stylesheets
|
||||
xcopy /S "%SourcePath%\retroshare-gui\src\gui\qss\chat" "%RsDeployPath%\stylesheets" %Quite%
|
||||
rmdir /S /Q "%RsDeployPath%\stylesheets\compact" %Quite%
|
||||
rmdir /S /Q "%RsDeployPath%\stylesheets\standard" %Quite%
|
||||
rmdir /S /Q "%RsDeployPath%\stylesheets\__MACOSX__Bubble" %Quite%
|
||||
|
||||
echo copy sounds
|
||||
xcopy /S "%SourcePath%\retroshare-gui\src\sounds" "%RsDeployPath%\sounds" %Quite%
|
||||
|
||||
echo copy license
|
||||
xcopy /S "%SourcePath%\retroshare-gui\src\license" "%RsDeployPath%\license" %Quite%
|
||||
|
||||
echo copy translation
|
||||
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
|
||||
copy "%QtSharePath%\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||
if "%QtMainVersion%"=="5" (
|
||||
copy "%QtSharePath%\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||
copy "%QtSharePath%\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||
copy "%QtSharePath%\translations\qtquick1_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||
copy "%QtSharePath%\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||
copy "%QtSharePath%\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||
)
|
||||
|
||||
echo copy bdboot.txt
|
||||
copy "%SourcePath%\libbitdht\src\bitdht\bdboot.txt" "%RsDeployPath%" %Quite%
|
||||
|
||||
echo generate changelog.txt
|
||||
call call "%~dp0\git-log.bat" "%SourcePath%" "%RsDeployPath%\changelog.txt"
|
||||
|
||||
echo copy buildinfo.txt
|
||||
copy "%RsBuildPath%\buildinfo.txt" "%RsDeployPath%" %Quite%
|
||||
|
||||
if "%ParamWebui%"=="1" (
|
||||
if exist "%RsWebuiPath%\webui" (
|
||||
echo copy webui
|
||||
mkdir "%RsDeployPath%\webui"
|
||||
xcopy /S "%RsWebuiPath%\webui" "%RsDeployPath%\webui" %Quite%
|
||||
) else (
|
||||
%cecho% error "Webui is enabled, but no webui data found at %RsWebuiPath%\webui"
|
||||
goto error
|
||||
)
|
||||
)
|
||||
|
||||
rem pack files
|
||||
title Pack - %SourceName%%RsType%-%RsBuildConfig% [pack files]
|
||||
|
||||
"%EnvSevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*"
|
||||
|
||||
title %COMSPEC%
|
||||
|
||||
call :cleanup
|
||||
|
||||
endlocal
|
||||
exit /B 0
|
||||
|
||||
:error
|
||||
call :Cleanup
|
||||
endlocal
|
||||
exit /B 1
|
||||
|
||||
:cleanup
|
||||
goto :EOF
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
endlocal
|
||||
exit /B 1
|
||||
|
||||
:copy_extension
|
||||
if exist "%~1\%RsBuildConfig%\%~n1.dll" (
|
||||
copy "%~1\%RsBuildConfig%\%~n1.dll" %2 %Quite%
|
||||
)
|
||||
goto :EOF
|
||||
|
||||
:copy_dependencies
|
||||
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat %1`) do (
|
||||
if not exist "%~2\%%A" (
|
||||
if exist "%RsMinGWPath%\bin\%%A" (
|
||||
copy "%RsMinGWPath%\bin\%%A" %2 %Quite%
|
||||
)
|
||||
)
|
||||
)
|
||||
goto :EOF
|
19
build_scripts/Windows-msys2/env.bat
Normal file
19
build_scripts/Windows-msys2/env.bat
Normal file
@ -0,0 +1,19 @@
|
||||
call :make_path SourcePath "%~dp0..\.."
|
||||
call :make_path RootPath "%SourcePath%\.."
|
||||
call :source_name SourceName "%SourcePath%"
|
||||
set ToolsPath=%~dp0tools
|
||||
set EnvPath=%~dp0env
|
||||
|
||||
exit /B 0
|
||||
|
||||
:make_path
|
||||
setlocal
|
||||
set Var=%~1
|
||||
pushd %2
|
||||
set CD=%cd%
|
||||
popd
|
||||
endlocal & set %Var%=%CD%
|
||||
goto :EOF
|
||||
|
||||
:source_name
|
||||
set %~1=%~nx2
|
37
build_scripts/Windows-msys2/env/env-msys2.bat
vendored
Normal file
37
build_scripts/Windows-msys2/env/env-msys2.bat
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
:: Usage:
|
||||
:: call env-msys2.bat [reinstall|clean]
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
IF DEFINED ProgramFiles(x86) (
|
||||
:: x64
|
||||
set MSYS2Architecture=x86_64
|
||||
set MSYS2Base=64
|
||||
) else (
|
||||
:: x86
|
||||
set MSYS2Architecture=i686
|
||||
set MSYS2Base=32
|
||||
)
|
||||
|
||||
set CHERE_INVOKING=1
|
||||
|
||||
set EnvMSYS2Path=%EnvRootPath%\msys2
|
||||
set EnvMSYS2BasePath=%EnvMSYS2Path%\msys%MSYS2Base%
|
||||
|
||||
call "%~dp0tools\prepare-msys2.bat" %1
|
||||
if errorlevel 1 exit /B %ERRORLEVEL%
|
||||
|
||||
set EnvMSYS2SH=%EnvMSYS2BasePath%\usr\bin\sh.exe
|
||||
if not exist "%EnvMSYS2SH%" if errorlevel 1 goto error_env
|
||||
|
||||
set EnvMSYS2Cmd="%EnvMSYS2SH%" -lc
|
||||
|
||||
set PATH=%EnvMSYS2BasePath%\usr\bin;%PATH%
|
||||
|
||||
exit /B 0
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
exit /B 1
|
24
build_scripts/Windows-msys2/env/env.bat
vendored
Normal file
24
build_scripts/Windows-msys2/env/env.bat
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
:: Initialize environment
|
||||
call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
set EnvRootPath=%RootPath%\%SourceName%-msys2
|
||||
set EnvToolsPath=%EnvRootPath%\tools
|
||||
set EnvTempPath=%EnvRootPath%\tmp
|
||||
set EnvDownloadPath=%EnvRootPath%\download
|
||||
|
||||
set EnvSevenZipExe=%EnvToolsPath%\7z.exe
|
||||
set EnvCEchoExe=%EnvToolsPath%\cecho.exe
|
||||
set cecho=call "%ToolsPath%\cecho.bat"
|
||||
|
||||
:: Create folders
|
||||
if not exist "%EnvRootPath%" mkdir "%EnvRootPath%"
|
||||
if not exist "%EnvToolsPath%" mkdir "%EnvToolsPath%"
|
||||
if not exist "%EnvDownloadPath%" mkdir "%EnvDownloadPath%"
|
||||
|
||||
call "%~dp0tools\prepare-tools.bat"
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:error_env
|
||||
echo Failed to initialize environment.
|
||||
exit /B 1
|
57
build_scripts/Windows-msys2/env/tools/prepare-msys2.bat
vendored
Normal file
57
build_scripts/Windows-msys2/env/tools/prepare-msys2.bat
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
:: Usage:
|
||||
:: call prepare-msys2.bat [reinstall|clean]
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
if "%EnvMSYS2Path%"=="" exit /B 1
|
||||
if "%MSYS2Architecture%"=="" exit /B 1
|
||||
if "%MSYS2Base%"=="" exit /B 1
|
||||
if not exist "%EnvRootPath%"=="" exit /B 1
|
||||
|
||||
copy "%~dp0root\update-msys2.bat" "%EnvRootPath%" >nul
|
||||
|
||||
if "%~1"=="clean" (
|
||||
%cecho% info "Clean MSYS2"
|
||||
call "%ToolsPath%\remove-dir.bat" "%EnvMSYS2Path%"
|
||||
goto exit
|
||||
)
|
||||
|
||||
if exist "%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\pacman.exe" (
|
||||
if "%~1"=="reinstall" (
|
||||
choice /M "Found existing MSYS2 version. Do you want to proceed?"
|
||||
if !ERRORLEVEL!==2 goto exit
|
||||
) else (
|
||||
goto exit
|
||||
)
|
||||
)
|
||||
|
||||
set MSYS2Install=msys2-base-%MSYS2Architecture%-20200720.tar.xz
|
||||
set MSYS2Url=http://sourceforge.net/projects/msys2/files/Base/%MSYS2Architecture%/%MSYS2Install%/download
|
||||
|
||||
%cecho% info "Remove previous MSYS2 version"
|
||||
call "%ToolsPath%\remove-dir.bat" "%EnvMSYS2Path%"
|
||||
|
||||
%cecho% info "Download installation files"
|
||||
if not exist "%EnvDownloadPath%\%MSYS2Install%" call "%ToolsPath%\download-file.bat" "%MSYS2Url%" "%EnvDownloadPath%\%MSYS2Install%"
|
||||
if not exist "%EnvDownloadPath%\%MSYS2Install%" %cecho% error "Cannot download MSYS" & goto error
|
||||
|
||||
%cecho% info "Unpack MSYS2"
|
||||
"%EnvSevenZipExe%" x -so "%EnvDownloadPath%\%MSYS2Install%" | "%EnvSevenZipExe%" x -y -si -ttar -o"%EnvMSYS2Path%"
|
||||
|
||||
set MSYS2SH=%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\sh
|
||||
|
||||
%cecho% info "Initialize MSYS2"
|
||||
"%MSYS2SH%" -lc "pacman -Sy"
|
||||
"%MSYS2SH%" -lc "pacman --noconfirm --needed -S bash pacman pacman-mirrors msys2-runtime"
|
||||
|
||||
call "%EnvMSYS2Path%\msys%MSYS2Base%\autorebase.bat"
|
||||
call "%EnvRootPath%\update-msys2.bat"
|
||||
call "%EnvRootPath%\update-msys2.bat"
|
||||
|
||||
:exit
|
||||
endlocal
|
||||
exit /B 0
|
||||
|
||||
:error
|
||||
endlocal
|
||||
exit /B 1
|
49
build_scripts/Windows-msys2/env/tools/prepare-tools.bat
vendored
Normal file
49
build_scripts/Windows-msys2/env/tools/prepare-tools.bat
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
setlocal
|
||||
|
||||
if "%EnvRootPath%"=="" exit /B 1
|
||||
|
||||
set CEchoUrl=https://github.com/lordmulder/cecho/releases/download/2015-10-10/cecho.2015-10-10.zip
|
||||
set CEchoInstall=cecho.2015-10-10.zip
|
||||
set SevenZipUrl=https://sourceforge.net/projects/sevenzip/files/7-Zip/18.05/7z1805.msi/download
|
||||
set SevenZipInstall=7z1805.msi
|
||||
|
||||
if not exist "%EnvToolsPath%\7z.exe" (
|
||||
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||
mkdir "%EnvTempPath%"
|
||||
|
||||
echo Download 7z installation
|
||||
|
||||
if not exist "%EnvDownloadPath%\%SevenZipInstall%" call "%ToolsPath%\download-file.bat" "%SevenZipUrl%" "%EnvDownloadPath%\%SevenZipInstall%"
|
||||
if not exist "%EnvDownloadPath%\%SevenZipInstall%" echo Cannot download 7z installation& goto error
|
||||
|
||||
echo Unpack 7z
|
||||
msiexec /a "%EnvDownloadPath%\%SevenZipInstall%" /qb TARGETDIR="%EnvTempPath%"
|
||||
copy "%EnvTempPath%\Files\7-Zip\7z.dll" "%EnvToolsPath%"
|
||||
copy "%EnvTempPath%\Files\7-Zip\7z.exe" "%EnvToolsPath%"
|
||||
|
||||
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||
)
|
||||
|
||||
if not exist "%EnvToolsPath%\cecho.exe" (
|
||||
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||
mkdir "%EnvTempPath%"
|
||||
|
||||
echo Download cecho installation
|
||||
|
||||
if not exist "%EnvDownloadPath%\%CEchoInstall%" call "%ToolsPath%\download-file.bat" "%CEchoUrl%" "%EnvDownloadPath%\%CEchoInstall%"
|
||||
if not exist "%EnvDownloadPath%\%cCEhoInstall%" echo Cannot download cecho installation& goto error
|
||||
|
||||
echo Unpack cecho
|
||||
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%CEchoInstall%"
|
||||
copy "%EnvTempPath%\cecho.exe" "%EnvToolsPath%"
|
||||
|
||||
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||
)
|
||||
|
||||
:exit
|
||||
endlocal
|
||||
exit /B 0
|
||||
|
||||
:error
|
||||
endlocal
|
||||
exit /B 1
|
19
build_scripts/Windows-msys2/env/tools/root/update-msys2.bat
vendored
Normal file
19
build_scripts/Windows-msys2/env/tools/root/update-msys2.bat
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
if exist "%~dp0msys2\msys32" call :update 32
|
||||
if exist "%~dp0msys2\msys64" call :update 64
|
||||
|
||||
goto :EOF
|
||||
|
||||
:update
|
||||
set MSYSSH=%~dp0msys2\msys%~1\usr\bin\sh
|
||||
|
||||
echo Update MSYS2 %~1
|
||||
"%MSYSSH%" -lc "pacman -Sy"
|
||||
"%MSYSSH%" -lc "pacman --noconfirm -Su"
|
||||
|
||||
:exit
|
||||
endlocal
|
||||
goto :EOF
|
BIN
build_scripts/Windows-msys2/installer/HeaderImage.bmp
Normal file
BIN
build_scripts/Windows-msys2/installer/HeaderImage.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
BIN
build_scripts/Windows-msys2/installer/HeaderImageEmpty.bmp
Normal file
BIN
build_scripts/Windows-msys2/installer/HeaderImageEmpty.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user