aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ci/Containerfile19
-rwxr-xr-xcontrib/ci/ci.sh34
-rw-r--r--contrib/ci/jobs/0-codespell/dictionary.txt3
-rwxr-xr-xcontrib/ci/jobs/0-codespell/job.sh95
-rwxr-xr-xcontrib/ci/jobs/1-build/build.sh3
-rw-r--r--contrib/ci/jobs/2-test/config.ini6
-rwxr-xr-xcontrib/ci/jobs/2-test/test.sh3
-rw-r--r--contrib/ci/jobs/3-docs/config.ini6
-rwxr-xr-xcontrib/ci/jobs/4-deb-package/job.sh21
-rwxr-xr-xcontrib/ci/jobs/4-deb-package/version.sh17
-rw-r--r--contrib/ci/jobs/5-deploy-package/config.ini5
-rwxr-xr-xcontrib/ci/jobs/5-deploy-package/job.sh14
-rw-r--r--contrib/exchange-tos-v0.rst138
m---------contrib/gana0
-rwxr-xr-xcontrib/taler-terms-generator.in40
m---------contrib/wallet-core0
16 files changed, 293 insertions, 111 deletions
diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile
index 8b0792166..77239820e 100644
--- a/contrib/ci/Containerfile
+++ b/contrib/ci/Containerfile
@@ -25,22 +25,17 @@ RUN apt-get update -yqq && \
python3-sphinx-rtd-theme \
recutils \
texinfo \
- zlib1g-dev
-
-# Debian packaging tools
-RUN apt-get install -yqq \
+ zlib1g-dev \
+ # Debian packaging tools \
po-debconf \
build-essential \
debhelper-compat \
- devscripts
-
-# Documentation dependencies
-RUN apt-get install -yqq \
+ devscripts \
+ git-buildpackage \
+ # Documentation dependencies \
doxygen \
- graphviz
-
-# Test suite dependencies
-RUN apt-get install -yqq \
+ graphviz \
+ # Test suite dependencies \
jq \
postgresql \
sudo \
diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh
new file mode 100755
index 000000000..47c7a211e
--- /dev/null
+++ b/contrib/ci/ci.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -exvuo pipefail
+
+# Use podman if available, otherwise use docker.
+# Fails if neither is found in PATH
+OCI_RUNTIME=$(which podman || which docker)
+REPO_NAME=$(basename "${PWD}")
+JOB_NAME="${1}"
+JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${REPO_NAME}")
+JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}")
+CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True")
+
+echo "${JOB_CONTAINER}"
+
+if [ "${CONTAINER_BUILD}" = "True" ] ; then
+ "${OCI_RUNTIME}" build \
+ --arch "${JOB_ARCH}" \
+ -t "${JOB_CONTAINER}" \
+ -f contrib/ci/Containerfile .
+fi
+
+"${OCI_RUNTIME}" run \
+ --rm \
+ -ti \
+ --arch "${JOB_ARCH}" \
+ --env CI_COMMIT_REF="$(git rev-parse HEAD)" \
+ --volume "${PWD}":/workdir \
+ --workdir /workdir \
+ "${JOB_CONTAINER}" \
+ contrib/ci/jobs/"${JOB_NAME}"/job.sh
+
+top_dir=$(dirname "${BASH_SOURCE[0]}")
+
+#"${top_dir}"/build.sh
diff --git a/contrib/ci/jobs/0-codespell/dictionary.txt b/contrib/ci/jobs/0-codespell/dictionary.txt
index b4d643349..f4ffa7945 100644
--- a/contrib/ci/jobs/0-codespell/dictionary.txt
+++ b/contrib/ci/jobs/0-codespell/dictionary.txt
@@ -17,15 +17,18 @@ acn
ba
bre
cant
+clen
complet
doas
ect
ehr
fo
+ges
hel
ifset
ist
keypair
+nam
nd
onl
openin
diff --git a/contrib/ci/jobs/0-codespell/job.sh b/contrib/ci/jobs/0-codespell/job.sh
index b9c5c9963..41d11a1bc 100755
--- a/contrib/ci/jobs/0-codespell/job.sh
+++ b/contrib/ci/jobs/0-codespell/job.sh
@@ -3,4 +3,97 @@ set -exuo pipefail
job_dir=$(dirname "${BASH_SOURCE[0]}")
-codespell -I "${job_dir}"/dictionary.txt -S "*.bib,*.bst,*.cls,*.json,*.png,*.svg,*.wav,*.gz,*/templating/test?/**,**/auditor/*.sql,**/templating/mustach**,*.fees,*key,*.tag,*.info,*.latexmkrc,*.ecc,*.jpg,*.zkey,*.sqlite,*/contrib/hellos/**,*/vpn/tests/**,**/valgrind.h,*.priv,*.file,*.tgz,*.woff,*.gif,*.odt,*.fee,*.deflate,*.dat,*.jpeg,*.eps,*.odg,*/m4/ax_lib_postgresql.m4,*/m4/libgcrypt.m4,*.rpath,config.status,ABOUT-NLS,*/doc/texinfo.tex,*.PNG,*.??.json,*.docx,*.ods,*.doc,*.docx,*.xcf,*.xlsx,*.ecc,*.ttf,*.woff2,*.eot,*.ttf,*.eot,*.mp4,*.pptx,*.epgz,*.min.js,**/*.map,**/fonts/**,*.pack.js,*.po,*.bbl,*/afl-tests/*,*/.git/**,*.pdf,*.epub,**/signing-key.asc,**/pnpm-lock.yaml,**/*.svg,**/*.cls,**/rfc.bib,**/*.bst,*/cbdc-es.tex,*/cbdc-it.tex,**/ExchangeSelection/example.ts,*/testcurl/test_tricky.c,*/i18n/strings.ts,*/src/anastasis-data.ts,**/doc/flows/main.de.tex"
+skip=$(cat <<EOF
+ABOUT-NLS
+*/afl-tests/*
+**/auditor/*.sql
+*.bbl
+*.bib
+*build-aux*
+*.bst
+*.cache/*
+*/cbdc-es.tex
+*/cbdc-it.tex
+*.cls
+configure*
+config.status
+*/contrib/*
+*/contrib/hellos/**
+*.dat
+*.deflate
+*.doc
+*/doc/*
+**/doc/flows/main.de.tex
+*/doc/texinfo.tex
+*.docx
+*.ecc
+*.eot
+*.epgz
+*.eps
+*.epub
+**/ExchangeSelection/example.ts
+*.fee
+*.fees
+*.file
+**/fonts/**
+*.gif
+*/.git/**
+*.gz
+*/i18n/strings.ts
+*.info
+*.jpeg
+*.jpg
+*.??.json
+*.json
+*/keys/*
+*key
+*.latexmkrc
+*libtool*
+*.log
+*/m4/*
+*.m4
+**/*.map
+*.min.js
+*.mp4
+*.odg
+*.ods
+*.odt
+*.pack.js
+*.pdf
+*.png
+*.PNG
+**/pnpm-lock.yaml
+*.po
+*.pptx
+*.priv
+**/rfc.bib
+*.rpath
+**/signing-key.asc
+*.sqlite
+*/src/anastasis-data.ts
+**/*.svg
+*.svg
+*.tag
+**/templating/mustach**
+*/templating/test?/**
+*/testcurl/test_tricky.c
+*/debian/tmp/**
+*/debian/taler-exchange/**
+*/debian/.debhelper/**
+*.tgz
+*.ttf
+*.ttf
+**/valgrind.h
+*/vpn/tests/**
+*.wav
+*.woff
+*.woff2
+*.xcf
+*.xlsx
+*.zkey
+EOF
+);
+
+echo Current directory: `pwd`
+
+codespell -I "${job_dir}"/dictionary.txt -S ${skip//$'\n'/,}
diff --git a/contrib/ci/jobs/1-build/build.sh b/contrib/ci/jobs/1-build/build.sh
index b11374291..35faf0ac5 100755
--- a/contrib/ci/jobs/1-build/build.sh
+++ b/contrib/ci/jobs/1-build/build.sh
@@ -1,6 +1,9 @@
#!/bin/bash
set -exuo pipefail
+apt-get update
+apt-get upgrade -yqq
+
./bootstrap
./configure CFLAGS="-ggdb -O0" \
--enable-logging=verbose \
diff --git a/contrib/ci/jobs/2-test/config.ini b/contrib/ci/jobs/2-test/config.ini
new file mode 100644
index 000000000..c5a77c031
--- /dev/null
+++ b/contrib/ci/jobs/2-test/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = False
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = True
+CONTAINER_NAME = exchange
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/2-test/test.sh b/contrib/ci/jobs/2-test/test.sh
index 39fca5c16..4c4142309 100755
--- a/contrib/ci/jobs/2-test/test.sh
+++ b/contrib/ci/jobs/2-test/test.sh
@@ -1,6 +1,9 @@
#!/bin/bash
set -evu
+apt-get update
+apt-get upgrade -yqq
+
./bootstrap
./configure CFLAGS="-ggdb -O0" \
--enable-logging=verbose \
diff --git a/contrib/ci/jobs/3-docs/config.ini b/contrib/ci/jobs/3-docs/config.ini
new file mode 100644
index 000000000..c5a77c031
--- /dev/null
+++ b/contrib/ci/jobs/3-docs/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = False
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = True
+CONTAINER_NAME = exchange
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/4-deb-package/job.sh b/contrib/ci/jobs/4-deb-package/job.sh
index dc78cdf24..adc2a777b 100755
--- a/contrib/ci/jobs/4-deb-package/job.sh
+++ b/contrib/ci/jobs/4-deb-package/job.sh
@@ -3,22 +3,21 @@ set -exuo pipefail
# This file is in the public domain.
# Helper script to build the latest DEB packages in the container.
-unset LD_LIBRARY_PATH
-
-git apply ./ci/jobs/2-deb-package/install-fix.patch
-
-# Get current version from debian/control file.
-DEB_VERSION=$(dpkg-parsechangelog -S Version)
+unset LD_LIBRARY_PATH
# Install build-time dependencies.
+# Update apt cache first
+apt-get update
+apt-get upgrade -y
mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
-# We do a sparse checkout, so we need to hint
-# the version to the build system.
-echo $DEB_VERSION > .version
+export VERSION="$(./contrib/ci/jobs/4-deb-package/version.sh)"
+echo "Building package version ${VERSION}"
+EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}"
./bootstrap
dpkg-buildpackage -rfakeroot -b -uc -us
-ls ../*.deb
-mv ../*.deb /artifacts/
+ls -alh ../*.deb
+mkdir -p /artifacts/exchange/${CI_COMMIT_REF} # Variable comes from CI environment
+mv ../*.deb /artifacts/exchange/${CI_COMMIT_REF}/
diff --git a/contrib/ci/jobs/4-deb-package/version.sh b/contrib/ci/jobs/4-deb-package/version.sh
new file mode 100755
index 000000000..d2647785e
--- /dev/null
+++ b/contrib/ci/jobs/4-deb-package/version.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -ex
+
+BRANCH=$(git name-rev --name-only HEAD)
+if [ -z "${BRANCH}" ]; then
+ exit 1
+else
+ # "Unshallow" our checkout, but only our current branch, and exclude the submodules.
+ git fetch --no-recurse-submodules --tags --depth=1000 origin "${BRANCH}"
+ RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --always --abbrev=0 HEAD || exit 1)
+ commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)"
+ if [ "${commits}" = "0" ]; then
+ git describe --tag HEAD || exit 1
+ else
+ echo $(echo ${RECENT_VERSION_TAG} | sed -r 's/^v//')-${commits}-$(git rev-parse --short=8 HEAD)
+ fi
+fi
diff --git a/contrib/ci/jobs/5-deploy-package/config.ini b/contrib/ci/jobs/5-deploy-package/config.ini
new file mode 100644
index 000000000..8d6409a6e
--- /dev/null
+++ b/contrib/ci/jobs/5-deploy-package/config.ini
@@ -0,0 +1,5 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = False
+CONTAINER_NAME = nixery.dev/shell/rsync
diff --git a/contrib/ci/jobs/5-deploy-package/job.sh b/contrib/ci/jobs/5-deploy-package/job.sh
new file mode 100755
index 000000000..d39cf9987
--- /dev/null
+++ b/contrib/ci/jobs/5-deploy-package/job.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -exuo pipefail
+
+ARTIFACT_PATH="/artifacts/exchange/${CI_COMMIT_REF}/*.deb"
+
+RSYNC_HOST="taler.host.internal"
+RSYNC_PORT=424242
+RSYNC_PATH="incoming_packages/bookworm-taler-ci/"
+RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
+
+
+rsync -vP \
+ --port ${RSYNC_PORT} \
+ ${ARTIFACT_PATH} ${RSYNC_DEST}
diff --git a/contrib/exchange-tos-v0.rst b/contrib/exchange-tos-v0.rst
index f4d0e9987..0a61e756b 100644
--- a/contrib/exchange-tos-v0.rst
+++ b/contrib/exchange-tos-v0.rst
@@ -1,15 +1,13 @@
-Terms of Service
-================
+# Terms of Service
-Last updated: 1.11.2023
+## Last update: 14.12.2023
Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service
through our Internet presence (collectively the “Services”). Before using our
Services, please read the Terms of Service (the “Terms” or the “Agreement”)
carefully.
-Overview
---------
+## Overview
This section provides a brief summary of the highlights of this
Agreement. Please note that when you accept this Agreement, you are accepting
@@ -19,36 +17,35 @@ Wallet’s self-hosted personal payment application. When using the Taler Wallet
to interact with our Services, you are agreeing to our Terms, so please read
carefully.
-Highlights:
-~~~~~~~~~~~
+## Highlights:
+
- You are responsible for keeping the data in your Taler Wallet at all times
- under your control. Any losses arising from you not being in control of
- your private information are your problem.
+under your control. Any losses arising from you not being in control of
+your private information are your problem.
- We will try to transfer funds we hold in escrow for our users to any legal
- recipient to the best of our ability within the limitations of the law and
- our implementation. However, the Services offered today are highly
- experimental and the set of recipients of funds is severely restricted.
+recipient to the best of our ability within the limitations of the law and
+our implementation. However, the Services offered today are highly
+experimental and the set of recipients of funds is severely restricted.
- For our Services, we may charge transaction fees. The specific fee structure
- is provided based on the Taler protocol and should be shown to you when you
- withdraw electronic coins using a Taler Wallet. You agree and understand
- that the Taler protocol allows for the fee structure to change.
+is provided based on the Taler protocol and should be shown to you when you
+withdraw electronic coins using a Taler Wallet. You agree and understand
+that the Taler protocol allows for the fee structure to change.
- You agree to not intentionally overwhelm our systems with requests and
- follow responsible disclosure if you find security issues in our services.
+follow responsible disclosure if you find security issues in our services.
- We cannot be held accountable for our Services not being available due to
- circumstances beyond our control. If we modify or terminate our services,
- we will try to give you the opportunity to recover your funds. However,
- given the experimental state of the Services today, this may not be
- possible. You are strongly advised to limit your use of the Service
- to small-scale experiments expecting total loss of all funds.
+circumstances beyond our control. If we modify or terminate our services,
+we will try to give you the opportunity to recover your funds. However,
+given the experimental state of the Services today, this may not be
+possible. You are strongly advised to limit your use of the Service
+to small-scale experiments expecting total loss of all funds.
These terms outline approved uses of our Services. The Services and these
Terms are still at an experimental stage. If you have any questions or
comments related to this Agreement, please send us a message to
-legal@taler-systems.com. If you do not agree to this Agreement, you must not
+<legal@taler-systems.com>. If you do not agree to this Agreement, you must not
use our Services.
-How you accept this policy
---------------------------
+## How you accept this policy
By sending funds to us (to top-up your Taler Wallet), you acknowledge that you
have read, understood, and agreed to these Terms. We reserve the right to
@@ -62,18 +59,17 @@ signify your acceptance to be bound by the then current Terms. Please check
the effective date above to determine if there have been any changes since you
have last reviewed these Terms.
-Services
---------
+## Services
We will try to transfer funds that we hold in escrow for our users to any
legal recipient to the best of our ability and within the limitations of the
law and our implementation. However, the Services offered today are highly
-experimental and the set of recipients of funds is severely restricted. The
+experimental and the set of recipients of funds is severely restricted. The
Taler Wallet can be loaded by exchanging fiat currencies against electronic
coins. We are providing this exchange service. Once your Taler Wallet is
loaded with electronic coins they can be spent for purchases if the seller is
accepting Taler as a means of payment. We are not guaranteeing that any seller
-is accepting Taler at all or a particular seller. The seller or recipient of
+is accepting Taler at all or a particular seller. The seller or recipient of
deposits of electronic coins must specify the target account, as per the
design of the Taler protocol. They are responsible for following the protocol
and specifying the correct bank account, and are solely liable for any losses
@@ -89,15 +85,13 @@ to do so.
When using our Services, you agree to not take any action that intentionally
imposes an unreasonable load on our infrastructure. If you find security
problems in our Services, you agree to first report them to
-security@taler-systems.com and grant us the right to publish your report. We
+<security@taler-systems.com> and grant us the right to publish your report. We
warrant that we will ourselves publicly disclose any issues reported within 3
months, and that we will not prosecute anyone reporting security issues if
they did not exploit the issue beyond a proof-of-concept, and followed the
above responsible disclosure practice.
-
-Fees
-----
+## Fees
You agree to pay the fees for exchanges and withdrawals completed via the
Taler Wallet ("Fees") as defined by us, which we may change from time to
@@ -106,15 +100,14 @@ for any electronic coin at the time of withdrawal and fixed throughout the
validity period of the respective electronic coin. Your wallet should obtain
and display applicable fees when withdrawing funds. Fees for coins obtained as
change may differ from the fees applicable to the original coin. Wire transfer
-fees that are independent from electronic coins may change annually. You
+fees that are independent from electronic coins may change annually. You
authorize us to charge or deduct applicable fees owed in connection with
deposits, exchanges and withdrawals following the rules of the Taler protocol.
We reserve the right to provide different types of rewards to users either in
the form of discount for our Services or in any other form at our discretion
and without prior notice to you.
-Eligibility and Financial self-responsibility
----------------------------------------------
+## Eligibility and Financial self-responsibility
To be eligible to use our Services, you must be able to form legally binding
contracts or have the permission of your legal guardian. By using our
@@ -128,23 +121,20 @@ by the software to minimize the chances to losse access to or control over
your Wallet data. We will not be liable for any loss or damage arising from
your failure to comply with this paragraph.
-Copyrights and trademarks
--------------------------
+## Copyrights and trademarks
The Taler Wallet is released under the terms of the GNU General Public License
(GNU GPL). You have the right to access, use, and share the Taler Wallet, in
modified or unmodified form. However, the GPL is a strong copyleft license,
which means that any derivative works must be distributed under the same
license terms as the original software. If you have any questions, you should
-review the GNU GPL’s full terms and conditions at
-https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler” itself is a trademark
+review the GNU GPL’s full terms and conditions on [the GNU GPL Licenses page]
+(https://www.gnu.org/licenses/gpl-3.0.en.html). “Taler” itself is a trademark
of Taler Systems SA. You are welcome to use the name in relation to processing
-payments using the Taler protocol, assuming your use is compatible with an
+payments based on the Taler protocol, assuming your use is compatible with an
official release from the GNU Project that is not older than two years.
-
-Limitation of liability & disclaimer of warranties
---------------------------------------------------
+## Limitation of liability & disclaimer of warranties
You understand and agree that we have no control over, and no duty to take any
action regarding: Failures, disruptions, errors, or delays in processing that
@@ -153,22 +143,20 @@ software, and Internet connections; The risk of malicious software being
introduced or found in the software underlying the Taler Wallet; The risk that
third parties may obtain unauthorized access to information stored within your
Taler Wallet, including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any losses,
+encryption keys. You release us from all liability related to any losses,
damages, or claims arising from:
-(a) user error such as forgotten passwords, incorrectly constructed
- transactions;
-(b) server failure or data loss;
-(c) unauthorized access to the Taler Wallet application;
-(d) bugs or other errors in the Taler Wallet software; and
-(e) any unauthorized third party activities, including, but not limited to,
- the use of viruses, phishing, brute forcing, or other means of attack
- against the Taler Wallet. We make no representations concerning any
- Third Party Content contained in or accessed through our Services.
+1. user error such as forgotten passwords, incorrectly constructed transactions;
+2. server failure or data loss;
+3. unauthorized access to the Taler Wallet application;
+4. bugs or other errors in the Taler Wallet software; and
+5. any unauthorized third party activities, including, but not limited to,
+the use of viruses, phishing, brute forcing, or other means of attack
+against the Taler Wallet. We make no representations concerning any
+Third Party Content contained in or accessed through our Services.
Any other terms, conditions, warranties, or representations associated with
-such content, are solely between you and such organizations and/or
-individuals.
+such content, are solely between you and such organizations and/or individuals.
To the fullest extent permitted by applicable law, in no event will we or any
of our officers, directors, representatives, agents, servants, counsel,
@@ -177,19 +165,17 @@ acting, or purporting to act on our behalf (collectively the “Taler Parties”
be liable to you under contract, tort, strict liability, negligence, or any
other legal or equitable theory, for:
-(a) any lost profits, data loss, cost of procurement of substitute goods or
- services, or direct, indirect, incidental, special, punitive, compensatory,
- or consequential damages of any kind whatsoever resulting from:
-
- (i) your use of, or conduct in connection with, our services;
- (ii) any unauthorized use of your wallet and/or private key due to your
- failure to maintain the confidentiality of your wallet;
- (iii) any interruption or cessation of transmission to or from the services; or
- (iv) any bugs, viruses, trojan horses, or the like that are found in the Taler
- Wallet software or that may be transmitted to or through our services by
- any third party (regardless of the source of origination), or
-
-(b) any direct damages.
+1. any lost profits, data loss, cost of procurement of substitute goods or services,
+or direct, indirect, incidental, special, punitive, compensatory,
+or consequential damages of any kind whatsoever resulting from:
+ - your use of, or conduct in connection with, our services;
+ - any unauthorized use of your wallet and/or private key due to your failure
+to maintain the confidentiality of your wallet;
+ - any interruption or cessation of transmission to or from the services; or
+ - any bugs, viruses, trojan horses, or the like that are found in the Taler
+Wallet software or that may be transmitted to or through our services by any
+third party (regardless of the source of origination), or
+2. any direct damages.
These limitations apply regardless of legal theory, whether based on tort,
strict liability, breach of contract, breach of warranty, or any other legal
@@ -214,8 +200,7 @@ implied warranties, so the foregoing disclaimers may not apply to you. This
paragraph gives you specific legal rights and you may also have other legal
rights that vary from state to state.
-Indemnity and Time limitation on claims and Termination
--------------------------------------------------------
+## Indemnity and Time limitation on claims and Termination
To the extent permitted by applicable law, you agree to defend, indemnify, and
hold harmless the Taler Parties from and against any and all claims, damages,
@@ -233,8 +218,7 @@ In the event of termination concerning your use of our Services, your
obligations under this Agreement will still continue.
-Discontinuance of services and Force majeure
---------------------------------------------
+## Discontinuance of services and Force majeure
We may, in our sole discretion and without cost to you, with or without prior
notice, and at any time, modify or discontinue, temporarily or permanently,
@@ -256,9 +240,7 @@ services, failure of equipment and/or software, other catastrophe, or any
other occurrence which is beyond our reasonable control and shall not affect
the validity and enforceability of any remaining provisions.
-
-Governing law, Waivers, Severability and Assignment
----------------------------------------------------
+## Governing law, Waivers, Severability and Assignment
No matter where you’re located, the laws of Switzerland will govern these
Terms. If any provisions of these Terms are inconsistent with any applicable
@@ -287,9 +269,7 @@ prior versions of this Agreement) and every nature between us. Except as
provided for above, any modification to this Agreement must be in writing and
must be signed by both parties.
-
-Questions or comments
----------------------
+## Questions or comments
We welcome comments, questions, concerns, or suggestions. Please send us a
-message on our contact page at legal@taler-systems.com.
+message on our contact page at <legal@taler-systems.com>.
diff --git a/contrib/gana b/contrib/gana
-Subproject 2ccbe6a28c86fb1618d30b3d76d9fd70c95203a
+Subproject ec6c82120f0c3dca85429b86652fd25d3c25a88
diff --git a/contrib/taler-terms-generator.in b/contrib/taler-terms-generator.in
index 33c4bed35..04f7ec3e5 100755
--- a/contrib/taler-terms-generator.in
+++ b/contrib/taler-terms-generator.in
@@ -41,6 +41,7 @@ needs_sphinx = '1.8.5'
extensions = [
'sphinx.ext.todo',
'sphinx.ext.imgmath',
+ 'sphinx_markdown_builder',
]
templates_path = ['_templates']
source_suffix = {
@@ -86,6 +87,14 @@ epub_title = "%TITLE%"
EOF
}
+# Output file given as first argument to stderr, then exit with a failure.
+function failcat ()
+{
+ cat "$1" 1>&2
+ exit 1
+}
+
+
# defaults
AUTHOR="GNU Taler team"
VERSION="exchange-tos-v0"
@@ -198,7 +207,8 @@ then
-d "${BUILDDIR}/.doctrees" \
"${BUILDDIR}" \
"${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/" \
- &> "${BUILDDIR}/add-language.log"
+ &> "${BUILDDIR}/add-language.log" \
+ || failcat "${BUILDDIR}/add-language.log"
if [ -f "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.po" ]
then
msgmerge --lang="${ADD_LANGUAGE}" \
@@ -239,7 +249,8 @@ do
-b xml \
"${BUILDDIR}" \
"${BUILDDIR}/xml" \
- &> "${BUILDDIR}/xml-sphinx.log"
+ &> "${BUILDDIR}/xml-sphinx.log" \
+ || failcat "${BUILDDIR}/xml-sphinx.log"
mv "${BUILDDIR}/xml/${VERSION_BASENAME}.xml" "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.xml"
echo "$VERSION_BASENAME TXT ($LANGUAGE)..." 1>&2
@@ -248,9 +259,18 @@ do
-b text \
"${BUILDDIR}" \
"${BUILDDIR}/txt" \
- &> "${BUILDDIR}/txt-sphinx.log"
+ &> "${BUILDDIR}/txt-sphinx.log" \
+ || failcat "${BUILDDIR}/txt-sphinx.log"
mv "${BUILDDIR}/txt/${VERSION_BASENAME}.txt" "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.txt"
- cp "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.txt" "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.md"
+
+ echo "$VERSION_BASENAME MD ($LANGUAGE)..." 1>&2
+ $LBUILD \
+ -b markdown \
+ "${BUILDDIR}" \
+ "${BUILDDIR}/md" \
+ &> "${BUILDDIR}/md-sphinx.log" \
+ || failcat "${BUILDDIR}/md-sphinx.log"
+ mv "${BUILDDIR}/md/${VERSION_BASENAME}.md" "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.md"
echo "$VERSION_BASENAME HTML ($LANGUAGE)..." 1>&2
# shellcheck disable=SC2090
@@ -258,7 +278,8 @@ do
-b html \
"${BUILDDIR}" \
"${BUILDDIR}/html" \
- &> "${BUILDDIR}/html-sphinx.log"
+ &> "${BUILDDIR}/html-sphinx.log" \
+ || failcat "${BUILDDIR}/html-sphinx.log"
htmlark \
-o "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.html" \
"${BUILDDIR}/html/${VERSION_BASENAME}.html"
@@ -269,7 +290,8 @@ do
-b epub \
"${BUILDDIR}" \
"${BUILDDIR}/epub" \
- &> "${BUILDDIR}/epub-sphinx.log"
+ &> "${BUILDDIR}/epub-sphinx.log" \
+ || failcat "${BUILDDIR}/epub-sphinx.log"
mv "${BUILDDIR}/epub/${VERSION_BASENAME}.epub" "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.epub"
echo "$VERSION_BASENAME PDF ($LANGUAGE)..." 1>&2
@@ -279,13 +301,15 @@ do
-D latex_paper_size="${PAPER}" \
"${BUILDDIR}" \
"${BUILDDIR}/pdf" \
- &> "${BUILDDIR}/pdf-sphinx.log"
+ &> "${BUILDDIR}/pdf-sphinx.log" \
+ || failcat "${BUILDDIR}/pdf-sphinx.log"
# We pipe in /dev/null in case latexmk
# asks for input and would hang otherwise.
make \
-C "${BUILDDIR}/pdf" \
all-pdf \
- < /dev/null &> "${BUILDDIR}/pdf-latex.log"
+ < /dev/null &> "${BUILDDIR}/pdf-latex.log" \
+ || failcat "${BUILDDIR}/pdf-latex.log"
mv "${BUILDDIR}/pdf/${VERSION_BASENAME}.pdf" "${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}.pdf"
done
diff --git a/contrib/wallet-core b/contrib/wallet-core
-Subproject 53472cb936c69a6830c48d4c8d79d43cb19e37e
+Subproject ec95723a68d36620aa66109c329437612383830