#2211 Xored F4: Proj Version defaults to 1.0

SlimerDude Wed 27 Nov 2013

This question is really aimed at Ivan - Hello!

Projects in F4 ignore the version set in build.fan and default to 1.0.

While fine in single projects, with multiple projects with dependencies on each other, it becomes a pain because I can't have them open at the same time. Example:

afEfanExtra 0.6 --depends-on--> afEfan 1.3

As in the the build.fan of afEfanExtra has

depends = [ ... "afEfan 1.3" ... ]

But when I open afEfan I get the compilation error:

Cannot resolve depend: 'afEfan 1.0' != 'afEfan 1.3.2+'

While it's easy enough to change the depends in this case, I often have much larger dependency chain where it's not so convenient.

I was just wondering, is this by design or is it a bug?

ivan Wed 4 Dec 2013

Hi Slimer!

That's a known issue, which has been fixed – https://github.com/xored/f4/issues/17, but we didn't make any releases since then.

Could you give a try to nightly build here – http://build.xored.com/browse/F4-MSTR-4/artifact/PROD/products?

SlimerDude Wed 4 Dec 2013

Cool, thanks Ivan!

Yeah, I'll try the nightly build tonight - This version thing has become a real pain in the ars*!

SlimerDude Wed 4 Dec 2013

Hmm...

I'm not having much luck with it. :(

New pods are still compiled with a version of 1.0 in meta.props and the IDE still complains of:

Cannot resolve depend: afEfan 1.0 != afEfan 1.3.2+
  • I downloaded and unzipped the Win64 build.
  • Ran F4.exe and pointed it at my existing workspace to pick up projects and settings.
  • Deleted any existing pod builds.
  • Forced a re-build of all projects by Project -> Clean -> Clean all Projects
  • Still no joy :(

Is there something else I'm supposed to do?

ivan Mon 9 Dec 2013

Hi Slimer,

That's strange, could you show your build.fan? Here's what I see:

version-issue

SlimerDude Mon 9 Dec 2013

Hi Ivan,

This is a typical build.fan of mine, but

this.typof.pod.version

still returns 1.0.

I've cut down the build.fan to a bare minimum (podname, version, depends & srcdir) and I still get 1.0 - are you sure the nightly build contains the changes?

I'll download the nightly F4 again (Win 64bit version) and re-try...

ivan Mon 9 Dec 2013

No need to redownload – the issue is that F4 does not understand Version([0,0,9]) constructor. Could you try replacing it to Version("0.0.9")?

Since build.fan is a Fantom source, the only way to correctly extract all values from it is to compile and evaluate it, but that takes time, so instead we are using parser to extract necessary values from it. So for Version we are searching for a constructor call, which accepts a single Str value – https://github.com/xored/f4/blob/master/com.xored.f4.core/fan/manifest/Manifest.fan#L126

SlimerDude Mon 9 Dec 2013

Hi Ivan,

That's sweet, using the Str ctor does the trick.

Nice one! Thanks,

Steve.

Jay Herron Fri 3 Jul 2020

I ran into a similar situation with the most recent F4 on my linux machine. I found that you must use the shorthand construction syntax when declaring the version (which is preferred anyway, but not required). That is,

These worked:

version = Version([1,4,6])
version = Version("1.4.6")

But these did not:

version = Version.make([1,4,6])
version = Version.make("1.4.6")

Both appear to work on my Windows machine...

Just thought I'd note this behavior in case anyone else needs it.

SlimerDude Thu 16 Jul 2020

Thanks Jay, I've just made a note of it - Project versions not recognised. I'll take a look in the next round of F4 updates.

Login or Signup to reply.