Backports for Stable 2.3.5 (#10414)
* no-git for publish jobs, empty artifacts dir (#10393) * no-git for publish jobs, empty artifacts dir * fix syntax * prettiness * fix prettiness * should get rid of git in publishing * snap: reenable i386, arm64, armhf architecture publishing (#10386) * snap: reenable i386, arm64, armhf architecture publishing * gitlab: fix indent * gitlab: fix yml syntax * Linker for crosscomile * fix target to linker * new docker image * fix lint, add build to this PR * calc SHA3 using rhash * add new images for i386, armhf * show snap target & artifacts * set CARGO_TARGET for publish snap * move detect Version to publish snap * rm libc6 dep from snap-template up pub-snap script * clean up cargo config before add linker * move linker config to docker images * tx pool: always accept local transactions (#10375) * tx pool: always accept local transactions * tx pool: `choose` local txs with same sender and nonce * Fix to_pod storage trie value decoding (#10368)
This commit is contained in:
parent
0b78a1b5a0
commit
0d63c932af
@ -2,11 +2,9 @@ stages:
|
||||
- test
|
||||
- build
|
||||
- publish
|
||||
- publish-onchain
|
||||
- optional
|
||||
|
||||
image: parity/rust:gitlab-ci
|
||||
|
||||
image: parity/rust-parity-ethereum-build:xenial
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
@ -14,6 +12,12 @@ variables:
|
||||
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo"
|
||||
CARGO_TARGET: x86_64-unknown-linux-gnu
|
||||
|
||||
.no_git: &no_git
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
GIT_SUBMODULE_STRATEGY: none
|
||||
|
||||
|
||||
.releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries")
|
||||
only: &releaseable_branches
|
||||
- stable
|
||||
@ -30,14 +34,6 @@ variables:
|
||||
paths:
|
||||
- artifacts/
|
||||
|
||||
.determine_version: &determine_version
|
||||
- VERSION="$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)"
|
||||
- DATE_STR="$(date +%Y%m%d)"
|
||||
- ID_SHORT="$(echo ${CI_COMMIT_SHA} | cut -c 1-7)"
|
||||
- test "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" = "nightly" && VERSION="${VERSION}-${ID_SHORT}-${DATE_STR}"
|
||||
- export VERSION
|
||||
- echo "Version = ${VERSION}"
|
||||
|
||||
test-linux:
|
||||
stage: test
|
||||
variables:
|
||||
@ -57,7 +53,7 @@ test-audit:
|
||||
tags:
|
||||
- linux-docker
|
||||
|
||||
build-linux:
|
||||
build-linux: &build-linux
|
||||
stage: build
|
||||
only: *releaseable_branches
|
||||
script:
|
||||
@ -67,6 +63,24 @@ build-linux:
|
||||
tags:
|
||||
- linux-docker
|
||||
|
||||
build-linux-i386:
|
||||
<<: *build-linux
|
||||
image: parity/rust-parity-ethereum-build:i386
|
||||
variables:
|
||||
CARGO_TARGET: i686-unknown-linux-gnu
|
||||
|
||||
build-linux-arm64:
|
||||
<<: *build-linux
|
||||
image: parity/rust-parity-ethereum-build:arm64
|
||||
variables:
|
||||
CARGO_TARGET: aarch64-unknown-linux-gnu
|
||||
|
||||
build-linux-armhf:
|
||||
<<: *build-linux
|
||||
image: parity/rust-parity-ethereum-build:armhf
|
||||
variables:
|
||||
CARGO_TARGET: armv7-unknown-linux-gnueabihf
|
||||
|
||||
build-darwin:
|
||||
stage: build
|
||||
only: *releaseable_branches
|
||||
@ -94,6 +108,7 @@ build-windows:
|
||||
publish-docker:
|
||||
stage: publish
|
||||
only: *releaseable_branches
|
||||
<<: *no_git
|
||||
cache: {}
|
||||
dependencies:
|
||||
- build-linux
|
||||
@ -102,35 +117,54 @@ publish-docker:
|
||||
script:
|
||||
- scripts/gitlab/publish-docker.sh parity
|
||||
|
||||
publish-snap:
|
||||
stage: optional #publish
|
||||
publish-snap: &publish-snap
|
||||
stage: publish
|
||||
only: *releaseable_branches
|
||||
# <<: *no_git
|
||||
image: snapcore/snapcraft
|
||||
variables:
|
||||
BUILD_ARCH: amd64
|
||||
BUILD_ARCH: amd64
|
||||
cache: {}
|
||||
before_script: *determine_version
|
||||
dependencies:
|
||||
- build-linux
|
||||
tags:
|
||||
- rust-stable
|
||||
- linux-docker
|
||||
script:
|
||||
- scripts/gitlab/publish-snap.sh
|
||||
allow_failure: true
|
||||
<<: *collect_artifacts
|
||||
|
||||
publish-onnet-update:
|
||||
stage: publish-onchain
|
||||
publish-snap-i386:
|
||||
<<: *publish-snap
|
||||
variables:
|
||||
BUILD_ARCH: i386
|
||||
dependencies:
|
||||
- build-linux-i386
|
||||
|
||||
publish-snap-arm64:
|
||||
<<: *publish-snap
|
||||
variables:
|
||||
BUILD_ARCH: arm64
|
||||
dependencies:
|
||||
- build-linux-arm64
|
||||
|
||||
publish-snap-armhf:
|
||||
<<: *publish-snap
|
||||
variables:
|
||||
BUILD_ARCH: armhf
|
||||
dependencies:
|
||||
- build-linux-armhf
|
||||
|
||||
publish-onchain:
|
||||
stage: publish
|
||||
only: *releaseable_branches
|
||||
<<: *no_git
|
||||
cache: {}
|
||||
dependencies:
|
||||
- build-linux
|
||||
- build-darwin
|
||||
- build-windows
|
||||
- publish-awss3-release
|
||||
before_script: *determine_version
|
||||
script:
|
||||
- scripts/gitlab/publish-onnet-update.sh
|
||||
- scripts/gitlab/publish-onchain.sh
|
||||
tags:
|
||||
- linux-docker
|
||||
|
||||
@ -155,6 +189,7 @@ publish-awss3-release:
|
||||
image: parity/awscli:latest
|
||||
stage: publish
|
||||
only: *releaseable_branches
|
||||
<<: *no_git
|
||||
cache: {}
|
||||
dependencies:
|
||||
- build-linux
|
||||
@ -203,4 +238,3 @@ build-android:
|
||||
- linux-docker
|
||||
allow_failure: true
|
||||
<<: *collect_artifacts
|
||||
|
||||
|
@ -1017,7 +1017,7 @@ impl<B: Backend> State<B> {
|
||||
let trie = self.factories.trie.readonly(accountdb.as_hashdb(), &root)?;
|
||||
for o_kv in trie.iter()? {
|
||||
if let Ok((key, val)) = o_kv {
|
||||
pod_storage.insert(key[..].into(), U256::from(&val[..]).into());
|
||||
pod_storage.insert(key[..].into(), rlp::decode::<U256>(&val[..]).expect("Decoded from trie which was encoded from the same type; qed").into());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -123,15 +123,16 @@ impl<P> txpool::Scoring<P> for NonceAndGasPrice where P: ScoredTransaction + txp
|
||||
}
|
||||
|
||||
fn should_replace(&self, old: &P, new: &P) -> scoring::Choice {
|
||||
let both_local = old.priority().is_local() && new.priority().is_local();
|
||||
if old.sender() == new.sender() {
|
||||
// prefer earliest transaction
|
||||
match new.nonce().cmp(&old.nonce()) {
|
||||
cmp::Ordering::Equal => self.choose(old, new),
|
||||
_ if both_local => scoring::Choice::InsertNew,
|
||||
cmp::Ordering::Less => scoring::Choice::ReplaceOld,
|
||||
cmp::Ordering::Greater => scoring::Choice::RejectNew,
|
||||
cmp::Ordering::Equal => self.choose(old, new),
|
||||
}
|
||||
} else if old.priority().is_local() && new.priority().is_local() {
|
||||
// accept local transactions over the limit
|
||||
} else if both_local {
|
||||
scoring::Choice::InsertNew
|
||||
} else {
|
||||
let old_score = (old.priority(), old.gas_price());
|
||||
@ -141,7 +142,7 @@ impl<P> txpool::Scoring<P> for NonceAndGasPrice where P: ScoredTransaction + txp
|
||||
} else {
|
||||
scoring::Choice::RejectNew
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn should_ignore_sender_limit(&self, new: &P) -> bool {
|
||||
@ -154,11 +155,66 @@ mod tests {
|
||||
use super::*;
|
||||
|
||||
use std::sync::Arc;
|
||||
use ethkey::{Random, Generator};
|
||||
use ethkey::{Random, Generator, KeyPair};
|
||||
use pool::tests::tx::{Tx, TxExt};
|
||||
use txpool::Scoring;
|
||||
use txpool::scoring::Choice::*;
|
||||
|
||||
fn local_tx_verified(tx: Tx, keypair: &KeyPair) -> VerifiedTransaction {
|
||||
let mut verified_tx = tx.unsigned().sign(keypair.secret(), None).verified();
|
||||
verified_tx.priority = ::pool::Priority::Local;
|
||||
verified_tx
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_always_accept_local_transactions_unless_same_sender_and_nonce() {
|
||||
let scoring = NonceAndGasPrice(PrioritizationStrategy::GasPriceOnly);
|
||||
|
||||
// same sender txs
|
||||
let keypair = Random.generate().unwrap();
|
||||
|
||||
let same_sender_tx1 = local_tx_verified(Tx {
|
||||
nonce: 1,
|
||||
gas_price: 1,
|
||||
..Default::default()
|
||||
}, &keypair);
|
||||
|
||||
let same_sender_tx2 = local_tx_verified(Tx {
|
||||
nonce: 2,
|
||||
gas_price: 100,
|
||||
..Default::default()
|
||||
}, &keypair);
|
||||
|
||||
let same_sender_tx3 = local_tx_verified(Tx {
|
||||
nonce: 2,
|
||||
gas_price: 200,
|
||||
..Default::default()
|
||||
}, &keypair);
|
||||
|
||||
// different sender txs
|
||||
let different_sender_tx1 = local_tx_verified(Tx {
|
||||
nonce: 2,
|
||||
gas_price: 1,
|
||||
..Default::default()
|
||||
}, &Random.generate().unwrap());
|
||||
|
||||
let different_sender_tx2 = local_tx_verified(Tx {
|
||||
nonce: 1,
|
||||
gas_price: 10,
|
||||
..Default::default()
|
||||
}, &Random.generate().unwrap());
|
||||
|
||||
assert_eq!(scoring.should_replace(&same_sender_tx1, &same_sender_tx2), InsertNew);
|
||||
assert_eq!(scoring.should_replace(&same_sender_tx2, &same_sender_tx1), InsertNew);
|
||||
|
||||
assert_eq!(scoring.should_replace(&different_sender_tx1, &different_sender_tx2), InsertNew);
|
||||
assert_eq!(scoring.should_replace(&different_sender_tx2, &different_sender_tx1), InsertNew);
|
||||
|
||||
// txs with same sender and nonce
|
||||
assert_eq!(scoring.should_replace(&same_sender_tx2, &same_sender_tx3), ReplaceOld);
|
||||
assert_eq!(scoring.should_replace(&same_sender_tx3, &same_sender_tx2), RejectNew);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_replace_same_sender_by_nonce() {
|
||||
let scoring = NonceAndGasPrice(PrioritizationStrategy::GasPriceOnly);
|
||||
|
@ -11,6 +11,9 @@ echo "CC: " $CC
|
||||
echo "CXX: " $CXX
|
||||
#strip ON
|
||||
export RUSTFLAGS=" -C link-arg=-s"
|
||||
# Linker for crosscomile
|
||||
echo "_____ Linker _____"
|
||||
cat .cargo/config
|
||||
|
||||
echo "_____ Building target: "$CARGO_TARGET" _____"
|
||||
if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ]
|
||||
@ -25,6 +28,7 @@ else
|
||||
fi
|
||||
|
||||
echo "_____ Post-processing binaries _____"
|
||||
rm -rf artifacts/*
|
||||
mkdir -p artifacts/$CARGO_TARGET
|
||||
cd artifacts/$CARGO_TARGET
|
||||
|
||||
@ -42,11 +46,6 @@ fi
|
||||
echo "_____ Calculating checksums _____"
|
||||
for binary in $(ls)
|
||||
do
|
||||
rhash --sha256 $binary -o $binary.sha256
|
||||
if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ]
|
||||
then
|
||||
echo "> ${binary} cannot be hashed with cross-compiled binary"
|
||||
else
|
||||
./parity tools hash $binary > $binary.sha3
|
||||
fi
|
||||
rhash --sha256 $binary -o $binary.sha256 #do we still need this hash (SHA2)?
|
||||
rhash --sha3-256 $binary -o $binary.sha3
|
||||
done
|
||||
|
@ -8,7 +8,10 @@ set -u # treat unset variables as error
|
||||
# gsub(/ /, "", $2) deletes whitespaces
|
||||
TRACK=`awk -F '=' '/^track/ {gsub(/"/, "", $2); gsub(/ /, "", $2); print $2}' ./util/version/Cargo.toml`
|
||||
echo Track is: $TRACK
|
||||
|
||||
# prepare variables
|
||||
VERSION=v"$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)"
|
||||
SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap"
|
||||
CARGO_TARGET="$(ls artifacts)"
|
||||
# Choose snap release channel based on parity ethereum version track
|
||||
case ${TRACK} in
|
||||
nightly) export GRADE="devel" CHANNEL="edge";;
|
||||
@ -21,24 +24,16 @@ esac
|
||||
case ${CI_COMMIT_REF_NAME} in
|
||||
beta|stable) export GRADE="stable" CHANNEL="candidate";;
|
||||
esac
|
||||
|
||||
VERSION="v"$VERSION
|
||||
SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap"
|
||||
|
||||
echo "__________Create snap package__________"
|
||||
echo "Release channel :" $GRADE " Branch/tag: " $CI_COMMIT_REF_NAME
|
||||
echo $VERSION:$GRADE:$BUILD_ARCH
|
||||
# cat scripts/snap/snapcraft.template.yaml | envsubst '$VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET' > snapcraft.yaml
|
||||
# a bit more necromancy (substitutions):
|
||||
pwd
|
||||
cd /builds/$CI_PROJECT_PATH/scripts/snap/
|
||||
echo $VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET
|
||||
|
||||
sed -e 's/$VERSION/'"$VERSION"'/g' \
|
||||
-e 's/$GRADE/'"$GRADE"'/g' \
|
||||
-e 's/$BUILD_ARCH/'"$BUILD_ARCH"'/g' \
|
||||
-e 's/$CARGO_TARGET/'"$CARGO_TARGET"'/g' \
|
||||
snapcraft.template.yaml > /builds/$CI_PROJECT_PATH/snapcraft.yaml
|
||||
cd /builds/$CI_PROJECT_PATH
|
||||
pwd
|
||||
scripts/snap/snapcraft.template.yaml > snapcraft.yaml
|
||||
|
||||
apt update
|
||||
apt install -y --no-install-recommends rhash
|
||||
cat snapcraft.yaml
|
||||
|
@ -50,4 +50,4 @@ parts:
|
||||
cp -v ethkey $SNAPCRAFT_PART_INSTALL/usr/bin/ethkey
|
||||
cp -v ethstore $SNAPCRAFT_PART_INSTALL/usr/bin/ethstore
|
||||
cp -v whisper $SNAPCRAFT_PART_INSTALL/usr/bin/whisper
|
||||
stage-packages: [libc6, libudev1, libstdc++6, cmake, libdb5.3]
|
||||
stage-packages: [libudev1, libstdc++6, cmake, libdb5.3]
|
||||
|
Loading…
Reference in New Issue
Block a user