From 25b08b55ff4c110cab4dac5309d33b4854a76471 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Mon, 30 Apr 2018 18:30:50 +0200 Subject: [PATCH] Build separate OSS and Elastic licensed packages Now `dev-tools/osx-deploy` builds two sets of packages per Beat: - beatname-oss-version.{pkg,dmg} packages without X-Pack content. - beatname-version.{pkg,dmg} packages with X-Pack content The main Makefile target has been renamed to `osx-package-all` to match the existing `package-all` target. From inside a Beat it is possible to use the targets `osx-package-oss` and `osx-package-elastic` to build only one set of packages. --- Makefile | 6 +++--- dev-tools/osx-deploy | 4 ++-- dev-tools/packer/Makefile | 2 +- dev-tools/packer/platforms/darwin/pkg/build.sh | 7 +++++-- .../packer/platforms/darwin/pkg/internal_build.sh | 9 ++++++--- .../darwin/pkg/templates/distribution.plist.j2 | 2 +- libbeat/scripts/Makefile | 13 ++++++++++++- 7 files changed, 30 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 1b2818a9289..cde485c2951 100644 --- a/Makefile +++ b/Makefile @@ -128,10 +128,10 @@ package-all: update beats-dashboards @# Run tests on the generated packages. @go test ./dev-tools/package_test.go -files "${BUILD_DIR}/upload/*/*" -.PHONY: osx-package -osx-package: +.PHONY: osx-package-all +osx-package-all: @$(test "$(uname -s)" = Darwin || { echo "Must run on Darwin" ; exit 1;} ) - @$(foreach var,$(OSX_BEATS),$(MAKE) -C $(var) osx-package || exit 1;) + @$(foreach var,$(OSX_BEATS),$(MAKE) -C $(var) osx-package-all || exit 1;) @mkdir -p build/upload/ @$(foreach var,$(OSX_BEATS),cp -r $(var)/build/upload/*.dmg $(var)/build/upload/*.pkg build/upload/$(var) || exit 1;) diff --git a/dev-tools/osx-deploy b/dev-tools/osx-deploy index e7a7d923acb..c0928cfe7f1 100755 --- a/dev-tools/osx-deploy +++ b/dev-tools/osx-deploy @@ -13,9 +13,9 @@ def main(): dir = os.path.dirname(__file__) os.chdir(dir + "/../") if args.no_snapshot: - check_call("make SNAPSHOT=no osx-package", shell=True) + check_call("make SNAPSHOT=no osx-package-all", shell=True) else: - check_call("make SNAPSHOT=yes osx-package", shell=True) + check_call("make SNAPSHOT=yes osx-package-all", shell=True) print("All done") if __name__ == "__main__": diff --git a/dev-tools/packer/Makefile b/dev-tools/packer/Makefile index 7650820f214..62247bfa4b8 100644 --- a/dev-tools/packer/Makefile +++ b/dev-tools/packer/Makefile @@ -40,7 +40,7 @@ beat_abspath=${BEATS_GOPATH}/src/${BEAT_PATH} %/dmg: echo Creating OSX packages for $(@D) - ARCH=amd64 BEAT=$(@D) BUILD_DIR=${BUILD_DIR} UPLOAD_DIR=${UPLOAD_DIR} BEAT_PATH=$(beat_abspath) BUILDID=$(BUILDID) SNAPSHOT=$(SNAPSHOT) $(packer_absdir)/platforms/darwin/pkg/build.sh + ARCH=amd64 BEAT=$(@D) BUILD_DIR=${BUILD_DIR} UPLOAD_DIR=${UPLOAD_DIR} BEAT_PATH=$(beat_abspath) BUILDID=$(BUILDID) SNAPSHOT=$(SNAPSHOT) PKG_SUFFIX=$(PKG_SUFFIX) $(packer_absdir)/platforms/darwin/pkg/build.sh .PHONY: package-dashboards package-dashboards: diff --git a/dev-tools/packer/platforms/darwin/pkg/build.sh b/dev-tools/packer/platforms/darwin/pkg/build.sh index 2f1ef18fd97..be6998b0fb7 100755 --- a/dev-tools/packer/platforms/darwin/pkg/build.sh +++ b/dev-tools/packer/platforms/darwin/pkg/build.sh @@ -38,7 +38,8 @@ test -n "SIGN_IDENTITY_INSTALLER" || die "Installer certificate not found" test -n "SIGN_IDENTITY_APP" || die "Codesigning certificate not found" export SIGN_IDENTITY_INSTALLER SIGN_IDENTITY_APP -test -f "${BUILD_DIR}/package.yml" || die "package.yml not found in BUILD_DIR" +PKG_YML="${BUILD_DIR}/package${PKG_SUFFIX}/package.yml" +test -f "$PKG_YML" || die "package.yml not found in $PKG_YML" ARCH_FILE="${PACKERDIR}/archs/$ARCH.yml" test -f "$ARCH_FILE" || die "$ARCH_FILE not found (check ARCH environment variable)" @@ -46,7 +47,7 @@ TMPDIR=$(mktemp -d) test "$?" -ne 0 && die "Failed creating temporary directory" echo "Building in directory $TMPDIR" -cat "${BUILD_DIR}/package.yml" "$ARCH_FILE" "$BASEDIR/base_conf.yml" > "${TMPDIR}/conf.yml" || die "Failed generating conf.yml" +cat "$PKG_YML" "$ARCH_FILE" "$BASEDIR/base_conf.yml" > "${TMPDIR}/conf.yml" || die "Failed generating conf.yml" if [ "$SNAPSHOT" = "yes" ]; then echo 'snapshot: "-SNAPSHOT"' >> "${TMPDIR}/conf.yml" @@ -54,6 +55,8 @@ else echo 'snapshot: ""' >> "${TMPDIR}/conf.yml" fi +echo "pkg_suffix: '${PKG_SUFFIX}'" >> "${TMPDIR}/conf.yml" + echo 'Building preference-pane' make -e CODE_SIGNING_REQUIRED=YES -C "${PACKERDIR}/platforms/darwin/preference-pane" clean build pkg || die "Build of preference-pane failed" cp -a "${PACKERDIR}/platforms/darwin/preference-pane/BeatsPrefPane.pkg" "${TMPDIR}/" || die "Preference pane package not found" diff --git a/dev-tools/packer/platforms/darwin/pkg/internal_build.sh b/dev-tools/packer/platforms/darwin/pkg/internal_build.sh index 08b95fe1814..27aba03afe3 100755 --- a/dev-tools/packer/platforms/darwin/pkg/internal_build.sh +++ b/dev-tools/packer/platforms/darwin/pkg/internal_build.sh @@ -6,16 +6,19 @@ set -e BASEDIR=$(cd "$(dirname "$0")"; pwd) -FILE_NAME="$BEAT-$VERSION-$ARCH" +FILE_NAME="$BEAT$PKG_SUFFIX-$VERSION-$ARCH" PKG_NAME="$FILE_NAME.pkg" DMG_NAME="$FILE_NAME.dmg" INNER_NAME="internal-$FILE_NAME.pkg" VENDOR_DIR="root/$INSTALL_PATH/$VENDOR" BEAT_DIR="$VENDOR_DIR/$BEAT" mkdir -p "$VENDOR_DIR" -TAR_NAME="$BEAT-$VERSION-darwin-$ARCH" +TAR_NAME="$BEAT$PKG_SUFFIX-$VERSION-darwin-$ARCH" +# When uncompressed, both the -oss and non-oss tar.gz +# yield the same directory name. +TAR_DIR_NAME="$BEAT-$VERSION-darwin-$ARCH" tar zxf "$BUILD_DIR/upload/$TAR_NAME".tar.gz -mv "$TAR_NAME" "$BEAT_DIR" +mv "$TAR_DIR_NAME" "$BEAT_DIR" cp launchd-daemon.plist "$BEAT_DIR/$IDENTIFIER.plist" diff --git a/dev-tools/packer/platforms/darwin/pkg/templates/distribution.plist.j2 b/dev-tools/packer/platforms/darwin/pkg/templates/distribution.plist.j2 index f2b109cd7b8..adc7d5325fc 100644 --- a/dev-tools/packer/platforms/darwin/pkg/templates/distribution.plist.j2 +++ b/dev-tools/packer/platforms/darwin/pkg/templates/distribution.plist.j2 @@ -17,7 +17,7 @@ - internal-{{.beat_name}}-{{.version}}{{.snapshot}}-{{.osx_arch}}.pkg + internal-{{.beat_name}}{{.pkg_suffix}}-{{.version}}{{.snapshot}}-{{.osx_arch}}.pkg {{.beat_name}} {{.version}}{{.snapshot}} diff --git a/libbeat/scripts/Makefile b/libbeat/scripts/Makefile index 699701053dc..3b07cf44f6c 100755 --- a/libbeat/scripts/Makefile +++ b/libbeat/scripts/Makefile @@ -549,10 +549,21 @@ package-dashboards: package-setup # build the dashboards package BEAT_NAME=${BEAT_NAME} BUILD_DIR=${BUILD_DIR} SNAPSHOT=$(SNAPSHOT) $(MAKE) -C ${ES_BEATS}/dev-tools/packer package-dashboards ${shell pwd}/build/upload/build_id.txt +.PHONY: osx-package-all +osx-package-all: osx-package-elastic osx-package-oss + +.PHONY: osx-package-elastic +osx-package-elastic: + @$(MAKE) osx-package + +.PHONY: osx-package-oss +osx-package-oss: + @$(MAKE) PKG_SUFFIX=-oss osx-package + .PHONY: osx-package osx-package: package-yml osx-package: ## @packaging Create OSX packages for the beat. - $(MAKE) -C ${ES_BEATS}/dev-tools/packer -e BEAT_NAME=${BEAT_NAME} BUILD_DIR=${BUILD_DIR} SNAPSHOT=$(SNAPSHOT) $(BEAT_NAME)/dmg + $(MAKE) -C ${ES_BEATS}/dev-tools/packer -e PKG_SUFFIX=${PKG_SUFFIX} BEAT_NAME=${BEAT_NAME} BUILD_DIR=${BUILD_DIR} SNAPSHOT=$(SNAPSHOT) $(BEAT_NAME)/dmg fix-permissions: # Change ownership of all files inside /build folder from root/root to current user/group