www.digitalmars.com         C & C++   DMDScript  

D.gnu - Travis-CI compilers, LATEST file

I just realized I/we totally forgot to answer Martin Nowaks request to
update the http://gdcproject.org/downloads/LATEST file to 5.2.0.

IIRC we decided some time ago that users should use the GCC version
matching their system GCC. What would this mean for Travis-CI? What's
the system GCC version for Travis-CI?

Judging by some bug reports for travis-ci to update to ubuntu 14.04 I
guess their system GCC is quite old, so shall we just always use the
latest GDC/GCC version for travis?

There are some more possible travis-ci changes we should think of:

Since the last download restructuring, the
ftp://ftp.gdcproject.org/binaries/arm-linux-gnueabihf/, ...
directory are only used to keep backwards compatibility for old download
links. We should probably remove these directories now.

Travis-CI still fetches the compiler from
ftp://ftp.gdcproject.org/binaries/x86_64-linux-gnu/gdc-X.tar.xz We
should probably change that to use

OTOH it would be great if we could allow users to install other GDC
versions, similar to the way it's possible for DMD. There are 3 things
we could care about:
* GCC version (don't know if specifying the GCC version is useful)
* DMD frontend version
* target (users can then at least compile for ARM on test machines.
  It's also possible to use qemu on travis-CI, so real testing is also

With the new folder layout this is actually not difficult to implement:
Should work for all combinations.

* GCC_VER can be obtained from
* TARGET is either empty (=> native compiler) or "-${TRIPLET}"
* $DMD_FE is the DMD version. But I think we should also add an symlink
  for $DMD_FE = "LATEST"

The only difficult part is to devise a simple naming scheme
for .travis.yaml

* gdc should fetch latest GCC/DMD FE
* gdc-XX should fetch latest GCC and specified DMD FE
* gdc-XX-target for a specific target? How to use specific target and
  latest DMD FE? Writing gdc-LATEST-target is annoying... if we use
  gdc-XX target instead, we could do gdc arm-linux-gnueabi,
  gdc-2.066.1 arm-linux-gnueabi, ...
* Adding the GCC version would further complicate things, but we could
  probably just add a /X.X.X add the end =>
  gdc-2.066.1 arm-linux-gnueabi/5.2.0
Feb 14 2016