我如何告诉 Snapcraft.sh
先运行一个文件make
?我知道我必须使用after
yaml 文件中的命令,但如何让 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
关键字是否适合您的用例?