Snapcraft 和 .sh

Snapcraft 和 .sh

我如何告诉 Snapcraft.sh先运行一个文件make?我知道我必须使用afteryaml 文件中的命令,但如何让 Snapcraft 运行该.sh文件?

答案1

该答案假设您在 Xenial 上使用 Snapcraft v2.24(撰写本文时的最新版本)。

假设您有以下 Makefile:

all:
        @touch built

install:
        @cp prepared $(DESTDIR)/
        @cp built $(DESTDIR)/
        @touch $(DESTDIR)/installed

下面的shell脚本(名为prepare.sh,确保它是可执行的):

#!/bin/sh

touch prepared

以及以下内容snapcraft.yaml

name: test-snap
version: '0.1'
summary: summary
description: description
grade: devel
confinement: strict

parts:
  my-part:
    plugin: make
    # The `prepare` keyword specifies what should happen before this
    # part is built (i.e. in this case before `make` is run). It
    # consists of shell commands.
    prepare: |
      ./prepare.sh

把它们都放到同一个目录下,然后运行 ​​,运行snapcraft prime完成后,你会在目录中看到prime/(除了meta/目录)三个文件:prepared(由shell脚本生成并由Makefile安装),built(由Makefile生成并安装) 和installed(由Makefile生成并安装)。

使用该prepare关键字是否适合您的用例?

相关内容