diff --git a/ChangeLog b/ChangeLog index 701010a..9bcc5aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2010-08-31 Chris Johns + + * specbuilder/specbuilder/linux.py: Add Linux support. Can be + useful on those distributions that do not support RPM + packages. Users should always be encouraged to use the RPM + packages provided by the project. + + * specbuilder/specbuilder/default.py: Add Linux. + 2010-08-29 Chris Johns * specbuilder/specbuilder/defaults.py: Add default configure diff --git a/specbuilder/specbuilder/defaults.py b/specbuilder/specbuilder/defaults.py index aadfb6f..a7ff431 100644 --- a/specbuilder/specbuilder/defaults.py +++ b/specbuilder/specbuilder/defaults.py @@ -419,6 +419,9 @@ def load(args): if uname[0] == 'Darwin': import darwin overrides = darwin.load() + elif uname[0] == 'Linux': + import linux + overrides = linux.load() if overrides is None: raise error.general('no hosts defaults found; please add') for k in overrides: diff --git a/specbuilder/specbuilder/linux.py b/specbuilder/specbuilder/linux.py new file mode 100644 index 0000000..fc89b6a --- /dev/null +++ b/specbuilder/specbuilder/linux.py @@ -0,0 +1,67 @@ +# +# $Id$ +# +# RTEMS Tools Project (http://www.rtems.org/) +# Copyright 2010 Chris Johns (chrisj@rtems.org) +# All rights reserved. +# +# This file is part of the RTEMS Tools package in 'rtems-tools'. +# +# RTEMS Tools 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. +# +# RTEMS Tools 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 RTEMS Tools. If not, see . +# + +# +# This code is based on what ever doco about spec files I could find and +# RTEMS project's spec files. +# + +import pprint +import os + +import execute + +def load(): + uname = os.uname() + smp_mflags = '' + processors = '/bin/grep processor /proc/cpuinfo' + e = execute.capture_execution() + exit_code, proc, output = e.shell(processors) + if exit_code == 0: + cpus = 0 + for l in output.split('\n'): + count = l.split(':')[1].strip() + if count > cpus: + cpus = count + if cpus > 0: + smp_mflags = '-j%d' % (cpus) + defines = { + '_os': 'linux', + '_host': uname[4] + '-linux-gnu', + '_host_vendor': 'gnu', + '_host_os': 'linux', + '_host_cpu': uname[4], + '_host_alias': '%{nil}', + '_host_arch': uname[4], + '_usr': '/usr', + '_var': '/usr/var', + 'optflags': '-O2 -fasynchronous-unwind-tables', + '_smp_mflags': smp_mflags, + '__bzip2': '/bin/bzip2', + '__gzip': '/bin/gzip', + '__tar': '/bin/tar' + } + return defines + +if __name__ == '__main__': + pprint.pprint(load())