diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ci/Containerfile | 19 | ||||
-rwxr-xr-x | contrib/ci/ci.sh | 34 | ||||
-rw-r--r-- | contrib/ci/jobs/0-codespell/dictionary.txt | 3 | ||||
-rwxr-xr-x | contrib/ci/jobs/0-codespell/job.sh | 95 | ||||
-rwxr-xr-x | contrib/ci/jobs/1-build/build.sh | 3 | ||||
-rw-r--r-- | contrib/ci/jobs/2-test/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/2-test/test.sh | 3 | ||||
-rw-r--r-- | contrib/ci/jobs/3-docs/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/4-deb-package/job.sh | 21 | ||||
-rwxr-xr-x | contrib/ci/jobs/4-deb-package/version.sh | 17 | ||||
-rw-r--r-- | contrib/ci/jobs/5-deploy-package/config.ini | 5 | ||||
-rwxr-xr-x | contrib/ci/jobs/5-deploy-package/job.sh | 14 | ||||
-rw-r--r-- | contrib/exchange-tos-v0.rst | 138 | ||||
m--------- | contrib/gana | 0 | ||||
-rwxr-xr-x | contrib/taler-terms-generator.in | 40 | ||||
m--------- | contrib/wallet-core | 0 |
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 |