Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
4a4a60bf
Unverified
Commit
4a4a60bf
authored
Jul 09, 2018
by
Feng Xiao
Committed by
GitHub
Jul 09, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4880 from nashimus/3.6.x
Additional support for building and deploying ppcle_64 artifacts
parents
e1845779
1f7837a2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
11 deletions
+29
-11
README.md
protoc-artifacts/README.md
+16
-9
build-protoc.sh
protoc-artifacts/build-protoc.sh
+13
-2
No files found.
protoc-artifacts/README.md
View file @
4a4a60bf
...
...
@@ -52,7 +52,7 @@ and/or architecture. Valid values are defined as the return values of
[
os-maven-plugin
](
https://github.com/trustin/os-maven-plugin/blob/master/src/main/java/kr/motd/maven/os/Detector.java
)
.
Frequently used values are:
-
``os.detected.name``
:
``linux``
,
``osx``
,
``windows``
.
-
``os.detected.arch``
:
``x86_32``
,
``x86_64``
-
``os.detected.arch``
:
``x86_32``
,
``x86_64``
,
``ppcle_64``
For example, MinGW32 only ships with 32-bit compilers, but you can still build
32-bit protoc under 64-bit Windows, with the following command:
...
...
@@ -68,7 +68,7 @@ configure GPG and Sonatype account.
You need to perform the deployment for every platform that you want to
support. DO NOT close the staging repository until you have done the
deployment for all platforms. Currently the following platforms are supported:
-
Linux (x86_32, x86_64
and cross compiled aarch
_64)
-
Linux (x86_32, x86_64
, ppcle_64 and cross compiled aarch_64 or ppcle
_64)
-
Windows (x86_32 and x86_64) with
-
Cygwin64 with MinGW compilers (x86_64)
-
MSYS with MinGW32 (x86_32)
...
...
@@ -102,6 +102,9 @@ A 32-bit artifact can be deployed from a 64-bit host with
An arm64 artifact can be deployed from x86 host with
``-Dos.detected.arch=aarch_64``
A ppcle_64 artifact can be deployed from x86 host with
``-Dos.detected.arch=ppcle_64``
A windows artifact can be deployed from a linux machine with
``-Dos.detected.name=windows``
...
...
@@ -115,15 +118,16 @@ build-zip.sh script to bulid zip packages for these protoc binaries
and upload these zip packages to the download section of the github
release. For example:
```
$ ./build-zip.sh 3.
0.0-beta-4
$ ./build-zip.sh 3.
6.0
```
The above command will create
5
zip files:
The above command will create
6
zip files:
```
dist/protoc-3.0.0-beta-4-win32.zip
dist/protoc-3.0.0-beta-4-osx-x86_32.zip
dist/protoc-3.0.0-beta-4-osx-x86_64.zip
dist/protoc-3.0.0-beta-4-linux-x86_32.zip
dist/protoc-3.0.0-beta-4-linux-x86_64.zip
dist/protoc-3.6.0-win32.zip
dist/protoc-3.6.0-osx-x86_32.zip
dist/protoc-3.6.0-osx-x86_64.zip
dist/protoc-3.6.0-linux-x86_32.zip
dist/protoc-3.6.0-linux-x86_64.zip
dist/protoc-3.6.0-linux-ppcle_64.zip
```
Before running the script, make sure the artifacts are accessible from:
http://repo1.maven.org/maven2/com/google/protobuf/protoc/
...
...
@@ -183,6 +187,9 @@ We have successfully built artifacts on the following environments:
-
Linux x86_32 and x86_64:
-
Centos 6.6 (within Docker 1.6.1)
-
Ubuntu 14.04.2 64-bit
-
Linux ppc64le:
-
Debian 9.4
-
Cross compiled with
`g++-powerpc64le-linux-gnu`
on Debian 9.4 x86_64
-
Linux aarch_64: Cross compiled with
`g++-aarch64-linux-gnu`
on Ubuntu 14.04.2 64-bit
-
Windows x86_32: MSYS with
``mingw32-gcc-g++ 4.8.1-4``
on Windows 7 64-bit
-
Windows x86_32: Cross compile with
``i686-w64-mingw32-g++ 4.8.2``
on Ubuntu 14.04.2 64-bit
...
...
protoc-artifacts/build-protoc.sh
View file @
4a4a60bf
...
...
@@ -7,10 +7,11 @@
# <OS> and <ARCH> are ${os.detected.name} and ${os.detected.arch} from os-maven-plugin
# <TARGET> can be "protoc" or "protoc-gen-javalite"
#
# The script now supports cross-compiling windows
and linux-arm64
in linux-x86
# The script now supports cross-compiling windows
, linux-arm64, and linux-ppc64le
in linux-x86
# environment. Required packages:
# - Windows: i686-w64-mingw32-gcc (32bit) and x86_64-w64-mingw32-gcc (64bit)
# - Arm64: g++-aarch64-linux-gnu
# - Ppc64le: g++-powerpc64le-linux-gcc
OS
=
$1
ARCH
=
$2
...
...
@@ -75,6 +76,7 @@ checkArch ()
format
=
"
$(
objdump
-f
"
$1
"
|
grep
-o
"file format .*$"
|
grep
-o
"[^ ]*$"
)
"
echo
Format
=
$format
if
[[
"
$OS
"
==
linux
]]
;
then
host_machine
=
"
$(
uname
-m
)
"
;
if
[[
"
$ARCH
"
==
x86_32
]]
;
then
assertEq
$format
"elf32-i386"
$LINENO
elif
[[
"
$ARCH
"
==
x86_64
]]
;
then
...
...
@@ -82,7 +84,11 @@ checkArch ()
elif
[[
"
$ARCH
"
==
aarch_64
]]
;
then
assertEq
$format
"elf64-little"
$LINENO
elif
[[
"
$ARCH
"
==
ppcle_64
]]
;
then
assertEq
$format
"elf64-powerpcle"
$LINENO
if
[[
$host_machine
==
ppc64le
]]
;
then
assertEq
$format
"elf64-powerpcle"
$LINENO
else
assertEq
$format
"elf64-little"
$LINENO
fi
else
fail
"Unsupported arch:
$ARCH
"
fi
...
...
@@ -121,12 +127,16 @@ checkDependencies ()
dump_cmd
=
'objdump -x '
"
$1
"
' | fgrep "DLL Name"'
white_list
=
"KERNEL32
\.
dll
\|
msvcrt
\.
dll"
elif
[[
"
$OS
"
==
linux
]]
;
then
host_machine
=
"
$(
uname
-m
)
"
;
dump_cmd
=
'ldd '
"
$1
"
if
[[
"
$ARCH
"
==
x86_32
]]
;
then
white_list
=
"linux-gate
\.
so
\.
1
\|
libpthread
\.
so
\.
0
\|
libm
\.
so
\.
6
\|
libc
\.
so
\.
6
\|
ld-linux
\.
so
\.
2"
elif
[[
"
$ARCH
"
==
x86_64
]]
;
then
white_list
=
"linux-vdso
\.
so
\.
1
\|
libpthread
\.
so
\.
0
\|
libm
\.
so
\.
6
\|
libc
\.
so
\.
6
\|
ld-linux-x86-64
\.
so
\.
2"
elif
[[
"
$ARCH
"
==
ppcle_64
]]
;
then
if
[[
$host_machine
!=
ppc64le
]]
;
then
dump_cmd
=
'objdump -p '
"
$1
"
' | grep NEEDED'
fi
white_list
=
"linux-vdso64
\.
so
\.
1
\|
libpthread
\.
so
\.
0
\|
libm
\.
so
\.
6
\|
libc
\.
so
\.
6
\|
libz
\.
so
\.
1
\|
ld64
\.
so
\.
2"
elif
[[
"
$ARCH
"
==
aarch_64
]]
;
then
dump_cmd
=
'objdump -p '
"
$1
"
' | grep NEEDED'
...
...
@@ -199,6 +209,7 @@ elif [[ "$(uname)" == Linux* ]]; then
CONFIGURE_ARGS
=
"
$CONFIGURE_ARGS
--host=aarch64-linux-gnu"
elif
[[
"
$ARCH
"
==
ppcle_64
]]
;
then
CXXFLAGS
=
"
$CXXFLAGS
-m64"
CONFIGURE_ARGS
=
"
$CONFIGURE_ARGS
--host=powerpc64le-linux-gnu"
else
fail
"Unsupported arch:
$ARCH
"
fi
...
...
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