build: builds armv6 with rpi1 compat gcc.

This commit is contained in:
Leonard Gram 2019-03-22 16:12:42 +01:00
parent 35965e0efd
commit 6e802dc94d
5 changed files with 78 additions and 29 deletions

View File

@ -439,6 +439,15 @@ jobs:
name: Update RPM repository name: Update RPM repository
command: './scripts/build/update_repo/update-rpm.sh "oss" "$GPG_KEY_PASSWORD" "$CIRCLE_TAG" "dist"' command: './scripts/build/update_repo/update-rpm.sh "oss" "$GPG_KEY_PASSWORD" "$CIRCLE_TAG" "dist"'
store-build-artifacts:
docker:
- image: circleci/node:8
steps:
- attach_workspace:
at: .
- store_artifacts:
path: ./dist
workflows: workflows:
version: 2 version: 2
build-master: build-master:
@ -572,3 +581,14 @@ workflows:
- postgres-integration-test - postgres-integration-test
- cache-server-test - cache-server-test
filters: *filter-not-release-or-master filters: *filter-not-release-or-master
- store-build-artifacts:
requires:
- build
- test-backend
- test-frontend
- codespell
- gometalinter
- mysql-integration-test
- postgres-integration-test
- cache-server-test
filters: *filter-not-release-or-master

View File

@ -48,6 +48,7 @@ var (
enterprise bool = false enterprise bool = false
skipRpmGen bool = false skipRpmGen bool = false
skipDebGen bool = false skipDebGen bool = false
printGenVersion bool = false
) )
func main() { func main() {
@ -71,6 +72,7 @@ func main() {
flag.BoolVar(&isDev, "dev", isDev, "optimal for development, skips certain steps") flag.BoolVar(&isDev, "dev", isDev, "optimal for development, skips certain steps")
flag.BoolVar(&skipRpmGen, "skipRpm", skipRpmGen, "skip rpm package generation (default: false)") flag.BoolVar(&skipRpmGen, "skipRpm", skipRpmGen, "skip rpm package generation (default: false)")
flag.BoolVar(&skipDebGen, "skipDeb", skipDebGen, "skip deb package generation (default: false)") flag.BoolVar(&skipDebGen, "skipDeb", skipDebGen, "skip deb package generation (default: false)")
flag.BoolVar(&printGenVersion, "gen-version", printGenVersion, "generate Grafana version and output (default: false)")
flag.Parse() flag.Parse()
buildId = shortenBuildId(buildIdRaw) buildId = shortenBuildId(buildIdRaw)
@ -81,6 +83,11 @@ func main() {
pkgArch = goarch pkgArch = goarch
} }
if printGenVersion {
printGeneratedVersion()
return
}
log.Printf("Version: %s, Linux Version: %s, Package Iteration: %s\n", version, linuxPackageVersion, linuxPackageIteration) log.Printf("Version: %s, Linux Version: %s, Package Iteration: %s\n", version, linuxPackageVersion, linuxPackageIteration)
if flag.NArg() == 0 { if flag.NArg() == 0 {
@ -221,6 +228,7 @@ func readVersionFromPackageJson() {
type linuxPackageOptions struct { type linuxPackageOptions struct {
packageType string packageType string
packageArch string
homeDir string homeDir string
binPath string binPath string
serverBinPath string serverBinPath string
@ -241,14 +249,14 @@ type linuxPackageOptions struct {
} }
func createDebPackages() { func createDebPackages() {
previousPkgArch := pkgArch debPkgArch := pkgArch
if pkgArch == "armv7" { if pkgArch == "armv7" || pkgArch == "armv6" {
pkgArch = "armhf" debPkgArch = "armhf"
} else if pkgArch == "armv6" {
pkgArch = "armel"
} }
createPackage(linuxPackageOptions{ createPackage(linuxPackageOptions{
packageType: "deb", packageType: "deb",
packageArch: debPkgArch,
homeDir: "/usr/share/grafana", homeDir: "/usr/share/grafana",
binPath: "/usr/sbin", binPath: "/usr/sbin",
configDir: "/etc/grafana", configDir: "/etc/grafana",
@ -264,19 +272,19 @@ func createDebPackages() {
depends: []string{"adduser", "libfontconfig"}, depends: []string{"adduser", "libfontconfig"},
}) })
pkgArch = previousPkgArch
} }
func createRpmPackages() { func createRpmPackages() {
previousPkgArch := pkgArch rpmPkgArch := pkgArch
switch { switch {
case pkgArch == "armv7": case pkgArch == "armv7":
pkgArch = "armhfp" rpmPkgArch = "armhfp"
case pkgArch == "arm64": case pkgArch == "arm64":
pkgArch = "aarch64" rpmPkgArch = "aarch64"
} }
createPackage(linuxPackageOptions{ createPackage(linuxPackageOptions{
packageType: "rpm", packageType: "rpm",
packageArch: rpmPkgArch,
homeDir: "/usr/share/grafana", homeDir: "/usr/share/grafana",
binPath: "/usr/sbin", binPath: "/usr/sbin",
configDir: "/etc/grafana", configDir: "/etc/grafana",
@ -292,7 +300,6 @@ func createRpmPackages() {
depends: []string{"/sbin/service", "fontconfig", "freetype", "urw-fonts"}, depends: []string{"/sbin/service", "fontconfig", "freetype", "urw-fonts"},
}) })
pkgArch = previousPkgArch
} }
func createLinuxPackages() { func createLinuxPackages() {
@ -351,6 +358,10 @@ func createPackage(options linuxPackageOptions) {
name += "-enterprise" name += "-enterprise"
args = append(args, "--replaces", "grafana") args = append(args, "--replaces", "grafana")
} }
fmt.Printf("pkgArch is set to '%s', generated arch is '%s'\n", pkgArch, options.packageArch)
if pkgArch == "armv6" {
name += "-rpi"
}
args = append(args, "--name", name) args = append(args, "--name", name)
description := "Grafana" description := "Grafana"
@ -371,8 +382,8 @@ func createPackage(options linuxPackageOptions) {
args = append(args, "--deb-no-default-config-files") args = append(args, "--deb-no-default-config-files")
} }
if pkgArch != "" { if options.packageArch != "" {
args = append(args, "-a", pkgArch) args = append(args, "-a", options.packageArch)
} }
if linuxPackageIteration != "" { if linuxPackageIteration != "" {
@ -437,6 +448,16 @@ func setup() {
runPrint("go", "install", "-v", "./pkg/cmd/grafana-server") runPrint("go", "install", "-v", "./pkg/cmd/grafana-server")
} }
func printGeneratedVersion() {
var genVersion string
if includeBuildId {
genVersion = fmt.Sprintf("%v-%v", linuxPackageVersion, linuxPackageIteration)
} else {
genVersion = version
}
fmt.Print(genVersion)
}
func test(pkg string) { func test(pkg string) {
setBuildEnv() setBuildEnv()
runPrint("go", "test", "-short", "-timeout", "60s", pkg) runPrint("go", "test", "-short", "-timeout", "60s", pkg)

View File

@ -8,6 +8,7 @@ set -e
EXTRA_OPTS="$@" EXTRA_OPTS="$@"
CCARMV6=/opt/rpi-tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
CCARMV7=arm-linux-gnueabihf-gcc CCARMV7=arm-linux-gnueabihf-gcc
CCARM64=aarch64-linux-gnu-gcc CCARM64=aarch64-linux-gnu-gcc
CCOSX64=/tmp/osxcross/target/bin/o64-clang CCOSX64=/tmp/osxcross/target/bin/o64-clang
@ -29,10 +30,18 @@ else
fi fi
echo "Build arguments: $OPT" echo "Build arguments: $OPT"
echo "current dir: $(pwd)"
if [ -d "dist" ]; then
rm -rf dist
fi
mkdir dist
go run build.go -gen-version ${OPT} > dist/grafana.version
# build only amd64 for enterprise # build only amd64 for enterprise
if echo "$EXTRA_OPTS" | grep -vq enterprise ; then if echo "$EXTRA_OPTS" | grep -vq enterprise ; then
go run build.go -goarch armv6 -cc ${CCARMV7} ${OPT} build go run build.go -goarch armv6 -cc ${CCARMV6} ${OPT} build
go run build.go -goarch armv7 -cc ${CCARMV7} ${OPT} build go run build.go -goarch armv7 -cc ${CCARMV7} ${OPT} build
go run build.go -goarch arm64 -cc ${CCARM64} ${OPT} build go run build.go -goarch arm64 -cc ${CCARM64} ${OPT} build
go run build.go -goos darwin -cc ${CCOSX64} ${OPT} build go run build.go -goos darwin -cc ${CCOSX64} ${OPT} build
@ -45,12 +54,6 @@ CC=${CCX64} go run build.go ${OPT} build
yarn install --pure-lockfile --no-progress yarn install --pure-lockfile --no-progress
echo "current dir: $(pwd)"
if [ -d "dist" ]; then
rm -rf dist
fi
if [ "$CIRCLE_TAG" != "" ]; then if [ "$CIRCLE_TAG" != "" ]; then
echo "Building frontend and packaging from tag $CIRCLE_TAG" echo "Building frontend and packaging from tag $CIRCLE_TAG"
else else

View File

@ -8,6 +8,7 @@ set -e
EXTRA_OPTS="$@" EXTRA_OPTS="$@"
CCARMV6=/opt/rpi-tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
CCARMV7=arm-linux-gnueabihf-gcc CCARMV7=arm-linux-gnueabihf-gcc
CCARM64=aarch64-linux-gnu-gcc CCARM64=aarch64-linux-gnu-gcc
CCX64=/tmp/x86_64-centos6-linux-gnu/bin/x86_64-centos6-linux-gnu-gcc CCX64=/tmp/x86_64-centos6-linux-gnu/bin/x86_64-centos6-linux-gnu-gcc
@ -26,9 +27,18 @@ else
OPT="-buildId=${CIRCLE_WORKFLOW_ID} ${EXTRA_OPTS}" OPT="-buildId=${CIRCLE_WORKFLOW_ID} ${EXTRA_OPTS}"
fi fi
echo "Build arguments: $OPT"
go run build.go -goarch armv6 -cc ${CCARMV7} ${OPT} build echo "Build arguments: $OPT"
echo "current dir: $(pwd)"
if [ -d "dist" ]; then
rm -rf dist
fi
mkdir dist
go run build.go -gen-version ${OPT} > dist/grafana.version
go run build.go -goarch armv6 -cc ${CCARMV6} ${OPT} build
go run build.go -goarch armv7 -cc ${CCARMV7} ${OPT} build go run build.go -goarch armv7 -cc ${CCARMV7} ${OPT} build
go run build.go -goarch arm64 -cc ${CCARM64} ${OPT} build go run build.go -goarch arm64 -cc ${CCARM64} ${OPT} build
@ -36,12 +46,6 @@ CC=${CCX64} go run build.go ${OPT} build
yarn install --pure-lockfile --no-progress yarn install --pure-lockfile --no-progress
echo "current dir: $(pwd)"
if [ -d "dist" ]; then
rm -rf dist
fi
echo "Building frontend" echo "Building frontend"
go run build.go ${OPT} build-frontend go run build.go ${OPT} build-frontend

View File

@ -103,7 +103,8 @@ RUN apt-get update && \
| tee /etc/apt/sources.list.d/yarn.list && \ | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install --no-install-recommends yarn && \ apt-get update && apt-get install --no-install-recommends yarn && \
curl -L https://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz \ curl -L https://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz \
| tar -xz -C /usr/local | tar -xz -C /usr/local && \
git clone https://github.com/raspberrypi/tools.git /opt/rpi-tools --depth=1
RUN apt-get install -y \ RUN apt-get install -y \
gcc libc-dev make && \ gcc libc-dev make && \
@ -111,4 +112,4 @@ RUN apt-get install -y \
curl -sSL https://get.rvm.io | bash -s stable && \ curl -sSL https://get.rvm.io | bash -s stable && \
/bin/bash -l -c "rvm requirements && rvm install 2.2 && gem install -N fpm" /bin/bash -l -c "rvm requirements && rvm install 2.2 && gem install -N fpm"
ADD ./bootstrap.sh /tmp/bootstrap.sh ADD ./bootstrap.sh /tmp/bootstrap.sh