mirror of
https://github.com/clearlinux/graphene.git
synced 2026-09-06 13:51:28 +00:00
The documentation currently specifies SGX_SIGNER_KEY as the parameter to enable Graphene to find your keys. Some examples don't use an environment parameter at all for the key to sign the enclave, this commit fixes that.
83 lines
2.4 KiB
Makefile
83 lines
2.4 KiB
Makefile
# Build PyTorch as follows:
|
|
#
|
|
# - make -- create non-SGX no-debug-log manifest
|
|
# - make SGX=1 -- create SGX no-debug-log manifest
|
|
# - make SGX=1 DEBUG=1 -- create SGX debug-log manifest
|
|
#
|
|
# PyTorch and the pre-trained model must be installed on the system.
|
|
# See README for details.
|
|
#
|
|
# Use `make clean` to remove Graphene-generated files.
|
|
|
|
GRAPHENEDIR ?= ../..
|
|
SGX_SIGNER_KEY ?= $(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/enclave-key.pem
|
|
|
|
ifeq ($(DEBUG),1)
|
|
GRAPHENEDEBUG = inline
|
|
else
|
|
GRAPHENEDEBUG = none
|
|
endif
|
|
|
|
DISTRIB_ID ?= $(shell lsb_release --short --id)
|
|
DISTRIB_RELEASE ?= $(shell lsb_release --short --release)
|
|
|
|
ifeq ($(SGX), 1)
|
|
ifneq ($(DISTRIB_ID),Ubuntu)
|
|
$(error This example requires Ubuntu when building for SGX.)
|
|
endif
|
|
endif
|
|
|
|
UBUNTU_VERSION = $(DISTRIB_ID)$(DISTRIB_RELEASE)
|
|
|
|
.PHONY: default
|
|
ifeq ($(SGX),1)
|
|
default: pytorch.token python3.token pal_loader
|
|
else
|
|
default: pytorch.manifest python3.manifest pal_loader
|
|
endif
|
|
|
|
include ../../Scripts/Makefile.configs
|
|
|
|
pytorch.sig: python3.sig
|
|
|
|
# .manifest.template contains stanzas for both Ubuntu 16 and 18. The last rule selectively enables
|
|
# those lines based on the Ubuntu version detected.
|
|
%.manifest: %.manifest.template
|
|
sed -e 's|$$(GRAPHENEDIR)|'"$(GRAPHENEDIR)"'|g' \
|
|
-e 's|$$(GRAPHENEDEBUG)|'"$(GRAPHENEDEBUG)"'|g' \
|
|
-e 's|$$(HOME)|'"$(HOME)"'|g' \
|
|
-e 's|# '"$(UBUNTU_VERSION)"' ||g' \
|
|
-e 's|$$(ARCH_LIBDIR)|'"$(ARCH_LIBDIR)"'|g' \
|
|
$< > $@
|
|
|
|
pytorch.sig: pytorch.manifest
|
|
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-sign \
|
|
-libpal $(GRAPHENEDIR)/Runtime/libpal-Linux-SGX.so \
|
|
-key $(SGX_SIGNER_KEY) \
|
|
-output pytorch.manifest.sgx -exec /usr/bin/python3 -manifest $<
|
|
|
|
%.token: %.sig
|
|
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-get-token -output $@ -sig $<
|
|
|
|
# The PyTorch workload forks/execve()s at some point. This rule generates the required additional
|
|
# manifest for the child process.
|
|
python3.manifest: pytorch.manifest
|
|
cp $< $@
|
|
sed -i '/trusted_children/d' $@
|
|
|
|
python3.sig: python3.manifest
|
|
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-sign \
|
|
-libpal $(GRAPHENEDIR)/Runtime/libpal-Linux-SGX.so \
|
|
-key $(SGX_SIGNER_KEY) \
|
|
-output python3.manifest.sgx -exec /usr/bin/python3 -manifest $<
|
|
|
|
pal_loader:
|
|
ln -s $(GRAPHENEDIR)/Runtime/pal_loader $@
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) *.token *.sig *.manifest.sgx *.manifest pal_loader
|
|
|
|
.PHONY: distclean
|
|
distclean: clean
|