1*89c4ff92SAndroid Build Coastguard Worker#!/bin/bash 2*89c4ff92SAndroid Build Coastguard Worker# 3*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2022 Arm Ltd and Contributors. All rights reserved. 4*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 5*89c4ff92SAndroid Build Coastguard Worker# 6*89c4ff92SAndroid Build Coastguard Worker 7*89c4ff92SAndroid Build Coastguard Worker# 8*89c4ff92SAndroid Build Coastguard Worker# Script which uses the reuse license compliance tool: https://reuse.software/ 9*89c4ff92SAndroid Build Coastguard Worker# to do the following: 10*89c4ff92SAndroid Build Coastguard Worker# (a) check armnn for compliance 11*89c4ff92SAndroid Build Coastguard Worker# (b) generate an SPDX file 12*89c4ff92SAndroid Build Coastguard Worker# (c) insert into the SPDX file before the individual files section, SPDX files for 13*89c4ff92SAndroid Build Coastguard Worker# all the third-party header only source libraries used by Arm NN 14*89c4ff92SAndroid Build Coastguard Worker# to create a comprehensive LICENSE.spdx file for the armnn source code distribution 15*89c4ff92SAndroid Build Coastguard Worker# 16*89c4ff92SAndroid Build Coastguard Worker# Note to run correctly the script has to be run from the armnn root directory like so: 17*89c4ff92SAndroid Build Coastguard Worker# 18*89c4ff92SAndroid Build Coastguard Worker# ./scripts/generate_spdx.sh 19*89c4ff92SAndroid Build Coastguard Worker# 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker# Check if the parent directory name is armnn 22*89c4ff92SAndroid Build Coastguard Worker# Get the name of the current directory 23*89c4ff92SAndroid Build Coastguard Workerresult=${PWD##*/} # to assign to a variable 24*89c4ff92SAndroid Build Coastguard Workerresult=${result:-/} # to correct for the case where PWD=/ 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Workerif [[ $result != "armnn" ]] 27*89c4ff92SAndroid Build Coastguard Workerthen 28*89c4ff92SAndroid Build Coastguard Worker echo "not running from armnn directory" 29*89c4ff92SAndroid Build Coastguard Worker exit -2 30*89c4ff92SAndroid Build Coastguard Workerfi 31*89c4ff92SAndroid Build Coastguard Worker 32*89c4ff92SAndroid Build Coastguard Worker# Check that the third-party subdirectory exists 33*89c4ff92SAndroid Build Coastguard Workerif [ ! -d "third-party" ]; then 34*89c4ff92SAndroid Build Coastguard Worker echo "third-party directory does not exist." 35*89c4ff92SAndroid Build Coastguard Worker exit -3 36*89c4ff92SAndroid Build Coastguard Workerfi 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker# Check that armnn is compliant with version 3.0 of the REUSE Specification 39*89c4ff92SAndroid Build Coastguard Workerreuse lint 40*89c4ff92SAndroid Build Coastguard Workerif [[ $? -ne 0 ]] 41*89c4ff92SAndroid Build Coastguard Workerthen 42*89c4ff92SAndroid Build Coastguard Worker echo " " 43*89c4ff92SAndroid Build Coastguard Worker echo "please make armnn compliant with version 3.0 of the REUSE Specification before re-running" 44*89c4ff92SAndroid Build Coastguard Worker exit -4 45*89c4ff92SAndroid Build Coastguard Workerfi 46*89c4ff92SAndroid Build Coastguard Worker 47*89c4ff92SAndroid Build Coastguard Worker# generate the SPDX file for the overall armnn package 48*89c4ff92SAndroid Build Coastguard Workerreuse spdx > LICENSE.spdx 49*89c4ff92SAndroid Build Coastguard Workerif [[ $? -ne 0 ]] 50*89c4ff92SAndroid Build Coastguard Workerthen 51*89c4ff92SAndroid Build Coastguard Worker echo "generation of LICENSE.spdx file failed" 52*89c4ff92SAndroid Build Coastguard Worker exit -5 53*89c4ff92SAndroid Build Coastguard Workerelse 54*89c4ff92SAndroid Build Coastguard Worker echo " " 55*89c4ff92SAndroid Build Coastguard Worker echo "LICENSE.spdx file generated" 56*89c4ff92SAndroid Build Coastguard Worker echo " " 57*89c4ff92SAndroid Build Coastguard Workerfi 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker# Add the license info for the third-party packages 60*89c4ff92SAndroid Build Coastguard Worker# NOTE: they will be added before the first individual file entry 61*89c4ff92SAndroid Build Coastguard Worker# which currently is './Android.bp' 62*89c4ff92SAndroid Build Coastguard Worker 63*89c4ff92SAndroid Build Coastguard Worker# insert header comment before the line: FileName: ./Android.bp 64*89c4ff92SAndroid Build Coastguard Workersed -i '/FileName: \.\/Android.bp/i \ 65*89c4ff92SAndroid Build Coastguard Worker##### Source dependencies \ 66*89c4ff92SAndroid Build Coastguard Worker# Header only libraries from the armnn source repository third-party folder \ 67*89c4ff92SAndroid Build Coastguard Worker# NOTE: fmt has a small .cc file that needs to be compiled in order to work hence the libfmt.a below in the static dependencies \ 68*89c4ff92SAndroid Build Coastguard Worker ' LICENSE.spdx 69*89c4ff92SAndroid Build Coastguard Worker 70*89c4ff92SAndroid Build Coastguard Worker# iterate over the LICENSE.spdx files in the third-party directory and 71*89c4ff92SAndroid Build Coastguard Worker# put their contents into the top level LICENSE.spdx file 72*89c4ff92SAndroid Build Coastguard Worker# before the line: FileName: ./Android.bp 73*89c4ff92SAndroid Build Coastguard Worker 74*89c4ff92SAndroid Build Coastguard Workerfor i in ./third-party/**/LICENSE.spdx; 75*89c4ff92SAndroid Build Coastguard Workerdo 76*89c4ff92SAndroid Build Coastguard Worker echo "inserting license $i" 77*89c4ff92SAndroid Build Coastguard Worker sed -i "/FileName: \.\/Android.bp/e cat $i" LICENSE.spdx 78*89c4ff92SAndroid Build Coastguard Worker sed -i '/FileName: \.\/Android.bp/i \ 79*89c4ff92SAndroid Build Coastguard Worker ' LICENSE.spdx 80*89c4ff92SAndroid Build Coastguard Workerdone 81*89c4ff92SAndroid Build Coastguard Worker 82*89c4ff92SAndroid Build Coastguard Worker# Mark the start of the individual files section of the file with a comment 83*89c4ff92SAndroid Build Coastguard Workersed -i '/FileName: \.\/Android.bp/i \ 84*89c4ff92SAndroid Build Coastguard Worker##### Individual Files \ 85*89c4ff92SAndroid Build Coastguard Worker ' LICENSE.spdx 86