You are not logged in.
Hey,
I found the debian patch to get a working gcc-4.4 c++ compiler built in the debian patch tracker. (http://patch-tracker.debian.org/patch/s … anges.diff)
…
<3 to the debian folks for this
Next stop pacman
So I have to change the GCC_VER to 4.4 and the scripts/cross-gcc-pass1?
Last edited by Giselher (2010-02-23 17:50:26)
Offline
So I have to change the GCC_VER to 4.4 and the scripts/cross-gcc-pass1?
You have to change GCC_VER to 4.4.2 or 4.4.3 (I only tested it with 4.4.3, both should work though) and as you already said add the patch in scripts/cross-gcc-pass1
Offline
Giselher wrote:So I have to change the GCC_VER to 4.4 and the scripts/cross-gcc-pass1?
You have to change GCC_VER to 4.4.2 or 4.4.3 (I only tested it with 4.4.3, both should work though) and as you already said add the patch in scripts/cross-gcc-pass1
Thanks for your response, but binutils wants to install on my root /. I don't know why. The last time i built hurd it worked.
EDIT:
I changed in scripts/cross-binutils
make install
to
make DESTDIR=$CHFS install
But that didnt work too.
Last edited by Giselher (2010-02-23 19:02:11)
Offline
Thanks for your response, but binutils wants to install on my root /. I don't know why. The last time i built hurd it worked.
I'm sorry I can't help you there.
I am actually using the old crosshurd script (crosshurd20100121.tar.gz) because I am experiencing similar issues as you with the new one.
I'm not sure if this behavior is intended or an accident, maybe Allan can give us a hint on using the newer script
Offline
Giselher wrote:Thanks for your response, but binutils wants to install on my root /. I don't know why. The last time i built hurd it worked.
I'm sorry I can't help you there.
I am actually using the old crosshurd script (crosshurd20100121.tar.gz) because I am experiencing similar issues as you with the new one.
I'm not sure if this behavior is intended or an accident, maybe Allan can give us a hint on using the newer script
Allan broke it .
I did change DESTDIR in binutils not in cross-binutils.
with the real cross-binutils changed it worked. Now i have to change the DESTDIRS in all cross-* scripts. I hope it will work then.
EDIT:
I cannot use this patch.
I added it this way:
patch -p0 < $SRCDIR/patches/gcc-$GCC_VER/hurd-changes.diff
Last edited by Giselher (2010-02-23 20:34:07)
Offline
You need to use patchlevel 1, your command would be:
patch -p1 < $SRCDIR/patches/gcc-$GCC_VER/hurd-changes.diff
Further than that, I noticed that the tabs from the patch are converted to spaces in my post, so you should copy the parts you need directly from the debian patch. Sorry about that.
I have practically no experience with this forum so I would very much appreciate it if somebody would please tell me if I did something wrong or if this is a bug/feature.
Offline
You need to use patchlevel 1, your command would be:
patch -p1 < $SRCDIR/patches/gcc-$GCC_VER/hurd-changes.diff
Further than that, I noticed that the tabs from the patch are converted to spaces in my post, so you should copy the parts you need directly from the debian patch. Sorry about that.
I have practically no experience with this forum so I would very much appreciate it if somebody would please tell me if I did something wrong or if this is a bug/feature.
Thanks, but too late. (One of the files in the patch doens't exists so it could not patch)
I am working on the scripts and trying to compile hurd.
I will post my changes if it works.
EDIT:
This is useful
source ./scripts/prepare
soruce ./scripts/pkgver
#source ./scripts/downlaod
source ./scripts/${1}
EDIT2:
Allan: why don't use wget -nc in scripts/get-sources
EDIT3:
Cannot build cross-mig
checking for i586-pc-gnu-gcc... none
configure: error: could not find a compiler for the target you requested
make: *** No rule to make target `all'. Stop.
EDIT4:
Works now
$PATH=${CHFS}/cross-tools/bin
(Too many edits)
It wasn't a good idea to change all to $CHFS
Last edited by Giselher (2010-02-23 22:27:57)
Offline
The latest cross scripts I put on the website require more setup for use. I think I explained it in the post I put it in but...
You need symlinks to in / to folders in $ROOT. e.g.
lrwxrwxrwx 1 root root 34 Feb 3 00:18 cross-tools -> /home/allan/hurd/hurd/cross-tools/
lrwxrwxrwx 1 root root 28 Feb 3 00:18 tools -> /home/allan/hurd/hurd/tools/
where ROOT=/home/allan/hurd for me. Refer to CLFS for details. That makes the cross-compiled compiler actually work once we boot the hurd build. Otherwise, you end up with really annoying issues (hence the reason I rewrote the cross scripts...).
EDIT2:
Allan: why don't use wget -nc in scripts/get-sources
I have never actually used that script so I have put no effort into it...
Offline
Hey,
I found the debian patch to get a working gcc-4.4 c++ compiler built in the debian patch tracker. (http://patch-tracker.debian.org/patch/s … anges.diff)
<snip>
<3 to the debian folks for thisNext stop pacman
I looked at that patch in the past, but the description really does not tall me anything about build fixes. I skipped it as I did not want to support /usr or defining MAXPATHLEN...
Offline
How that I don't have as much work to do for uni, I can play around with this again.
I have an updated version of the get-source script, with all the download links, if anyone wants it.
Offline
I have an updated version of the get-source script, with all the download links, if anyone wants it.
Sure, do post.
Offline
I took a quick look at this again today. The "cross hurd from scratch" approach has booting issues, so it is probably easier hacking together a fully working gcc when inside the booted hurd. Also, the old approach did not require as much manual interaction at the start. So, I reverted to the previous approach and made a couple of changes based on the work I had done.
Grab a tarball here: http://allanmcrae.com/hurd/crosshurd-20100224.tar.gz
I have not got the time to fully test this. Everything in scripts/devel should build and scripts/devel/chfs is the remaining packages from the CHFS approach so should provide guidelines. Mainly DESTDIR changes will be needed.
I am very time limited lately, so will not be working on this in the near future. The likelihood of me working on it is the distant future is also low. While the idea of Arch Hurd still appeals to me, the lack of any real active upstream is very discouraging and I have a few other ideas that I think would be better long term projects.
So good luck! I will keep following this thread.
Offline
Here it is:
get-sources
#!/bin/bash
source ./scripts/pkgver
cd $SRCDIR
# bash
if [ ! -f bash-$BASH_VER.tar.gz ]; then
wget http://ftp.gnu.org/gnu/bash/bash-$BASH_VER.tar.gz
fi
if [ $BASH_PATCHLEVEL -gt 000 ]; then
for p in $(seq -w 001 $BASH_PATCHLEVEL); do
if [ ! -f bash${BASH_VER/.}-$p ]; then
wget http://ftp.gnu.org/gnu/bash/bash-$BASH_VER-patches/bash${BASH_VER/.}-$p
fi
done
fi
# binutils
if [ ! -f binutils-$BINUTILS_VER.tar.bz2 ]; then
wget http://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS_VER.tar.bz2
fi
# bison
if [ ! -f bison-$BISON_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/bison/bison-$BISON_VER.tar.gz
fi
# bzip2
if [ ! -f bzip2-$BZIP2_VER.tar.gz ]; then
wget http://www.bzip.org/$BZIP2_VER/bzip2-$BZIP2_VER.tar.gz
fi
# cloog-ppl
if [ ! -f cloog-ppl-$CLOOG_PPL_VER.tar.gz ]; then
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-ppl-$CLOOG_PPL_VER.tar.gz
fi
# coreutils
if [ ! -f coreutils-$COREUTILS_VER.tar.gz ]; then
wget http://ftp.gnu.org/gnu/coreutils/coreutils-$COREUTILS_VER.tar.gz
fi
# diffutils
if [ ! -f diffutils-$DIFFUTILS_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/diffutils/diffutils-$DIFFUTILS_VER.tar.gz
fi
# findutils
if [ ! -f findutils-$FINDUTILS_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/pub/gnu/findutils/findutils-$FINDUTILS_VER.tar.gz
fi
# file
if [ ! -f file-$FILE_VER.tar.gz ]; then
wget ftp://ftp.astron.com/pub/file/file-$FILE_VER.tar.gz
fi
# flex
if [ ! -f flex-$FLEX_VER.tar.bz2 ]; then
wget http://downloads.sourceforge.net/sourceforge/flex/flex-$FLEX_VER.tar.bz2
fi
# gawk
if [ ! -f gawk-$GAWK_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/gawk/gawk-$GAWK_VER.tar.gz
fi
# gcc
if [ ! -f gcc-core-$GCC_VER.tar.bz2 ]; then
wget http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/gcc-core-$GCC_VER.tar.bz2
fi
if [ ! -f gcc-g++-$GCC_VER.tar.bz2 ]; then
wget http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/gcc-g++-$GCC_VER.tar.bz2
fi
# gettext
if [ ! -f gettext-$GETTEXT_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/pub/gnu/gettext/gettext-$GETTEXT_VER.tar.gz
fi
# glibc
if [ ! -f glibc-$GLIBC_VER.tar.bz2 ]; then
wget http://ftp.gnu.org/gnu/glibc/glibc-$GLIBC_VER.tar.bz2
fi
# gmp
if [ ! -f gmp-$GMP_VER.tar.bz2 ]; then
wget ftp://ftp.gnu.org/gnu/gmp/gmp-$GMP_VER.tar.bz2
fi
# grep
if [ ! -f grep-$GREP_VER.tar.bz2 ]; then
wget ftp://ftp.gnu.org/gnu/grep/grep-$GREP_VER.tar.bz2
fi
# grub
if [ ! -f grub-$GRUB_VER.tar.gz ]; then
wget ftp://alpha.gnu.org/gnu/grub/grub-$GRUB_VER.tar.gz
fi
# gzip
if [ ! -f gzip-$GZIP_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/pub/gnu/gzip/gzip-$GZIP_VER.tar.gz
fi
# m4
if [ ! -f m4-$M4_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/m4/m4-$M4_VER.tar.gz
fi
# make
if [ ! -f make-$MAKE_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/make/make-$MAKE_VER.tar.gz
fi
# mpfr
if [ ! -f mpfr-$MPFR_VER.tar.bz2 ]; then
wget http://mpfr.loria.fr/mpfr-current/mpfr-$MPFR_VER.tar.bz2
fi
# nano
if [ ! -f nano-$NANO_VER.tar.gz ]; then
wget http://www.nano-editor.org/dist/v2.2/nano-$NANO_VER.tar.gz
fi
# ncurses
if [ ! -f ncurses-$NCURSES_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses-$NCURSES_VER.tar.gz
fi
# patch
if [ ! -f patch-$PATCH_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/patch/patch-$PATCH_VER.tar.gz
fi
# ppl
if [ ! -f ppl-$PPL_VER.tar.gz ]; then
wget http://www.cs.unipr.it/ppl/Download/ftp/releases/$PPL_VER/ppl-$PPL_VER.tar.gz
fi
# sed
if [ ! -f sed-$SED_VER.tar.bz2 ]; then
wget ftp://ftp.gnu.org/gnu/sed/sed-$SED_VER.tar.bz2
fi
# tar
if [ ! -f tar-$TAR_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/gnu/tar/tar-$TAR_VER.tar.gz
fi
# texinfo
if [ ! -f texinfo-$TEXINFO_VER.tar.gz ]; then
wget ftp://ftp.gnu.org/pub/gnu/texinfo/texinfo-$TEXINFO_VER.tar.gz
fi
# xz-utils
if [ ! -f xz-$XZ_UTILS_VER.tar.gz ]; then
wget http://tukaani.org/xz/xz-$XZ_UTILS_VER.tar.gz
fi
# zlib
if [ ! -f zlib-$ZLIB_VER.tar.gz ]; then
wget http://www.zlib.net/zlib-$ZLIB_VER.tar.gz
fi
# gnumach-git
if [ -d $SRCDIR/gnumach ]; then
cd $SRCDIR/gnumach && git pull origin
else
cd $SRCDIR
git clone git://git.sv.gnu.org/hurd/gnumach.git
fi
# hurd-git
if [ -d $SRCDIR/hurd ]; then
cd $SRCDIR/hurd && git pull origin
else
cd $SRCDIR
git clone git://git.sv.gnu.org/hurd/hurd.git
fi
# libpthread-git
if [ -d $SRCDIR/libpthread ]; then
cd $SRCDIR/libpthread && git pull origin
else
cd $SRCDIR
git clone git://git.sv.gnu.org/hurd/libpthread.git
fi
# mig-git
if [ -d $SRCDIR/mig ]; then
cd $SRCDIR/mig && git pull origin
else
cd $SRCDIR
git clone git://git.sv.gnu.org/hurd/mig.git
fi
Offline
I took a quick look at this again today. The "cross hurd from scratch" approach has booting issues, so it is probably easier hacking together a fully working gcc when inside the booted hurd. Also, the old approach did not require as much manual interaction at the start. So, I reverted to the previous approach and made a couple of changes based on the work I had done.
Grab a tarball here: http://allanmcrae.com/hurd/crosshurd-20100224.tar.gz
I have not got the time to fully test this. Everything in scripts/devel should build and scripts/devel/chfs is the remaining packages from the CHFS approach so should provide guidelines. Mainly DESTDIR changes will be needed.
I am very time limited lately, so will not be working on this in the near future. The likelihood of me working on it is the distant future is also low. While the idea of Arch Hurd still appeals to me, the lack of any real active upstream is very discouraging and I have a few other ideas that I think would be better long term projects.
So good luck! I will keep following this thread.
Thanks, with this its a lot easier and i have a booting hurd .
But once I used MAKEDEV console hd0 hd0s1 … The filesystem is read-only on the next boot. Any Ideas ?
Offline
Never heard of that before... Are you shutting down properly? Perhaps it is staying rw after the fs check?
Offline
With fsysopts / --writable i can make it rw.
It seems there is a problem with ppl.
I get this:
libtool: link: warning: library `/home/alexander/workplace/archhurd/hurd/lib/libgmpxx.la' was moved.
/bin/grep: //lib/libgmp.la: No such file or directory
/bin/sed: can't read //lib/libgmp.la: No such file or directory
libtool: link: `//lib/libgmp.la' is not a valid libtool archive
make[2]: *** [libppl.la] Error 1
make[2]: Leaving directory `/home/alexander/workplace/archhurd/build/ppl-0.10.2/src'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/home/alexander/workplace/archhurd/build/ppl-0.10.2/src'
Offline
Easiest solution it to delete the libtool files (.la). They are not needed. Might have to recompile mpfr after deleting gmp's .la files.
Offline
I also had to delete the .la files of ppl.
I am trying now to compiling gcc for hurd. But I get this messages.
The directory that should contain system headers does not exist:
/include
make[2]: *** [stmp-fixinc] Error 1
make[2]: Leaving directory `/home/alexander/workplace/archhurd/build/cross-gcc
-build/gcc'
make[1]: *** [install-gcc] Error 2
make[1]: Leaving directory `/home/alexander/workplace/archhurd/build/cross-gcc
-build'
make: *** [install] Error 2
Last edited by Giselher (2010-02-27 10:10:44)
Offline
Hmm... there is a fix for that somewhere....
Do this in your source directory:
cp gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
That should stop fixincludes running a prevent that error.
Offline
I had this same problem trying to compile gcc-4.2.4. After spending forever trying to work out what was causing it,
I finally tracked it down to "SYSTEM_HEADER_DIR" not being set properly in gcc/Makefile.in.
So here is the cheap hack I made to manually set it:
--- a/gcc/Makefile.in.orig 2010-02-25 20:45:22.897274306 +0000
+++ b/gcc/Makefile.in 2010-02-25 20:47:07.657262153 +0000
@@ -409,7 +409,7 @@
# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta.
# Use single quotes here to avoid nested double- and backquotes, this
# macro is also used in a double-quoted context.
-SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
+SYSTEM_HEADER_DIR = /tools/include
# Control whether to run fixproto and fixincludes.
STMP_FIXPROTO = @STMP_FIXPROTO@
You while have to change the location it points to tho, since this was for the CHFS approach.
Also I keep get the blocksize too small error message. I'm using the instructions on the archhurh.org install page,
even tho I wasn't getting the error before when I followed them.
Edit: Allan I also tried that approach, but it still didn't work for me.
Last edited by bobdob (2010-02-27 10:27:34)
Offline
Offline
Thanks, that fixed it.
Also, have far did you get your CHFS build to boot?
Offline
CHFS booted until right near the end of the boot process... I could not figure out what was different.
Offline
I compiled gcc but i doesn,t work in hurd.
gcc says: crtbegin.o: No such file or directory
EDIT: My gcc-script: http://pastebin.com/X1afDH1b
Last edited by Giselher (2010-02-27 11:58:29)
Offline
Did you get anything of interest in the build output? I seem to remember battling that in the past but I thought I had gotten around that issue with some patching to glibc...
Offline