[csw-devel] SF.net SVN: gar:[6139] csw/mgar/pkg/mtr/trunk/Makefile

skayser at users.sourceforge.net skayser at users.sourceforge.net
Sat Aug 29 22:01:29 CEST 2009


Revision: 6139
          http://gar.svn.sourceforge.net/gar/?rev=6139&view=rev
Author:   skayser
Date:     2009-08-29 20:01:28 +0000 (Sat, 29 Aug 2009)

Log Message:
-----------
mtr: fixed the two-package-approach ... somewhat hacky

Modified Paths:
--------------
    csw/mgar/pkg/mtr/trunk/Makefile

Modified: csw/mgar/pkg/mtr/trunk/Makefile
===================================================================
--- csw/mgar/pkg/mtr/trunk/Makefile	2009-08-29 15:09:08 UTC (rev 6138)
+++ csw/mgar/pkg/mtr/trunk/Makefile	2009-08-29 20:01:28 UTC (rev 6139)
@@ -1,7 +1,5 @@
 # TODO
 # ----
-# * Find a way to somehow package out of the install dirs, we don't need
-#   merging for the two incompatible modulations/packages.
 # * Revisit curses autoconf detection. Maybe have a chat with upstream
 #   as the README says that there are known, yet unsolved Solaris autoconf
 #   recipe problems
@@ -28,8 +26,22 @@
 DISTFILES  = $(GARNAME)-$(GARVERSION).tar.gz
 UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz
 
-REQUIRED_PKGS  = CSWncurses
+PACKAGES = CSWmtr CSWmtrtiny
 
+CATALOGNAME_CSWmtr       = mtr
+SPKG_DESC_CSWmtr         = Combined traceroute and ping utility
+REQUIRED_PKGS_CSWmtr     = CSWgtk2 CSWlibatk CSWpango CSWlibcairo
+REQUIRED_PKGS_CSWmtr    += CSWggettextrt CSWglib2 CSWncurses
+REQUIRED_PKGS_CSWmtr    += CSWfconfig CSWftype2 CSWzlib
+INCOMPATIBLE_PKGS_CSWmtr = CSWmtrtiny
+EXTRA_PKGFILES_EXCLUDED_CSWmtr = $(sbindir)/mtr-nongui
+
+CATALOGNAME_CSWmtrtiny       = mtr_tiny
+SPKG_DESC_CSWmtrtiny         = Combined traceroute and ping utility (CLI only version)
+REQUIRED_PKGS_CSWmtrtiny     = CSWncurses
+INCOMPATIBLE_PKGS_CSWmtrtiny = CSWmtr
+EXTRA_PKGFILES_EXCLUDED_CSWmtrtiny = $(sbindir)/mtr-gui
+
 # 1) Check for socklen_t via sys/socket.h (not netinet/in.h)
 # 2) Don't cast sin_addr to (struct in_addr), cc bails out with invalid cast
 PATCHFILES = gar-base.diff
@@ -38,34 +50,51 @@
 
 CONFIGURE_ARGS = $(DIRPATHS)
 
-# Make mtr setuid so that it can access raw sockets
-PROTOTYPE_FILTER = awk ' \
-	$$$$3 ~ /sbin\/mtr$$$$/ { $$$$4 = "4755" } \
-	{ print }'
-
-# We would like to have two packages: one with GUI support and one without
-# GUI support.
+# ------------------ BEWARE:  NASTY HACK AHEAD --------------------
 #
+# We employ modulations to produce two mtr binaries, one with X support
+# the other one without (less dependencies). We need to transform the
+# name on merge so that the binaries don't clash and fiddle the correct
+# binary into the proper path again on package assembly (via prototype).
+#
 EXTRA_MODULATORS = GUI
 MODULATIONS_GUI = disable enable
 
 ifeq ($(GUI), disable)
 CONFIGURE_ARGS += --without-gtk
-PACKAGES = CSWmtrtiny
-CATALOGNAME = mtr_tiny
-INCOMPATIBLE_PKGS = CSWmtr
 endif
 
 ifeq ($(GUI), enable)
 CONFIGURE_ARGS += --disable-gtktest
-REQUIRED_PKGS += CSWgtk2 CSWlibatk CSWpango CSWlibcairo
-REQUIRED_PKGS += CSWggettextrt CSWglib2
-INCOMPATIBLE_PKGS = CSWmtrtiny
 EXTRA_PKG_CONFIG_PATH = /opt/csw/X11/lib/pkgconfig
 endif
-#
-# /end modulations
 
+# Rename the modulated binaries so that we can distinguish them
+# Could also be done via ./configure --program-suffix, but the
+# install-exec-hook for mtr doesn't honor the transformed name
+# and fails.
+EXTRA_PAX_ARGS_isa-sparcv8-gui-enable  = -s ",^.$(sbindir)/mtr$$,$(sbindir)/mtr-gui,p"
+EXTRA_PAX_ARGS_isa-sparcv8-gui-disable = -s ",^.$(sbindir)/mtr$$,$(sbindir)/mtr-nongui,p"
+EXTRA_PAX_ARGS_isa-i386-gui-enable     = -s ",^.$(sbindir)/mtr$$,$(sbindir)/mtr-gui,p"
+EXTRA_PAX_ARGS_isa-i386-gui-disable    = -s ",^.$(sbindir)/mtr$$,$(sbindir)/mtr-nongui,p"
+
+# Simply copy all files, EXTRA_PAX_ARGS above takes care not to overwrite the 
+# mtr binary on merging.
+MERGE_SCRIPTS_isa-sparcv8-gui-enable  = copy-all
+MERGE_SCRIPTS_isa-sparcv8-gui-disable = copy-all
+MERGE_SCRIPTS_isa-i386-gui-enable     = copy-all
+MERGE_SCRIPTS_isa-i386-gui-disable    = copy-all
+
+# 1) Move the GUI/non-GUI binaries to their proper location
+# 2) Make mtr setuid so that it can access raw sockets
+PROTOTYPE_FILTER = awk ' \
+	$$$$3 ~ /^\/opt\/csw\/sbin\/mtr-/ { \
+		$$$$3 = "/opt/csw/sbin/mtr=" $$$$3; \
+		$$$$4 = "4755"; \
+	} { print }'
+
+# ------------------ /BEWARE:  NASTY HACK AHEAD --------------------
+
 include gar/category.mk
 
 # curses detection is somehow broken, ncurses.h is included but no curses


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list