|
Size: 10732
Comment:
|
Size: 14696
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) }}} |
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
- Installation and testing:
http://www.debian.org/ports/hurd/hurd-install
Debian "Sid" debian-installer images available http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/.
- This is the prefered method of install.
Pre-build image files (*.img.*) at http://people.debian.org/~sthibault/hurd-i386/
?Debian_GNU/Hurd_FAQ
TheHurd page. (Merge?)
IRC channel: http://www.gnu.org/software/hurd/irc.html
#hurd on irc.freenode.net
#debian-hurd on irc.debian.org
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
- 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
- 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
hdf5 - to remove
- hyperestraier
- for w3m.
- icon
- for lyx.
- ifupdown
- TODO
- isc-dhcp
- 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
see https://bugs.freedesktop.org/show_bug.cgi?id=42715
- needs also SA_NOCLDWAIT
- needs symbol fixes in the Debian packaging
- qdbm
- 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
- wireless-tools-gnumach
- just for wifi, can live without
- binutils
- 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
- We're at 70%, kfreebsd is at 88%. Although probably not reachable, we can probably do better with
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)
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
- DD-accessible machines running GNU/Hurd:
hurd-i386: see ArchiveQualification/hurd-i386
Patches that are only needed for Debian (either because they're fixed-upstream, or because of their Debian-specific nature)
http://lists.debian.org/debian-devel-announce/2011/03/msg00015.html - Debian pushes development of the Hurd port (1)
