Add t31_axiostv project

pull/1/head
Igor Zalatov (from Citadel PC) 2022-09-04 23:08:10 +03:00
parent c085edca90
commit ece35e8d19
9 changed files with 452 additions and 0 deletions

View File

@ -0,0 +1,174 @@
ROOT_DIR := $(CURDIR)
BR_VER ?= 2021.02.12
BR_DIR := $(ROOT_DIR)/buildroot-$(BR_VER)
ifeq ($(PLATFORM),)
ifneq ($(BOARD),)
FULL_PATH := $(shell find br-ext-chip-* -name "$(BOARD)*_defconfig")
ifeq ($(FULL_PATH),)
FULL_PATH := $(error Cannot find anything for $(BOARD))
else ifneq ($(shell echo $(FULL_PATH) | wc -w), 1)
FULL_PATH := $(error For provided '$(BOARD)' multiple options found: $(FULL_PATH))
endif
PLATFORM := $(shell echo $(FULL_PATH) | cut -d '/' -f 1 | cut -d '-' -f 4 )
endif
endif
BR_EXT_DIR := $(ROOT_DIR)/br-ext-chip-$(PLATFORM)
SCRIPTS_DIR := $(ROOT_DIR)/scripts
#BOARDS := $(shell ls -1 $(BR_EXT_DIR)/configs)
.PHONY: usage help clean distclean prepare install-deps all toolchain-params run-tests overlayed-rootfs-%
usage help:
@echo -e \
"\n\
BR-OpenIPC usage:\n\
- make help|usage - print this help\n\
- make install-deps - install system deps\n\
- make prepare - download and unpack buildroot\n\
- make list-configs - show available hardware configs list\n\
- make BOARD=<BOARD-ID> board-info - write to stdout information about selected board\n\
- make BOARD=<BOARD-ID> all - build all needed for a board (toolchain, kernel and rootfs images)\n\
- make overlayed-rootfs-<FS-TYPE> ROOTFS_OVERLAYS=... - create rootfs image that contains original\n\
- make clean - cleaning before reassembly\n\
- make distclean - switching to the factory state\n\
Buildroot target dir overlayed by some custom layers.\n\
Example:\n\
make overlayed-rootfs-squashfs ROOTFS_OVERLAYS=./examples/echo_server/overlay\n\
"
distclean:
@rm -rf output buildroot-$(BR_VER)
clean:
@rm -rf output/target output/.config
prepare: $(BR_DIR)
$(ROOT_DIR)/buildroot-$(BR_VER).tar.gz:
wget -O $@ -nv \
--retry-connrefused --continue --timeout=15 \
http://buildroot.org/downloads/buildroot-$(BR_VER).tar.gz
$(BR_DIR): $(ROOT_DIR)/buildroot-$(BR_VER).tar.gz
tar -C $(ROOT_DIR) -xf buildroot-$(BR_VER).tar.gz
rm -f buildroot-$(BR_VER).tar.gz
install-deps:
ifneq ($(shell id -u), 0)
@echo "You must be root to perform this action."
else
DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get -y install \
build-essential git make libncurses-dev wget curl \
cpio rsync bc unzip file
endif
%_info:
@echo
@cat $(BR_EXT_DIR)/board/$(subst _info,,$@)/config | grep RAM_LINUX_SIZE
$(eval VENDOR := $(shell echo $@ | cut -d "_" -f 1))
$(eval FAMILY := $(shell cat $(BR_EXT_DIR)/board/$(subst _info,,$@)/config | grep FAMILY | cut -d "=" -f 2))
$(eval CHIP := $(shell echo $@ | cut -d "_" -f 3))
@cat $(BR_EXT_DIR)/board/$(FAMILY)/$(CHIP).config
buildroot-version:
@echo $(BR_VER)
has-nand:
@sed -rn "s/^BR2_TARGET_ROOTFS_UBI=(y)/\1/p" $(FULL_PATH)
toolname:
@$(SCRIPTS_DIR)/show_toolchains.sh $(FULL_PATH) $(BR_VER)
list-configs:
@echo
@ls -1 $(BR_EXT_DIR)/configs
# -------------------------------------------------------------------------------------------------
OUT_DIR ?= $(ROOT_DIR)/output
# Buildroot considers relative paths relatively to its' own root directory. So we use absolute paths
# to avoid ambiguity
override OUT_DIR := $(abspath $(OUT_DIR))
BOARD_MAKE := $(MAKE) -C $(BR_DIR) BR2_EXTERNAL=$(BR_EXT_DIR) O=$(OUT_DIR)
define CREATE_TOOLCHAIN_PARAMS
eval $$($(BOARD_MAKE) -s --no-print-directory VARS=GNU_TARGET_NAME printvars) \
&& $(SCRIPTS_DIR)/create_toolchain_binding.sh $(OUT_DIR)/host/bin $$GNU_TARGET_NAME \
> $(OUT_DIR)/toolchain-params.mk
endef
# -------------------------------------------------------------------------------------------------
$(OUT_DIR)/.config:
ifndef BOARD
@echo "Variable BOARD must be defined to initialize output directory" >&2 && exit 1
endif
$(BOARD_MAKE) BR2_DEFCONFIG=$(BR_EXT_DIR)/configs/$(BOARD)_defconfig defconfig
$(OUT_DIR)/toolchain-params.mk: $(OUT_DIR)/.config $(SCRIPTS_DIR)/create_toolchain_binding.sh
$(CREATE_TOOLCHAIN_PARAMS)
# -------------------------------------------------------------------------------------------------
# build all needed for a board
all: $(OUT_DIR)/.config $(OUT_DIR)/toolchain-params.mk
$(BOARD_MAKE) all
# -------------------------------------------------------------------------------------------------
# re-create params file
toolchain-params:
$(CREATE_TOOLCHAIN_PARAMS)
# -------------------------------------------------------------------------------------------------
# create rootfs image that contains original Buildroot target dir overlayed by some custom layers
# space-separated list of overlays
ROOTFS_OVERLAYS ?=
# overlayed rootfs directory
ROOTFS_OVERLAYED_DIR ?= $(OUT_DIR)/target-overlayed
# overlayed rootfs image's name (without prefix)
ROOTFS_OVERLAYED_IMAGE ?= rootfs-overlayed
overlayed-rootfs-%: $(OUT_DIR)/.config
$(SCRIPTS_DIR)/create_overlayed_rootfs.sh $(ROOTFS_OVERLAYED_DIR) $(OUT_DIR)/target $(ROOTFS_OVERLAYS)
$(BOARD_MAKE) $(subst overlayed-,,$@) \
BASE_TARGET_DIR=$(abspath $(ROOTFS_OVERLAYED_DIR)) \
ROOTFS_$(call UPPERCASE,$(subst overlayed-rootfs-,,$@))_FINAL_IMAGE_NAME=$(ROOTFS_OVERLAYED_IMAGE).$(subst overlayed-rootfs-,,$@)
# -------------------------------------------------------------------------------------------------
board-info:
@cat $(BR_EXT_DIR)/board/$(BOARD)/config | grep RAM_LINUX_SIZE
$(eval VENDOR := $(shell echo $(BOARD) | cut -d "_" -f 1))
$(eval FAMILY := $(shell cat $(BR_EXT_DIR)/board/$(BOARD)/config | grep FAMILY | cut -d "=" -f 2))
$(eval CHIP := $(shell echo $(BOARD) | cut -d "_" -f 3))
@cat $(BR_EXT_DIR)/board/$(FAMILY)/$(CHIP).config
@cat $(BR_EXT_DIR)/board/$(BOARD)/config
# -------------------------------------------------------------------------------------------------
# such targets (with trimmed `br-` prefix) are passed to Buildroot's Makefile
br-%: $(OUT_DIR)/.config
$(BOARD_MAKE) $(subst br-,,$@)
# -------------------------------------------------------------------------------------------------
run-tests:
$(MAKE) -C $(ROOT_DIR)/tests
# -------------------------------------------------------------------------------------------------
# there are some extra targets of specific packages
include $(sort $(wildcard $(ROOT_DIR)/extra/*.mk))
# -------------------------------------------------------------------------------------------------
# util stuff is below
UPPERCASE = $(shell echo $(1) | tr a-z A-Z)

View File

@ -0,0 +1,36 @@
source "$BR2_EXTERNAL_INGENIC_PATH/linux/Config.ext.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t20/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t21/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t31/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic_patcher/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/aura-httpd/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ax-agent/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ax-agent/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fdk-aac-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ffmpeg-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fwprintenv-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/i2c-telemetry/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ipctool/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/json-c-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/lame-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libcurl-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libevent-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libhv-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libogg-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libsrt-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libwebsockets-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/linux-firmware-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/majestic-fonts/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/majestic/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/mbedtls-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/microbe-web/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/microsnander/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/motors/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/node-exporter/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/opus-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/rtl8188fu-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/uacme-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/vtund-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/xmdp/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/yaml-cli/Config.in"

View File

@ -0,0 +1,110 @@
# Architecture
BR2_mipsel=y
BR2_mips_xburst=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_MIPS_FP32_MODE_32=y
# BR2_MIPS_FP32_MODE_XX is not set
BR2_MIPS_NAN_LEGACY=y
BR2_MIPS_OABI32=y
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="3.10.14"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y
# Toolchain
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_GCC_VERSION_8_X=y
# BR2_TOOLCHAIN_USES_UCLIBC is not set
# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set
# BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc"
BR2_EXTRA_GCC_CONFIG_OPTIONS="--with-float=hard"
BR2_TOOLCHAIN_USES_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_LIBC="musl"
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.10.14"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_INGENIC_PATH)/board/t31/kernel/t31.generic.config"
BR2_LINUX_KERNEL_UIMAGE=y
BR2_LINUX_KERNEL_LZMA=y
BR2_LINUX_KERNEL_EXT_INGENIC_PATCHER=y
BR2_LINUX_KERNEL_EXT_INGENIC_PATCHER_LIST="$(BR2_EXTERNAL_INGENIC_PATH)/board/t31/kernel/patches/ $(BR2_EXTERNAL_INGENIC_PATH)/board/t31/kernel/overlay"
# Filesystem
# BR2_TARGET_TZ_INFO is not set
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
BR2_ROOTFS_OVERLAY="$(TOPDIR)/../general/overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(TOPDIR)/../scripts/executing_commands_for_$(BR2_TOOLCHAIN_BUILDROOT_LIBC).sh"
# OpenIPC configuration
BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc"
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC v2.2"
BR2_TARGET_GENERIC_HOSTNAME="openipc-t31"
BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches"
# OpenIPC packages
BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
BR2_PACKAGE_INGENIC_OSDRV_T31=y
BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_HISI_GPIO is not set
BR2_PACKAGE_IPCTOOL=y
BR2_PACKAGE_JSON_C=y
BR2_PACKAGE_LAME_OPENIPC=y
BR2_PACKAGE_LIBCURL_OPENIPC=y
BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y
# BR2_PACKAGE_LIBCURL_OPENIPC_VERBOSE is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set
BR2_PACKAGE_LIBCURL_OPENIPC_MBEDTLS=y
BR2_PACKAGE_LIBEVENT_OPENIPC=y
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
BR2_PACKAGE_LIBOGG_OPENIPC=y
BR2_PACKAGE_LIBWEBSOCKETS_OPENIPC=y
BR2_PACKAGE_LIBYAML=y
BR2_PACKAGE_MAJESTIC_FONTS=y
BR2_PACKAGE_MAJESTIC=y
BR2_PACKAGE_MBEDTLS_OPENIPC=y
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
BR2_PACKAGE_MICROBE_WEB=y
# BR2_PACKAGE_MINI_SNMPD is not set
# BR2_PACKAGE_MOTORS is not set
BR2_PACKAGE_OPUS_OPENIPC=y
BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y
# BR2_PACKAGE_SSHPASS is not set
BR2_PACKAGE_UACME_OPENIPC=y
BR2_PACKAGE_VTUND_OPENIPC=y
BR2_PACKAGE_YAML_CLI=y
# WiFi
# BR2_PACKAGE_WIRELESS_TOOLS is not set
# BR2_PACKAGE_WPA_SUPPLICANT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_CLI is not set
# BR2_PACKAGE_WPA_SUPPLICANT_NL80211 is not set
# BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE is not set
# BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC is not set
# BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U is not set
# BR2_PACKAGE_RTL8188EU is not set
# WIREGUARD
# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT is not set
# BR2_PACKAGE_WIREGUARD_TOOLS is not set
# AXIOSTV
BR2_PACKAGE_FFMPEG_OPENIPC=y
BR2_PACKAGE_AX_AGENT=y
# DEBUG
BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y

View File

@ -0,0 +1,35 @@
include $(BR2_EXTERNAL_INGENIC_PATH)/linux/linux-ext-ingenic_patcher.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t20/ingenic-osdrv-t20.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t21/ingenic-osdrv-t21.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/ingenic-osdrv-t31.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic_patcher/ingenic_patcher.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/aura-httpd/aura-httpd.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ax-agent/ax-agent.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/dropbear-openipc/dropbear-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/fdk-aac-openipc/fdk-aac-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ffmpeg-openipc/ffmpeg-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/fwprintenv-openipc/fwprintenv-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/i2c-telemetry/i2c-telemetry.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/ipctool/ipctool.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/json-c-openipc/json-c-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/lame-openipc/lame-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/libcurl-openipc/libcurl-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/libevent-openipc/libevent-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/libhv-openipc/libhv-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/libogg-openipc/libogg-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/libsrt-openipc/libsrt-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/libwebsockets-openipc/libwebsockets-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/majestic/majestic.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/majestic-fonts/majestic-fonts.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/microbe-web/microbe-web.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/microsnander/microsnander.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/motors/motors.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/node-exporter/node-exporter.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/opus-openipc/opus-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/rtl8188fu-openipc/rtl8188fu-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/uacme-openipc/uacme-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/vtund-openipc/vtund-openipc.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/xmdp/xmdp.mk
include $(BR2_EXTERNAL_INGENIC_PATH)/package/yaml-cli/yaml-cli.mk

View File

@ -0,0 +1 @@
../../general/package/ax-agent

View File

@ -0,0 +1,7 @@
config BR2_PACKAGE_AX_AGENT
bool "ax-agent"
default n
help
Simple daemon
https://openipc.org

View File

@ -0,0 +1,25 @@
################################################################################
#
# ax-agent | updated 2022.09.04
#
################################################################################
AX_AGENT_LICENSE = MIT
AX_AGENT_LICENSE_FILES = LICENSE
define AX_AGENT_EXTRACT_CMDS
cp ../general/package/ax-agent/src/ax-agent.c $(@D)/
endef
define AX_AGENT_BUILD_CMDS
(cd $(@D); $(TARGET_CC) -s ax-agent.c -o ax-agent)
endef
define AX_AGENT_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
cp ../general/package/ax-agent/files/S97agent $(TARGET_DIR)/etc/init.d
install -m 0755 -D $(@D)/ax-agent $(TARGET_DIR)/usr/sbin/ax-agent
endef
$(eval $(generic-package))

View File

@ -0,0 +1,57 @@
#!/bin/sh
DAEMON="ax-agent"
PIDFILE="/var/run/$DAEMON.pid"
AGENT_ARGS=""
# shellcheck source=/dev/null
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
# The daemon does not create a pidfile, so pass "-n" in the command line
# and use "-m" to instruct start-stop-daemon to create one.
start() {
printf 'Starting %s: ' "$DAEMON"
[ -f /usr/sbin/$DAEMON ] || echo -en "DISABLED, "
# shellcheck disable=SC2086 # we need the word splitting
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \
-- $AGENT_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
[ -f /usr/sbin/$DAEMON ] || echo -en "DISABLED, "
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
sleep 1
start
}
case "$1" in
start|stop|restart)
"$1";;
reload)
# Restart, since there is no true "reload" feature.
restart;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac

View File

@ -0,0 +1,7 @@
#include <stdio.h>
int main (void)
{
puts ("Hello, World!");
return 0;
}