123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- #!/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 <http://www.gnu.org/licenses/>.
- # 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 <http://www.gnu.org/licenses/>.
- */
- // 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
|