Re: Cannot clone glibc

2017-11-16 Thread Samuel Thibault
Hello,

Joshua Branson, on jeu. 16 nov. 2017 14:48:58 -0800, wrote:
> Hello,  I attempted to clone Hurd's glibc, but I am getting a weird
> error:
> 
[...]
> 
> I'm not sure what the issue is.  Can someone help me fix this?   A
> google search seems to think that git repository is corrupt?
> 
> https://stackoverflow.com/questions/23725925/git-repository-corrupt-incorrect-header-check-loose-object-is-corrupt

I don't have any issue cloning the repository. So I'd suspect either
flacky network connection, or somehow incompatibility between your git
client and the git server. I use version 2.15.0.

Samuel



Re: SIGILL problems with Hurd port of GO in gcc-8, and rpctrace bugs.

2017-11-16 Thread Brent W. Baccala
On Thu, Nov 16, 2017 at 5:55 PM, Svante Signell 
wrote:

>
> > Perhaps you could try those patches and see if they fix your problem?
> If not,
> > then it's something else that should be investigated further.
>
> Thanks, I will try to apply them: Do I need all 0001 to 0011 and 0101 to
> 0102
> patches?
>

I'm not sure exactly which ones you absolutely need.  The 0100 series is
documentation, so you definitely don't need them.

agape
brent


Cannot clone glibc

2017-11-16 Thread Joshua Branson
Hello,  I attempted to clone Hurd's glibc, but I am getting a weird
error:

joshua@debian:~/programming$ git clone
git://git.savannah.gnu.org/hurd/glibc.git
  Cloning into 'glibc'...
  remote: Counting objects: 465122,
  done.
  remote: Compressing objects: 100%
  (68689/68689), done.
  remote: Total 465122 (delta
  387486), reused 465088 (delta
  387470)
  Receiving objects: 100%
  (465122/465122), 139.77 MiB | 2.30
  MiB/s, done.
  error: inflate: data stream error
  (incorrect header check)
  fatal: serious inflate
  inconsistency
  fatal: index-pack failed


I'm not sure what the issue is.  Can someone help me fix this?   A
google search seems to think that git repository is corrupt?

https://stackoverflow.com/questions/23725925/git-repository-corrupt-incorrect-header-check-loose-object-is-corrupt

Thanks,

Joshua



Re: SIGILL problems with Hurd port of GO in gcc-8, and rpctrace bugs.

2017-11-16 Thread Svante Signell
On Thu, 2017-11-16 at 12:25 -0500, Brent W. Baccala wrote:
> On Wed, Nov 15, 2017 at 11:53 AM, Svante Signell 
> wrote:

> > Has rpctrace been thoroughly tested on multi-thread applications?
> > Please, give feedback on this if you have possibility, specifically the
> > rpctrace bug(s).
> 
> rpctrace has a known problem interacting with system RPCs that block the
> sender.
> 
> See the discussion thread starting here:
> 
>     http://lists.gnu.org/archive/html/bug-hurd/2016-09/msg2.html
> 
> My guess is that you're seeing the same problem with gsync_wait() that I saw
> with vm_map().  I've got patches to rpctrace to fix this problem, here:
> 
>     https://github.com/BrentBaccala/hurd
> 
> This isn't in the main Hurd repository because I wouldn't sign the FSF
> copyright assignment.

Can you please consider signing the copyright assignment? From what I remember
the assignment specifies which software you sign for. You don't sign for
anything else. And, as Samuel wrote, the clause is intended for your committed
changes to that specific software, nothing else. 

> Perhaps you could try those patches and see if they fix your problem?  If not,
> then it's something else that should be investigated further.

Thanks, I will try to apply them: Do I need all 0001 to 0011 and 0101 to 0102
patches?



Re: Hurd port for gcc-7 go PATCH 1-3(15)

2017-11-16 Thread Svante Signell
On Thu, 2017-11-16 at 14:12 +0100, Svante Signell wrote:
> On Wed, 2017-11-15 at 21:54 +0100, Svante Signell wrote:
> > 
> 
> Attached is an updated patch for gcc-7. An updated patch for gcc-8 will follow
> shortly when I have build tested gcc-8 go on both Linux and Hurd.
> 
> The patch for src/libgo/mksysinfo.sh worked fine in gcc-5 and gcc-6. The
> problem is that in gcc-7 and gcc-8 generation of build/ triplet>/libgo/sysinfo.go is made differently.

Well, in gcc-5 and gcc-6 the gccgo patches in debian/rules.patch are
conditional, and were not in gcc-7-7.2.0-15. In gcc-7-7.2.0-16 they are
conditional again.

> The Hurd-specific entry about SYS_IOCTL had to be moved after:
> 
> # The syscall numbers.  We force the names to upper case.
> grep '^const _SYS_' gen-sysinfo.go | \
>   sed -e 's/const _\(SYS_[^= ]*\).*$/\1/' | \
>   while read sys; do
> sup=`echo $sys | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
> echo "const $sup = _$sys" >> ${OUT}
>   done

For completeness updated patches for gcc-6 and gcc-8 are attached.

gcc-6-6.4.0-10: src_libgo_mksysinfo.sh.diff
gcc-8-8-20171108-1: srs_libgo_build.diff

And thank you for finding the bug in the patches by making them (temporarily)
unconditional.

Thanks!Index: gcc-6-6.4.0/src/libgo/mksysinfo.sh
===
--- gcc-6-6.4.0.orig/src/libgo/mksysinfo.sh
+++ gcc-6-6.4.0/src/libgo/mksysinfo.sh
@@ -304,6 +304,13 @@ echo '#include ' | ${CC} -x c -
   egrep '#define E[A-Z0-9_]+ ' | \
   sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT}
 
+# Special treatment of EWOULDBLOCK for GNU/Hurd
+# /usr/include/bits/errno.h: #define EWOULDBLOCK EAGAIN
+if egrep 'define EWOULDBLOCK EAGAIN' gen-sysinfo.go > /dev/null 2>&1; then
+  egrep '^const EWOULDBLOCK = Errno(_EWOULDBLOCK)' ${OUT} | \
+sed -i -e 's/_EWOULDBLOCK/_EAGAIN/' ${OUT}
+fi
+
 # The O_xxx flags.
 egrep '^const _(O|F|FD)_' gen-sysinfo.go | \
   sed -e 's/^\(const \)_\([^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
@@ -362,6 +369,11 @@ grep '^const _SYS_' gen-sysinfo.go | \
 echo "const $sup = _$sys" >> ${OUT}
   done
 
+# Special treatment of SYS_IOCTL for GNU/Hurd
+if ! grep '^const SYS_IOCTL' ${OUT} > /dev/null 2>&1; then
+  echo "const SYS_IOCTL = 0" >> ${OUT}
+fi
+
 # The GNU/Linux support wants to use SYS_GETDENTS64 if available.
 if ! grep '^const SYS_GETDENTS ' ${OUT} >/dev/null 2>&1; then
   echo "const SYS_GETDENTS = 0" >> ${OUT}
@@ -676,6 +688,11 @@ grep '^type _tms ' gen-sysinfo.go | \
 
 # The stat type.
 # Prefer largefile variant if available.
+# Special treatment of st_dev for GNU/Hurd
+# /usr/include/i386-gnu/bits/stat.h: #define st_dev st_fsid
+if grep 'define st_dev st_fsid' gen-sysinfo.go > /dev/null 2>&1; then
+  sed -i -e 's/; st_fsid/; st_dev/' gen-sysinfo.go
+fi
 stat=`grep '^type _stat64 ' gen-sysinfo.go || true`
 if test "$stat" != ""; then
   grep '^type _stat64 ' gen-sysinfo.go
Index: gcc-8-8-20171108/src/libgo/configure.ac
===
--- gcc-8-8-20171108.orig/src/libgo/configure.ac
+++ gcc-8-8-20171108/src/libgo/configure.ac
@@ -154,7 +154,7 @@ AC_SUBST(go_include)
 # All known GOOS values.  This is the union of all operating systems
 # supported by the gofrontend and all operating systems supported by
 # the gc toolchain.
-ALLGOOS="aix android darwin dragonfly freebsd irix linux netbsd openbsd plan9 rtems solaris windows"
+ALLGOOS="aix android darwin dragonfly freebsd irix gnu linux netbsd openbsd plan9 rtems solaris windows"
 
 is_darwin=no
 is_freebsd=no
@@ -166,6 +166,7 @@ is_dragonfly=no
 is_rtems=no
 is_solaris=no
 is_aix=no
+is_gnu=no
 GOOS=unknown
 case ${host} in
   *-*-darwin*)   is_darwin=yes;  GOOS=darwin ;;
@@ -178,6 +179,7 @@ case ${host} in
   *-*-rtems*)is_rtems=yes;   GOOS=rtems ;;
   *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
   *-*-aix*)  is_aix=yes; GOOS=aix ;;
+  *-*-gnu*)  is_gnu=yes; GOOS=gnu ;;
 esac
 AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
 AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
@@ -189,6 +191,7 @@ AM_CONDITIONAL(LIBGO_IS_DRAGONFLY, test
 AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
 AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
 AM_CONDITIONAL(LIBGO_IS_AIX, test $is_aix = yes)
+AM_CONDITIONAL(LIBGO_IS_GNU, test $is_gnu = yes)
 AM_CONDITIONAL(LIBGO_IS_BSD, test $is_darwin = yes -o $is_dragonfly = yes -o $is_freebsd = yes -o $is_netbsd = yes -o $is_openbsd = yes)
 AC_SUBST(GOOS)
 AC_SUBST(ALLGOOS)
@@ -853,6 +856,13 @@ main ()
 CFLAGS="$CFLAGS_hold"
 LIBS="$LIBS_hold"
 ])
+case ${host} in
+  *-*-gnu*)
+  LIBS="$LIBS -lpthread"
+  AC_SUBST(LIBS)
+  ;;
+esac
+
 dnl overwrite for the mips* 64bit multilibs, fails on some buildds
 if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
   case "$target" in
Index: gcc-8-8-20171108/src/libgo/Makefile.am
===
--- 

Re: SIGILL problems with Hurd port of GO in gcc-8, and rpctrace bugs.

2017-11-16 Thread Brent W. Baccala
On Thu, Nov 16, 2017 at 12:39 PM, Samuel Thibault 
wrote:

> Hello,
>
> Brent W. Baccala, on jeu. 16 nov. 2017 12:25:23 -0500, wrote:
> > This isn't in the main Hurd repository because I wouldn't sign the FSF
> > copyright assignment.  They insisted on a clause that said I assign
> copyright
> > on "all past and future works of Developer that constitute changes and
> > enhancements to the Program" and I wouldn't agree to it, because I was
> only
> > willing to assign copyright on specific changes.
>
> Rather, there is disagreement over what the assignment means.  I really
> believe that FSF intends "changes and enhancements to the Program" to
> mean what was actually *committed*, and not changes you could have in
> your own private repository.  Meaning: you only have to say what should
> be commited to decide what is covered by the assignment.
>
>
That was their claim.  I asked them to write it into the agreement and they
wouldn't do it.

Me (15 Nov 2016):

OK, so can you modify 1 (b) in the contract to clarify this point?  I am
> not assigning "all past and future works", but only the ones that I
> submit.  "Anything not contributed is not assigned".  Fine.


Donald Robertson (16 Nov 2016):

There's no need to modify it; that's already how it works. Any
> modification to our forms has to be approved by legal counsel, which is
> a resource we have in quite limited amounts, so I hope you will sign the
> assignment as is.


...and I did not sign it

agape
brent


Re: SIGILL problems with Hurd port of GO in gcc-8, and rpctrace bugs.

2017-11-16 Thread Samuel Thibault
Hello,

Brent W. Baccala, on jeu. 16 nov. 2017 12:25:23 -0500, wrote:
> This isn't in the main Hurd repository because I wouldn't sign the FSF
> copyright assignment.  They insisted on a clause that said I assign copyright
> on "all past and future works of Developer that constitute changes and
> enhancements to the Program" and I wouldn't agree to it, because I was only
> willing to assign copyright on specific changes.

Rather, there is disagreement over what the assignment means.  I really
believe that FSF intends "changes and enhancements to the Program" to
mean what was actually *committed*, and not changes you could have in
your own private repository.  Meaning: you only have to say what should
be commited to decide what is covered by the assignment.

I also believe it is so because FSF does not need more than that, so I
don't see why it would ask for more than that.

Samuel



Re: SIGILL problems with Hurd port of GO in gcc-8, and rpctrace bugs.

2017-11-16 Thread Brent W. Baccala
On Wed, Nov 15, 2017 at 11:53 AM, Svante Signell 
wrote:

>
> Additionally the rpctrace output hangs hard at gsync_wait() both for the
> ./index0-out-reduced_OK.x and ./index0-out-reduced_nOK.x files.
> Has rpctrace been thoroughly tested on multi-thread applications?
>
> Please, give feedback on this if you have possibility, specifically the
> rpctrace
> bug(s).
>
>
rpctrace has a known problem interacting with system RPCs that block the
sender.

See the discussion thread starting here:

http://lists.gnu.org/archive/html/bug-hurd/2016-09/msg2.html

My guess is that you're seeing the same problem with gsync_wait() that I
saw with vm_map().  I've got patches to rpctrace to fix this problem, here:

https://github.com/BrentBaccala/hurd

For those of you who've seen this before, note that I've renamed the github
repository.

This isn't in the main Hurd repository because I wouldn't sign the FSF
copyright assignment.  They insisted on a clause that said I assign
copyright on "all past and future works of Developer that constitute
changes and enhancements to the Program" and I wouldn't agree to it,
because I was only willing to assign copyright on specific changes.

So, I've started keeping my own repository.  I just double-checked those
patches, and they apply cleanly again the current Savannah repository (just
warnings about offset and fuzz).

Perhaps you could try those patches and see if they fix your problem?  If
not, then it's something else that should be investigated further.

agape
brent


Re: Hurd port for gcc-7 go PATCH 1-3(15)

2017-11-16 Thread Svante Signell
On Wed, 2017-11-15 at 21:54 +0100, Svante Signell wrote:
> On Wed, 2017-11-15 at 21:40 +0100, Matthias Klose wrote:
> > On 06.11.2017 16:36, Svante Signell wrote:
> > > Hi,
> > > 
> > > Attached are patches to enable gccgo to build properly on Debian
> > > GNU/Hurd on gcc-7 (7-7.2.0-12).
> > 
> > sysinfo.go:6744:7: error: redefinition of 'SYS_IOCTL'
> >  const SYS_IOCTL = _SYS_ioctl
> >    ^
> > sysinfo.go:6403:7: note: previous definition of 'SYS_IOCTL' was here
> >  const SYS_IOCTL = 0
> >    ^
> > the patches break the build on any Linux architecture.  Please could you
> > test
> > your patches against a linux target as well?
> 
> I'm really sorry. I regularly do that, but missed this one for gcc-7. Do you
> mean the patches against gcc-8 you asked me for? You wrote that gcc-7 is not
> of
> interest and I should concentrate on gcc-8.
> 
> Again, I'm really sorry. Will fix this tomorrow hopefully.
> 
> Thanks!

Attached is an updated patch for gcc-7. An updated patch for gcc-8 will follow
shortly when I have build tested gcc-8 go on both Linux and Hurd.

The patch for src/libgo/mksysinfo.sh worked fine in gcc-5 and gcc-6. The problem
is that in gcc-7 and gcc-8 generation of build//libgo/sysinfo.go
is made differently.

The Hurd-specific entry about SYS_IOCTL had to be moved after:

# The syscall numbers.  We force the names to upper case.
grep '^const _SYS_' gen-sysinfo.go | \
  sed -e 's/const _\(SYS_[^= ]*\).*$/\1/' | \
  while read sys; do
sup=`echo $sys | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
echo "const $sup = _$sys" >> ${OUT}
  done

Thanks!Index: gcc-7-7.2.0/src/libgo/configure.ac
===
--- gcc-7-7.2.0.orig/src/libgo/configure.ac
+++ gcc-7-7.2.0/src/libgo/configure.ac
@@ -146,7 +146,7 @@ AC_SUBST(go_include)
 # All known GOOS values.  This is the union of all operating systems
 # supported by the gofrontend and all operating systems supported by
 # the gc toolchain.
-ALLGOOS="android darwin dragonfly freebsd irix linux netbsd openbsd plan9 rtems solaris windows"
+ALLGOOS="android darwin dragonfly freebsd irix gnu linux netbsd openbsd plan9 rtems solaris windows"
 
 is_darwin=no
 is_freebsd=no
@@ -157,6 +157,7 @@ is_openbsd=no
 is_dragonfly=no
 is_rtems=no
 is_solaris=no
+is_gnu=no
 GOOS=unknown
 case ${host} in
   *-*-darwin*)   is_darwin=yes;  GOOS=darwin ;;
@@ -168,6 +169,7 @@ case ${host} in
   *-*-dragonfly*) is_dragonfly=yes; GOOS=dragonfly ;;
   *-*-rtems*)is_rtems=yes;   GOOS=rtems ;;
   *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
+  *-*-gnu*)  is_gnu=yes; GOOS=gnu ;;
 esac
 AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
 AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
@@ -178,6 +180,7 @@ AM_CONDITIONAL(LIBGO_IS_OPENBSD, test $i
 AM_CONDITIONAL(LIBGO_IS_DRAGONFLY, test $is_dragonfly = yes)
 AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
 AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
+AM_CONDITIONAL(LIBGO_IS_GNU, test $is_gnu = yes)
 AM_CONDITIONAL(LIBGO_IS_BSD, test $is_darwin = yes -o $is_dragonfly = yes -o $is_freebsd = yes -o $is_netbsd = yes -o $is_openbsd = yes)
 AC_SUBST(GOOS)
 AC_SUBST(ALLGOOS)
@@ -838,6 +841,14 @@ main ()
 CFLAGS="$CFLAGS_hold"
 LIBS="$LIBS_hold"
 ])
+
+case ${host} in
+  *-*-gnu*)
+  LIBS="$LIBS -lpthread"
+  AC_SUBST(LIBS)
+  ;;
+esac
+
 dnl overwrite for the mips* 64bit multilibs, fails on some buildds
 if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
   case "$target" in
Index: gcc-7-7.2.0/src/libgo/Makefile.am
===
--- gcc-7-7.2.0.orig/src/libgo/Makefile.am
+++ gcc-7-7.2.0/src/libgo/Makefile.am
@@ -420,10 +420,14 @@ else
 if LIBGO_IS_NETBSD
 runtime_getncpu_file = runtime/getncpu-bsd.c
 else
+if LIBGO_IS_GNU
+runtime_getncpu_file = runtime/getncpu-gnu.c
+else
 runtime_getncpu_file = runtime/getncpu-none.c
 endif
 endif
 endif
+endif
 endif
 endif
 endif
Index: gcc-7-7.2.0/src/libgo/Makefile.in
===
--- gcc-7-7.2.0.orig/src/libgo/Makefile.in
+++ gcc-7-7.2.0/src/libgo/Makefile.in
@@ -183,7 +183,8 @@ libgo_llgo_la_DEPENDENCIES = $(am__DEPEN
 @LIBGO_IS_LINUX_FALSE@am__objects_2 = thread-sema.lo
 @LIBGO_IS_LINUX_TRUE@am__objects_2 = thread-linux.lo
 @LIBGO_IS_RTEMS_TRUE@am__objects_3 = rtems-task-variable-add.lo
-@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_4 = getncpu-none.lo
+@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_4 = getncpu-none.lo
+@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_4 = getncpu-gnu.lo
 

Re: boot the Hurd with Guix

2017-11-16 Thread Manolis Ragkousis
Hello everyone,

On 11/16/2017 12:13 PM, Ludovic Courtès wrote:
> Hi Samuel,  :-)
> 
> Samuel Thibault  skribis:
> 
>> Ludovic Courtès, on lun. 13 nov. 2017 11:42:01 +0100, wrote:
>>> PS: guix-daemon no longer depends on ‘lsof’, but it still depends on /proc.
>>
>> Does our procfs have everything it needs already?
> 
> It needs /proc/PID/{exe,cwd,fd,maps,environ}:
> 
>   
> https://git.savannah.gnu.org/cgit/guix.git/tree/nix/scripts/list-runtime-roots.in
> 
> That said, it’s quite optional: the worst that can happen if one of
> these things is missing is that something can be reclaimed “prematurely”
> from /gnu/store.  I say “prematurely” with quotes because users are
> supposed to register “real” GC roots anyway, as with ‘guix package -i’
> or ‘guix build --root’.

That reminds me, Rene have you tried running 'guix gc -C' ? What is the
output? Because I have a problem with this on Guix on Hurd and I haven't
managed to fix it yet.



Re: boot the Hurd with Guix

2017-11-16 Thread Ludovic Courtès
Hi Samuel,  :-)

Samuel Thibault  skribis:

> Ludovic Courtès, on lun. 13 nov. 2017 11:42:01 +0100, wrote:
>> PS: guix-daemon no longer depends on ‘lsof’, but it still depends on /proc.
>
> Does our procfs have everything it needs already?

It needs /proc/PID/{exe,cwd,fd,maps,environ}:

  
https://git.savannah.gnu.org/cgit/guix.git/tree/nix/scripts/list-runtime-roots.in

That said, it’s quite optional: the worst that can happen if one of
these things is missing is that something can be reclaimed “prematurely”
from /gnu/store.  I say “prematurely” with quotes because users are
supposed to register “real” GC roots anyway, as with ‘guix package -i’
or ‘guix build --root’.

Thanks,
Ludo’.