cpcitor / cpc-dev-tool-chain

A development toolchain to compile your modern C or assembly projects on a modern OS and run on an Amstrad CPC or emulator.
45 stars 5 forks source link

Problem with paths on installing 2cdt #7

Closed lronaldo closed 9 years ago

lronaldo commented 9 years ago

It seems that most of the platforms (I haven't tried ubuntu yet) have problems installing 2cdt because Makefile guides them to enter the path tools/2cdt/2cdt/2cdt, which does not exist. Here I left the error, and the platforms tested, with similar results.

The error:

************************************************************************
**************** Extracting source from: 2cdt.zip
************************************************************************
unzip 2cdt.zip
Archive:  2cdt.zip
   creating: 2cdt/
  inflating: 2cdt/COPYING
  inflating: 2cdt/Makefile.win
  inflating: 2cdt/Makefile
  inflating: 2cdt/file_id.diz
  inflating: 2cdt/2cdt.depend
  inflating: 2cdt/2cdt.cbp
  inflating: 2cdt/readme.txt
   creating: 2cdt/src/
  inflating: 2cdt/src/defs.h
  inflating: 2cdt/src/2cdt.c
  inflating: 2cdt/src/tzxfile.h
  inflating: 2cdt/src/tzxfile.c
  inflating: 2cdt/2cdt.layout
rm -f 2cdt/2cdt/src/*.o
mv -vf 2cdt/2cdt/2cdt 2cdt/2cdt/2cdt.x86-elf-linux || echo "Could not move away Linux-x86-only precompiled binaries. Hope that's ok."
mv: cannot stat `2cdt/2cdt/2cdt': No such file or directory
Could not move away Linux-x86-only precompiled binaries. Hope that's ok.
touch 2cdt/.unpacked
************************************************************************
**************** Source extracted to: 2cdt
************************************************************************
************************************************************************
**************** No patch to apply to: 2cdt/.unpacked
************************************************************************
touch 2cdt/.patched
************************************************************************
**************** Source patched in: 2cdt
************************************************************************
************************************************************************
**************** Configuring and build in: 2cdt/.patched
************************************************************************
( set -e ; cd 2cdt/2cdt ; make --print-directory ; )
/bin/bash: line 0: cd: 2cdt/2cdt: No such file or directory
make[1]: *** [2cdt/2cdt/2cdt] Error 1
make[1]: Leaving directory `/home/ronaldo/temp/cpc-dev-tool-chain/tool/2cdt'
make: *** [..//tool/2cdt/build_config.inc] Error 2

Tested platforms (with same result)

$ uname -r
3.2.0-4-amd64
$ gcc --version
gcc (Debian 4.7.2-5) 4.7.2
$ make --version
GNU Make 3.81
$ uname -r
3.18.7-1-MANJARO
$ gcc --version
gcc (GCC) 4.9.2 20150204 (prerelease)
$ make --version
GNU Make 4.1
$ uname -r
1.7.34(0.285/5/3)
$ gcc --version
gcc (GCC) 4.9.2
$ make --version
GNU Make 4.1
lronaldo commented 9 years ago

The command for moving away precompiled binaries has no effect, and reports same problem on the 3 platforms:

rm -f 2cdt/2cdt/src/*.o
mv -vf 2cdt/2cdt/2cdt 2cdt/2cdt/2cdt.x86-elf-linux || echo "Could not move away Linux-x86-only precompiled binaries. Hope that's ok."
mv: cannot stat '2cdt/2cdt/2cdt': No such file or directory
Could not move away Linux-x86-only precompiled binaries. Hope that's ok.
touch 2cdt/.unpacked

Here is my directory structure:

@ ~/cpc-dev-tool-chain/tool/2cdt
$ tree
.
├── 2cdt
│   ├── 2cdt.cbp
│   ├── 2cdt.depend
│   ├── 2cdt.layout
│   ├── COPYING
│   ├── file_id.diz
│   ├── Makefile
│   ├── Makefile.win
│   ├── readme.txt
│   └── src
│       ├── 2cdt.c
│       ├── defs.h
│       ├── tzxfile.c
│       └── tzxfile.h
├── 2cdt.zip
└── Makefile

2 directories, 14 files

Seems that these commands should be launched after compiling 2cdt, and not after unpacking it. They try to move away executable files that are not build yet. Any ideas?

cpcitor commented 9 years ago

I got it. It's a breaking change because of the way 2cdt was updated by upstream author arnoldemu. The previous archive had another directory level.

Old archive content:

unzip -lv 2cdt.zip
Archive:  2cdt.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2010-07-06 21:47 00000000  2cdt/
       0  Stored        0   0% 2011-08-17 21:34 00000000  2cdt/2cdt/
    4711  Defl:N     2077  56% 2010-07-27 09:59 28e4ccbe  2cdt/2cdt/readme.txt
     416  Defl:N      187  55% 2010-07-27 10:27 b3cdd29d  2cdt/2cdt/2cdt.depend
   55690  Defl:N    19475  65% 2010-07-27 10:27 91caf6c3  2cdt/2cdt/2cdt.exe
   21912  Defl:N     8105  63% 2011-08-17 21:33 433c5283  2cdt/2cdt/2cdt
     245  Defl:N      176  28% 2010-07-27 10:28 2f4cd791  2cdt/2cdt/2cdt.layout
    1167  Defl:N      402  66% 2006-05-29 12:39 d97ebcaa  2cdt/2cdt/2cdt.cbp
     371  Defl:N      229  38% 2011-08-17 21:32 c909764b  2cdt/2cdt/Makefile
     340  Defl:N      231  32% 2002-02-23 13:12 1be17194  2cdt/2cdt/file_id.diz
       0  Stored        0   0% 2011-08-17 21:32 00000000  2cdt/2cdt/src/
   36432  Defl:N     8217  77% 2010-07-27 10:26 fa4f0265  2cdt/2cdt/src/2cdt.c
    2781  Defl:N     1091  61% 2001-05-28 13:22 e3cd3e80  2cdt/2cdt/src/tzxfile.h
   10693  Defl:N     2671  75% 2006-01-22 15:38 5d3a51b0  2cdt/2cdt/src/tzxfile.c
     987  Defl:N      541  45% 2002-02-23 12:49 ce7b3271  2cdt/2cdt/src/defs.h
   19640  Defl:N     7591  61% 2011-08-17 21:32 955e74bf  2cdt/2cdt/src/2cdt.o
    3828  Defl:N     1621  58% 2011-08-17 21:32 4895aebe  2cdt/2cdt/src/tzxfile.o
     899  Defl:N      392  56% 2005-10-16 18:04 6213edbe  2cdt/2cdt/Makefile.win
   18329  Defl:N     6928  62% 1998-09-21 01:54 d17f6987  2cdt/2cdt/COPYING
--------          -------  ---                            -------
  178441            59934  66%                            19 files

New archive content.

unzip -lv 2cdt.zip
Archive:  2cdt.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2014-01-03 16:31 00000000  2cdt/
   18329  Defl:N     6928  62% 1998-09-21 01:54 d17f6987  2cdt/COPYING
     899  Defl:N      392  56% 2005-10-16 18:04 6213edbe  2cdt/Makefile.win
     436  Defl:N      262  40% 2014-01-03 16:30 d60985b8  2cdt/Makefile
     340  Defl:N      231  32% 2002-02-23 13:12 1be17194  2cdt/file_id.diz
     416  Defl:N      187  55% 2010-07-27 10:27 b3cdd29d  2cdt/2cdt.depend
    1167  Defl:N      402  66% 2006-05-29 12:39 d97ebcaa  2cdt/2cdt.cbp
    4711  Defl:N     2077  56% 2010-07-27 09:59 28e4ccbe  2cdt/readme.txt
       0  Stored        0   0% 2014-01-03 16:31 00000000  2cdt/src/
     987  Defl:N      541  45% 2002-02-23 12:49 ce7b3271  2cdt/src/defs.h
   36484  Defl:N     8230  77% 2014-01-03 16:31 214f5365  2cdt/src/2cdt.c
    2781  Defl:N     1091  61% 2001-05-28 13:22 e3cd3e80  2cdt/src/tzxfile.h
   10693  Defl:N     2671  75% 2006-01-22 15:38 5d3a51b0  2cdt/src/tzxfile.c
     245  Defl:N      176  28% 2010-07-27 10:28 2f4cd791  2cdt/2cdt.layout
--------          -------  ---                            -------
   77488            23188  70%                            14 files

Doing things manually introduces unpredictable changes.

lronaldo commented 9 years ago

I quite understand. May be this should warn us about the way code is got by makefiles/scripts. Should we try to get always a concrete commit/revision of the third party software? That would more or less ensure that everything is stable at a given revision (And that revision would continue to be stable in the future, if it were needed for kind-of retro developing or similar).

cpcitor commented 9 years ago

I think I understand your approach. We can anticipate problems, but is it worth the time at the moment ? Maybe we can just be lazypotent at this time.

lronaldo commented 9 years ago

Well, right now it seems that almost everything is fixed and working on different platforms. It is difficult to quantify the worthiness of the change (there is no way to estimate the frequency of changes that will be required). Being lazypotent, as you suggest, saves time and resources. (Your mini-article is nice :+1:)

I thought of it as a great feature, being able to tag releases/versions that will become static in time, and usable at any given point in the future. However, it is difficult if we take into account that not every source comes from repositories. It may continue living in the realm of ideas till next time :).