#!/bin/sh # This file is part of Hercules. # http://herc.ws - http://github.com/HerculesWS/Hercules # # Copyright (C) 2014-2015 Hercules Dev Team # # Hercules is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Base Author: Haru @ http://herc.ws do_fail() { echo 'Error writing output file' exit 1 } cleanstring() { if [ "$( echo "x x" | sed -e 's/[[:space:]]//g' )" = "x x" ]; then # Workaround for non-POSIX-compliant systems that lack [[:space:]] (Solaris) echo "$@" | sed -e 's/"/ /g' -e 's/[ ][ ]*/ /g' -e 's/^[ ]*//g' -e 's/[ ]*$//g' else echo "$@" | sed -e 's/"/ /g' -e 's/[[:space:]][[:space:]]*/ /g' -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g' fi } if [ -z "$1" ]; then echo 'No output file specified' exit 1 fi OUTFILE="$1" shift if ! touch "$OUTFILE"; then echo 'Cannot create output file' exit 1 fi YEAR="$(date +%Y)" cat > "$OUTFILE" << EOF /** * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2014-$YEAR Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ // This file was automatically generated. Any edit to it will be lost. EOF [ $? -eq 0 ] || do_fail HERC_PLATFORM="$( uname -s )" HERC_CORES="0" HERC_CPU="Unknown" case $HERC_PLATFORM in Linux) DIST='' DESCRIPTION='' REV='' if type lsb_release >/dev/null 2>&1; then LSBINFO="$( lsb_release -a 2>/dev/null )" DIST="$( cleanstring "$( echo "$LSBINFO" | grep '^Distributor ID:' | cut -d: -f2- )" )" DESCRIPTION="$( echo "$LSBINFO" | grep '^Description:' | cut -d: -f2- | sed 's/Enterprise Linux Enterprise Linux/Oracle Linux/' )" fi if [ -z "$DIST" ] || [ "$DIST" = "Gentoo" ]; then if [ -f /etc/gentoo-release ]; then # "Gentoo Base System release 2.2" DIST='Gentoo' DESCRIPTION="$( head -n 1 /etc/gentoo-release )" REV='' elif [ -f /etc/arch-release ]; then # empty release file DIST='ArchLinux' DESCRIPTION='' REV='' elif [ -f /etc/vmware-release ]; then # "VMware ESX Server 3" or "VMware ESX 4.0 (Kandinsky)" DIST="VMWare" DESCRIPTION="$( head -n 1 /etc/vmware-release )" REV='' elif [ -f /etc/debian_version ]; then # "wheezy/sid" DIST="Debian" DESCRIPTION="Debian GNU/Linux $( head -n 1 /etc/debian_version )" REV='' elif [ -f /etc/fedora-release ]; then # "Fedora release 9 (Sulphur)" DIST="Fedora" DESCRIPTION="$( head -n 1 /etc/fedora-release )" REV='' elif [ -f /etc/knoppix_version ]; then # "3.2 2003-04-15" DIST="Knoppix" REV="Knoppix GNU/Linux $( head -n 1 /etc/knoppix_version )" DESCRIPTION='' elif [ -f /etc/mandriva-release ]; then # "Mandriva Linux release 2010.1 (Official) for x86_64" DIST="Mandriva" DESCRIPTION="$( head -n 1 /etc/mandriva-release )" REV='' elif [ -f /etc/mandrake-release ]; then # "Mandrakelinux release 10.1 (Community) for i586" DIST="Mandrake" DESCRIPTION="$( head -n 1 /etc/mandrake-release )" REV='' elif [ -f /etc/oracle-release ]; then # "Oracle Linux Server release 6.3" DIST="Oracle" DESCRIPTION="$( head -n 1 /etc/oracle-release )" REV='' elif [ -f /etc/centos-release ]; then # "CentOS Linux release 6.0 (Final)" DIST="CentOS" DESCRIPTION="$( head -n 1 /etc/centos-release )" REV='' elif [ -f /etc/redhat-release ]; then # "Red Hat Enterprise Linux Server release 5 (Tikanga)" DIST="RedHat" DESCRIPTION="$( head -n 1 /etc/redhat-release )" REV='' elif [ -f /etc/slackware-version ]; then DIST="Slackware" DESCRIPTION="$( head -n 1 /etc/slackware-version )" REV='' elif [ -f /etc/slackware-release ]; then DIST="Slackware" DESCRIPTION="$( head -n 1 /etc/slackware-release )" REV='' elif [ -f /etc/SuSE-release ]; then # "SUSE Linux Enterprise Server 11 (x86_64)" # Note: it may contain several extra lines DIST="SuSE" DESCRIPTION="$( head -n 1 /etc/SuSE-release )" REV='' elif [ -f /etc/trustix-release ]; then # "Trustix Secure Linux release 2.0 (Cloud)" DIST="Trustix" DESCRIPTION="$( head -n 1 /etc/trustix-release )" REV='' else DIST='Unknown' DESCRIPTION='' REV='' fi fi if [ -n "$DESCRIPTION" ]; then DIST="$DESCRIPTION" fi HERC_OSVERSION="$DIST" HERC_CPU="$( cat /proc/cpuinfo | grep "model name" | head -n 1 | cut -d: -f2- )" HERC_CORES="$( grep '^processor' /proc/cpuinfo | wc -l )" ;; Darwin) HERC_PLATFORM="Mac OS X" if type sw_vers >/dev/null 2>&1; then HERC_OSVERSION="$( sw_vers -productName ) $( sw_vers -productVersion ) $( sw_vers -buildVersion )" else HERC_OSVERSION="Unknown" fi if type system_profiler >/dev/null 2>&1; then HWDATA="$( system_profiler SPHardwareDataType )" HWDATA_CPU="$( echo "$HWDATA" | grep "Processor Name:" | cut -d: -f2- )" HWDATA_CPUSPEED="$( cleanstring "$( echo "$HWDATA" | grep "Processor Speed:" | cut -d: -f2- )" )" HERC_CORES="$( echo "$HWDATA" | grep "Total Number of Cores:" | cut -d: -f2- )" HERC_CPU="${HWDATA_CPU} (${HWDATA_CPUSPEED})" fi ;; SunOS) HERC_PLATFORM="Solaris" HERC_OSVERSION="${HERC_PLATFORM} $( uname -r ) ($( uname -p) $(uname -v))" ;; AIX) HERC_OSVERSION="AIX $( oslevel ) ($(`oslevel -r`))" ;; CYGWIN*) HERC_PLATFORM="Cygwin Windows" HERC_OSVERSION="$( cleanstring "$( uname -s )" )" HERC_CPU="$( cat /proc/cpuinfo | grep "model name" | head -n 1 | cut -d: -f2- )" HERC_CORES="$( grep '^processor' /proc/cpuinfo | wc -l )" ;; OpenBSD) HERC_OSVERSION="${HERC_PLATFORM} $( uname -r ) ($( uname -p) $(uname -v))" HERC_CPU="$( sysctl hw.model | cut -d= -f2- )" HERC_CORES="$( sysctl hw.ncpu | cut -d= -f2- )" ;; FreeBSD) HERC_OSVERSION="${HERC_PLATFORM} $( uname -r ) ($( uname -p))" HERC_CPU="$( sysctl hw.model | cut -d: -f2- )" HERC_CORES="$( sysctl hw.ncpu | cut -d: -f2- )" ;; NetBSD) HERC_OSVERSION="${HERC_PLATFORM} $( uname -r ) ($( uname -p))" HERC_CPU="$( sysctl hw.model | cut -d= -f2- )" HERC_CORES="$( sysctl hw.ncpu | cut -d= -f2- )" ;; *) HERC_OSVERSION="Unknown" ;; esac cat >> "$OUTFILE" << EOF // Platform (uname -s) #define SYSINFO_PLATFORM "$( cleanstring "${HERC_PLATFORM}" )" // Operating System version (Platform-dependent) #define SYSINFO_OSVERSION "$( cleanstring "${HERC_OSVERSION}" )" // CPU Model (Platform-dependent) #define SYSINFO_CPU "$( cleanstring "${HERC_CPU}" )" // CPU Cores (Platform-dependent) #define SYSINFO_CPUCORES ( $( cleanstring "${HERC_CORES}" ) ) EOF [ $? -eq 0 ] || do_fail HERC_ARCH="$( uname -m )" cat >> "$OUTFILE" << EOF // OS Architecture (uname -m) #define SYSINFO_ARCH "$( cleanstring "${HERC_ARCH}" )" EOF [ $? -eq 0 ] || do_fail HERC_CFLAGS="$@" HERC_CFLAGS="$( echo "${HERC_CFLAGS}" | sed 's/"//g' )" cat >> "$OUTFILE" << EOF // Compiler Flags #define SYSINFO_CFLAGS "$( cleanstring "${HERC_CFLAGS}" )" EOF [ $? -eq 0 ] || do_fail HERC_VCSREV="" if [ -d .git ]; then HERC_VCSTYPE="VCSTYPE_GIT" if type git >/dev/null 2>&1; then HERC_VCSREV="$( git rev-parse HEAD )" else HERC_VCSREV="Unknown" fi elif [ -d .svn ]; then HERC_VCSTYPE="VCSTYPE_SVN" if type svnversion >/dev/null 2>&1; then HERC_VCSREV="$( svnversion )" else HERC_VCSREV="Unknown" fi else HERC_VCSTYPE="VCSTYPE_NONE" fi cat >> "$OUTFILE" << EOF // VCS Type #define SYSINFO_VCSTYPE ${HERC_VCSTYPE} // VCS Revision #define SYSINFO_VCSREV "$( cleanstring "${HERC_VCSREV}" )" EOF [ $? -eq 0 ] || do_fail