freemint / mintbin

The programs in this package are necessary as a supplement to the GNU binutils for MiNT.
GNU General Public License v2.0
2 stars 3 forks source link

make install DESTDIR=... fails outside source directory #2

Open mikrosk opened 5 years ago

mikrosk commented 5 years ago

If I do something like:

 ../mintbin/configure --prefix=/usr --host=m68k-atari-mint
make
make install DESTDIR=$PWD/binary-package

the last step fails. It doesn't happen when launching ./configure from source directory.

mikrosk commented 2 months ago

This seems to be fixed but only for cross compilation. So

../mintbin-master/configure --target=m68k-atari-mint --disable-nls --prefix=/usr && make && make install-strip DESTDIR=${PWD}/binary-package/${CPU}/mintbin`

works but

../mintbin-master/configure --target=m68k-atari-mint --host=m68k-atari-mint --disable-nls --prefix=/usr && make && make install-strip DESTDIR=${PWD}/binary-package/${CPU}/mintbin

doesn't. It fails with

/bin/sh ../../../mintbin-master/mkinstalldirs /home/mikro/build/binary-package//mintbin/usr/m68k-atari-mint/include/mint
mkdir -p -- /home/mikro/build/binary-package//mintbin/usr/m68k-atari-mint/include/mint
 /usr/bin/install -c -m 644 ../../../mintbin-master/include/mint/a.out.h /home/mikro/build/binary-package//mintbin/usr/m68k-atari-mint/include/mint/a.out.h
 /usr/bin/install -c -m 644 ../../../mintbin-master/include/mint/prg-out.h /home/mikro/build/binary-package//mintbin/usr/m68k-atari-mint/include/mint/prg-out.h
if test x/home/mikro/build/binary-package//mintbin/usr/include != x/home/mikro/build/binary-package//mintbin; then \
          /bin/sh ../../../mintbin-master/mkinstalldirs /home/mikro/build/binary-package//mintbin/usr/include/mint || exit 1; \
          list='a.out.h prg-out.h'; for header in $list; do \
            ln /home/mikro/build/binary-package//mintbin/usr/m68k-atari-mint/include/mint/$header /home/mikro/build/binary-package//mintbin/usr/include/mint/$header >/dev/null 2>/dev/null \
    || /usr/bin/install -c -m 644 $header /home/mikro/build/binary-package//mintbin/usr/include/mint ;\
          done; \
fi
mkdir -p -- /home/mikro/build/binary-package//mintbin/usr/include/mint
make[4]: Leaving directory '/home/mikro/build/include/mint'
make[3]: Leaving directory '/home/mikro/build/include/mint'
make[3]: Entering directory '/home/mikro/build/include'
make[4]: Entering directory '/home/mikro/build/include'
make[4]: Nothing to be done for 'install-exec-am'.
if test x/home/mikro/build/binary-package//mintbin/usr/include != x/home/mikro/build/binary-package//mintbin; then \
  /bin/sh ../../mintbin-master/mkinstalldirs /home/mikro/build/binary-package//mintbin/usr/include || exit 1; \
  for header in a.out.h stab.h stab.def; do \
            ln /home/mikro/build/binary-package//mintbin/usr/m68k-atari-mint/include/$header /home/mikro/build/binary-package//mintbin/usr/include/$header >/dev/null 2>/dev/null \
      || /usr/bin/install -c -m 644 $header /home/mikro/build/binary-package//mintbin/usr/include; \
  done; \
        fi
/usr/bin/install: cannot stat 'a.out.h': No such file or directory
/usr/bin/install: cannot stat 'stab.h': No such file or directory
/usr/bin/install: cannot stat 'stab.def': No such file or directory
make[4]: *** [Makefile:678: install-data-local] Error 1
make[4]: Leaving directory '/home/mikro/build/include'
make[3]: *** [Makefile:567: install-am] Error 2
make[3]: Leaving directory '/home/mikro/build/include'
make[2]: *** [Makefile:404: install-recursive] Error 1
make[2]: Leaving directory '/home/mikro/build/include'
make[1]: *** [Makefile:406: install-recursive] Error 1
make[1]: Leaving directory '/home/mikro/build'
make: *** [Makefile:722: install-strip] Error 2

What is odd is that this fails for mint only. mintelf works totally fine. When checking the difference, I see that in mint we do:

if test x/home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/usr/include != x/home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin; then \
          /bin/sh ../../../downloads/mintbin-master/mkinstalldirs /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/usr/include/mint || exit 1; \
          list='a.out.h prg-out.h'; for header in $list; do \
            ln /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/usr/m68k-atari-mint/include/mint/$header /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/usr/include/mint/$header >/dev/null 2>/dev/null \
    || /usr/bin/install -c -m 644 $header /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/usr/include/mint ;\
          done; \
fi

while in mintelf:

if test x/home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin != x/home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin; then \
          /bin/sh ../../../downloads/mintbin-master/mkinstalldirs /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/mint || exit 1; \
          list='a.out.h prg-out.h'; for header in $list; do \
            ln /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/usr/m68k-atari-mintelf/include/mint/$header /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/mint/$header >/dev/null 2>/dev/null \
    || /usr/bin/install -c -m 644 $header /home/mikro/atari/compilers/m68k-atari-mint-build.git/binary-package/m68000/mintbin/mint ;\
          done; \
fi

Note the additional /usr/include suffix behind mintbin in the mint case. (the bug?)

@th-otto I see you use ${MAKE} DESTDIR="${THISPKG_DIR}${sysroot}" target_alias=$TARGET install in your scripts but for me it doesn't work at all. :-/ And you use the same repo/branch, odd.

th-otto commented 2 months ago
if test x/home/mikro/build/binary-package//mintbin/usr/include != x/home/mikro/build/binary-package//mintbin; then

That looks like the DESTDIR that you have used, but it is missing the ${CPU} part. I think that variable is not exported in this repo, because it is current mainly used for the cross-compiler, and that don't build native per-cpu target.

I think if you need also the native binaries, we'll have to add entries to the matrix.

mikrosk commented 2 months ago

That looks like the DESTDIR that you have used, but it is missing the ${CPU} part

Ah, right, I copy&pasted it from my scripts to test the command line separately. So this is done correctly in my scripts, i.e. it's not the issue here.

I just wonder why --host=m68k-atari-mint is treated differently than --host=m68k-atari-mintelf, i.e. the former is failing why the latter isn't.