Update to xmonad-0.5. I hacked it a little bit to make it still
build and work with ghc-6.6.1 and without the need of updating Cabal
and the X11 bindings included within ghc.

This also introduces a subpackage xmonad-lib that, when installed,
allows for configuring xmonad via ~/.xmonad/xmonad.hs. This means
that you can drop your own "config" file there (or use the sample
provided with the package), tweak it, hit mod-q and get a nearly
immediate restart of the (reconfigured) xmonad. The drawback: this
depends on the complete ghc and hs-x11-extras packages installed.

Please test (especially on amd64) and comment.

Ciao,
        Kili


Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/xmonad/Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile
--- Makefile    19 Nov 2007 19:59:40 -0000      1.5
+++ Makefile    6 Jan 2008 20:39:46 -0000
@@ -1,15 +1,19 @@
 # $OpenBSD: Makefile,v 1.5 2007/11/19 19:59:40 kili Exp $
 
-COMMENT=               tiling window manager
+COMMENT-main=          tiling window manager
+COMMENT-lib=           libraries for runtime configuration
 
-V=                     0.4
+V=                     0.5
 DISTNAME=              xmonad-$V
-PKGNAME=               ${DISTNAME}p0
+PKGNAME-main=          xmonad-$V
+PKGNAME-lib=           xmonad-lib-$V
 CATEGORIES=            x11
 HOMEPAGE=              http://www.xmonad.org/
 
 MAINTAINER=            Matthias Kilian <[EMAIL PROTECTED]>
 
+MULTI_PACKAGES=                -main -lib
+
 # BSD
 PERMIT_PACKAGE_CDROM=  Yes
 PERMIT_PACKAGE_FTP=    Yes
@@ -18,12 +22,18 @@ PERMIT_DISTFILES_FTP=       Yes
 
 MASTER_SITES=          http://hackage.haskell.org/packages/archive/xmonad/$V/
 
-WANTLIB=               X11 Xext Xinerama c m
+WANTLIB-main=          X11 Xext Xinerama c m
 
 MODULES=               lang/ghc
-MODGHC_RUNTIME=                No
+
+.if defined (SUBPACKAGE) && ${SUBPACKAGE:M-main}
+MODGHC_RUNTIME=        No
+.endif
+
 BUILD_DEPENDS=         :hs-x11-extras->=0.4:x11/hs-x11-extras
 LIB_DEPENDS=           gmp::devel/gmp
+LIB_DEPENDS-lib=
+RUN_DEPENDS-lib=               :hs-x11-extras->=0.4:x11/hs-x11-extras
 
 SETUP_CONF_ARGS=       configure -g --prefix=${PREFIX}
 SETUP_CONF_ENV=                HOME=${PORTHOME} PATH=${PATH}
@@ -38,14 +48,28 @@ do-configure:
                ${SETUP_PROG} ${SETUP_CONF_ARGS}
 
 do-build:
-       @cd ${WRKBUILD} && exec ${SETENV} ${SETUP_CONF_ENV} \
+       @cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} \
                ${SETUP_PROG} build
+       @cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} \
+               ${SETUP_PROG} register --gen-script
+       @cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} \
+               ${SETUP_PROG} unregister --gen-script
+       perl -pi -e 's!/share/${DISTNAME}/doc/html!/share/doc/${DISTNAME}!' \
+               ${WRKBUILD}/register.sh
 
 do-install:
        @cd ${WRKBUILD} && exec ${SETENV} ${SETUP_CONF_ENV} \
                ${SETUP_PROG} copy --destdir=${DESTDIR}
        @${INSTALL_MAN_DIR} ${PREFIX}/man/man1
        @${INSTALL_MAN} ${WRKSRC}/man/xmonad.1 ${PREFIX}/man/man1
+       @${INSTALL_DATA_DIR} ${PREFIX}/share/doc/xmonad
+       @${INSTALL_DATA} ${WRKSRC}/CONFIG ${PREFIX}/share/doc/xmonad
+       @${INSTALL_DATA} ${WRKSRC}/man/xmonad.hs ${PREFIX}/share/doc/xmonad
+
+post-install:
+.for f in register.sh unregister.sh
+       ${INSTALL_SCRIPT} ${WRKBUILD}/$f ${PREFIX}/lib/${DISTNAME}
+.endfor
 
 do-regress:
        @cd ${WRKBUILD} && exec ${SETENV} ${SETUP_CONF_ENV} \
Index: distinfo
===================================================================
RCS file: /cvs/ports/x11/xmonad/distinfo,v
retrieving revision 1.4
diff -u -p -r1.4 distinfo
--- distinfo    18 Nov 2007 20:13:31 -0000      1.4
+++ distinfo    6 Jan 2008 20:39:46 -0000
@@ -1,5 +1,5 @@
-MD5 (xmonad-0.4.tar.gz) = XSTFVvfI8ElUchs5H9eaEw==
-RMD160 (xmonad-0.4.tar.gz) = Jm5iQcZlFrRKk6SNRw6bdglgByo=
-SHA1 (xmonad-0.4.tar.gz) = NNQXcyDSosEmPGla5/s3HCzf8UY=
-SHA256 (xmonad-0.4.tar.gz) = l4+5nkB4YHAweZL954/iUrlug0dA+5g7lMOjlcRUZ7s=
-SIZE (xmonad-0.4.tar.gz) = 41025
+MD5 (xmonad-0.5.tar.gz) = sjlRydG6A8ZWn9Hlc/FVCQ==
+RMD160 (xmonad-0.5.tar.gz) = jjnYoq2OjRYAa9zR9kXWoxvnIfg=
+SHA1 (xmonad-0.5.tar.gz) = rOqDGm2kha2ZbIvaemfxrL1w0/o=
+SHA256 (xmonad-0.5.tar.gz) = z8xFAbAA+nQO01pb6H3AEhbgNiGVUWMNz3HZw89X5MQ=
+SIZE (xmonad-0.5.tar.gz) = 48853
Index: patches/patch-Config_hs
===================================================================
RCS file: patches/patch-Config_hs
diff -N patches/patch-Config_hs
--- patches/patch-Config_hs     18 Nov 2007 20:13:31 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
---- Config.hs.orig     Wed Oct 17 01:53:12 2007
-+++ Config.hs  Sun Oct 28 18:21:41 2007
-@@ -90,7 +90,7 @@ focusedBorderColor = "#ff0000"
- -- Fields are: top, bottom, left, right.
- --
- defaultGaps :: [(Int,Int,Int,Int)]
--defaultGaps = [(0,0,0,0)] -- 15 for default dzen font
-+defaultGaps = repeat (15,0,0,0) -- 15 for default dzen font
- 
- ------------------------------------------------------------------------
- -- Window rules
Index: patches/patch-Main_hs
===================================================================
RCS file: patches/patch-Main_hs
diff -N patches/patch-Main_hs
--- patches/patch-Main_hs       18 Nov 2007 20:13:31 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-Main_hs,v 1.3 2007/11/18 20:13:31 kili Exp $
---- Main.hs.orig       Wed Oct 17 01:53:12 2007
-+++ Main.hs    Sun Oct 28 18:22:13 2007
-@@ -62,7 +62,7 @@ main = do
-                     return . W.ensureTags layoutHook workspaces
-                            $ W.mapLayout (fromMaybe layoutHook . maybeRead) ws
- 
--        gaps = take (length xinesc) $ defaultGaps ++ repeat (0,0,0,0)
-+        gaps = take (length xinesc) $ repeat (0,0,0,0)
- 
-         cf = XConf
-             { display       = dpy
Index: patches/patch-XMonad_Operations_hs
===================================================================
RCS file: patches/patch-XMonad_Operations_hs
diff -N patches/patch-XMonad_Operations_hs
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-XMonad_Operations_hs  6 Jan 2008 20:39:46 -0000
@@ -0,0 +1,42 @@
+$OpenBSD$
+
+Backport for ghc-6.6 and X11-extras.
+
+--- XMonad/Operations.hs.orig  Mon Dec 10 00:25:43 2007
++++ XMonad/Operations.hs       Sat Jan  5 09:24:33 2008
+@@ -76,7 +76,7 @@ manage w = whenX (not <$> isClient w) $ withDisplay $ 
+ unmanage :: Window -> X ()
+ unmanage w = do
+     windows (W.delete w)
+-    setWMState w withdrawnState
++    setWMState w 0
+     modify (\s -> s {mapped = S.delete w (mapped s), waitingUnmap = M.delete 
w (waitingUnmap s)})
+ 
+ -- | Modify the size of the status gap at the top of the current screen
+@@ -185,7 +185,7 @@ hide w = whenX (gets (S.member w . mapped)) $ withDisp
+     io $ do selectInput d w (clientMask .&. complement structureNotifyMask)
+             unmapWindow d w
+             selectInput d w clientMask
+-    setWMState w iconicState
++    setWMState w 3
+     -- this part is key: we increment the waitingUnmap counter to distinguish
+     -- between client and xmonad initiated unmaps.
+     modify (\s -> s { waitingUnmap = M.insertWith (+) w 1 (waitingUnmap s)
+@@ -195,7 +195,7 @@ hide w = whenX (gets (S.member w . mapped)) $ withDisp
+ -- this is harmless if the window was already visible
+ reveal :: Window -> X ()
+ reveal w = withDisplay $ \d -> do
+-    setWMState w normalState
++    setWMState w 1
+     io $ mapWindow d w
+     modify (\s -> s { mapped = S.insert w (mapped s) })
+ 
+@@ -206,7 +206,7 @@ clientMask = structureNotifyMask .|. enterWindowMask .
+ -- | Set some properties when we initially gain control of a window
+ setInitialProperties :: Window -> X ()
+ setInitialProperties w = asks normalBorder >>= \nb -> withDisplay $ \d -> do
+-    setWMState w iconicState
++    setWMState w 3
+     io $ selectInput d w $ clientMask
+     bw <- asks (borderWidth . config)
+     io $ setWindowBorderWidth d w bw
Index: patches/patch-xmonad_cabal
===================================================================
RCS file: patches/patch-xmonad_cabal
diff -N patches/patch-xmonad_cabal
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-xmonad_cabal  6 Jan 2008 20:39:46 -0000
@@ -0,0 +1,51 @@
+$OpenBSD$
+--- xmonad.cabal.orig  Mon Dec 10 00:25:43 2007
++++ xmonad.cabal       Sat Jan  5 09:26:31 2008
+@@ -20,36 +20,15 @@ maintainer:         [EMAIL PROTECTED]
+ extra-source-files: README TODO CONFIG STYLE tests/loc.hs tests/Properties.hs
+                     man/xmonad.1.in man/xmonad.1 man/xmonad.html man/xmonad.hs
+                     util/GenerateManpage.hs
+-cabal-version:      >= 1.2
++build-depends: base < 3, X11>=1.2.1, X11-extras>=0.4, mtl, unix
++exposed-modules:    XMonad, XMonad.Main, XMonad.Core, XMonad.Config, 
XMonad.Layout, XMonad.ManageHook, XMonad.Operations, XMonad.StackSet
++ghc-options:        -funbox-strict-fields -Wall -Werror -optl-Wl,-s
++ghc-prof-options:   -prof -auto-all
++extensions:         CPP
+ 
+-flag small_base
+-  description: Choose the new smaller, split-up base package.
+-
+-library
+-    exposed-modules:    XMonad
+-                        XMonad.Main
+-                        XMonad.Core
+-                        XMonad.Config
+-                        XMonad.Layout
+-                        XMonad.ManageHook
+-                        XMonad.Operations
+-                        XMonad.StackSet
+-
+-    if flag(small_base)
+-        build-depends: base >= 3, containers, directory, process
+-    else
+-        build-depends: base < 3
+-    build-depends: X11>=1.4.0, mtl, unix
+-
+-    ghc-options:        -funbox-strict-fields -Wall -Werror -optl-Wl,-s
+-    ghc-prof-options:   -prof -auto-all
+-    extensions:         CPP
+-
+-executable xmonad
+-    main-is:            Main.hs
+-    other-modules:      XMonad.Core XMonad.Main XMonad.Layout
+-                        XMonad.Operations XMonad.StackSet XMonad
+-
+-    ghc-options:        -funbox-strict-fields -Wall -Werror -optl-Wl,-s
+-    ghc-prof-options:   -prof -auto-all
+-    extensions:         CPP
++executable:         xmonad
++main-is:            Main.hs
++other-modules:      XMonad.Core XMonad.Main XMonad.Layout XMonad.Operations 
XMonad.StackSet XMonad
++ghc-options:        -funbox-strict-fields -Wall -Werror -optl-Wl,-s
++ghc-prof-options:   -prof -auto-all
++extensions:         CPP
Index: pkg/DESCR
===================================================================
RCS file: pkg/DESCR
diff -N pkg/DESCR
--- pkg/DESCR   18 Nov 2007 20:13:31 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-xmonad is a tiling window manager for X. Windows are arranged
-automatically to tile the screen without gaps or overlap, maximising
-screen use. All features of the window manager are accessible from
-the keyboard: a mouse is strictly optional. xmonad is written and
-extensible in Haskell. Custom layout algorithms, and other extensions,
-may be written by the user in config files. Layouts are applied
-dynamically, and different layouts may be used on each workspace.
-Xinerama is fully supported, allowing windows to be tiled on several
-screens.
Index: pkg/DESCR-lib
===================================================================
RCS file: pkg/DESCR-lib
diff -N pkg/DESCR-lib
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/DESCR-lib       6 Jan 2008 20:39:46 -0000
@@ -0,0 +1,2 @@
+The xmonad libraries are required for runtime configuration of
+xmonad.
Index: pkg/DESCR-main
===================================================================
RCS file: pkg/DESCR-main
diff -N pkg/DESCR-main
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/DESCR-main      6 Jan 2008 20:39:46 -0000
@@ -0,0 +1,14 @@
+xmonad is a tiling window manager for X. Windows are arranged
+automatically to tile the screen without gaps or overlap, maximising
+screen use. All features of the window manager are accessible from
+the keyboard: a mouse is strictly optional. xmonad is written and
+extensible in Haskell. Custom layout algorithms, and other extensions,
+may be written by the user in config files. Layouts are applied
+dynamically, and different layouts may be used on each workspace.
+Xinerama is fully supported, allowing windows to be tiled on several
+screens.
+
+Important note: if you want to configure xmonad without patching
+the default config file and rebuilding the package, you should also
+install the xmonad-lib package, which makes runtime configuration
+possible.
Index: pkg/PLIST
===================================================================
RCS file: pkg/PLIST
diff -N pkg/PLIST
--- pkg/PLIST   1 Sep 2007 22:18:41 -0000       1.1.1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,3 +0,0 @@
[EMAIL PROTECTED] $OpenBSD: PLIST,v 1.1.1.1 2007/09/01 22:18:41 kili Exp $
-bin/xmonad
[EMAIL PROTECTED] man/man1/xmonad.1
Index: pkg/PLIST-lib
===================================================================
RCS file: pkg/PLIST-lib
diff -N pkg/PLIST-lib
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/PLIST-lib       6 Jan 2008 20:39:46 -0000
@@ -0,0 +1,22 @@
[EMAIL PROTECTED] $OpenBSD$
+lib/xmonad-${V}/
+lib/xmonad-${V}/ghc-6.6.1/
+lib/xmonad-${V}/ghc-6.6.1/HSxmonad-${V}.o
+lib/xmonad-${V}/ghc-6.6.1/XMonad/
+lib/xmonad-${V}/ghc-6.6.1/XMonad.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/Config.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/Core.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/Layout.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/Main.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/ManageHook.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/Operations.hi
+lib/xmonad-${V}/ghc-6.6.1/XMonad/StackSet.hi
+lib/xmonad-${V}/ghc-6.6.1/include/
+lib/xmonad-${V}/ghc-6.6.1/libHSxmonad-${V}.a
+lib/xmonad-${V}/register.sh
[EMAIL PROTECTED] /usr/bin/env HOME=/nonexistent %D/lib/xmonad-${V}/register.sh
[EMAIL PROTECTED] /usr/bin/env HOME=/nonexistent 
%D/lib/xmonad-${V}/unregister.sh
+lib/xmonad-${V}/unregister.sh
+share/doc/xmonad/
+share/doc/xmonad/CONFIG
+share/doc/xmonad/xmonad.hs
Index: pkg/PLIST-main
===================================================================
RCS file: pkg/PLIST-main
diff -N pkg/PLIST-main
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/PLIST-main      6 Jan 2008 20:39:46 -0000
@@ -0,0 +1,4 @@
[EMAIL PROTECTED] $OpenBSD$
[EMAIL PROTECTED] x11/xmonad
+bin/xmonad
[EMAIL PROTECTED] man/man1/xmonad.1

Reply via email to