I’ve spotted something interesting in my logs - when I added one of the missing methods to ClassDescription - I see in the log the message:
Loaded -> Fuel-cypress.1 --- filetree:///builds/macta/PharoLambda/bootstrap --- cache ...finished baseline Compiling missing traits... Evaluating post load initialization... Finished Script. However when I remove all the compiles I don’t see this message: Loaded -> Fuel-cypress.1 --- filetree:///builds/macta/PharoLambda/bootstrap --- cache ...finished baseline Evaluating post load initialization... Finished Script. So I wonder if this is similar to the problem I had in the previous 6.0 image - where some things didn’t seem to compile properly (in that case, it was loading a missing class that didn’t seem to cause recompilation). Tim > On 4 Aug 2017, at 11:10, Tim Mackinnon <[email protected]> wrote: > > Actually there is something weird going on - as now I’m getting a complaint > about "FLPharoPlatform had the subclass responsibility to implement > #isBigEndian”, and that’s in the FuelPlatform-Pharo-06 which you said to > include (and it looks like I am). > > I need to double check this - as I must be making some trivial mistake. > > Tim > >> On 4 Aug 2017, at 11:01, Tim Mackinnon <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hi Mariano - I’ve looked at this again, and it was my fault - I was >> compiling in : >> >> fuelAccept: aGeneralMapper >> ^self explicitRequirement. >> >> Because when I looked at the Traits for fuel - this is what it had for >> TClass? - as I’m not so clear on traits, what does this mean - as I had just >> assumed that I should flatten the Fuel methods for TCLass, TBehaviour and >> TClassDescription - but I think I’ve misunderstood what I should do (and I >> guess from Pavel’s comment - I should really look at why that initial method >> was missing as it sounds like it should have worked - so maybe its an order >> loading thing?). >> >> Thanks, for helping by the way - this is proving very instructional. >> >> Tim >> >>> On 3 Aug 2017, at 18:26, Mariano Martinez Peck <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> >>> On Thu, Aug 3, 2017 at 2:14 PM, Tim Mackinnon <[email protected] >>> <mailto:[email protected]>> wrote: >>> Hi Mariano - I compiled in the trait methods manually and it got further - >>> but now I’m seeing another error - Error: Explicitly required method", >>> "\u001b[0mLambda class(Object)>>error:", >>> "explicitRequirement”, >>> >>> >>> mmmm the stack is weird... it looks like if Class >> fuelAccept: would have >>> the wrong implementation, that is, having the one from TClass: >>> >>> fuelAccept: aGeneralMapper >>> ^self explicitRequirement. >>> >>> Rather than the correct one: >>> >>> fuelAccept: aGeneralMapper >>> >>> ^aGeneralMapper visitClass: self >>> >>> >>> Maybe the solution is to compile all those methods from traits BUT NOT >>> those that are "^self explicitRequirement." because those will override the >>> good methods. >>> >>> If that doesn't work, then maybe can you print to console the each impl >>> (source) of each implementor of #fuelAccept: ? >>> >>> Thoughts? >>> >>> >>> >>> >>> Any ideas? >>> >>> Tim >>> >>> "--- RUNNING ERROR HANDLER ---", >>> "Error: Explicitly required method", >>> "", >>> "\u001b[0m\u001b[31mError: Explicitly required method", >>> "\u001b[0mLambda class(Object)>>error:", >>> "explicitRequirement", >>> " self error: 'No decompiler available' in Lambda >>> class(Object)>>explicitRequirement in Block: explicitRequirement...", >>> "False>>ifFalse:", >>> "Lambda class(Object)>>explicitRequirement", >>> "Lambda class(Class)>>fuelAccept:", >>> "FLLightGeneralMapper>>mapAndTrace:", >>> "FLLightGlobalMapper>>mapAndTrace:", >>> "FLPluggableSubstitutionMapper>>mapAndTrace:", >>> "FLAnalysis>>mapAndTrace:", >>> "FLAnalysis>>run", >>> "setDefaultAnalysis", >>> " self error: 'No decompiler available' in >>> FLAnalyzer>>setDefaultAnalysis in Block: setDefaultAnalysis...", >>> "FLAnalyzer>>analysisFor:", >>> "FLSerialization>>analysisStep", >>> "FLSerialization>>run", >>> "setDefaultSerialization", >>> " self error: 'No decompiler available' in >>> FLSerializer>>setDefaultSerialization in Block: setDefaultSerialization...", >>> "serialize: t1 on: t2", >>> " self error: 'No decompiler available' in FLSerializer>>serialize:on: >>> in Block: serialize: t1 on: t2...", >>> "on: t1 globalEnvironment: t2 do: t3", >>> " self error: 'No decompiler available' in FLEncoder >>> class>>on:globalEnvironment:do: in Block: on: t1 globalEnvironment: t2 do: >>> t3...", >>> "BlockClosure>>ensure:", >>> "FLEncoder class>>on:globalEnvironment:do:", >>> "FLSerializer>>serialize:on:", >>> "NonInteractiveUIManager>>writeFuelContext:", >>> "Lambda class>>processDebug:", >>> "Lambda class>>processJSON:", >>> "Lambda class>>process:", >>> "activate", >>> >>>> On 3 Aug 2017, at 17:26, Mariano Martinez Peck <[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> >>>> >>>> On Thu, Aug 3, 2017 at 1:17 PM, Tim Mackinnon <[email protected] >>>> <mailto:[email protected]>> wrote: >>>> Hi guys - I think I’m getting close - I’m able to load remote packages, >>>> and I’ve added fuel to my repo and its loading - however I am getting an >>>> error when I run and test writing out a context - MessageNotUnderstood: >>>> Context class>>fuelIgnoredInstanceVariableNames >>>> >>>> I can see that this is a trait - is trait support missing in the minimal >>>> image? >>>> >>>> >>>> Uff...that's a good question hahahhah >>>> I don't know if the minimal image supports traits, but what I am almost >>>> sure, is the Behavior DOES need the methods defined in TBehavior. So maybe >>>> the minimal image flattens the traits. In this case you could do the same >>>> for Fuel (flattenDownAllTraits) >>>> >>>> (I also seemed to get this far just loading the Fuel package - but just to >>>> be sure I added the other platform ones like you suggested and still get >>>> the same error). Given how simple that method is, I could just compile it >>>> in - but maybe there are many more? >>>> >>>> >>>> >>>> TBehavior, TClass and TClassDescription are the only one that comes to my >>>> mind right now... there are only a few methods from Fuel. So could >>>> compile those directly at least on a first step...at least you keep you >>>> going. >>>> >>>> >>>> >>>> >>>> Tim >>>> >>>> >>>> "errorMessage": "Command failed: ./pharo Pharo.image >>>> --no-default-preferences process Lambda '{\"debug\":true,\"data\":5}'\n >>>> "errorType": "Error", >>>> "stackTrace": [ >>>> "Writing fuel context to S3...", >>>> "Using S3 bucket morethan-technology-projects", >>>> "\u001b[31m", >>>> "--- RUNNING ERROR HANDLER ---", >>>> "MessageNotUnderstood: Context >>>> class>>fuelIgnoredInstanceVariableNames", >>>> "", >>>> "\u001b[0m\u001b[31mMessageNotUnderstood: Context >>>> class>>fuelIgnoredInstanceVariableNames", >>>> "\u001b[0mContext class(Object)>>doesNotUnderstand: >>>> #fuelIgnoredInstanceVariableNames", >>>> "FLVariablesMapping>>instanceVariableNamesToSerialize", >>>> "FLVariablesMapping>>initializeAnalyzing", >>>> "FLVariablesMapping class>>newAnalyzing:references:", >>>> "FLContextCluster(FLPointerObjectCluster)>>initializeAnalyzing:", >>>> "FLContextCluster class(FLObjectCluster class)>>newAnalyzing:", >>>> "clusterKeyedByObjectClass: t1 class: t2", >>>> " self error: 'No decompiler available' in >>>> FLLightGeneralMapper(FLMapper)>>clusterKeyedByObjectClass:class: in Block: >>>> clusterKeyedByObjectClass: t1 class: t2...", >>>> "clusterInstanceOf: t1 keyInBucket: t2 factory: t3", >>>> " self error: 'No decompiler available' in >>>> FLLightGeneralMapper(FLMapper)>>clusterInstanceOf:keyInBucket:factory: in >>>> Block: clusterInstanceOf: t1 keyInBucket: t2 factory: t3...", >>>> "at: t1 ifAbsentPut: t2", >>>> " self error: 'No decompiler available' in >>>> IdentityDictionary(Dictionary)>>at:ifAbsentPut: in Block: at: t1 >>>> ifAbsentPut: t2...", >>>> "IdentityDictionary(Dictionary)>>at:ifAbsent:", >>>> "IdentityDictionary(Dictionary)>>at:ifAbsentPut:", >>>> >>>> "FLLightGeneralMapper(FLMapper)>>clusterInstanceOf:keyInBucket:factory:", >>>> "FLLightGeneralMapper(FLMapper)>>clusterKeyedByObjectClass:class:", >>>> "FLLightGeneralMapper(FLMapper)>>mapAndTraceByObjectClass:to:", >>>> "FLLightGeneralMapper>>visitMethodContext:", >>>> "Context>>fuelAccept:", >>>> "FLLightGeneralMapper>>mapAndTrace:", >>>> "FLLightGlobalMapper>>mapAndTrace:", >>>> "FLPluggableSubstitutionMapper>>mapAndTrace:", >>>> "FLAnalysis>>mapAndTrace:", >>>> "FLAnalysis>>run", >>>> "setDefaultAnalysis", >>>> " self error: 'No decompiler available' in >>>> FLAnalyzer>>setDefaultAnalysis in Block: setDefaultAnalysis...", >>>> "FLAnalyzer>>analysisFor:", >>>> "FLSerialization>>analysisStep", >>>> "FLSerialization>>run", >>>> "setDefaultSerialization", >>>> " self error: 'No decompiler available' in >>>> FLSerializer>>setDefaultSerialization in Block: >>>> setDefaultSerialization...", >>>> "serialize: t1 on: t2", >>>> " self error: 'No decompiler available' in >>>> FLSerializer>>serialize:on: in Block: serialize: t1 on: t2...", >>>> "on: t1 globalEnvironment: t2 do: t3", >>>> " self error: 'No decompiler available' in FLEncoder >>>> class>>on:globalEnvironment:do: in Block: on: t1 globalEnvironment: t2 do: >>>> t3...", >>>> "BlockClosure>>ensure:", >>>> "FLEncoder class>>on:globalEnvironment:do:", >>>> "\u001b[0m" >>>>> On 3 Aug 2017, at 13:16, Mariano Martinez Peck <[email protected] >>>>> <mailto:[email protected]>> wrote: >>>>> >>>>> >>>>> >>>>> On Thu, Aug 3, 2017 at 8:58 AM, Tim Mackinnon <[email protected] >>>>> <mailto:[email protected]>> wrote: >>>>> I’m so close now (bit of a diversion with gitlab yml not liking the eval >>>>> string) - that did load and it got me really close - I’m just missing >>>>> FlSerializer now (I have progressed my work to fuel out the context for >>>>> debugging to S3)… so looking at the repo, there are quite a few fuel >>>>> packages - but in a big image I can see that FLSerialiser is in Core - so >>>>> do I just need core? But then there are a few fuel packages with Core? >>>>> >>>>> >>>>> The easiest way to understand that is either checking ConfigurationOfFuel >>>>> directly or some of the related Metacello tool. >>>>> Anyway, for this case, I think you need the packages (in this order): >>>>> FuelPlatform and Fuel. Bug again, Metacello allows some postLoad actions >>>>> (which we use in Fuel)... so...it's not always easy to load a project >>>>> without Metacello. >>>>> >>>>> Sometimes you can print the result of #record: >>>>> >>>>> Metacello new >>>>> configuration: 'Fuel'; >>>>> smalltalkhubUser: 'Pharo' project: 'Fuel'; >>>>> version: #stable; >>>>> record: #('Core'). >>>>> >>>>> -> >>>>> >>>>> "linear load : >>>>> linear load : 2.1.10 [ConfigurationOfFuel] >>>>> linear load : baseline [ConfigurationOfFuelPlatform] >>>>> load : FuelPlatform-Core >>>>> load : FuelPlatform-Pharo-Core >>>>> load : FuelPlatform-Pharo-06" >>>>> >>>>> >>>>> ------ >>>>> >>>>> Anyway.... I guess I would try to load these packages (in this order): >>>>> >>>>> FuelPlatform-Core >>>>> FuelPlatform-Pharo-Core >>>>> FuelPlatform-Pharo-06 >>>>> Fuel >>>>> >>>>> And when you are down loading, then execute: >>>>> >>>>> (Smalltalk at: #FLPlatform) current addHacks >>>>> >>>>> >>>>> I’m also not quite clear on how I would load packages without a Baseline >>>>> (would I create my own baseline for the fuel packages I need?) >>>>> >>>>> Tim >>>>> >>>>>> On 3 Aug 2017, at 12:07, Pavel Krivanek <[email protected] >>>>>> <mailto:[email protected]>> wrote: >>>>>> >>>>>> >>>>>> >>>>>> 2017-08-03 13:02 GMT+02:00 Tim Mackinnon <[email protected] >>>>>> <mailto:[email protected]>>: >>>>>> I really appreciate your patience and help on this - it looks very >>>>>> promising and I am giving it a spin now… >>>>>> >>>>>> When you say the pharo repository - are you referring to this: >>>>>> https://github.com/pharo-project/pharo/tree/master/src >>>>>> <https://github.com/pharo-project/pharo/tree/master/src>. ? Just so I >>>>>> know for the future. >>>>>> >>>>>> yes >>>>>> >>>>>> -- Pavel >>>>>> >>>>>> >>>>>> Tim >>>>>> >>>>>>> On 3 Aug 2017, at 09:16, Pavel Krivanek <[email protected] >>>>>>> <mailto:[email protected]>> wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2017-08-03 10:14 GMT+02:00 Pavel Krivanek <[email protected] >>>>>>> <mailto:[email protected]>>: >>>>>>> The easiest think you can do is to copy to your repository (or some >>>>>>> other) related packages from the Pharo repository (to do not have to >>>>>>> clone it all): >>>>>>> >>>>>>> Metacello-GitBasedRepository.package >>>>>>> Metacello-GitHub.package >>>>>>> SUnit-Core.package >>>>>>> >>>>>>> and create baseline to load them. I already tried it so you can test it: >>>>>>> https://drive.google.com/open?id=0BzSsmZhqtUTeMVJacTZtdW5UQW8 >>>>>>> <https://drive.google.com/open?id=0BzSsmZhqtUTeMVJacTZtdW5UQW8> >>>>>>> >>>>>>> Then you will do something like: >>>>>>> >>>>>>> (accidental message send ;-) ) >>>>>>> >>>>>>> BASELINE=MetacelloGitBasedRepository >>>>>>> pharo "$IMAGE_NAME.image" --no-default-preferences eval --save \ >>>>>>> "Metacello new baseline: '$BASELINE'; repository: >>>>>>> 'filetree://./PharoLambda/src <>'; load." >>>>>>> >>>>>>> BASELINE=Lambda >>>>>>> pharo "$IMAGE_NAME.image" --no-default-preferences eval --save \ >>>>>>> "Metacello new baseline: '$BASELINE'; repository: >>>>>>> 'filetree://./PharoLambda/src <>'; load." >>>>>>> >>>>>>> As I tried that. The baseline of Lambda is then able to be loaded. >>>>>>> >>>>>>> -- Pavel >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2017-08-02 15:18 GMT+02:00 Tim Mackinnon <[email protected] >>>>>>> <mailto:[email protected]>>: >>>>>>> Ah, I think I’m starting to get closer to what I need… >>>>>>> >>>>>>> So if I want to load in that last piece to enable more general remote >>>>>>> loading - how do I figure out how to do that? I’m trying to work out >>>>>>> where the build steps for building up the image (can I see them in >>>>>>> Jenkins? It wasn’t clear to me if I can look it up? Or the >>>>>>> BaselineOfIDE was mentioned - looking there I can see a few metacello >>>>>>> and gofer packages - but then I guess I’m looking for an easy Mcz I can >>>>>>> use with the example below? >>>>>>> >>>>>>> Or do I just load Metacello as a git submodule and then it will be on >>>>>>> my local filesystem to then bootstrap up? >>>>>>> >>>>>>> I guess I’m trying to work out the best sustainable approach to getting >>>>>>> to a good server based image that has minimal tools and the ability to >>>>>>> easily load remote code for pre-req projects. >>>>>>> >>>>>>> Tim >>>>>>> >>>>>>>> On 2 Aug 2017, at 07:05, Guillermo Polito <[email protected] >>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>> >>>>>>>> Yes, you should be able to load an mcz in that image by doing: >>>>>>>> >>>>>>>> (MCDirectoryRepository new directory: 'where-your-mcz-is') >>>>>>>> loadVersionFromFileNamed: >>>>>>>> 'Metacello-GitBasedRepository-Author.1.mcz') load. >>>>>>>> >>>>>>>> Guille >>>>>>>> >>>>>>>> On Wed, Aug 2, 2017 at 7:57 AM, Pavel Krivanek >>>>>>>> <[email protected] <mailto:[email protected]>> wrote: >>>>>>>> >>>>>>>> 2017-08-01 23:13 GMT+02:00 Tim Mackinnon <[email protected] >>>>>>>> <mailto:[email protected]>>: >>>>>>>> Hi Pavel - I tried it again and the problem is do with Metacello >>>>>>>> dependencies in your baseline. >>>>>>>> >>>>>>>> The SUnit baseline doesn’t specify any additional dependencies to load >>>>>>>> (it just loads local packages), whereas my baseline that fails looks >>>>>>>> like this: >>>>>>>> >>>>>>>> baseline: spec >>>>>>>> <baseline> >>>>>>>> >>>>>>>> spec for: #common do: [ >>>>>>>> spec configuration: 'ZTimestamp' with: [ >>>>>>>> spec >>>>>>>> versionString: #stable; >>>>>>>> repository: 'http://mc.stfx.eu/Neo >>>>>>>> <http://mc.stfx.eu/Neo>' ]. >>>>>>>> >>>>>>>> spec baseline: 'AWS' with: [ >>>>>>>> spec repository: >>>>>>>> 'github://newapplesho/aws-sdk-smalltalk:v1.10/pharo-repository <>' ]. >>>>>>>> >>>>>>>> spec >>>>>>>> package: 'Lambda' with: [ spec requires: >>>>>>>> {'ZTimestamp'. 'AWS'}]. >>>>>>>> >>>>>>>> ]. >>>>>>>> >>>>>>>> >>>>>>>> The “spec configuration: ….” Specifications cause the error: >>>>>>>> >>>>>>>> 25 UndefinedObject(Object)>>doesNotUnderstand: #addTo: >>>>>>>> 26 MCRepositoryGroup>>addRepository: >>>>>>>> >>>>>>>> If I remove those lines from my baseline above (as well the requires: >>>>>>>> reference to them) I can then successfully load my packages. >>>>>>>> >>>>>>>> So is this something the minimal image should support (otherwise how >>>>>>>> do you load external packages into your image without checking them in >>>>>>>> locally?) OR is there something simple I can checkin and load locally >>>>>>>> to return that behaviour? (Personally I think it would make sense to >>>>>>>> allow remote loading - I’m guessing Pharo itself as a core has >>>>>>>> everything it needs - but if you want to do any experimentation on the >>>>>>>> core and need remote packages, you would hit this too - so it feels a >>>>>>>> bit limiting). >>>>>>>> >>>>>>>> The dependencies in th baseline are supported but the support for most >>>>>>>> of external repositories (like package Metacello-GitBasedRepository) >>>>>>>> is loaded at the end of bootstrapping process in BaselineOfIDE. We >>>>>>>> should check/solve dependencies and move it into the minimal Pharo. >>>>>>>> For now you can try to load it by yourself or work with already >>>>>>>> prepared local clones of required repositories. >>>>>>>> >>>>>>>> -- Pavel >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Tim >>>>>>>> >>>>>>>>> On 1 Aug 2017, at 10:06, Pavel Krivanek <[email protected] >>>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> 2017-07-31 22:51 GMT+02:00 Tim Mackinnon <[email protected] >>>>>>>>> <mailto:[email protected]>>: >>>>>>>>> I wasn’t clear on which image to retry - the >>>>>>>>> https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-3.2-Minimal/lastSuccessfulBuild/artifact/Pharo-minimal-64.zip >>>>>>>>> >>>>>>>>> <https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-3.2-Minimal/lastSuccessfulBuild/artifact/Pharo-minimal-64.zip> >>>>>>>>> one still shows as being last updated 7 days ago. >>>>>>>>> >>>>>>>>> The >>>>>>>>> https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0-Step-04-01-ConfigurationOfMinimalPharo/ >>>>>>>>> >>>>>>>>> <https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0-Step-04-01-ConfigurationOfMinimalPharo/> >>>>>>>>> one gives me a mismatch error: This interpreter (vers. 68021) cannot >>>>>>>>> read image file (vers. 6521). >>>>>>>>> >>>>>>>>> The >>>>>>>>> https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit-Conversion/lastSuccessfulBuild/artifact/latest-minimal-64.zip >>>>>>>>> >>>>>>>>> <https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit-Conversion/lastSuccessfulBuild/artifact/latest-minimal-64.zip> >>>>>>>>> one gives me a walkback when trying to run my install script : >>>>>>>>> >>>>>>>>> 25 UndefinedObject(Object)>>doesNotUnderstand: #addTo: >>>>>>>>> 26 MCRepositoryGroup>>addRepository: >>>>>>>>> 27 createRepository >>>>>>>>> | repo | >>>>>>>>> repo := self project createRepository: self. >>>>>>>>> ^ MCRepositoryGroup default repositories >>>>>>>>> detect: [ :each | each = repo ] >>>>>>>>> ifNone: [ >>>>>>>>> MCRepositoryGroup default addRepository: repo. >>>>>>>>> repo ] in MetacelloRepositorySpec>>createRepository >>>>>>>>> >>>>>>>>> I think this is because the image doesn’t support Metacello? As in: >>>>>>>>> Metacello new >>>>>>>>> repository: 'filetree://../src <>'; >>>>>>>>> baseline: 'Lambda'; >>>>>>>>> load. >>>>>>>>> >>>>>>>>> How do you guys load things into the minimal images (I thought you >>>>>>>>> used Metacello - but maybe you do it some other way?) >>>>>>>>> >>>>>>>>> I can use a big 6.1 image fine (as it has Metacello loaded) but I’d >>>>>>>>> really like a minimal solution - that can load in libraries like AWS >>>>>>>>> S3, or XML parsing etc. and it seems like I should be a good customer >>>>>>>>> for kicking the tires on all of this. >>>>>>>>> >>>>>>>>> Tim >>>>>>>>> >>>>>>>>> >>>>>>>>> I checked the 64-bit Pharo 7 minimal image and loading of baseline >>>>>>>>> (of SUnit from pharo-project/pharo) works: >>>>>>>>> >>>>>>>>> ./pharo Pharo7.0-minimal-64bit-b1625bf.image eval --save "Metacello >>>>>>>>> new baseline: 'SUnit'; repository: 'filetree://./pharo-core/src <>'; >>>>>>>>> load." >>>>>>>>> >>>>>>>>> ./pharo Pharo7.0-minimal-64bit-b1625bf.image eval "TestCase suite run" >>>>>>>>> >>>>>>>>> Can you test it too? >>>>>>>>> >>>>>>>>> -- Pavel >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> Guille Polito >>>>>>>> >>>>>>>> Research Engineer >>>>>>>> French National Center for Scientific Research - http://www.cnrs.fr >>>>>>>> <http://www.cnrs.fr/> >>>>>>>> >>>>>>>> >>>>>>>> Web: http://guillep.github.io <http://guillep.github.io/> >>>>>>>> Phone: +33 06 52 70 66 13 <tel:+33%206%2052%2070%2066%2013> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Mariano >>>>> http://marianopeck.wordpress.com <http://marianopeck.wordpress.com/> >>>> >>>> >>>> >>>> -- >>>> Mariano >>>> http://marianopeck.wordpress.com <http://marianopeck.wordpress.com/> >>> >>> >>> >>> -- >>> Mariano >>> http://marianopeck.wordpress.com <http://marianopeck.wordpress.com/> >> >
