Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-05-24 Thread Pacho Ramos
El dom, 19-05-2013 a las 12:31 +0200, Pacho Ramos escribió:
> El dom, 14-04-2013 a las 11:40 +0200, Pacho Ramos escribió:
> > Due reasons explained here:
> > https://bugs.gentoo.org/show_bug.cgi?id=462052#c1
> > 
> > We would like to start a process of simplifying dotnet maintained
> > eclasses a lot because they are currently really hard to maintain. As a
> > start point, we will need a simple eclass simply to export some
> > variables needed to build most of dotnet packages. That variables are
> > currently being exported by mono.eclass, the idea would be to split the
> > "environment exporting" part out of it (and deprecate current
> > mono.eclass in the future)
> > 
> > 
> 
> Updated eclass taking care of previous suggestions

Added




Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-05-19 Thread Pacho Ramos
El dom, 14-04-2013 a las 11:40 +0200, Pacho Ramos escribió:
> Due reasons explained here:
> https://bugs.gentoo.org/show_bug.cgi?id=462052#c1
> 
> We would like to start a process of simplifying dotnet maintained
> eclasses a lot because they are currently really hard to maintain. As a
> start point, we will need a simple eclass simply to export some
> variables needed to build most of dotnet packages. That variables are
> currently being exported by mono.eclass, the idea would be to split the
> "environment exporting" part out of it (and deprecate current
> mono.eclass in the future)
> 
> 

Updated eclass taking care of previous suggestions
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

# @ECLASS: mono-env.eclass
# @MAINTAINER:
# dot...@gentoo.org
# @BLURB: Set environment variables commonly used by dotnet packages.
# @DESCRIPTION:
# Set environment variables commonly used by dotnet packages.

inherit multilib

EXPORT_FUNCTIONS pkg_setup

if [[ ! ${_MONO_ENV} ]]; then

mono-env_pkg_setup() {
# >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, 
so we set the
# shared dir to ${T} so that ${T}/.wapi can be used during the install 
process.
export MONO_SHARED_DIR="${T}"

# export more variables as needed by other dotnet packages
export MONO_REGISTRY_PATH="${T}/registry"
export XDG_DATA_HOME="${T}/data"

# Building mono, nant and many other dotnet packages is known to fail 
if LC_ALL
# variable is not set to C. To prevent this all mono related packages 
will be
# build with LC_ALL=C (see bugs #146424, #149817)
export LC_ALL=C

# Monodevelop-using applications need this to be set or they will try 
to create config
# files in the user's ~ dir.
export XDG_CONFIG_HOME="${T}"

# Fix bug 83020:
# "Access Violations Arise When Emerging Mono-Related Packages with 
MONO_AOT_CACHE"
unset MONO_AOT_CACHE

# mono libs can live on /usr/lib as they are not arch specific
QA_MULTILIB_PATHS="usr/lib/"
}

_MONO_ENV=1
fi


Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Zac Medico
On 04/14/2013 02:59 AM, Pacho Ramos wrote:
> El dom, 14-04-2013 a las 11:45 +0200, Michał Górny escribió:
>> On Sun, 14 Apr 2013 11:40:03 +0200
>> Pacho Ramos  wrote:
>>
>>> # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so 
>>> we set the
>>> # shared dir to ${T} so that ${T}/.wapi can be used during the install 
>>> process.
>>> export MONO_SHARED_DIR="${T}"
>>
>> Don't use ${T} in global scope. And just don't export them
>> in the global scope either.
>>
> 
> Why not?

It's more flexible if you put it in a function and call it from
pkg_setup. That way, if it turns out that you need to do something that
can't be done in global scope, you're already prepared.
-- 
Thanks,
Zac



Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Michał Górny
On Sun, 14 Apr 2013 12:25:27 +0200
Pacho Ramos  wrote:

> El dom, 14-04-2013 a las 12:08 +0200, Michał Górny escribió:
> > On Sun, 14 Apr 2013 11:59:14 +0200
> > Pacho Ramos  wrote:
> > 
> > > El dom, 14-04-2013 a las 11:45 +0200, Michał Górny escribió:
> > > > On Sun, 14 Apr 2013 11:40:03 +0200
> > > > Pacho Ramos  wrote:
> > > > 
> > > > > # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared 
> > > > > memory, so we set the
> > > > > # shared dir to ${T} so that ${T}/.wapi can be used during the 
> > > > > install process.
> > > > > export MONO_SHARED_DIR="${T}"
> > > > 
> > > > Don't use ${T} in global scope. And just don't export them
> > > > in the global scope either.
> > > 
> > > Why not?
> > 
> > Let's start with the fact that ${T} is only partially persistent
> > by the words of PMS. I don't know if it's really relevant here but
> > you're exporting persistent variables with value based on
> > an non-persistent one.
> > 
> > Thinking about it more, it probably would work. As long as you don't
> > assume anything about those directories on pkg_*rm() where ${T} would
> > have changed already and your variables wouldn't.
> > 
> 
> Yes, they will be needed at compile time, that would explain why no
> problem raised for now :/ Thanks for the info

Well, I am a bit worried about metadata regen but I guess even having
invalid values there doesn't hurt anyone. Well, assuming that the
eclass will always be sourced before running the build and noone will
try to use a pre-cached environment.

> > Also, why are you exporting HOME? PMS does that already...
> > 
> 
> Probably because it's inherited from current mono.eclass, but, are you
> sure PMS does that already? There are more examples in the tree (in
> eclasses and ebuilds) exporting HOME in similar way (vim.eclass for
> example) :/ Or maybe it was started to be exported more recently and
> this is only a relic :|

It's on the list [1], and I think I've seen 'home' subdirs in the build
root for a long time. I guess people may be resetting it 'just to be
sure'.

One thing should be noted though: $HOME may and usually will be
different than $T.

[1]:http://dev.gentoo.org/~ulm/pms/5/pms.html#x1-11800011.1

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Pacho Ramos
El dom, 14-04-2013 a las 12:08 +0200, Michał Górny escribió:
> On Sun, 14 Apr 2013 11:59:14 +0200
> Pacho Ramos  wrote:
> 
> > El dom, 14-04-2013 a las 11:45 +0200, Michał Górny escribió:
> > > On Sun, 14 Apr 2013 11:40:03 +0200
> > > Pacho Ramos  wrote:
> > > 
> > > > # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, 
> > > > so we set the
> > > > # shared dir to ${T} so that ${T}/.wapi can be used during the install 
> > > > process.
> > > > export MONO_SHARED_DIR="${T}"
> > > 
> > > Don't use ${T} in global scope. And just don't export them
> > > in the global scope either.
> > 
> > Why not?
> 
> Let's start with the fact that ${T} is only partially persistent
> by the words of PMS. I don't know if it's really relevant here but
> you're exporting persistent variables with value based on
> an non-persistent one.
> 
> Thinking about it more, it probably would work. As long as you don't
> assume anything about those directories on pkg_*rm() where ${T} would
> have changed already and your variables wouldn't.
> 

Yes, they will be needed at compile time, that would explain why no
problem raised for now :/ Thanks for the info

> Also, why are you exporting HOME? PMS does that already...
> 

Probably because it's inherited from current mono.eclass, but, are you
sure PMS does that already? There are more examples in the tree (in
eclasses and ebuilds) exporting HOME in similar way (vim.eclass for
example) :/ Or maybe it was started to be exported more recently and
this is only a relic :|




Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Michał Górny
On Sun, 14 Apr 2013 11:59:14 +0200
Pacho Ramos  wrote:

> El dom, 14-04-2013 a las 11:45 +0200, Michał Górny escribió:
> > On Sun, 14 Apr 2013 11:40:03 +0200
> > Pacho Ramos  wrote:
> > 
> > > # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so 
> > > we set the
> > > # shared dir to ${T} so that ${T}/.wapi can be used during the install 
> > > process.
> > > export MONO_SHARED_DIR="${T}"
> > 
> > Don't use ${T} in global scope. And just don't export them
> > in the global scope either.
> 
> Why not?

Let's start with the fact that ${T} is only partially persistent
by the words of PMS. I don't know if it's really relevant here but
you're exporting persistent variables with value based on
an non-persistent one.

Thinking about it more, it probably would work. As long as you don't
assume anything about those directories on pkg_*rm() where ${T} would
have changed already and your variables wouldn't.

Also, why are you exporting HOME? PMS does that already...

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Pacho Ramos
El dom, 14-04-2013 a las 11:45 +0200, Michał Górny escribió:
> On Sun, 14 Apr 2013 11:40:03 +0200
> Pacho Ramos  wrote:
> 
> > # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so 
> > we set the
> > # shared dir to ${T} so that ${T}/.wapi can be used during the install 
> > process.
> > export MONO_SHARED_DIR="${T}"
> 
> Don't use ${T} in global scope. And just don't export them
> in the global scope either.
> 

Maybe setting a custom pkg_setup could be an option :/




Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Pacho Ramos
El dom, 14-04-2013 a las 11:45 +0200, Michał Górny escribió:
> On Sun, 14 Apr 2013 11:40:03 +0200
> Pacho Ramos  wrote:
> 
> > # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so 
> > we set the
> > # shared dir to ${T} so that ${T}/.wapi can be used during the install 
> > process.
> > export MONO_SHARED_DIR="${T}"
> 
> Don't use ${T} in global scope. And just don't export them
> in the global scope either.
> 

Why not?




Re: [gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Michał Górny
On Sun, 14 Apr 2013 11:40:03 +0200
Pacho Ramos  wrote:

> # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so we 
> set the
> # shared dir to ${T} so that ${T}/.wapi can be used during the install 
> process.
> export MONO_SHARED_DIR="${T}"

Don't use ${T} in global scope. And just don't export them
in the global scope either.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


[gentoo-dev] mono-env.eclass: new eclass to be used by most of dotnet packages

2013-04-14 Thread Pacho Ramos
Due reasons explained here:
https://bugs.gentoo.org/show_bug.cgi?id=462052#c1

We would like to start a process of simplifying dotnet maintained
eclasses a lot because they are currently really hard to maintain. As a
start point, we will need a simple eclass simply to export some
variables needed to build most of dotnet packages. That variables are
currently being exported by mono.eclass, the idea would be to split the
"environment exporting" part out of it (and deprecate current
mono.eclass in the future)


# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

# @ECLASS: mono-env.eclass
# @MAINTAINER:
# dot...@gentoo.org
# @BLURB: Set environment variables commonly used by dotnet packages.
# @DESCRIPTION:
# Set environment variables commonly used by dotnet packages.

# >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so we 
set the
# shared dir to ${T} so that ${T}/.wapi can be used during the install process.
export MONO_SHARED_DIR="${T}"

# export more variables as needed by other dotnet packages
export MONO_REGISTRY_PATH="${T}/registry"
export XDG_DATA_HOME="${T}/data"
export HOME="${T}/home"

# Building mono, nant and many other dotnet packages is known to fail if LC_ALL
# variable is not set to C. To prevent this all mono related packages will be
# build with LC_ALL=C (see bugs #146424, #149817)
export LC_ALL=C

# Monodevelop-using applications need this to be set or they will try to create 
config
# files in the user's ~ dir.
export XDG_CONFIG_HOME="${T}"

# Fix bug 83020:
# "Access Violations Arise When Emerging Mono-Related Packages with 
MONO_AOT_CACHE"
unset MONO_AOT_CACHE