From ee1f2ec889fe64dc585f38041c65e71eeed65820 Mon Sep 17 00:00:00 2001 From: Andrei Bancioiu Date: Fri, 24 Jul 2020 16:12:43 +0300 Subject: [PATCH 1/6] Define travis build. --- .travis.yml | 86 ++--------------------------------------------------- 1 file changed, 3 insertions(+), 83 deletions(-) diff --git a/.travis.yml b/.travis.yml index ee70e25..39b7a94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,88 +3,6 @@ arch: matrix: include: - - language: python - os: linux - dist: bionic - before_install: - - sudo apt-get update - - sudo apt install gcc-multilib g++-multilib -y - - go version - - python3 --version - - pip3 --version - - pip3 install Pillow - - install: - - mkdir buildchain - - mkdir buildchain/clang-arm-fropi - - mkdir sdk - - mkdir sdk/nanos-secure-sdk - - - wget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q1-update/+download/gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 - - tar xf gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 - - rm gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 - - mv gcc-arm-none-eabi-5_3-2016q1 buildchain/gcc-arm-none-eabi-5_3-2016q1 - - - wget http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.10.tar.xz -O clang+llvm.tar.xz - - tar xf clang+llvm.tar.xz - - rm clang+llvm.tar.xz - - mv clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.10/* buildchain/clang-arm-fropi - - - wget https://github.com/LedgerHQ/nanos-secure-sdk/archive/nanos-160.tar.gz -O nanos-secure-sdk.tar.gz - - tar xf nanos-secure-sdk.tar.gz - - rm nanos-secure-sdk.tar.gz - - mv nanos-secure-sdk-nanos-160/* sdk/nanos-secure-sdk - before_script: - script: - - BOLOS_ENV=$(pwd)/buildchain BOLOS_SDK=$(pwd)/sdk/nanos-secure-sdk APPVERSION_M=${APPVERSION_M} APPVERSION_N=${APPVERSION_N} APPVERSION_P=${APPVERSION_P} make - - FILE_NAME=elrond-ledger-app-v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P}.hex - - cp bin/app.hex $FILE_NAME - deploy: - provider: releases - api_key: $GITHUB_OAUTH_TOKEN - file: $FILE_NAME - skip_cleanup: true - draft: true - - - language: go - os: linux - before_install: - - go version - install: - before_script: - script: - - FILE_NAME=ElrondTestApp_${TRAVIS_OS_NAME}_v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P} - - cd ./testApp/cmd/testApp - - GO111MODULE=on go build -o $FILE_NAME . - - chmod +x $FILE_NAME - - ls - deploy: - provider: releases - api_key: $GITHUB_OAUTH_TOKEN - file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME - skip_cleanup: true - draft: true - - - language: go - os: osx - osx_image: xcode11.3 - before_install: - - go version - install: - before_script: - script: - - FILE_NAME=ElrondTestApp_${TRAVIS_OS_NAME}_v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P} - - cd ./testApp/cmd/testApp - - GO111MODULE=on go build -o $FILE_NAME . - - chmod +x $FILE_NAME - - ls - deploy: - provider: releases - api_key: $GITHUB_OAUTH_TOKEN - file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME - skip_cleanup: true - draft: true - - language: go os: windows before_install: @@ -92,7 +10,7 @@ matrix: install: before_script: script: - - FILE_NAME=ElrondTestApp_${TRAVIS_OS_NAME}_v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P}.exe + - FILE_NAME=ElrondTestApp_TEST.exe - cd ./testApp/cmd/testApp - GO111MODULE=on go build -o $FILE_NAME . - ls @@ -102,4 +20,6 @@ matrix: file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME skip_cleanup: true draft: true + on: + branch: fix-windows From 3089c5f318c187aeb81d83640f62f56bdab45d4a Mon Sep 17 00:00:00 2001 From: Andrei Bancioiu Date: Fri, 24 Jul 2020 16:18:27 +0300 Subject: [PATCH 2/6] Fix name of token. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 39b7a94..3f07065 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ matrix: - ls deploy: provider: releases - api_key: $GITHUB_OAUTH_TOKEN + api_key: $GITHUB_OAUTH_TOKEN_SECONDARY file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME skip_cleanup: true draft: true From 3222c4c4f6af89c14eccb5242a1162610e651d97 Mon Sep 17 00:00:00 2001 From: DrDelphi Date: Fri, 24 Jul 2020 16:25:47 +0300 Subject: [PATCH 3/6] trim crlf at the end of destination address --- testApp/cmd/testApp/main.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/testApp/cmd/testApp/main.go b/testApp/cmd/testApp/main.go index c5c676d..37775bb 100644 --- a/testApp/cmd/testApp/main.go +++ b/testApp/cmd/testApp/main.go @@ -204,6 +204,12 @@ func getTxDataFromUser(contractData uint8) (string, *big.Int, string, error) { if strings.HasSuffix(strReceiverAddress, "\n") { strReceiverAddress = strings.TrimSuffix(strReceiverAddress, "\n") } + if strings.HasSuffix(strReceiverAddress, "\r") { + strReceiverAddress = strings.TrimSuffix(strReceiverAddress, "\r") + } + if strings.HasSuffix(strReceiverAddress, "\n") { + strReceiverAddress = strings.TrimSuffix(strReceiverAddress, "\n") + } _, _, err = bech32.Decode(strReceiverAddress) if err != nil { log.Println(errInvalidAddress) From 176bbc06d27a5ccece69cbb9df38a3428cce1137 Mon Sep 17 00:00:00 2001 From: DrDelphi Date: Fri, 24 Jul 2020 16:48:52 +0300 Subject: [PATCH 4/6] trim all input fields of crlf --- testApp/cmd/testApp/main.go | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/testApp/cmd/testApp/main.go b/testApp/cmd/testApp/main.go index 37775bb..b8faa97 100644 --- a/testApp/cmd/testApp/main.go +++ b/testApp/cmd/testApp/main.go @@ -190,6 +190,16 @@ func getDeviceInfo(nanos *ledger.NanoS) error { return nil } +func trim(s string) string { + if strings.HasSuffix(s, "\n") { + s = strings.TrimSuffix(s, "\n") + } + if strings.HasSuffix(s, "\r") { + s = strings.TrimSuffix(s, "\r") + } + return s +} + // getTxDataFromUser retrieves tx fields from user func getTxDataFromUser(contractData uint8) (string, *big.Int, string, error) { var err error @@ -201,15 +211,7 @@ func getTxDataFromUser(contractData uint8) (string, *big.Int, string, error) { log.Println(errEmptyAddress) return "", nil, "", err } - if strings.HasSuffix(strReceiverAddress, "\n") { - strReceiverAddress = strings.TrimSuffix(strReceiverAddress, "\n") - } - if strings.HasSuffix(strReceiverAddress, "\r") { - strReceiverAddress = strings.TrimSuffix(strReceiverAddress, "\r") - } - if strings.HasSuffix(strReceiverAddress, "\n") { - strReceiverAddress = strings.TrimSuffix(strReceiverAddress, "\n") - } + strReceiverAddress = trim(strReceiverAddress) _, _, err = bech32.Decode(strReceiverAddress) if err != nil { log.Println(errInvalidAddress) @@ -219,9 +221,7 @@ func getTxDataFromUser(contractData uint8) (string, *big.Int, string, error) { // read amount fmt.Print("Amount of ERD to send: ") strAmount, _ := reader.ReadString('\n') - if strings.HasSuffix(strAmount, "\n") { - strAmount = strings.TrimSuffix(strAmount, "\n") - } + strAmount = trim(strAmount) amount, err := strconv.ParseFloat(strAmount, 64) if err != nil { log.Println(errInvalidAmount) @@ -236,9 +236,7 @@ func getTxDataFromUser(contractData uint8) (string, *big.Int, string, error) { // read data field fmt.Print("Data field: ") data, _ = reader.ReadString('\n') - if strings.HasSuffix(data, "\n") { - data = strings.TrimSuffix(data, "\n") - } + data = trim(data) } return strReceiverAddress, bigIntAmount, data, nil } From 423f1e6927f4ca96e9c753d8b3ba0b603c490ec2 Mon Sep 17 00:00:00 2001 From: DrDelphi Date: Fri, 24 Jul 2020 17:13:13 +0300 Subject: [PATCH 5/6] added "wait for enter" before closing the test app --- testApp/cmd/testApp/main.go | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/testApp/cmd/testApp/main.go b/testApp/cmd/testApp/main.go index b8faa97..f2551a1 100644 --- a/testApp/cmd/testApp/main.go +++ b/testApp/cmd/testApp/main.go @@ -190,6 +190,7 @@ func getDeviceInfo(nanos *ledger.NanoS) error { return nil } +// trim removes the trailing crlf characters from the end of a string func trim(s string) string { if strings.HasSuffix(s, "\n") { s = strings.TrimSuffix(s, "\n") @@ -279,6 +280,12 @@ func broadcastTransaction(tx transaction) error { return nil } +func waitInputAndExit() { + fmt.Println("Press enter to continue...") + fmt.Scanln() + os.Exit(1) +} + // main function func main() { log.SetFlags(0) @@ -287,18 +294,21 @@ func main() { var nanos *ledger.NanoS nanos, err := ledger.OpenNanoS() if err != nil { - log.Fatalln(errOpenDevice, err) + log.Println(errOpenDevice, err) + waitInputAndExit() } err = getDeviceInfo(nanos) if err != nil { - log.Fatalln(err) + log.Println(err) + waitInputAndExit() } fmt.Println("Nano S app version: ", nanos.AppVersion) fmt.Printf("Network: %s ; Contract data: %s\n\r", network[nanos.Network], status[nanos.ContractData]) netConfig, err := getNetworkConfig() if err != nil { - log.Fatalln(errGetNetworkConfig, err) + log.Println(errGetNetworkConfig, err) + waitInputAndExit() } fmt.Printf("Chain ID: %s\n\rTx version: %v\n\r", netConfig.Data.Config.ChainID, netConfig.Data.Config.MinTransactionVersion) @@ -306,7 +316,8 @@ func main() { fmt.Println("Retrieving address. Please confirm on your Ledger") senderAddress, err := nanos.GetAddress(uint32(nanos.Account), uint32(nanos.AddressIndex)) if err != nil { - log.Fatalln(errGetAddress, err) + log.Println(errGetAddress, err) + waitInputAndExit() } fmt.Printf("Address: %s\n\r", senderAddress) @@ -314,24 +325,28 @@ func main() { denomination = big.NewFloat(math.Pow10(netConfig.Data.Config.Denomination)) balance, nonce, err := getSenderInfo(string(senderAddress)) if err != nil || balance == nil { - log.Fatalln(errGetBalanceAndNonce, err) + log.Println(errGetBalanceAndNonce, err) + waitInputAndExit() } bigFloatBalance, _ := big.NewFloat(0).SetString(balance.String()) bigFloatBalance.Quo(bigFloatBalance, denomination) strBalance := bigFloatBalance.String() strSenderShard, err := getAddressShard(string(senderAddress), netConfig.Data.Config.NumShardsWithoutMeta) if err != nil { - log.Fatalln(errGetAddressShard, err) + log.Println(errGetAddressShard, err) + waitInputAndExit() } fmt.Printf("Sender shard: %v\n\rBalance: %v ERD\n\rNonce: %v\n\r", strSenderShard, strBalance, nonce) strReceiverAddress, bigIntAmount, data, err := getTxDataFromUser(nanos.ContractData) if err != nil { - log.Fatalln(err) + log.Println(err) + waitInputAndExit() } strReceiverShard, err := getAddressShard(strReceiverAddress, netConfig.Data.Config.NumShardsWithoutMeta) if err != nil { - log.Fatalln(errGetAddressShard, err) + log.Println(errGetAddressShard, err) + waitInputAndExit() } fmt.Printf("Receiver shard: %v\n\r", strReceiverShard) @@ -349,10 +364,12 @@ func main() { err = signTransaction(&tx, nanos) if err != nil { - log.Fatalln(err) + log.Println(err) + waitInputAndExit() } err = broadcastTransaction(tx) if err != nil { - log.Fatalln(err) + log.Println(err) } + waitInputAndExit() } From cc19e3d9540019df760e92a126a853518a76aae5 Mon Sep 17 00:00:00 2001 From: Andrei Bancioiu Date: Fri, 24 Jul 2020 17:28:42 +0300 Subject: [PATCH 6/6] Undo travis.yml. --- .travis.yml | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3f07065..f587c86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,23 +3,102 @@ arch: matrix: include: + - language: python + os: linux + dist: bionic + before_install: + - sudo apt-get update + - sudo apt install gcc-multilib g++-multilib -y + - go version + - python3 --version + - pip3 --version + - pip3 install Pillow + + install: + - mkdir buildchain + - mkdir buildchain/clang-arm-fropi + - mkdir sdk + - mkdir sdk/nanos-secure-sdk + + - wget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q1-update/+download/gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 + - tar xf gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 + - rm gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 + - mv gcc-arm-none-eabi-5_3-2016q1 buildchain/gcc-arm-none-eabi-5_3-2016q1 + + - wget http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.10.tar.xz -O clang+llvm.tar.xz + - tar xf clang+llvm.tar.xz + - rm clang+llvm.tar.xz + - mv clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.10/* buildchain/clang-arm-fropi + + - wget https://github.com/LedgerHQ/nanos-secure-sdk/archive/nanos-160.tar.gz -O nanos-secure-sdk.tar.gz + - tar xf nanos-secure-sdk.tar.gz + - rm nanos-secure-sdk.tar.gz + - mv nanos-secure-sdk-nanos-160/* sdk/nanos-secure-sdk + before_script: + script: + - BOLOS_ENV=$(pwd)/buildchain BOLOS_SDK=$(pwd)/sdk/nanos-secure-sdk APPVERSION_M=${APPVERSION_M} APPVERSION_N=${APPVERSION_N} APPVERSION_P=${APPVERSION_P} make + - FILE_NAME=elrond-ledger-app-v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P}.hex + - cp bin/app.hex $FILE_NAME + deploy: + provider: releases + api_key: $GITHUB_OAUTH_TOKEN + file: $FILE_NAME + skip_cleanup: true + draft: true + - language: go - os: windows + os: linux + before_install: + - go version + install: + before_script: + script: + - FILE_NAME=ElrondTestApp_${TRAVIS_OS_NAME}_v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P} + - cd ./testApp/cmd/testApp + - GO111MODULE=on go build -o $FILE_NAME . + - chmod +x $FILE_NAME + - ls + deploy: + provider: releases + api_key: $GITHUB_OAUTH_TOKEN + file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME + skip_cleanup: true + draft: true + + - language: go + os: osx + osx_image: xcode11.3 before_install: - go version install: before_script: script: - - FILE_NAME=ElrondTestApp_TEST.exe + - FILE_NAME=ElrondTestApp_${TRAVIS_OS_NAME}_v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P} - cd ./testApp/cmd/testApp - GO111MODULE=on go build -o $FILE_NAME . + - chmod +x $FILE_NAME - ls deploy: provider: releases - api_key: $GITHUB_OAUTH_TOKEN_SECONDARY + api_key: $GITHUB_OAUTH_TOKEN file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME skip_cleanup: true draft: true - on: - branch: fix-windows + - language: go + os: windows + before_install: + - go version + install: + before_script: + script: + - FILE_NAME=ElrondTestApp_${TRAVIS_OS_NAME}_v${APPVERSION_M}.${APPVERSION_N}.${APPVERSION_P}.exe + - cd ./testApp/cmd/testApp + - GO111MODULE=on go build -o $FILE_NAME . + - ls + deploy: + provider: releases + api_key: $GITHUB_OAUTH_TOKEN + file: $TRAVIS_BUILD_DIR/testApp/cmd/testApp/$FILE_NAME + skip_cleanup: true + draft: true