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-gnueabi/,
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
ftp://ftp.gdcproject.org/binaries/X/x86_64-linux-gnu/gdc-X+LATEST.tar.xz

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
  possible)

With the new folder layout this is actually not difficult to implement:
ftp://ftp.gdcproject.org/binaries/${GCC_VER}/x86_64-linux-gnu/gdc-${GCC_VER}${TARGET}+${DMD_FE}.tar.xz
Should work for all combinations.

* GCC_VER can be obtained from
  ftp://ftp.gdcproject.org/binaries/LATEST_GCC
* 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