From bfd46bbbc961d83994e46b458d3c9617c0142d60 Mon Sep 17 00:00:00 2001 From: Mengyi Wang Date: Tue, 12 Apr 2022 09:24:25 +0200 Subject: [PATCH 1/2] build(snap): source metadata from central repo Signed-off-by: Mengyi Wang --- .gitignore | 1 + snap/snapcraft.yaml | 61 +++++++++++++++++++++------------------------ 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index d3f99fa008..088ae02851 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ docs/_build/ # snap files *.snap +*.assert *.bz2 *.pyc parts/* diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 5d7cae2d1d..7ab9080125 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,17 +1,7 @@ name: edgexfoundry base: core20 type: app -adopt-info: version -summary: Open-source framework for IoT edge computing -description: | - EdgeX Foundry is a vendor-neutral open source project hosted by The Linux - Foundation building a common open framework for IoT edge computing. This - snap contains all of the EdgeX core, security, and support reference - services, as well as Consul, Kong, Redis, Vault, and device-virtual. - The packaging for this snap can be found at: - https://github.com/edgexfoundry/edgex-go - -icon: snap/local/assets/edgex-snap-icon.png +adopt-info: metadata # Different epochs prevent refreshes between major versions of EdgeX due # to continued configuration changes. @@ -493,21 +483,6 @@ apps: plugs: [home, network, network-bind] parts: - version: - plugin: nil - # we need to include git, in case we are building the minimal-snap-build - build-packages: - - git - # as with static-packages part, the source dir is unrelated to this part and is used - # since it changes rarely and therefore will not trigger a new pull - source: snap/local/build-helpers - override-pull: | - cd $SNAPCRAFT_PROJECT_DIR - GIT_VERSION=$(git describe --tags --abbrev=0 | sed 's/v//') - if [ -z "$GIT_VERSION" ]; then - GIT_VERSION="0.0.0" - fi - snapcraftctl set-version ${GIT_VERSION} static-packages: plugin: nil # the default source for a part that doesn't specify one is ".", which @@ -647,18 +622,16 @@ parts: - "PREFIX=$SNAPCRAFT_PART_INSTALL/" edgex-go: + after: + - metadata + - go-build-helper source: . plugin: make - after: [go-build-helper] override-build: | cd $SNAPCRAFT_PART_SRC - GIT_VERSION=$(git describe --tags --abbrev=0 | sed 's/v//') - if [ -z "$GIT_VERSION" ]; then - GIT_VERSION="0.0.0" - fi - - echo $GIT_VERSION > ./VERSION + # the version is needed for the build + cat ./VERSION [ ! -d "vendor" ] && go mod download all || echo "skipping..." @@ -876,5 +849,27 @@ parts: organize: bin/setup-redis-credentials.sh: bin/kuiper-setup-redis-credentials.sh + metadata: + plugin: nil + source: https://github.com/canonical/edgex-snap-metadata.git + source-branch: appstream + source-depth: 1 + override-build: | + # install the icon at the default internal path + install -DT edgex-snap-icon.png \ + $SNAPCRAFT_PART_INSTALL/meta/gui/icon.png + + # change to this project's repo to get the version + cd $SNAPCRAFT_PROJECT_DIR + if git describe ; then + VERSION=$(git describe --tags --abbrev=0 | sed 's/v//') + else + VERSION="0.0.0" + fi + # write version to file for the build + echo $VERSION > ./VERSION + # set the version of this snap + snapcraftctl set-version $VERSION + parse-info: [edgexfoundry.metainfo.xml] From 8fcecc7dc414ac87c9f88eaeb9b0d0f3bf6298fa Mon Sep 17 00:00:00 2001 From: Mengyi Wang Date: Tue, 12 Apr 2022 13:25:35 +0200 Subject: [PATCH 2/2] build(snap): remove local icon folder Signed-off-by: Mengyi Wang --- snap/local/assets/edgex-snap-icon.png | Bin 11942 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 snap/local/assets/edgex-snap-icon.png diff --git a/snap/local/assets/edgex-snap-icon.png b/snap/local/assets/edgex-snap-icon.png deleted file mode 100644 index c67e89dffe59a7d53f5152815b234b53583c29fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11942 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 U5ID~Juh;ypp6Trd9oP8(2UIm