Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
b7dfd333
Unverified
Commit
b7dfd333
authored
Oct 17, 2016
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.travis, build: Build step to push .aar to Maven Central
parent
178da7c6
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
216 additions
and
15 deletions
+216
-15
.travis.yml
.travis.yml
+5
-12
ci.go
build/ci.go
+127
-0
mvn.pom
build/mvn.pom
+57
-0
mvn.settings
build/mvn.settings
+24
-0
util.go
internal/build/util.go
+1
-1
geth.go
mobile/geth.go
+2
-2
No files found.
.travis.yml
View file @
b7dfd333
...
...
@@ -53,29 +53,22 @@ matrix:
-
CC=aarch64-linux-gnu-gcc go run build/ci.go install -arch arm64
-
go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
# This builder does the OSX Azure uploads
# This builder does the OSX Azure
, Android Maven and Azure and iOS CocoaPods and Azure
uploads
-
os
:
osx
go
:
1.7
env
:
-
azure-osx
-
mobile
script
:
-
go run build/ci.go install
-
go run build/ci.go archive -type tar -signer OSX_SIGNING_KEY -upload gethstore/builds
# This builder does the mobile builds (and nothing else)
-
os
:
osx
go
:
1.7
script
:
# Build the Android archives and upload them to Maven Central
-
brew update
-
brew install android-sdk
-
brew install android-sdk
maven
-
export ANDROID_HOME=/usr/local/opt/android-sdk
-
echo "y" | android update sdk --no-ui --filter platform
-
go get github.com/tools/godep
-
godep restore
-
go get golang.org/x/mobile/cmd/gomobile
-
gomobile init
-
gomobile bind --target=android --javapkg=org.ethereum -v github.com/ethereum/go-ethereum/mobile
-
gomobile bind --target=ios --tags=ios -v github.com/ethereum/go-ethereum/mobile
-
go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org -upload gethstore/builds
install
:
-
go get golang.org/x/tools/cmd/cover
...
...
build/ci.go
View file @
b7dfd333
...
...
@@ -29,6 +29,7 @@ Available commands are:
importkeys -- imports signing keys from env
debsrc [ -signer key-id ] [ -upload dest ] -- creates a debian source package
nsis -- creates a Windows NSIS installer
aar [ -sign key-id ] [ -upload dest ] -- creates an android archive
xgo [ options ] -- cross builds according to options
For all commands, -n prevents execution of external programs (dry run mode).
...
...
@@ -37,6 +38,7 @@ For all commands, -n prevents execution of external programs (dry run mode).
package
main
import
(
"bufio"
"bytes"
"encoding/base64"
"flag"
...
...
@@ -48,6 +50,7 @@ import (
"os"
"os/exec"
"path/filepath"
"regexp"
"runtime"
"strings"
"time"
...
...
@@ -125,6 +128,8 @@ func main() {
doDebianSource
(
os
.
Args
[
2
:
])
case
"nsis"
:
doWindowsInstaller
(
os
.
Args
[
2
:
])
case
"aar"
:
doAndroidArchive
(
os
.
Args
[
2
:
])
case
"xgo"
:
doXgo
(
os
.
Args
[
2
:
])
default
:
...
...
@@ -331,6 +336,9 @@ func archiveBasename(arch string, env build.Environment) string {
if
arch
==
"arm"
{
platform
+=
os
.
Getenv
(
"GOARM"
)
}
if
arch
==
"android"
{
platform
=
"android-all"
}
archive
:=
platform
+
"-"
+
build
.
VERSION
()
if
isUnstableBuild
(
env
)
{
archive
+=
"-unstable"
...
...
@@ -630,6 +638,125 @@ func doWindowsInstaller(cmdline []string) {
if
err
:=
archiveUpload
(
installer
,
*
upload
,
*
signer
);
err
!=
nil
{
log
.
Fatal
(
err
)
}
// Android archives
func
doAndroidArchive
(
cmdline
[]
string
)
{
var
(
signer
=
flag
.
String
(
"signer"
,
""
,
`Environment variable holding the signing key (e.g. ANDROID_SIGNING_KEY)`
)
deploy
=
flag
.
String
(
"deploy"
,
""
,
`Where to upload the deploy the archive (usually "https://oss.sonatype.org")`
)
upload
=
flag
.
String
(
"upload"
,
""
,
`Destination to upload the archives (usually "gethstore/builds")`
)
)
flag
.
CommandLine
.
Parse
(
cmdline
)
env
:=
build
.
Env
()
// Build the Android archive and Maven resources
build
.
MustRun
(
goTool
(
"get"
,
"golang.org/x/mobile/cmd/gomobile"
))
build
.
MustRun
(
gomobileTool
(
"init"
))
build
.
MustRun
(
gomobileTool
(
"bind"
,
"--target"
,
"android"
,
"--javapkg"
,
"org.ethereum"
,
"-v"
,
"github.com/ethereum/go-ethereum/mobile"
))
meta
:=
newMavenMetadata
(
env
)
build
.
Render
(
"build/mvn.pom"
,
meta
.
PackageString
()
+
".pom"
,
0755
,
meta
)
// Skip Maven deploy and Azure upload for PR builds
maybeSkipArchive
(
env
)
// Sign and upload all the artifacts to Maven Central
os
.
Rename
(
"geth.aar"
,
meta
.
PackageString
()
+
".aar"
)
if
*
signer
!=
""
&&
*
deploy
!=
""
{
// Import the signing key into the local GPG instance
if
b64key
:=
os
.
Getenv
(
*
signer
);
b64key
!=
""
{
key
,
err
:=
base64
.
StdEncoding
.
DecodeString
(
b64key
)
if
err
!=
nil
{
log
.
Fatalf
(
"invalid base64 %s"
,
*
signer
)
}
gpg
:=
exec
.
Command
(
"gpg"
,
"--import"
)
gpg
.
Stdin
=
bytes
.
NewReader
(
key
)
build
.
MustRun
(
gpg
)
}
// Upload the artifacts to Sonatype and/or Maven Central
repo
:=
*
deploy
+
"/service/local/staging/deploy/maven2"
if
meta
.
Unstable
{
repo
=
*
deploy
+
"/content/repositories/snapshots"
}
build
.
MustRunCommand
(
"mvn"
,
"gpg:sign-and-deploy-file"
,
"-settings=build/mvn.settings"
,
"-Durl="
+
repo
,
"-DrepositoryId=ossrh"
,
"-DpomFile="
+
meta
.
PackageString
()
+
".pom"
,
"-Dfile="
+
meta
.
PackageString
()
+
".aar"
)
}
// Sign and upload the archive to Azure
archive
:=
"geth-"
+
archiveBasename
(
"android"
,
env
)
+
".aar"
os
.
Rename
(
meta
.
PackageString
()
+
".aar"
,
archive
)
if
err
:=
archiveUpload
(
archive
,
*
upload
,
*
signer
);
err
!=
nil
{
log
.
Fatal
(
err
)
}
}
func
gomobileTool
(
subcmd
string
,
args
...
string
)
*
exec
.
Cmd
{
cmd
:=
exec
.
Command
(
filepath
.
Join
(
GOBIN
,
"gomobile"
),
subcmd
)
cmd
.
Args
=
append
(
cmd
.
Args
,
args
...
)
cmd
.
Env
=
[]
string
{
"GOPATH="
+
build
.
GOPATH
(),
}
for
_
,
e
:=
range
os
.
Environ
()
{
if
strings
.
HasPrefix
(
e
,
"GOPATH="
)
{
continue
}
cmd
.
Env
=
append
(
cmd
.
Env
,
e
)
}
return
cmd
}
type
mavenMetadata
struct
{
Env
build
.
Environment
Version
string
Unstable
bool
Contributors
[]
mavenContributor
}
type
mavenContributor
struct
{
Name
string
Email
string
}
func
newMavenMetadata
(
env
build
.
Environment
)
mavenMetadata
{
// Collect the list of authors from the repo root
contribs
:=
[]
mavenContributor
{}
if
authors
,
err
:=
os
.
Open
(
"AUTHORS"
);
err
==
nil
{
defer
authors
.
Close
()
scanner
:=
bufio
.
NewScanner
(
authors
)
for
scanner
.
Scan
()
{
// Skip any whitespace from the authors list
line
:=
strings
.
TrimSpace
(
scanner
.
Text
())
if
line
==
""
||
line
[
0
]
==
'#'
{
continue
}
// Split the author and insert as a contributor
re
:=
regexp
.
MustCompile
(
"([^<]+) <(.+>)"
)
parts
:=
re
.
FindStringSubmatch
(
line
)
if
len
(
parts
)
==
3
{
contribs
=
append
(
contribs
,
mavenContributor
{
Name
:
parts
[
1
],
Email
:
parts
[
2
]})
}
}
}
return
mavenMetadata
{
Env
:
env
,
Version
:
build
.
VERSION
(),
Unstable
:
isUnstableBuild
(
env
),
Contributors
:
contribs
,
}
}
func
(
meta
mavenMetadata
)
VersionString
()
string
{
if
meta
.
Unstable
{
return
meta
.
Version
+
"-SNAPSHOT"
}
return
meta
.
Version
}
func
(
meta
mavenMetadata
)
PackageString
()
string
{
return
"geth-"
+
meta
.
VersionString
()
}
// Cross compilation
...
...
build/mvn.pom
0 → 100644
View file @
b7dfd333
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.ethereum</groupId>
<artifactId>geth</artifactId>
<version>{{.VersionString}}</version>
<packaging>aar</packaging>
<name>Android Ethereum Client</name>
<description>Android port of the go-ethereum libraries and node</description>
<url>https://github.com/ethereum/go-ethereum</url>
<inceptionYear>2015</inceptionYear>
<licenses>
<license>
<name>GNU Lesser General Public License, Version 3.0</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.en.html</url>
<distribution>repo</distribution>
</license>
</licenses>
<organization>
<name>Ethereum</name>
<url>https://ethereum.org</url>
</organization>
<developers>
<developer>
<id>karalabe</id>
<name>Péter Szilágyi</name>
<email>peterke@gmail.com</email>
<url>https://github.com/karalabe</url>
<properties>
<picUrl>https://www.gravatar.com/avatar/2ecbf0f5b4b79eebf8c193e5d324357f?s=256</picUrl>
</properties>
</developer>
</developers>
<contributors>{{range .Contributors}}
<contributor>
<name>{{.Name}}</name>
<email>{{.Email}}</email>
</contributor>{{end}}
</contributors>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/ethereum/go-ethereum/issues/</url>
</issueManagement>
<scm>
<url>https://github.com/ethereum/go-ethereum</url>
</scm>
</project>
build/mvn.settings
0 → 100644
View file @
b7dfd333
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>ossrh</id>
<username>${env.ANDROID_SONATYPE_USERNAME}</username>
<password>${env.ANDROID_SONATYPE_PASSWORD}</password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.passphrase></gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>
internal/build/util.go
View file @
b7dfd333
...
...
@@ -56,7 +56,7 @@ func GOPATH() string {
if
len
(
path
)
==
0
{
log
.
Fatal
(
"GOPATH is not set"
)
}
// Ensure that our internal vendor folder i
n
on GOPATH
// Ensure that our internal vendor folder i
s
on GOPATH
vendor
,
_
:=
filepath
.
Abs
(
filepath
.
Join
(
"build"
,
"_vendor"
))
for
_
,
dir
:=
range
path
{
if
dir
==
vendor
{
...
...
mobile/geth.go
View file @
b7dfd333
...
...
@@ -32,7 +32,7 @@ import (
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/whisper"
"github.com/ethereum/go-ethereum/whisper
/whisperv2
"
)
// NodeConfig represents the collection of configuration values to fine tune the Geth
...
...
@@ -150,7 +150,7 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) {
}
// Register the Whisper protocol if requested
if
config
.
WhisperEnabled
{
if
err
:=
stack
.
Register
(
func
(
*
node
.
ServiceContext
)
(
node
.
Service
,
error
)
{
return
whisper
.
New
(),
nil
});
err
!=
nil
{
if
err
:=
stack
.
Register
(
func
(
*
node
.
ServiceContext
)
(
node
.
Service
,
error
)
{
return
whisper
v2
.
New
(),
nil
});
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"whisper init: %v"
,
err
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment