Могу ли я определить функции и глобальные переменные в файле make файла правил Debian?

0
26.10.2020, 14:22
1 ответ

Файл debian/rulesявляется make-файлом, а не sh-файлом.

Я вставил вашу функцию в make-файл, чтобы попробовать:

#!/usr/bin/make -f

# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
GREEN='\033[1;32m'

######################### Functions #############################
function logCommandExecution()
{
    commandName=$1
    exitCode=$2
    #echo 'command name: '${commandName}' exitCode: '${exitCode}
    if [ ${exitCode} -eq 0 ] 
    then
        printf "${GREEN}${commandName}' completed successfully${NC}\n"
    else 
        printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
        exit ${exitCode}
    fi
}


all:
        logCommandExecution Passcmd 0
        logCommandExecution Failcmd 1

Затем, когда я пытаюсь выполнить это, я получаю:

$ make all
makefile:14: *** missing separator.  Stop.

Так что ответ не прямой. Однако есть несколько способов запустить синтаксис оболочки в make-файлах.
Этот ответ может помочь с этим.

Думаю, проще всего поместить функцию в другой файл и вызвать ее изdebian/rules:

make-файл:

#!/usr/bin/make -f
all:
       ./logCommandExecution Passcmd 0
       ./logCommandExecution Failcmd 1

logCommandExecution:

#!/bin/sh

# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
GREEN='\033[1;32m'

commandName=$1
exitCode=$2
#echo 'command name: '${commandName}' exitCode: '${exitCode}
if [ ${exitCode} -eq 0 ] 
then
    printf "${GREEN}${commandName}' completed successfully${NC}\n"
else 
    printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
    exit ${exitCode}
fi

Теперь, когда я это делаю, я получаю:

$ make
./logCommandExecution Passcmd 0
Passcmd' completed successfully
./logCommandExecution Failcmd 1
Failcmd failed with error code [1]
make: *** [makefile:5: all] Error 1
1
18.03.2021, 22:54

Теги

Похожие вопросы