aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2020-09-07 21:43:13 -0700
committerGitHub <noreply@github.com>2020-09-07 21:43:13 -0700
commit6abbc157af0d94cf2f8840511a744422db382eae (patch)
treea50b630c22f14c28109c984113d2bf19afe4eb7a
parenta90cd6e36a934280100bb3f28a32e5cbd7c5acf2 (diff)
parenteae4b2a08842d7e4b8ed140534a01d4196e78756 (diff)
downloadrneovim-6abbc157af0d94cf2f8840511a744422db382eae.tar.gz
rneovim-6abbc157af0d94cf2f8840511a744422db382eae.tar.bz2
rneovim-6abbc157af0d94cf2f8840511a744422db382eae.zip
Merge #12862 snap: multiarch, support luajit where possible
-rw-r--r--ci/snap/.snapcraft_payload194
-rwxr-xr-xci/snap/deploy.sh42
-rw-r--r--snap/snapcraft.yaml29
3 files changed, 250 insertions, 15 deletions
diff --git a/ci/snap/.snapcraft_payload b/ci/snap/.snapcraft_payload
new file mode 100644
index 0000000000..29f895fad6
--- /dev/null
+++ b/ci/snap/.snapcraft_payload
@@ -0,0 +1,194 @@
+{
+ "ref": "refs/heads/master",
+ "before": "66b136c43c12df3dcf8f19ff48f206ad2e4f43fc",
+ "after": "1bf69c32217cc455603ce8aa2b5415d9717f0fa2",
+ "repository": {
+ "id": 292861950,
+ "node_id": "MDEwOlJlcG9zaXRvcnkyOTI4NjE5NTA=",
+ "name": "neovim-snap",
+ "full_name": "hurricanehrndz/neovim-snap",
+ "private": false,
+ "owner": {
+ "name": "hurricanehrndz",
+ "email": "hurricanehrndz@users.noreply.github.com",
+ "login": "hurricanehrndz",
+ "id": 5804237,
+ "node_id": "MDQ6VXNlcjU4MDQyMzc=",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/5804237?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/hurricanehrndz",
+ "html_url": "https://github.com/hurricanehrndz",
+ "followers_url": "https://api.github.com/users/hurricanehrndz/followers",
+ "following_url": "https://api.github.com/users/hurricanehrndz/following{/other_user}",
+ "gists_url": "https://api.github.com/users/hurricanehrndz/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/hurricanehrndz/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/hurricanehrndz/subscriptions",
+ "organizations_url": "https://api.github.com/users/hurricanehrndz/orgs",
+ "repos_url": "https://api.github.com/users/hurricanehrndz/repos",
+ "events_url": "https://api.github.com/users/hurricanehrndz/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/hurricanehrndz/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/hurricanehrndz/neovim-snap",
+ "description": "snap build for neovim",
+ "fork": false,
+ "url": "https://github.com/hurricanehrndz/neovim-snap",
+ "forks_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/forks",
+ "keys_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/teams",
+ "hooks_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/hooks",
+ "issue_events_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/events",
+ "assignees_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/tags",
+ "blobs_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/languages",
+ "stargazers_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/stargazers",
+ "contributors_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/contributors",
+ "subscribers_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/subscribers",
+ "subscription_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/subscription",
+ "commits_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/merges",
+ "archive_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/downloads",
+ "issues_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/labels{/name}",
+ "releases_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/hurricanehrndz/neovim-snap/deployments",
+ "created_at": 1599227980,
+ "updated_at": "2020-09-04T14:02:38Z",
+ "pushed_at": 1599228352,
+ "git_url": "git://github.com/hurricanehrndz/neovim-snap.git",
+ "ssh_url": "git@github.com:hurricanehrndz/neovim-snap.git",
+ "clone_url": "https://github.com/hurricanehrndz/neovim-snap.git",
+ "svn_url": "https://github.com/hurricanehrndz/neovim-snap",
+ "homepage": null,
+ "size": 0,
+ "stargazers_count": 0,
+ "watchers_count": 0,
+ "language": null,
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": false,
+ "forks_count": 0,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 0,
+ "license": {
+ "key": "mit",
+ "name": "MIT License",
+ "spdx_id": "MIT",
+ "url": "https://api.github.com/licenses/mit",
+ "node_id": "MDc6TGljZW5zZTEz"
+ },
+ "forks": 0,
+ "open_issues": 0,
+ "watchers": 0,
+ "default_branch": "master",
+ "stargazers": 0,
+ "master_branch": "master"
+ },
+ "pusher": {
+ "name": "hurricanehrndz",
+ "email": "hurricanehrndz@users.noreply.github.com"
+ },
+ "sender": {
+ "login": "hurricanehrndz",
+ "id": 5804237,
+ "node_id": "MDQ6VXNlcjU4MDQyMzc=",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/5804237?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/hurricanehrndz",
+ "html_url": "https://github.com/hurricanehrndz",
+ "followers_url": "https://api.github.com/users/hurricanehrndz/followers",
+ "following_url": "https://api.github.com/users/hurricanehrndz/following{/other_user}",
+ "gists_url": "https://api.github.com/users/hurricanehrndz/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/hurricanehrndz/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/hurricanehrndz/subscriptions",
+ "organizations_url": "https://api.github.com/users/hurricanehrndz/orgs",
+ "repos_url": "https://api.github.com/users/hurricanehrndz/repos",
+ "events_url": "https://api.github.com/users/hurricanehrndz/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/hurricanehrndz/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "created": false,
+ "deleted": false,
+ "forced": false,
+ "base_ref": null,
+ "compare": "https://github.com/hurricanehrndz/neovim-snap/compare/66b136c43c12...1bf69c32217c",
+ "commits": [
+ {
+ "id": "1bf69c32217cc455603ce8aa2b5415d9717f0fa2",
+ "tree_id": "62ea83a2349be8c930c45fdc199f71b08bf5927e",
+ "distinct": true,
+ "message": "Build of latest tag",
+ "timestamp": "2020-09-04T14:05:40Z",
+ "url": "https://github.com/hurricanehrndz/neovim-snap/commit/1bf69c32217cc455603ce8aa2b5415d9717f0fa2",
+ "author": {
+ "name": "Carlos Hernandez",
+ "email": "carlos@techbyte.ca",
+ "username": "hurricanehrndz"
+ },
+ "committer": {
+ "name": "Carlos Hernandez",
+ "email": "carlos@techbyte.ca",
+ "username": "hurricanehrndz"
+ },
+ "added": [
+
+ ],
+ "removed": [
+
+ ],
+ "modified": [
+ "snap/snapcraft.yaml"
+ ]
+ }
+ ],
+ "head_commit": {
+ "id": "1bf69c32217cc455603ce8aa2b5415d9717f0fa2",
+ "tree_id": "62ea83a2349be8c930c45fdc199f71b08bf5927e",
+ "distinct": true,
+ "message": "Build of latest tag",
+ "timestamp": "2020-09-04T14:05:40Z",
+ "url": "https://github.com/hurricanehrndz/neovim-snap/commit/1bf69c32217cc455603ce8aa2b5415d9717f0fa2",
+ "author": {
+ "name": "Carlos Hernandez",
+ "email": "carlos@techbyte.ca",
+ "username": "hurricanehrndz"
+ },
+ "committer": {
+ "name": "Carlos Hernandez",
+ "email": "carlos@techbyte.ca",
+ "username": "hurricanehrndz"
+ },
+ "added": [
+
+ ],
+ "removed": [
+
+ ],
+ "modified": [
+ "snap/snapcraft.yaml"
+ ]
+ }
+}
diff --git a/ci/snap/deploy.sh b/ci/snap/deploy.sh
index 5fbd52d775..579c48e933 100755
--- a/ci/snap/deploy.sh
+++ b/ci/snap/deploy.sh
@@ -3,19 +3,37 @@
set -e
set -o pipefail
-# not a tagged release, abort
-# [[ "$TRAVIS_TAG" != "$TRAVIS_BRANCH" ]] && exit 0
+SNAP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+WEBHOOK_PAYLOAD="$(cat "${SNAP_DIR}/.snapcraft_payload")"
+PAYLOAD_SIG="${SECRET_SNAP_SIG}"
-mkdir -p .snapcraft
-# shellcheck disable=SC2154
-openssl aes-256-cbc -K "$encrypted_ece1c4844832_key" -iv "$encrypted_ece1c4844832_iv" \
- -in ci/snap/travis_snapcraft.cfg -out .snapcraft/snapcraft.cfg -d
-SNAP=$(find ./ -name "*.snap")
+snap_realease_needed() {
+ last_committed_tag="$(git tag -l --sort=refname|head -1)"
+ last_snap_release="$(snap info nvim | awk '$1 == "latest/edge:" { print $2 }' | perl -lpe 's/v\d.\d.\d-//g')"
+ git fetch -f --tags
+ git checkout "${last_committed_tag}" 2> /dev/null
+ last_git_release="$(git describe --first-parent 2> /dev/null | perl -lpe 's/v\d.\d.\d-//g')"
-# TODO(justinmk): This always does `edge` until we enable tagged builds.
-if [[ "$SNAP" =~ "dirty" || "$SNAP" =~ "nightly" ]]; then
- snapcraft push "$SNAP" --release edge
-else
- snapcraft push "$SNAP" --release candidate
+ if [[ -z "$(echo $last_snap_release | perl -ne "print if /${last_git_release}.*/")" ]]; then
+ return 0
+ fi
+ return 1
+}
+
+
+trigger_snapcraft_webhook() {
+ [[ -n "${PAYLOAD_SIG}" ]] || exit
+ echo "Triggering new snap relase via webhook..."
+ curl -X POST \
+ -H "Content-Type: application/json" \
+ -H "X-Hub-Signature: sha1=${PAYLOAD_SIG}" \
+ --data "${WEBHOOK_PAYLOAD}" \
+ https://snapcraft.io/nvim/webhook/notify
+}
+
+
+if $(snap_realease_needed); then
+ echo "New snap release required"
+ trigger_snapcraft_webhook
fi
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 7d1e7bdbb0..097d657613 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,5 +1,5 @@
name: nvim
-base: core20
+base: core18
adopt-info: nvim
summary: Vim-fork focused on extensibility and agility.
description: |
@@ -28,13 +28,20 @@ parts:
source: .
override-pull: |
snapcraftctl pull
+ latest_tag="$(git tag -l --sort=refname|head -1)"
+ git checkout "${latest_tag}"
major="$(awk '/NVIM_VERSION_MAJOR/{gsub(")","",$2); print $2}' CMakeLists.txt)"
minor="$(awk '/NVIM_VERSION_MINOR/{gsub(")","",$2); print $2}' CMakeLists.txt)"
patch="$(awk '/NVIM_VERSION_PATCH/{gsub(")","",$2); print $2}' CMakeLists.txt)"
version_prefix="v$major.$minor.$patch"
git_described="$(git describe --first-parent --dirty 2> /dev/null | perl -lpe 's/v\d.\d.\d-//g')"
git_described="${git_described:-$(git describe --first-parent --tags --always --dirty)}"
- snapcraftctl set-version "${version_prefix}-${git_described}"
+ if [ "${version_prefix}" != "${git_described}" ]; then
+ VERSION="${version_prefix}-${git_described}-${branch}"
+ else
+ VERSION="${version_prefix}-${branch}"
+ fi
+ snapcraftctl set-version "${VERSION}"
plugin: make
make-parameters:
- CMAKE_BUILD_TYPE=RelWithDebInfo
@@ -42,7 +49,23 @@ parts:
- CMAKE_FLAGS=-DPREFER_LUA=ON
- DEPS_CMAKE_FLAGS="-DUSE_BUNDLED_LUA=ON -DUSE_BUNDLED_LUAJIT=OFF"
override-build: |
- snapcraftctl build
+ echo "Building on $SNAP_ARCH"
+ set -x
+ case "$SNAP_ARCH" in
+ "arm64" | "ppc64el" | "s390x")
+ make -j"${SNAPCRAFT_PARALLEL_BUILD_COUNT}" \
+ CMAKE_BUILD_TYPE=RelWithDebInfo \
+ CMAKE_INSTALL_PREFIX=/usr \
+ CMAKE_FLAGS=-DPREFER_LUA=ON \
+ DEPS_CMAKE_FLAGS="-DUSE_BUNDLED_LUA=ON -DUSE_BUNDLED_LUAJIT=OFF"
+ ;;
+ *)
+ make -j"${SNAPCRAFT_PARALLEL_BUILD_COUNT}" \
+ CMAKE_BUILD_TYPE=RelWithDebInfo \
+ CMAKE_INSTALL_PREFIX=/usr
+ ;;
+ esac
+ make DESTDIR="$SNAPCRAFT_PART_INSTALL" install
# Fix Desktop file
sed -i 's|^Exec=nvim|Exec=/snap/bin/nvim.nvim|' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/nvim.desktop
sed -i 's|^TryExec=nvim|TryExec=/snap/bin/nvim.nvim|' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/nvim.desktop