aboutsummaryrefslogtreecommitdiff
path: root/x11/kde4
diff options
context:
space:
mode:
authorMichael Nottebrock <lofi@FreeBSD.org>2003-07-29 04:26:22 +0000
committerMichael Nottebrock <lofi@FreeBSD.org>2003-07-29 04:26:22 +0000
commitac4ef3820bce26f3bbb3fb8b1baaeae42b7028ca (patch)
treee774043ee6ff3c3d53fd74afbfa1a6efb14d22e3 /x11/kde4
parenta64b51263a686de76321c6baecd611e2e35e3297 (diff)
Notes
Diffstat (limited to 'x11/kde4')
-rw-r--r--x11/kde4/Makefile152
-rw-r--r--x11/kde4/Makefile.kde7
-rw-r--r--x11/kde4/files/post-configure-message12
-rw-r--r--x11/kde4/pkg-plist2
-rw-r--r--x11/kde4/scripts/configure.kde3128
5 files changed, 280 insertions, 21 deletions
diff --git a/x11/kde4/Makefile b/x11/kde4/Makefile
index 3e9ebb3f4c3f..569c371975cf 100644
--- a/x11/kde4/Makefile
+++ b/x11/kde4/Makefile
@@ -8,7 +8,6 @@
PORTNAME= kde
PORTVERSION= ${KDE_VERSION}
-PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= # empty
DISTFILES= # none
@@ -17,22 +16,132 @@ EXTRACT_ONLY= # empty
MAINTAINER= kde@FreeBSD.org
COMMENT= The "meta-port" for KDE
-.if !defined(MINIMAL_KDE)
-RUN_DEPENDS+= kjumpingcube:${PORTSDIR}/games/kdegames3 \
- kdessh:${PORTSDIR}/misc/kdeutils3 \
- kword:${PORTSDIR}/editors/koffice-kde3 \
- kppp:${PORTSDIR}/net/kdenetwork3 \
- kview:${PORTSDIR}/graphics/kdegraphics3 \
- kmix:${PORTSDIR}/multimedia/kdemultimedia3 \
- korganizer:${PORTSDIR}/deskutils/kdepim3 \
- cervisia:${PORTSDIR}/devel/kdesdk3 \
- kdevelop:${PORTSDIR}/devel/kdevelop \
- atlantikdesigner:${PORTSDIR}/misc/kdeaddons3 \
- khangman:${PORTSDIR}/misc/kdeedu3 \
- kcron:${PORTSDIR}/sysutils/kdeadmin3 \
- quanta:${PORTSDIR}/www/quanta \
- kmoon:${PORTSDIR}/x11-clocks/kdetoys3 \
- kmatrix.kss:${PORTSDIR}/x11-wm/kdeartwork3
+## This is the file where the selections made in the interactive dialog
+## are saved in and initialized from.
+
+CONFIG_FILE= ${LOCALBASE}/etc/kde-meta.conf
+
+## The list of all modules that make up KDE, excluding the base modules
+## arts, kdebase and kdelibs
+
+ALL_MODULES= KDEADDONS KDEADMIN KDEARTWORK KDEVELOP KDEEDU KDEGAMES \
+ KDEGRAPHICS KDEMULTIMEDIA KDENETWORK KOFFICE KDEPIM KDESDK \
+ KDETOYS KDEUTILS QUANTA
+
+## Forwards parts of the environment to scripts/configure.kde3
+
+SCRIPTS_ENV+= ALL_MODULES="${ALL_MODULES}" \
+ BATCH="${BATCH}" \
+ CAT="${CAT}" \
+ CONFIG_FILE="${CONFIG_FILE}" \
+ CURDIR="${CURDIR}" \
+ ECHO="${ECHO}" \
+ ECHO_MSG="${ECHO_MSG}" \
+ GREP="${GREP}" \
+ MKDIR="${MKDIR}" \
+ PKG_DELETE="${PKG_DELETE}" \
+ PKG_INFO="${PKG_INFO}" \
+ REINPLACE_CMD="${REINPLACE_CMD}" \
+ SED="${SED}" \
+ TOUCH="${TOUCH}" \
+ TR="${TR}" \
+ WRKDIRPREFIX="${WRKDIRPREFIX}"
+
+## If MINIMAL_KDE is defined, define WITHOUT_FOO for every
+## module there is.
+
+.if defined(MINIMAL_KDE)
+.for module in ${ALL_MODULES}
+WITHOUT_${module}=yes
+.endfor
+.endif
+
+## If the user has some WITHOUT_FOO stuff set that matters to us,
+## define BATCH so interactive configuration will be skipped.
+
+.for module in ${ALL_MODULES}
+.if defined(WITHOUT_${module})
+BATCH= yes
+.endif
+.endfor
+
+## If the user (or the packagecluster) defines batchprocessing, skip
+## the interactive configuration. Otherwise declare this port properly
+## as interactive, launch the selector script cand include the configuration
+## file that's being returned by it (Makefile.inc). Remove the file on make
+## clean.
+
+.if !defined(BATCH) && !defined(PACKAGE_BUILDING) && !defined(MINIMAL_KDE)
+IS_INTERACTIVE= yes
+PLIST_SUB+= IS_INTERACTIVE=""
+.else
+PLIST_SUB+= IS_INTERACTIVE="@comment "
+.endif
+
+.if !defined(BATCH)
+pre-fetch:
+ @${RM} -f ${WRKDIRPREFIX}${.CURDIR}/Makefile.inc
+ @${SETENV} ${SCRIPTS_ENV} ${SH} ${SCRIPTDIR}/configure.kde3
+
+post-configure:
+ @/usr/bin/clear
+ @${CAT} ${FILESDIR}/post-configure-message
+
+post-clean:
+ @${RM} -f ${WRKDIRPREFIX}${.CURDIR}/Makefile.inc
+
+.if exists(${WRKDIRPREFIX}${.CURDIR}/Makefile.inc)
+.include "${WRKDIRPREFIX}${.CURDIR}/Makefile.inc"
+.endif
+
+.endif # !defined(BATCH)
+
+## Allow to turn off every optional bit of KDE.
+
+.if !defined(WITHOUT_KDEGAMES)
+RUN_DEPENDS+= kjumpingcube:${PORTSDIR}/games/kdegames3
+.endif
+.if !defined(WITHOUT_KDEUTILS)
+RUN_DEPENDS+= kdessh:${PORTSDIR}/misc/kdeutils3
+.endif
+.if !defined(WITHOUT_KOFFICE)
+RUN_DEPENDS+= kword:${PORTSDIR}/editors/koffice-kde3
+.endif
+.if !defined(WITHOUT_KDENETWORK)
+RUN_DEPENDS+= kppp:${PORTSDIR}/net/kdenetwork3
+.endif
+.if !defined(WITHOUT_KDEGRAPHICS)
+RUN_DEPENDS+= kview:${PORTSDIR}/graphics/kdegraphics3
+.endif
+.if !defined(WITHOUT_KDEMULTIMEDIA)
+RUN_DEPENDS+= kmix:${PORTSDIR}/multimedia/kdemultimedia3
+.endif
+.if !defined(WITHOUT_KDEPIM)
+RUN_DEPENDS+= korganizer:${PORTSDIR}/deskutils/kdepim3
+.endif
+.if !defined(WITHOUT_KDESDK)
+RUN_DEPENDS+= cervisia:${PORTSDIR}/devel/kdesdk3
+.endif
+.if !defined(WITHOUT_KDEVELOP)
+RUN_DEPENDS+= kdevelop:${PORTSDIR}/devel/kdevelop
+.endif
+.if !defined(WITHOUT_KDEADDONS)
+RUN_DEPENDS+= atlantikdesigner:${PORTSDIR}/misc/kdeaddons3
+.endif
+.if !defined(WITHOUT_KDEEDU)
+RUN_DEPENDS+= khangman:${PORTSDIR}/misc/kdeedu3
+.endif
+.if !defined(WITHOUT_KDEADMIN)
+RUN_DEPENDS+= kcron:${PORTSDIR}/sysutils/kdeadmin3
+.endif
+.if !defined(WITHOUT_QUANTA)
+RUN_DEPENDS+= quanta:${PORTSDIR}/www/quanta
+.endif
+.if !defined(WITHOUT_KDETOYS)
+RUN_DEPENDS+= kmoon:${PORTSDIR}/x11-clocks/kdetoys3
+.endif
+.if !defined(WITHOUT_KDEARTWORK)
+RUN_DEPENDS+= kmatrix.kss:${PORTSDIR}/x11-wm/kdeartwork3
.endif
.if make(package)
@@ -45,7 +154,12 @@ USE_KDEBASE_VER=3
NO_BUILD= yes
-do-install: # empty
- ${DO_NADA}
+## Copy Makefile.inc to ${OPTION_FILE} where it will serve as memory of the
+## user's last selection.
+
+do-install:
+.if exists(${WRKDIRPREFIX}${.CURDIR}/Makefile.inc)
+ @${INSTALL_DATA} ${WRKDIRPREFIX}${.CURDIR}/Makefile.inc ${CONFIG_FILE}
+.endif
.include <bsd.port.mk>
diff --git a/x11/kde4/Makefile.kde b/x11/kde4/Makefile.kde
index 9dbb43503b28..a974fa4da75e 100644
--- a/x11/kde4/Makefile.kde
+++ b/x11/kde4/Makefile.kde
@@ -16,7 +16,12 @@ COPY= -c -p
_NO_KDE_FINAL= yes
_NO_KDE_NDEBUG= yes
DISTNAME= ${PORTNAME}-${PKGNAMEPREFIX:S/-$//}-${PORTVERSION}
+# Since KDE 3.1.3, the kde-i18n tarballs have the ${KDE_VERSION}
+# as part of the name of their toplevel directory, while the
+# koffice-i18n ones have not, so we need to take care of that.
+.if ${PORTNAME}==koffice-i18n
WRKSRC= ${WRKDIR}/${PORTNAME}-${PKGNAMEPREFIX:S/-$//}
+.endif
DIST_SUBDIR= KDE/kde-i18n
# nasty hack to force newer timestamps on cache
@@ -68,7 +73,7 @@ CONFIGURE_ARGS+=--enable-final
.if defined(PARALLEL_PACKAGE_BUILD) || !defined(WANT_KDE_DEBUG)
CONFIGURE_ARGS+=--disable-debug
.else
-CONFIGURE_ARGS+=--enable-debug
+CONFIGURE_ARGS+=--enable-debug=full
STRIP=''
.endif # defined(PARALLEL_PACKAGE_BUILD) || !defined(WANT_KDE_DEBUG)
.endif # !defined(_NO_KDE_NDEBUG)
diff --git a/x11/kde4/files/post-configure-message b/x11/kde4/files/post-configure-message
new file mode 100644
index 000000000000..9d9e168eb249
--- /dev/null
+++ b/x11/kde4/files/post-configure-message
@@ -0,0 +1,12 @@
+Configuration finished. Run 'make install' to install the modules
+you selected. Run 'make clean && make' to re-enter the configuration.
+Please note that you CANNOT REMOVE modules through this menu system,
+use pkg_delete instead.
+
+If you do not want the menu to run, put BATCH=YES into /etc/make.conf
+(this will install all KDE modules).
+
+If you do not want the menu to run AND you do not want specific
+modules to be installed, put lines reading 'WITHOUT_<Name-of-Module>=YES'
+into /etc/make.conf (for example WITHOUT_KOFFICE=YES).
+
diff --git a/x11/kde4/pkg-plist b/x11/kde4/pkg-plist
index 549a621fec0c..d5d8d29f02ca 100644
--- a/x11/kde4/pkg-plist
+++ b/x11/kde4/pkg-plist
@@ -1 +1 @@
-@comment this plist intentionally left empty
+%%IS_INTERACTIVE%%etc/kde-meta.conf
diff --git a/x11/kde4/scripts/configure.kde3 b/x11/kde4/scripts/configure.kde3
new file mode 100644
index 000000000000..d7a418ba9cdf
--- /dev/null
+++ b/x11/kde4/scripts/configure.kde3
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+## Create four tempfiles: A tempfile to store the selection from the menu in,
+## one to store the same selection after some transformation (for comm), one to
+## store the contents of ${ALL_MODULES} (also for comm) and one to store
+## the output of pkg_info.
+
+tempselection=`mktemp -t selection`
+tempprocessed=`mktemp -t processed`
+tempallmodules=`mktemp -t allmodules`
+tempinstalled=`mktemp -t installed`
+
+## By default, preselect all modules.
+
+for i in `${ECHO} "${ALL_MODULES}" | ${TR} '[:upper:]' '[:lower:]'`
+ do
+ eval status_$i=ON
+ done
+
+## If a configfile exists and has actual content, parse it and un-select
+## modules accordingly (the configfile is supposed to contain WITHOUT_FOO=yes)
+## lines. We don't check what's really in there, it shouldn't do harm when we
+## set bogus shell variables.
+
+if [ -s "${CONFIG_FILE}" ]; then
+ for i in `${CAT} ${CONFIG_FILE} | ${TR} '[:upper:]' '[:lower:]' \
+ | ${SED} -E -e 's/without_//g' -e 's/=yes//g'`
+ do
+ eval status_$i=OFF
+ done
+
+ ## Try to be ubersmart: Check for all installed packages and preselect
+ ## them. This catches the case where people have added ports without the
+ ## the metaport, run the metaport again and wonder why they have parts
+ ## of KDE installed afterwards that were not selected.
+ ##
+ ## Bugs: This metaport can check for existing packages, but it cannot
+ ## remove packages the user explicitly unselects, but which are
+ ## already installed.
+
+ if [ -f $tempinstalled ];then
+ ${ECHO_MSG}
+ ${ECHO_MSG} -n " Looking for installed modules."
+
+ for i in `${ECHO} "${ALL_MODULES}" | ${TR} '[:upper:]' '[:lower:]'`
+ do
+ ${PKG_INFO} | ${GREP} $i | ${SED} -e 's/-.*//g' >> $tempinstalled
+ ${ECHO_MSG} -n "."
+ done
+
+ for i in `${CAT} $tempinstalled`
+ do
+ eval status_$i=ON
+ done
+ fi
+fi
+
+## Run the menu dialog, except BATCH is defined. We define BATCH automatically
+## if people have WITH_FOO* set in their make.conf or on the commandline.
+## Actually, we don't even run this whole script at all if BATCH is defined...
+## But I'll leave it in just in case, and also as a reference to andreas@
+## who came up with this kind of configuration magic first and from whose ports
+## I've stolen it all. Save the results in the tempselection tempfile.
+
+if [ -z "${BATCH}" ]; then
+ /usr/bin/dialog --title "K Desktop Environment Customized Installation" --clear \
+ --checklist "\n\
+Please select what additional KDE modules you would like to install.\n\n" \
+-1 -1 15 \
+"KDEADDONS" "Additional plugins and scripts for some KDE applications" "$status_kdeaddons" \
+"KDEADMIN" "KDE applications related to system administration" "$status_kdeadmin" \
+"KDEARTWORK" "Additional themes, sounds, wallpapers and window styles" "$status_kdeartwork" \
+"KDEVELOP" "Powerful IDE for developing KDE/Qt-based applications" "$status_kdevelop" \
+"KDEEDU" "Collection of entertaining, educational programs" "$status_kdeedu" \
+"KDEGAMES" "Games like kolf, patience, atlantik, etc" "$status_kdegames" \
+"KDEGRAPHICS" "Graphics utilities like kview, kpaint, kghostview, etc" "$status_kdegraphics" \
+"KDEMULTIMEDIA" "Multimedia utilities like noatun, kmix, etc" "$status_kdemultimedia" \
+"KDENETWORK" "Network-related programs like kmail, knode, kppp, etc" "$status_kdenetwork" \
+"KOFFICE" "Office Suite including wordprocessor, spreadsheet, etc" "$status_koffice" \
+"KDEPIM" "Personal Information Management" "$status_kdepim" \
+"KDESDK" "KDE software development kit" "$status_kdesdk" \
+"KDETOYS" "Miscellaneous small applications" "$status_kdetoys" \
+"KDEUTILS" "Utilities like kcalc, kcharselect, ark, kedit, etc" "$status_kdeutils" \
+"QUANTA" "Comprehensive website development environment" "$status_quanta" \
+2> $tempselection
+
+ ## Save the return value from dialog.
+
+ retval=$?
+
+ ## Write out all the module names into a newline-delimited list...
+
+ if [ -f $tempallmodules ]; then
+ ${ECHO} "$ALL_MODULES" | ${SED} -E -e 's/[[:space:]]+/ /g' | ${TR} '[:space:]' '\n' > $tempallmodules
+ fi
+
+ ## ...do the same for the selection made in the dialog, comm -23 the
+ ## two files to get the delta and set that as shell variables.
+
+ if [ -s $tempselection ]; then
+ ${CAT} $tempselection | ${SED} -E -e 's/[[:space:]]+/ /g' \
+ -e 's/"//g' | ${TR} '[:space:]' '\n' > $tempprocessed
+ set `/usr/bin/comm -23 $tempallmodules $tempprocessed`
+ fi
+
+ ## Clean out the tempfiles.
+
+ rm -f $tempselection $tempprocessed $tempallmodules $tempinstalled
+
+ ## If the user selected "Cancel" in the dialog, exit.
+
+ if [ $retval = 1 ]; then
+ ${ECHO_MSG} "Aborting"
+ exit 1
+ fi
+fi
+
+## Create Makefile.inc
+
+${MKDIR} -p ${WRKDIRPREFIX}${CURDIR}
+${TOUCH} ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
+
+## Populate Makefile.inc by writing out the delta we saved above.
+
+while [ $1 ]; do
+ ${ECHO} "WITHOUT_$1=yes" >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc;
+ shift
+done