Differences between revisions 99 and 101 (spanning 2 versions)
Revision 99 as of 2012-02-05 22:23:21
Size: 10732
Comment:
Revision 101 as of 2012-02-05 22:46:01
Size: 15974
Comment:
Deletions are marked like this. Additions are marked like this.
Line 195: Line 195:
the values in libraries/unix/dist-install/build/System/Posix/IO.hs, use the following instead:

{{{
        flags =
           (if appendFlag then (256) else 0) .|.
    {-# LINE 189 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if exclusiveFlag then (32) else 0) .|.
    {-# LINE 190 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if nocttyFlag then (0) else 0) .|.
    {-# LINE 191 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if nonBlockFlag then (8) else 0) .|.
    {-# LINE 192 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if truncateFlag then (65536) else 0)
    {-# LINE 193 "libraries/unix/./System/Posix/IO.hsc" #-}
    
        (creat, mode_w) = case maybe_mode of
                            Nothing -> (0,0)
                            Just x -> ((64), x)
    {-# LINE 197 "libraries/unix/./System/Posix/IO.hsc" #-}
    
        open_mode = case how of
                       ReadOnly -> (1)
    {-# LINE 200 "libraries/unix/./System/Posix/IO.hsc" #-}
                       WriteOnly -> (2)
    {-# LINE 201 "libraries/unix/./System/Posix/IO.hsc" #-}
                       ReadWrite -> (3)
    {-# LINE 202 "libraries/unix/./System/Posix/IO.hsc" #-}
}}}

{{{
    fdOption2Int :: FdOption -> CInt
    fdOption2Int CloseOnExec = (1)
    {-# LINE 320 "libraries/unix/./System/Posix/IO.hsc" #-}
    fdOption2Int AppendOnWrite = (256)
    {-# LINE 321 "libraries/unix/./System/Posix/IO.hsc" #-}
    fdOption2Int NonBlockingRead = (8)
    {-# LINE 322 "libraries/unix/./System/Posix/IO.hsc" #-}
    fdOption2Int SynchronousWrites = (1024)
    {-# LINE 323 "libraries/unix/./System/Posix/IO.hsc" #-}
}}}

{{{
    throwErrnoIfMinus1_ "getLock" (c_fcntl_lock fd (7) p_flock)
}}}

{{{
    allocaLock (lockreq, mode, start, len) io =
      allocaBytes (20) $ \p -> do
    {-# LINE 395 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p (lockReq2Int lockreq :: CShort)
    {-# LINE 396 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p (fromIntegral (mode2Int mode) :: CShort)
    {-# LINE 397 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) p start
    {-# LINE 398 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) p len
    {-# LINE 399 "libraries/unix/./System/Posix/IO.hsc" #-}
        io p
}}}

{{{
    lockReq2Int :: LockRequest -> CShort
    lockReq2Int ReadLock = (1)
    {-# LINE 403 "libraries/unix/./System/Posix/IO.hsc" #-}
    lockReq2Int WriteLock = (2)
    {-# LINE 404 "libraries/unix/./System/Posix/IO.hsc" #-}
    lockReq2Int Unlock = (3)
    {-# LINE 405 "libraries/unix/./System/Posix/IO.hsc" #-}
}}}

{{{
bytes2ProcessIDAndLock p = do
  req <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) p
{-# LINE 409 "libraries/unix/./System/Posix/IO.hsc" #-}
  mode <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) p
{-# LINE 410 "libraries/unix/./System/Posix/IO.hsc" #-}
  start <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) p
{-# LINE 411 "libraries/unix/./System/Posix/IO.hsc" #-}
  len <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) p
{-# LINE 412 "libraries/unix/./System/Posix/IO.hsc" #-}
  pid <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) p
{-# LINE 413 "libraries/unix/./System/Posix/IO.hsc" #-}
  return (pid, (int2req req, int2mode mode, start, len))
}}}

{{{
  int2req :: CShort -> LockRequest
  int2req (1) = ReadLock
{-# LINE 417 "libraries/unix/./System/Posix/IO.hsc" #-}
  int2req (2) = WriteLock
{-# LINE 418 "libraries/unix/./System/Posix/IO.hsc" #-}
  int2req (3) = Unlock
{-# LINE 419 "libraries/unix/./System/Posix/IO.hsc" #-}
  int2req _ = error $ "int2req: bad argument"
}}}

{{{
    throwErrnoIfMinus1_ "setLock" (c_fcntl_lock fd (8) p_flock)
}}}

{{{
        (c_fcntl_lock fd (9) p_flock)
}}}


libraries/unix/dist-install/build/System/Posix/Resource.hs

{{{
    hard <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) p_rlimit
}}}

{{{
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p_rlimit (packRLimit hard False)
}}}

{{{
packResource ResourceOpenFiles = (8)
}}}

{{{
packResource ResourceTotalMemory = (10)
}}}

{{{
unpackRLimit :: CRLim -> ResourceLimit
unpackRLimit (2147483647) = ResourceLimitInfinity
{-# LINE 102 "libraries/unix/./System/Posix/Resource.hsc" #-}

{-# LINE 103 "libraries/unix/./System/Posix/Resource.hsc" #-}
-- unpackRLimit (4294967295) = ResourceLimitUnknown
{-# LINE 104 "libraries/unix/./System/Posix/Resource.hsc" #-}
-- unpackRLimit (4294967295) = ResourceLimitUnknown
{-# LINE 105 "libraries/unix/./System/Posix/Resource.hsc" #-}
}}}

{{{
packRLimit :: ResourceLimit -> Bool -> CRLim
packRLimit ResourceLimitInfinity _ = (2147483647)
{-# LINE 110 "libraries/unix/./System/Posix/Resource.hsc" #-}

{-# LINE 111 "libraries/unix/./System/Posix/Resource.hsc" #-}
--packRLimit ResourceLimitUnknown True = (4294967295)
{-# LINE 112 "libraries/unix/./System/Posix/Resource.hsc" #-}
--packRLimit ResourceLimitUnknown False = (4294967295)
{-# LINE 113 "libraries/unix/./System/Posix/Resource.hsc" #-}
}}}

Debian > Debian GNU > Debian GNU/Hurd


This page attempts to be a reference for all resources related to Debian GNU/Hurd that can be useful for users and developers. Feel free to add more stuff as you see fit.

"In a discussion with the Debian Hurd porters it was decided that the Hurd port stays on FTPMaster until Wheezy is released. Should they have managed to get the port into a state that it is released together with all the others (probably as a technology preview), it is kept in the archive. Should they not manage this the port will be removed from the main archive and move fully to debian-ports.org."1

What is Debian GNU/Hurd ?

Debian GNU/Hurd is an operating system from Debian, but which uses GNU Hurd, which a set of servers, running on top of the GNU Mach microkernel instead of the kernel named Linux (thus the name Debian GNU/Hurd). Some day, most applications will exist both in Debian GNU/Hurd and in Debian GNU/Linux.

Basic info

Goals for releasing in wheezy

  • buildd
    • security
    • DSA
  • proper dhcp support in installed system
    • use ifup/ifdown instead of translators entry?
  • debian-ports packages need to be integrated in the main archive.
    • binutils
      • 629866

      • Not critical, can live without
    • cardmgr-gnumach
      • wifi, can live without
    • console-driver-xkb
      • we should probably just integrate it in the hurd package
      • See the concerns on the mailing list archive (bug-hurd, "XKB's keymaps for the Hurd console")
    • gcc-4.4 gcc-4.6
      • 629866

      • not critical, can live without
    • ghc6
      • Difficult hang during build
      • uninstallable in ports
    • gopherfs
      • ITP: hurdextras?
    • grub2
      • decide on partition stuff, and submit
    • (./) guile-1.8

      • linked with -lpthread, to avoid dlopen(lpthread) bug, 646544

      • 630415 shows that guile-2.0 will have pthread enabled anyway.

      • to remove
    • (./) hdf5

    • hyperestraier
    • icon
    • ifupdown
      • TODO
    • isc-dhcp
      • 616290

      • Need to discuss directly with upstream
    • libdrm
      • This is just a stub. integrate in the main archive?
      • Needs to be worked on!
    • libusb
      • This is just a stub. integrate in the main archive?
      • Needs to be worked on!
    • lockdev
      • TODO
    • mx
    • netio
      • ITP: hurdextras?
    • parted
      • decide on partition stuff, and submit
    • pulseaudio
    • qdbm
      • make check fails due to unimplemented msync(), 648663

      • does not honor nocheck in DEB_BUILD_OPTIONS, 648649

    • random-egd
      • make it an alternative to Marcus' C implementation
      • can live without
    • ruby1.9.1
      • (./) Fix __libc_stack_end in glibc, pending

      • (./) apply patch to fix struct dirent size once upstream agreed.

      • fix PATH_MAX issue, 648055

    • sane-backends-extras
      • can live without
    • screen
      • trivial fix on 522689 , uploaded to experimental

    • (./) sidplay-libs, to remove

      • disable hardsid installation, 654826

    • tarfs
      • ITP: hurdextras?
    • webkit
      • Hacked around PTHREAD_KEYS_MAX
      • 649192

    • wireless-tools-gnumach
      • just for wifi, can live without
  • Be able to install at least the base from official mirror (should be almost done, missing grub/parted, dhcp)
  • Integrate DDE to get nowadays' network support.
  • Get Xorg + gnome/kde/xfce (xfce should work, kde is missing working dbus (due to local socket auth and bugs in select() cornercases)) + some webbrowser working (iceweasel 9 works, though not https).
  • (./) Fix ext2fs uncleanness at reboot http://www.gnu.org/software/hurd/open_issues/sync_but_still_unclean_filesystem.html

  • Switch to plain sysv startup?
  • (./) Enable console by default? (we now have proper kernel message relaying)

  • fix "su" to root discrepancy (PATH does not include sbin etc.)
  • Good archive coverage.
    • We're at 70%, kfreebsd is at 88%. Although probably not reachable, we can probably do better with
      • ghc
      • mono
      • gnat
      • (./) ruby1.9.1

ghc

Follow http://hackage.haskell.org/trac/ghc/wiki/Building/Porting

Make sure to use the same path in the host and in the target for the compilation.

For the triplet, use i386-unknown-gnu. Better cross-build from an i386 host.

Don't use perl boot: the package is already "booted".

After having run make in the host and transferred the files to the target, fixes are needed in files libraries/unix/dist-install/build/System/Posix/*.hs, basically all lines postfixed by {-# LINE 334 "librari...}

Notably: the offsets in ./libraries/unix/dist-install/build/System/Posix/Files.hs, use the following instead, and fix allocation from 96 to 128.

    deviceID (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 4))
    {-# LINE 314 "libraries/unix/./System/Posix/Files.hsc" #-}
    fileID (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 12))
    {-# LINE 316 "libraries/unix/./System/Posix/Files.hsc" #-}
    fileMode (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 28))
    {-# LINE 318 "libraries/unix/./System/Posix/Files.hsc" #-}
    linkCount (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 32))
    {-# LINE 320 "libraries/unix/./System/Posix/Files.hsc" #-}
    fileOwner (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 36))
    {-# LINE 322 "libraries/unix/./System/Posix/Files.hsc" #-}
    fileGroup (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 40))
    {-# LINE 324 "libraries/unix/./System/Posix/Files.hsc" #-}
    specialDeviceID (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 24))
    {-# LINE 326 "libraries/unix/./System/Posix/Files.hsc" #-}
    fileSize (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 44))
    {-# LINE 328 "libraries/unix/./System/Posix/Files.hsc" #-}
    accessTime (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 52))
    {-# LINE 330 "libraries/unix/./System/Posix/Files.hsc" #-}
    modificationTime (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 60))
    {-# LINE 332 "libraries/unix/./System/Posix/Files.hsc" #-}
    statusChangeTime (FileStatus stat) =
      unsafePerformIO $ withForeignPtr stat $ ((\hsc_ptr -> peekByteOff hsc_ptr 68))
    {-# LINE 334 "libraries/unix/./System/Posix/Files.hsc" #-}

the values in libraries/unix/dist-install/build/System/Posix/IO.hs, use the following instead:

        flags =
           (if appendFlag    then (256)   else 0) .|.
    {-# LINE 189 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if exclusiveFlag then (32)     else 0) .|.
    {-# LINE 190 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if nocttyFlag    then (0)   else 0) .|.
    {-# LINE 191 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if nonBlockFlag  then (8) else 0) .|.
    {-# LINE 192 "libraries/unix/./System/Posix/IO.hsc" #-}
           (if truncateFlag  then (65536)    else 0)
    {-# LINE 193 "libraries/unix/./System/Posix/IO.hsc" #-}
    
        (creat, mode_w) = case maybe_mode of
                            Nothing -> (0,0)
                            Just x  -> ((64), x)
    {-# LINE 197 "libraries/unix/./System/Posix/IO.hsc" #-}
    
        open_mode = case how of
                       ReadOnly  -> (1)
    {-# LINE 200 "libraries/unix/./System/Posix/IO.hsc" #-}
                       WriteOnly -> (2)
    {-# LINE 201 "libraries/unix/./System/Posix/IO.hsc" #-}
                       ReadWrite -> (3)
    {-# LINE 202 "libraries/unix/./System/Posix/IO.hsc" #-}

    fdOption2Int :: FdOption -> CInt
    fdOption2Int CloseOnExec       = (1)
    {-# LINE 320 "libraries/unix/./System/Posix/IO.hsc" #-}
    fdOption2Int AppendOnWrite     = (256)
    {-# LINE 321 "libraries/unix/./System/Posix/IO.hsc" #-}
    fdOption2Int NonBlockingRead   = (8)
    {-# LINE 322 "libraries/unix/./System/Posix/IO.hsc" #-}
    fdOption2Int SynchronousWrites = (1024)
    {-# LINE 323 "libraries/unix/./System/Posix/IO.hsc" #-}

    throwErrnoIfMinus1_ "getLock" (c_fcntl_lock fd (7) p_flock)

    allocaLock (lockreq, mode, start, len) io =
      allocaBytes (20) $ \p -> do
    {-# LINE 395 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 0))   p (lockReq2Int lockreq :: CShort)
    {-# LINE 396 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p (fromIntegral (mode2Int mode) :: CShort)
    {-# LINE 397 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 8))  p start
    {-# LINE 398 "libraries/unix/./System/Posix/IO.hsc" #-}
        ((\hsc_ptr -> pokeByteOff hsc_ptr 12))    p len
    {-# LINE 399 "libraries/unix/./System/Posix/IO.hsc" #-}
        io p

    lockReq2Int :: LockRequest -> CShort
    lockReq2Int ReadLock  = (1)
    {-# LINE 403 "libraries/unix/./System/Posix/IO.hsc" #-}
    lockReq2Int WriteLock = (2)
    {-# LINE 404 "libraries/unix/./System/Posix/IO.hsc" #-}
    lockReq2Int Unlock    = (3)
    {-# LINE 405 "libraries/unix/./System/Posix/IO.hsc" #-}

bytes2ProcessIDAndLock p = do
  req   <- ((\hsc_ptr -> peekByteOff hsc_ptr 0))   p
{-# LINE 409 "libraries/unix/./System/Posix/IO.hsc" #-}
  mode  <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) p
{-# LINE 410 "libraries/unix/./System/Posix/IO.hsc" #-}
  start <- ((\hsc_ptr -> peekByteOff hsc_ptr 8))  p
{-# LINE 411 "libraries/unix/./System/Posix/IO.hsc" #-}
  len   <- ((\hsc_ptr -> peekByteOff hsc_ptr 12))    p
{-# LINE 412 "libraries/unix/./System/Posix/IO.hsc" #-}
  pid   <- ((\hsc_ptr -> peekByteOff hsc_ptr 16))    p
{-# LINE 413 "libraries/unix/./System/Posix/IO.hsc" #-}
  return (pid, (int2req req, int2mode mode, start, len))

  int2req :: CShort -> LockRequest
  int2req (1) = ReadLock
{-# LINE 417 "libraries/unix/./System/Posix/IO.hsc" #-}
  int2req (2) = WriteLock
{-# LINE 418 "libraries/unix/./System/Posix/IO.hsc" #-}
  int2req (3) = Unlock
{-# LINE 419 "libraries/unix/./System/Posix/IO.hsc" #-}
  int2req _ = error $ "int2req: bad argument"

    throwErrnoIfMinus1_ "setLock" (c_fcntl_lock fd (8) p_flock)

        (c_fcntl_lock fd (9) p_flock)

libraries/unix/dist-install/build/System/Posix/Resource.hs

    hard <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) p_rlimit

    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p_rlimit (packRLimit hard False)

packResource ResourceOpenFiles     = (8)

packResource ResourceTotalMemory   = (10)

unpackRLimit :: CRLim -> ResourceLimit
unpackRLimit (2147483647)  = ResourceLimitInfinity
{-# LINE 102 "libraries/unix/./System/Posix/Resource.hsc" #-}

{-# LINE 103 "libraries/unix/./System/Posix/Resource.hsc" #-}
-- unpackRLimit (4294967295) = ResourceLimitUnknown
{-# LINE 104 "libraries/unix/./System/Posix/Resource.hsc" #-}
-- unpackRLimit (4294967295) = ResourceLimitUnknown
{-# LINE 105 "libraries/unix/./System/Posix/Resource.hsc" #-}

packRLimit :: ResourceLimit -> Bool -> CRLim
packRLimit ResourceLimitInfinity _     = (2147483647)
{-# LINE 110 "libraries/unix/./System/Posix/Resource.hsc" #-}

{-# LINE 111 "libraries/unix/./System/Posix/Resource.hsc" #-}
--packRLimit ResourceLimitUnknown  True  = (4294967295)
{-# LINE 112 "libraries/unix/./System/Posix/Resource.hsc" #-}
--packRLimit ResourceLimitUnknown  False = (4294967295)
{-# LINE 113 "libraries/unix/./System/Posix/Resource.hsc" #-}

And then run make again, and copy ./libraries/unix/dist-install/build/System/Posix/*.hc (but only these files) to the target.

In <T>/mk/build.mk, append -lffi to ghc_stage2_v_EXTRA_CC_OPTS and -lffi -lncurses -ltermcap to utils/ghc-pkg_dist-install_v_EXTRA_CC_OPTS

Goals for later

  • IPv6 support in d-i (after it is settled for linux).

Developer info


CategoryPermalink

  1. http://lists.debian.org/debian-devel-announce/2011/03/msg00015.html - Debian pushes development of the Hurd port (1)