Re: Distinguishing Debian and Fedora

Bill Deegan <bill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org>
Newsgroups gmane.comp.programming.tools.scons.devel
Message-ID <CAEyG4CE8_T0SDaKjw_bRSbYbELgh=XgPyxd=1G4Wwgg3gLnKMA@mail.gmail.com>
I'd say definitely don't change the value of env['PLATFORM'].
Introduce another variable such as env['DISTRIBUTION'] or something like
that.

I'm not sure we even need to use enums.
A simple package variable should do the trick?

SCons.Platform.Debian = "DEBIAN"

That way there's no additional packages needed.

-Bill

On Tue, Jan 19, 2016 at 8:56 AM, Jason Kenny <[email protected]> wrote:

> I think this is a great idea.
>
>
>
> However a word of warning. How this applied could break existing code
> people have.
>
>
>
> Changing the env[“PLATFORM”] from posix to something like “linux” or
> “Linux_debian” is not backward compatible.
>
>
>
> The reality is that a string was used for good or bad.
>
>
>
> I would suggest that we defined something new so we don’t break existing
> build code. I know I have suggested something from parts, but I seem to
> have to make it a 100% independent package on pypi for it to be used by
> SCons.
>
>
>
> I think we need to look at Greg’s Noel IAPAT idea. I been calling it
> settings and have a great start of it going on Parts. I don’t think we want
> do this kind of change without some thought.
>
>
>
> I personally think we should deprecate PLATFORM and replace it with a
> HOST_XXX and TARGET_XXX value. Where XXX would be values like:
>
>
>
> 1)      OS ( this is abstract)
>
> 2)      OS-VARIANT/ Vender ( this is detailed)
>
> 3)      Architecture ( this is abstract)
>
> 4)      CPU-Type( this is detailed)
>
>
>
> I have found over and over again people need, as you get more low level,
> more detail. But to much detail can be a problem if one does not provide a
> good abstraction to replace it.
>
>
>
> People need detail something like this is fedora or redhat, or the only
> need details such as this is windows or posix.
>
>
>
> I know one item I would fix in the Parts Api for SystemPlatform would have
> been to move to use of functions for the abstract layers vs string or
> enums. Functions such as isX86() or isx86_64(), or isPosix or isLinux() I
> think will work better long term as it provides way to say useful stuff
> without knowing details that might change in unexpected ways. I have
> learned what seems good today probably will not make as much sense
> tomorrow, normally for reason we cannot foresee.
>
>
>
> I should also note maintaining more detail will  have a higher maintainer
> cost.
>
>
>
> Jason
>
>
>
>
> *From: *Russel Winder <[email protected]>
> *Sent: *Tuesday, January 19, 2016 5:42 AM
> *To: *SCons_Developers <[email protected]>
> *Subject: *Re: [Scons-dev] Distinguishing Debian and Fedora
>
>
>
> The following is a "doodle" for the direction I think the whole
> platform detection thing should go. It is all about removing strings as
> selectors, which has to be a bad thing given the propensity of many to
> mis-spell things.
>
>
> from enum import Enum, unique
>
> @unique
> class OS_Type(Enum):
>     posix = 0
>     linux_debian = 1
>     linux_fedora = 2
>     darwin = 3
>     windows_win32 = 4
>     windows_cygwin = 5
>     windows_mingw = 6
>
> def which_posix():
>     with open('/etc/os-release') as f:
>         for line in f:
>             if 'ID' in line:
>                 return {
>                     'debian': OS_Type.linux_debian,
>                     'fedora': OS_Type.linux_fedora,
>                     }[line.split('=')[1].strip()]
>         return OS_Type.posix
>
> environment = Environment(
>     tools=('g++', 'gnulink'),
> )
>
> platform = {
>     'posix': which_posix(),
>     'darwin': OS_Type.darwin,
> }[environment['PLATFORM']]
>
> environment.MergeFlags('!pkg-config --cflags --libs gtkmm-3.0')
>
> if platform == OS_Type.linux_fedora:
>     environment.MergeFlags('!pkg-config --cflags --libs gstreamermm-
> 0.10')
> elif platform == OS_Type.linux_debian:
>     environment.MergeFlags('!pkg-config --cflags --libs gstreamermm-
> 1.0')
> else:
>     print('Platform not understood.')
>     Exit(1)
>
> environment.Program('stuff.cpp', CXXFLAGS=['-std=c++14', '-W', '-
> Wall'])
>
>
>
>
> --
> Russel.
>
> =============================================================================
> Dr Russel Winder      t: +44 20 7585 2200   voip:
> sip:[email protected]
> 41 Buckmaster Road    m: +44 7770 465 077   xmpp: [email protected]
> London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
>
>
>
> _______________________________________________
> Scons-dev mailing list
> [email protected]
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
>

_______________________________________________
Scons-dev mailing list
[email protected]
https://pairlist2.pair.net/mailman/listinfo/scons-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.