#!/bin/bash # # Copyright © 2022 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # # # Script which uses the reuse license compliance tool: https://reuse.software/ # to do the following: # (a) check armnn for compliance # (b) generate an SPDX file # (c) insert into the SPDX file before the individual files section, SPDX files for # all the third-party header only source libraries used by Arm NN # to create a comprehensive LICENSE.spdx file for the armnn source code distribution # # Note to run correctly the script has to be run from the armnn root directory like so: # # ./scripts/generate_spdx.sh # # Check if the parent directory name is armnn # Get the name of the current directory result=${PWD##*/} # to assign to a variable result=${result:-/} # to correct for the case where PWD=/ if [[ $result != "armnn" ]] then echo "not running from armnn directory" exit -2 fi # Check that the third-party subdirectory exists if [ ! -d "third-party" ]; then echo "third-party directory does not exist." exit -3 fi # Check that armnn is compliant with version 3.0 of the REUSE Specification reuse lint if [[ $? -ne 0 ]] then echo " " echo "please make armnn compliant with version 3.0 of the REUSE Specification before re-running" exit -4 fi # generate the SPDX file for the overall armnn package reuse spdx > LICENSE.spdx if [[ $? -ne 0 ]] then echo "generation of LICENSE.spdx file failed" exit -5 else echo " " echo "LICENSE.spdx file generated" echo " " fi # Add the license info for the third-party packages # NOTE: they will be added before the first individual file entry # which currently is './Android.bp' # insert header comment before the line: FileName: ./Android.bp sed -i '/FileName: \.\/Android.bp/i \ ##### Source dependencies \ # Header only libraries from the armnn source repository third-party folder \ # 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 \ ' LICENSE.spdx # iterate over the LICENSE.spdx files in the third-party directory and # put their contents into the top level LICENSE.spdx file # before the line: FileName: ./Android.bp for i in ./third-party/**/LICENSE.spdx; do echo "inserting license $i" sed -i "/FileName: \.\/Android.bp/e cat $i" LICENSE.spdx sed -i '/FileName: \.\/Android.bp/i \ ' LICENSE.spdx done # Mark the start of the individual files section of the file with a comment sed -i '/FileName: \.\/Android.bp/i \ ##### Individual Files \ ' LICENSE.spdx