From 144d373083438ce84edc76c2bedf66d0a86afc6d Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 7 Dec 2023 17:45:33 +0900 Subject: -fix dev manual build issues --- checklist-demo-upgrade.rst | 238 ++++++++++++++++++++++----------------------- checklist-release.rst | 211 ++++++++++++++++++++-------------------- taler-developer-manual.rst | 16 +-- 3 files changed, 232 insertions(+), 233 deletions(-) diff --git a/checklist-demo-upgrade.rst b/checklist-demo-upgrade.rst index abf2fc29..c45c1847 100644 --- a/checklist-demo-upgrade.rst +++ b/checklist-demo-upgrade.rst @@ -1,22 +1,22 @@ -################################ GNU Taler Demo Upgrade Checklist -################################ +-------------------------------- -.. |check| raw:: html +.. |democheck| raw:: html + Domains -------- +^^^^^^^ The checklist uses the ``demo.taler.net`` domains. However, the same sandcastle demo can also be hosted at other domains. The same instructions should apply. Post-upgrade checks -------------------- +^^^^^^^^^^^^^^^^^^^ -- |check| Run the headless wallet to check that services are actually working: +- |democheck| Run the headless wallet to check that services are actually working: .. code-block:: console @@ -24,7 +24,7 @@ Post-upgrade checks Wallets -------- +^^^^^^^ We consider the following published wallets to be "production wallets": @@ -35,149 +35,149 @@ We consider the following published wallets to be "production wallets": * iOS: Apple Store / Testflight Basics ------- - -- |check| Visit https://demo.taler.net/ to see if the landing page is displayed correctly -- |check| landing language switcher -- |check| Visit the wallet installation page, install the wallet -- |check| see if the wallet presence indicator is updated correctly (in browsers). -- |check| Visit https://bank.demo.taler.net/, register a new user -- |check| bank language switcher -- |check| bank logout -- |check| bank login -- |check| bank-integrated withdraw process, abort in bank -- |check| transaction history: delete pending withdraw -- |check| do bank-integrated withdraw process (5 KUDOS) -- |check| do wallet-initiated withdraw process (5 KUDOS) -- |check| withdraw process of large amount (20 KUDOS) runs into KYC check -- |check| fail KYC check (if possible for the given setup) -- |check| pass KYC check (tests that 2nd attempt is possible) -- |check| withdraw process of very large amount (50 KUDOS) runs into AML check -- |check| visit exchange SPA, create AML officer key -- |check| register AML officer key with offline tool (if possible) -- |check| allow withdraw process blocked on AML to proceed (if possible) +^^^^^^ + +- |democheck| Visit https://demo.taler.net/ to see if the landing page is displayed correctly +- |democheck| landing language switcher +- |democheck| Visit the wallet installation page, install the wallet +- |democheck| see if the wallet presence indicator is updated correctly (in browsers). +- |democheck| Visit https://bank.demo.taler.net/, register a new user +- |democheck| bank language switcher +- |democheck| bank logout +- |democheck| bank login +- |democheck| bank-integrated withdraw process, abort in bank +- |democheck| transaction history: delete pending withdraw +- |democheck| do bank-integrated withdraw process (5 KUDOS) +- |democheck| do wallet-initiated withdraw process (5 KUDOS) +- |democheck| withdraw process of large amount (20 KUDOS) runs into KYC check +- |democheck| fail KYC check (if possible for the given setup) +- |democheck| pass KYC check (tests that 2nd attempt is possible) +- |democheck| withdraw process of very large amount (50 KUDOS) runs into AML check +- |democheck| visit exchange SPA, create AML officer key +- |democheck| register AML officer key with offline tool (if possible) +- |democheck| allow withdraw process blocked on AML to proceed (if possible) Exchange AML SPA ----------------- +^^^^^^^^^^^^^^^^ -- |check| enter non-trivial form, change status to frozen -- |check| check account status in history is now frozen and shows in that category -- |check| enter another form, change status to normal, increase AML threshold -- |check| view forms in history, view previously submitted form -- |check| check account status in history is now normal and shows in that category -- |check| log out -- |check| check log in succeeds with correct password -- |check| check log in fails from different browser with same password +- |democheck| enter non-trivial form, change status to frozen +- |democheck| check account status in history is now frozen and shows in that category +- |democheck| enter another form, change status to normal, increase AML threshold +- |democheck| view forms in history, view previously submitted form +- |democheck| check account status in history is now normal and shows in that category +- |democheck| log out +- |democheck| check log in succeeds with correct password +- |democheck| check log in fails from different browser with same password Blog demo ---------- +^^^^^^^^^ -- |check| Visit https://shop.demo.taler.net/ -- |check| blog page article list renders -- |check| payment for blog article -- |check| Verify that the balance in the wallet was updated correctly. -- |check| Go back to https://shop.demo.taler.net/ and click on the same article +- |democheck| Visit https://shop.demo.taler.net/ +- |democheck| blog page article list renders +- |democheck| payment for blog article +- |democheck| Verify that the balance in the wallet was updated correctly. +- |democheck| Go back to https://shop.demo.taler.net/ and click on the same article link. Verify that the article is shown and **no** repeated payment is requested. -- |check| Open the fulfillment page from the previous step in an anonymous browsing session +- |democheck| Open the fulfillment page from the previous step in an anonymous browsing session (without the wallet installed) and verify that it requests a payment again. -- |check| Delete cookies on https://shop.demo.taler.net/ and click on the same article again. +- |democheck| Delete cookies on https://shop.demo.taler.net/ and click on the same article again. Verify that the wallet detects that the article has already purchased and successfully redirects to the article without spending more money. -- |check| payment for other blog article -- |check| refund of 2nd blog article (button at the end) -- |check| wallet transaction history rendering -- |check| delete refund history entry; check original purchase entry was also deleted -- |check| payment for other blog article -- |check| refund of 3rd blog article (button at the end) -- |check| wallet transaction history rendering -- |check| delete 3rd block purchase history entry; check refund entry was also deleted +- |democheck| payment for other blog article +- |democheck| refund of 2nd blog article (button at the end) +- |democheck| wallet transaction history rendering +- |democheck| delete refund history entry; check original purchase entry was also deleted +- |democheck| payment for other blog article +- |democheck| refund of 3rd blog article (button at the end) +- |democheck| wallet transaction history rendering +- |democheck| delete 3rd block purchase history entry; check refund entry was also deleted Donation demo -------------- - -- |check| Reset wallet -- |check| Withdraw age-restricted coins (< 14) -- |check| Try to make a donation on https://donations.demo.taler.net/, fail due to age-restriction -- |check| Withdraw age-restricted coins (>= 14) -- |check| Make a donation on https://donations.demo.taler.net/ -- |check| Make another donation with the same parameters and verify +^^^^^^^^^^^^^ + +- |democheck| Reset wallet +- |democheck| Withdraw age-restricted coins (< 14) +- |democheck| Try to make a donation on https://donations.demo.taler.net/, fail due to age-restriction +- |democheck| Withdraw age-restricted coins (>= 14) +- |democheck| Make a donation on https://donations.demo.taler.net/ +- |democheck| Make another donation with the same parameters and verify that the payment is requested again, instead of showing the previous fulfillment page. Merchant SPA ------------- - -- |check| test SPA loads -- |check| try to login with wrong password -- |check| try to login with correct password -- |check| create instance, check default is set to cover (STEFAN) fees -- |check| modify instance -- |check| add bank account -- |check| edit bank account -- |check| remove bank account -- |check| check order creation fails without bank account -- |check| add bank account again -- |check| add product with 1 in stock and preview image -- |check| add "advanced" order with inventory product and a 2 minute wire delay -- |check| claim order, check available stock goes down in inventory -- |check| create 2nd order, check this fails due to missing inventory -- |check| pay for 1st order with wallet -- |check| check transaction history for preview image -- |check| trigger partial refund -- |check| accept refund with wallet -- |check| create template with fixed summary, default editable price -- |check| scan template QR code, edit price and pay -- |check| add TOTP device (using some TOTP app to share secret with) -- |check| edit template to add TOTP device, set price to fixed, summary to be entered -- |check| scan template QR code, edit summary and pay -- |check| check displayed TOTP code matches TOTP app -- |check| create reserve for rewards -- |check| do manual wire transfer in bank to establish reserve funding -- |check| check that partially refunded order is marked as awaiting wire transfer -- |check| check bank wired funds to merchant (if needed, wait) -- |check| add bank wire transfer manually to backend -- |check| change settings for merchant to not pay for (STEFAN) fees -- |check| create and pay for another order with 1 minute wire transfer delay -- |check| edit bank account details, adding revenue facade with credentials -- |check| wait and check if wire transfer is automatically imported -- |check| check that orders are marked as completed +^^^^^^^^^^^^ + +- |democheck| test SPA loads +- |democheck| try to login with wrong password +- |democheck| try to login with correct password +- |democheck| create instance, check default is set to cover (STEFAN) fees +- |democheck| modify instance +- |democheck| add bank account +- |democheck| edit bank account +- |democheck| remove bank account +- |democheck| check order creation fails without bank account +- |democheck| add bank account again +- |democheck| add product with 1 in stock and preview image +- |democheck| add "advanced" order with inventory product and a 2 minute wire delay +- |democheck| claim order, check available stock goes down in inventory +- |democheck| create 2nd order, check this fails due to missing inventory +- |democheck| pay for 1st order with wallet +- |democheck| check transaction history for preview image +- |democheck| trigger partial refund +- |democheck| accept refund with wallet +- |democheck| create template with fixed summary, default editable price +- |democheck| scan template QR code, edit price and pay +- |democheck| add TOTP device (using some TOTP app to share secret with) +- |democheck| edit template to add TOTP device, set price to fixed, summary to be entered +- |democheck| scan template QR code, edit summary and pay +- |democheck| check displayed TOTP code matches TOTP app +- |democheck| create reserve for rewards +- |democheck| do manual wire transfer in bank to establish reserve funding +- |democheck| check that partially refunded order is marked as awaiting wire transfer +- |democheck| check bank wired funds to merchant (if needed, wait) +- |democheck| add bank wire transfer manually to backend +- |democheck| change settings for merchant to not pay for (STEFAN) fees +- |democheck| create and pay for another order with 1 minute wire transfer delay +- |democheck| edit bank account details, adding revenue facade with credentials +- |democheck| wait and check if wire transfer is automatically imported +- |democheck| check that orders are marked as completed Survey/Rewards --------------- +^^^^^^^^^^^^^^ -- |check| Visit https://survey.demo.taler.net/ and receive a reward. -- |check| Verify that the survey stats page (https://survey.demo.taler.net/survey-stats) is working, +- |democheck| Visit https://survey.demo.taler.net/ and receive a reward. +- |democheck| Verify that the survey stats page (https://survey.demo.taler.net/survey-stats) is working, and that the survey reserve has sufficient funds. P2P payments ------------- +^^^^^^^^^^^^ -- |check| generating push payment (to self is OK) -- |check| accepting push payment (from self is OK) -- |check| generating pull payment (to self is OK) -- |check| accepting pull payment (from self is OK) -- |check| sending money back from wallet to bank account -- |check| wallet transaction history rendering -- |check| delete history entry +- |democheck| generating push payment (to self is OK) +- |democheck| accepting push payment (from self is OK) +- |democheck| generating pull payment (to self is OK) +- |democheck| accepting pull payment (from self is OK) +- |democheck| sending money back from wallet to bank account +- |democheck| wallet transaction history rendering +- |democheck| delete history entry Shutdown --------- - -- |check| create two full wallets, fill one only via (a large) P2P transfer -- |check| revoke highest-value denomination -- |check| spend money in a wallet such that the balance falls below highest denomination value -- |check| revoke all remaining denominations -- |check| fail to spend any more money -- |check| if wallet was filled via p2p payments, wallet asks for target deposit account (exchange going out of business) -- |check| enter bank account (if possible) -- |check| wallet balance goes to zero -- |check| specified bank account receives remaining balance +^^^^^^^^ + +- |democheck| create two full wallets, fill one only via (a large) P2P transfer +- |democheck| revoke highest-value denomination +- |democheck| spend money in a wallet such that the balance falls below highest denomination value +- |democheck| revoke all remaining denominations +- |democheck| fail to spend any more money +- |democheck| if wallet was filled via p2p payments, wallet asks for target deposit account (exchange going out of business) +- |democheck| enter bank account (if possible) +- |democheck| wallet balance goes to zero +- |democheck| specified bank account receives remaining balance diff --git a/checklist-release.rst b/checklist-release.rst index a9008729..a51c165d 100644 --- a/checklist-release.rst +++ b/checklist-release.rst @@ -1,142 +1,141 @@ -############################ -GNU Taler Release Checklists -############################ +GNU Taler Release Checklist +--------------------------- -.. |check| raw:: html +.. |releasecheck| raw:: html For exchange: -- |check| no compiler warnings at "-Wall" with gcc -- |check| no compiler warnings at "-Wall" with clang -- |check| ensure Coverity static analysis passes -- |check| make check. -- |check| make dist, make check on result of 'make dist'. -- |check| Change version number in configure.ac. -- |check| update man pages / info page documentation (prebuilt branch) -- |check| make dist for release -- |check| verify dist builds from source -- |check| upgrade 'demo.taler.net' -- |check| run :doc:`demo upgrade checklist ` -- |check| tag repo. -- |check| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages -- |check| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) -- |check| change 'demo.taler.net' deployment to use new tag. -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| no compiler warnings at "-Wall" with gcc +- |releasecheck| no compiler warnings at "-Wall" with clang +- |releasecheck| ensure Coverity static analysis passes +- |releasecheck| make check. +- |releasecheck| make dist, make check on result of 'make dist'. +- |releasecheck| Change version number in configure.ac. +- |releasecheck| update man pages / info page documentation (prebuilt branch) +- |releasecheck| make dist for release +- |releasecheck| verify dist builds from source +- |releasecheck| upgrade 'demo.taler.net' +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| tag repo. +- |releasecheck| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages +- |releasecheck| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) +- |releasecheck| change 'demo.taler.net' deployment to use new tag. +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha For merchant (C backend): -- |check| no compiler warnings at "-Wall" with gcc -- |check| no compiler warnings at "-Wall" with clang -- |check| ensure Coverity static analysis passes -- |check| make check. -- |check| make dist, make check on result of 'make dist'. -- |check| update SPA (prebuilt branch) -- |check| Change version number in configure.ac. -- |check| make dist for release. -- |check| verify dist builds from source -- |check| upgrade 'demo.taler.net' -- |check| run :doc:`demo upgrade checklist ` -- |check| tag repo. -- |check| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages -- |check| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) -- |check| change 'demo.taler.net' deployment to use new tag. -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| no compiler warnings at "-Wall" with gcc +- |releasecheck| no compiler warnings at "-Wall" with clang +- |releasecheck| ensure Coverity static analysis passes +- |releasecheck| make check. +- |releasecheck| make dist, make check on result of 'make dist'. +- |releasecheck| update SPA (prebuilt branch) +- |releasecheck| Change version number in configure.ac. +- |releasecheck| make dist for release. +- |releasecheck| verify dist builds from source +- |releasecheck| upgrade 'demo.taler.net' +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| tag repo. +- |releasecheck| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages +- |releasecheck| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) +- |releasecheck| change 'demo.taler.net' deployment to use new tag. +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha For sync: -- |check| no compiler warnings at "-Wall" with gcc -- |check| no compiler warnings at "-Wall" with clang -- |check| ensure Coverity static analysis passes -- |check| make check. -- |check| make dist, make check on result of 'make dist'. -- |check| Change version number in configure.ac. -- |check| make dist for release -- |check| verify dist builds from source -- |check| upgrade 'demo.taler.net' -- |check| run :doc:`demo upgrade checklist ` -- |check| tag repo. -- |check| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages -- |check| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) -- |check| change 'demo.taler.net' deployment to use new tag. -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| no compiler warnings at "-Wall" with gcc +- |releasecheck| no compiler warnings at "-Wall" with clang +- |releasecheck| ensure Coverity static analysis passes +- |releasecheck| make check. +- |releasecheck| make dist, make check on result of 'make dist'. +- |releasecheck| Change version number in configure.ac. +- |releasecheck| make dist for release +- |releasecheck| verify dist builds from source +- |releasecheck| upgrade 'demo.taler.net' +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| tag repo. +- |releasecheck| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages +- |releasecheck| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) +- |releasecheck| change 'demo.taler.net' deployment to use new tag. +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha For taler-mdb: -- |check| no compiler warnings at "-Wall" with gcc -- |check| ensure Coverity static analysis passes -- |check| Change version number in configure.ac. -- |check| make dist for release. -- |check| tag repo. -- |check| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages -- |check| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| no compiler warnings at "-Wall" with gcc +- |releasecheck| ensure Coverity static analysis passes +- |releasecheck| Change version number in configure.ac. +- |releasecheck| make dist for release. +- |releasecheck| tag repo. +- |releasecheck| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages +- |releasecheck| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha For taler-twister: -- |check| no compiler warnings at "-Wall" with gcc -- |check| no compiler warnings at "-Wall" with clang -- |check| ensure Coverity static analysis passes -- |check| make check. -- |check| make dist, make check on result of 'make dist'. -- |check| Change version number in configure.ac. -- |check| make dist for release. -- |check| verify dist builds from source -- |check| upgrade 'demo.taler.net' -- |check| run :doc:`demo upgrade checklist ` -- |check| tag repo. -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| no compiler warnings at "-Wall" with gcc +- |releasecheck| no compiler warnings at "-Wall" with clang +- |releasecheck| ensure Coverity static analysis passes +- |releasecheck| make check. +- |releasecheck| make dist, make check on result of 'make dist'. +- |releasecheck| Change version number in configure.ac. +- |releasecheck| make dist for release. +- |releasecheck| verify dist builds from source +- |releasecheck| upgrade 'demo.taler.net' +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| tag repo. +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha For libeufin: -- |check| update SPA of bank -- |check| build libeufin -- |check| upgrade 'demo.taler.net' -- |check| run :doc:`demo upgrade checklist ` -- |check| make dist for release. -- |check| verify dist builds from source -- |check| tag repo. -- |check| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages -- |check| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) -- |check| change 'demo.taler.net' deployment to use new tag. -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| update SPA of bank +- |releasecheck| build libeufin +- |releasecheck| upgrade 'demo.taler.net' +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| make dist for release. +- |releasecheck| verify dist builds from source +- |releasecheck| tag repo. +- |releasecheck| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages +- |releasecheck| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) +- |releasecheck| change 'demo.taler.net' deployment to use new tag. +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha For Python merchant frontend: -- |check| upgrade 'demo.taler.net' -- |check| run :doc:`demo upgrade checklist ` -- |check| change 'demo.taler.net' deployment to use new tag. +- |releasecheck| upgrade 'demo.taler.net' +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| change 'demo.taler.net' deployment to use new tag. Wallet-core: -- |check| build wallet -- |check| run integration test -- |check| make dist for release. -- |check| verify dist builds from source -- |check| tag repo. -- |check| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages -- |check| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) -- |check| change 'demo.taler.net' deployment to use new tag. -- |check| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha +- |releasecheck| build wallet +- |releasecheck| run integration test +- |releasecheck| make dist for release. +- |releasecheck| verify dist builds from source +- |releasecheck| tag repo. +- |releasecheck| use 'deployment.git/packaging/\*-docker/' to build Debian and Ubuntu packages +- |releasecheck| upload packages to 'deb.taler.net' (note: only Florian/Christian can sign) +- |releasecheck| change 'demo.taler.net' deployment to use new tag. +- |releasecheck| Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha Android-Wallet: -- |check| build wallet -- |check| run :doc:`demo upgrade checklist ` -- |check| tag repo. -- |check| upload new wallet release to app store +- |releasecheck| build wallet +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| tag repo. +- |releasecheck| upload new wallet release to app store Webextension-Wallet: -- |check| build wallet -- |check| run :doc:`demo upgrade checklist ` -- |check| tag repo. -- |check| upload new wallet release to app store +- |releasecheck| build wallet +- |releasecheck| run :doc:`demo upgrade checklist ` +- |releasecheck| tag repo. +- |releasecheck| upload new wallet release to app store Release announcement: -- |check| Update bug tracker (mark release, resolved -> closed) -- |check| Send announcement to taler@gnu.org -- |check| Send announcement to info-gnu@gnu.org (major releases only) -- |check| Send announcement to coordinator@translationproject.org +- |releasecheck| Update bug tracker (mark release, resolved -> closed) +- |releasecheck| Send announcement to taler@gnu.org +- |releasecheck| Send announcement to info-gnu@gnu.org (major releases only) +- |releasecheck| Send announcement to coordinator@translationproject.org diff --git a/taler-developer-manual.rst b/taler-developer-manual.rst index 906e2be3..1d35e1e0 100644 --- a/taler-developer-manual.rst +++ b/taler-developer-manual.rst @@ -651,10 +651,8 @@ Releases .. include:: checklist-release.rst -Release Process and Checklists ------------------------------- - -Please use the :doc:`release checklist ` +Release Process +--------------- This document describes the process for releasing a new version of the various Taler components to the official GNU mirrors. @@ -663,10 +661,11 @@ The following components are published on the GNU mirrors - taler-exchange (exchange.git) - taler-merchant (merchant.git) -- talerdonations (donations.git) -- talerblog (blog.git) -- taler-bank (bank.git) -- taler-wallet-webex (wallet-webex.git) +- sync (sync.git) +- taler-mdb (taler-mdb.git) +- libeufin (libeufin.git) +- challenger (challenger.git) +- wallet-core (wallet-core.git) Tagging ------- @@ -769,6 +768,7 @@ Directive file: version: 1.2 directory: taler filename: taler-exchange-0.1.0.tar.gz + symlink: taler-exchange-0.1.0.tar.gz taler-exchange-latest.tar.gz Upload the files in **binary mode** to the ftp servers. -- cgit v1.2.3