Differences between revisions 101 and 110 (spanning 9 versions)
Revision 101 as of 2012-02-05 22:46:01
Size: 15974
Comment:
Revision 110 as of 2012-02-06 22:28:50
Size: 8070
Comment:
Deletions are marked like this. Additions are marked like this.
Line 64: Line 64:
  * ghc6
   * Difficult hang during build
  * (./) ghc6
   * Difficult hang during build 6.8
Line 67: Line 67:
   * 6.10 built fine, as well as 6.12, 7.0.4, and eventually 7.4
Line 140: Line 141:
   * ghc    * (./) ghc
Line 144: Line 145:

== 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
Line 387: Line 187:
== ghc ==

There are some old packages on http://people.debian.org/~sthibault/hurd-i386/ghc6/

ghc 6.10 could be built partially from 6.6, enough for ghc 6.12 to be built, then the 6.12 debian package built, and then 7.0.4. 7.4 is now being uploaded.

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 6.8
      • uninstallable in ports
      • 6.10 built fine, as well as 6.12, 7.0.4, and eventually 7.4
    • 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

Goals for later

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

Developer info

ghc

There are some old packages on http://people.debian.org/~sthibault/hurd-i386/ghc6/

ghc 6.10 could be built partially from 6.6, enough for ghc 6.12 to be built, then the 6.12 debian package built, and then 7.0.4. 7.4 is now being uploaded.


CategoryPermalink

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