Skip to content

Commit

Permalink
Merge branch 'electron-cash' into electron-cash-satochip-v4.2.6-0.12
Browse files Browse the repository at this point in the history
# Conflicts:
#	contrib/build-linux/appimage/Dockerfile_ub1804
#	contrib/build-wine/docker/Dockerfile
  • Loading branch information
Toporin committed Feb 8, 2022
2 parents 64780e7 + d5217ed commit 74e56bd
Show file tree
Hide file tree
Showing 140 changed files with 3,838 additions and 1,215 deletions.
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ include *.py
include electron-cash
include contrib/requirements/requirements.txt
include contrib/requirements/requirements-hw.txt
include contrib/requirements/requirements-binaries.txt
recursive-include electroncash *.py
recursive-include electroncash_gui *.py
recursive-include electroncash_plugins *.py
Expand Down
97 changes: 97 additions & 0 deletions RELEASE-NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -1134,3 +1134,100 @@ and there is no warning message.
- Various internal bugfixes and code refactoring #2087 #2095 #2097 #2117 #2140
#2143 #2151 #2155 #2156 #2158 #2160 #2154 #2176 (Daniel Gonzalez Gasull,
Calin Culianu, Axel Gembe, Mark B Lundeberg, Malcolm Smith, Pierre K, Toporin)

# RELEASE NOTES 4.2.5

- appimage build: build was failing on some host systems #2181 (SomberNight)
- Requirements: Restring PyQt5 version to >=5.12.3 and < 5.15.3 (Calin Culianu)
- Re-enabled PyQt 5.15.3 (Calin Culianu)
- OSX Fix: Allow for Mojave+ dark mode to work (requires Qt 5.15.2) (Calin Culianu)
- NSIS: Wait for the uninstaller to finish #2184 (Axel Gembe)
- NSIS: Ensure the process is not running when (un)installing #2184 (Axel Gembe)
- Servers: Add electroncash.de scalenet server #2186 (Axel Gembe)
- Servers: Fix indentation #2187 (Axel Gembe)
- Build: Use git version with patch for CVE-2021-21300 #2191 (Axel Gembe)
- setup.py: Fix typo #2192 (Axel Gembe)
- AppImage: Include libxcb into the image #2197 (Axel Gembe)
- Add requirements-binaries.txt to manifest #2200 (Jonas Lundqvist)
- Install Wizard: Add derivation path scanner #2199 (Jonas Lundqvist)
- Tweaks and fixups to the DerivationPathScanner (Calin Culianu)
- Build: Add cffi to the requirements #2203 (Axel Gembe)
- Android: add new layout screens for the choice between standard and multi-sig
wallet. (Aldin Kovačević)
- Android: reorganize code for creating a standard wallet.(Aldin Kovačević)
- Tor: Update to version 0.4.5.7 with some patches #2205 (Axel Gembe)
- OpenSSL: Update to version 1.1.1j #2206 (Axel Gembe)
- Skip path derivation scan if seed is unavailable #2208 (Jonas Lundqvist)
- Shorten boolean expression, use double quotes #2209 (Daniel Gonzalez Gasull)
- Style changes (from backport), small refactorings #2211 (Daniel Gonzalez Gasull)
- Fix PR 2211 #2218 (agilewalker)
- Add electrs.electroncash.de #2222 (Georg Engelmann)
- Removed unreachable line of code #2224 #2234 (Daniel Gonzalez Gasull)
- OpenSSL: Update to version 1.1.1k #2225 (Axel Gembe)
- Python: Update to version 3.8.9 #2226 (Axel Gembe)
- Fixed typo #2227 (Kevin Nowaczyk)
- AppImage: Update OpenSSL to version 1.1.1-1ubuntu2.1~18.04.9
#2231 (Axel Gembe)
- Android: Added initial UI for multisg wallet creation. (Aldin Kovačević)
- Build: Verify the Python checksums #2239 (Axel Gembe)
- Android: Various commits to support multi-sig wallets (Aldin Kovačević)
- Remove CPFP (child pays for parent) (Calin Culianu)
- Update servers.json (Calin Culianu)
- Android: Using 'get_tx_info' to get the status of the transaction.
(Aldin Kovačević)
- Make make_locale check exit status of gettext commands #2259 (Malcolm Smith)
- Android: fix duplicate requirement, add missing string (Malcolm Smith)
- Android: update to Gradle 6.5 and Android Gradle plugin 4.1.2 (Malcolm Smith)
- Android: Added multisig wallets to the Android application #2279
(Aldin Kovačević)
- Look for external plugins in ELECTRON_CASH_PATH #2301 (Jonas Lundqvist)
- Support disabling JSON-RPC server in Daemon #2305 (MrNaif2018)
- [fusion] Increase 'fuzz fee' to be tier/10^6 #1984 (Mark B. Lundeberg)
- Add feerate argument to payto/paytomany #2306 (MrNaif2018)
- Android: catch overflow errors in AmountBox; closes #2288 (Malcolm Smith)
- Android: restore thousands commas in read-only fiat amounts; closes #2246
(Malcolm Smith)
- Android: Make PaymentRequest.has_expired always return a boolean; closes #2298
(Malcolm Smith)
- Android: Add missing interface_lock in Network.get_server_height; closes #2173
(Malcolm Smith)
- iOS: Support OP_RETURN transaction outputs #2307 (JOE LOYA ⚡️)
- Android: many, many, many commits fixing many things related to v4.2.4-4
(Malcolm Smith)
- CashFusion: Add "spend only fused coins" to Send tab #2316 (Calin Culianu)
- Android: add sweep private keys command (Malcolm Smith)
- Fix daemon running in non-jsonrpc mode (MrNaif2018)
- Various Linux and Windows build fixups (Calin Culianu)
- Fixed build for OSX Mojave (Calin Culianu)
- Make OpenAlias accept 'bitcoincash:' prefix #2321 (Karol Trzeszczkowski)
- Updated checkpoints for mainnet, testnet3, and testnet4 (Calin Culianu)
- Removed support for ABC's "TaxCoin" (Calin Culianu)
- CashFusion Server: Allow testnets to have unlimited connections per IP
(Calin Culianu)
- CashFusion: Add depth checks #2325 (Jonas Lundqvist, Calin Culianu)
- CashFusion: Added a "Fusion Status" column to coins tab (Calin Culianu)
- macOS: Fix popup_widget display if running in dark mode (Calin Culianu)
- Remove bitcoin.com block explorer #2328 (Jonas Lundqvist)
- CashFusion: Clarify status of coins on fused address #2329 (Jonas Lundqvist)
- Add more accurate exchange rate for ARS #2326 (Santiago Chiabotto)

# RELEASE NOTES 4.2.6

- History list - Made fiat balance changes also appear in red (scinklja)
- Implement unconfirmed invoices status (MrNaif2018)
- Add ability to forget config on exit (MrNaif2018)
- Fire payment_received event on confirmation too (MrNaif2018)
- macOS: Set minimum system version to 10.14.0 in Info.plist (cculianu)
- Add native introspection opcodes (upcoming May 2022 additions to
script) #2339 (cculianu)
- CashFusion: Default fusion depth, if checked, to 3 (cculianu)
- Trivial fix: Allow plugins to use qt/util.py filename_field (acidsploit)
- Added electrum.bitcoinverde.org to server list (Josh Green)
- Fixups for iOS 15+ (cculianu)
- Android: Remove pycparser from requirements-android.txt (Malcolm Smith)
- Android: improve string conversion script, and make it detect some errors
(Malcolm Smith)
- Fixups for Python 3.10 (cculianu)
- add kisternet v3 onion to testnet (jkister)
- Qt: Add cleanup code to avoid random segfault on exit (cculianu)
- AppImage: Fixed to work on Debian and Tails #2245 (Axel Gembe)
65 changes: 42 additions & 23 deletions android/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,49 @@
# Electron Cash Android app

To start developing the app, just open this directory in Android Studio.


## Requirements

You'll need to set up the following things before building the app:

* Python 3.8 must be on the PATH under the name `python3.8` or `python3` on Linux/Mac, or `py`
on Windows, and it must have the packages listed in `build-requirements.txt`.
* The commands `xgettext` and `msgfmt` must be on the PATH. On Windows, the easiest way to
get these is to install MSYS2.


## Strings

Most user interface strings are reused from the desktop and iOS apps. Android-specific strings
should be added to `app/src/main/python/electroncash_gui/android/strings.py`.

The Gradle task `generateStrings` takes all localized strings in the repository, and their
translations from Crowdin, and converts them into `strings.xml` format so they can be accessed
through the Android resource API. The string IDs are generated from the first 2 words of each
string, plus as many more words as necessary to make them unique. So if any of the source
strings change, you may need to update ID references in the code.

The `generateStrings` task is run automatically the first time you build the app, and whenever
you edit the `strings.py` file mentioned above. If you need to pick up new strings from
anywhere else in the repository, run the task `regenerateStrings`.

Changes on Crowdin won't be picked up until a Crowdin project manager has run the "build"
command (green button on the project home page). If you're not a project manager but you want
to test a new translation, or fix an invalid translation which is blocking the build, you can
do this:

* To prevent your changes being overwritten, temporarily edit the `generateStrings` block in
app/build.gradle to add the line `args "--no-download"`. Do not commit this change!
* Edit the string in the .po file under electroncash/locale.
* Run the task `regenerateStrings`, then build and test the app.
* Once you're happy with the result, submit the string on Crowdin.
* Ask a project manager to approve the string and run the "build" command.


## Release

The Android app can be built on any OS which can run the Android development tools. However,
the following automated process is available for Linux x86-64:
For public releases, the following reproducible build process should be run on Linux x86-64:

If necessary, install Docker using the [instructions on its
website](https://docs.docker.com/install/#supported-platforms).
Expand All @@ -18,24 +58,3 @@ following configuration:
Run `build.sh`. The APK will be generated in `release` in this directory.

Between builds it may be helpful to free up disk space with the command `docker system prune`.

## Development

To start developing the app, just open this directory in Android Studio.

### Strings

For user interface text, the app uses the standard Android string resource system. The
`strings.xml` files are generated by the Gradle task `generateStrings`, which in turn calls the
script `contrib/make_locale` to obtain strings from elsewhere in the repository and Crowdin.

Android-specific strings should be added to
`app/src/main/python/electroncash_gui/android/strings.py`.

`generateStrings` is run automatically the first time you build the app, and whenever you edit
`strings.py`. If you need to pick up new strings from any of the other source files, run the
task `regenerateStrings`.

The Android string IDs are generated from the first 2 words of each string, plus as many more
words as necessary to make them unique. So if any of the source strings change, you may need to
update ID references in the code.
12 changes: 7 additions & 5 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ android {
if (ecVersion == null) {
throw new GradleException("Couldn't find version number")
}
def BUILD_NUM = 3 // Distinguish multiple releases with the same version number.
def BUILD_NUM = 5 // Distinguish multiple releases with the same version number.
versionName "$ecVersion-$BUILD_NUM"
def verParsed = ecVersion.split(/\./).collect { Integer.parseInt(it) }
versionCode((verParsed[0] * 1000000) + (verParsed[1] * 10000) + (verParsed[2] * 100) +
Expand Down Expand Up @@ -64,7 +64,7 @@ android {
python {
srcDir REPO_ROOT
include "electroncash/"
exclude "electroncash/locale/"
exclude "**/*.po", "**/*.pot" // The .mo files are used at runtime.
include "electroncash_gui/__init__.py"
include "electroncash_plugins/__init__.py"

Expand Down Expand Up @@ -136,7 +136,9 @@ afterEvaluate {
} else {
executable "python$pyVersion"
}
args scriptFilename, STRINGS_DIR
args scriptFilename
args "--out", STRINGS_DIR
args "--ignore-unknown-keywords", "tor_binary_name_capitalized" // See #1989.
}
for (variant in android.applicationVariants) {
tasks.getByName("generate${variant.name.capitalize()}Resources")
Expand All @@ -150,7 +152,7 @@ afterEvaluate {
dependsOn ("deleteStrings", "generateStrings")
}

// Remove unnecessary requirements (#2162).
// Remove unnecessary or duplicate requirements.
task("generateRequirementsTxt") {
inputs.file "$REPO_ROOT/contrib/deterministic-build/requirements.txt"
outputs.file REQUIREMENTS_TXT
Expand All @@ -160,7 +162,7 @@ afterEvaluate {
file(inputs.files.singleFile).eachLine { line ->
buffer.append(line + "\n")
if (!line.endsWith("\\")) {
if (!(buffer =~ /^(pip|QDarkStyle|setuptools|wheel)==/)) {
if (!(buffer =~ /^(cffi|pip|QDarkStyle|setuptools|wheel)==/)) {
output.print(buffer)
}
buffer.setLength(0)
Expand Down
Loading

0 comments on commit 74e56bd

Please sign in to comment.