Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Sep 1998 11:58:06 -0600 (MDT)
From:      Brett Taylor <brett@peloton.physics.montana.edu>
To:        Dave Ason <dgason@mindspring.com>
Cc:        freebsd-questions@FreeBSD.ORG
Subject:   Re: Installing KDE?
Message-ID:  <Pine.BSF.4.02A.9809111151030.234-200000@peloton.physics.montana.edu>
In-Reply-To: <35F841F7.2ADE1AC9@mindspring.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Hi,

>     I would like to install KDE. I figured the easiest thing to do was
> to download the "meta-port", kde-1.0, untar it and type "make" at the
> dollar prompt. I did this and here's what happened:
> 
> bash-2.01$ make
> >> No MD5 checksum file.
> ===>  Extracting for kde-1.0
> ===>  kde-1.0 depends on shared library: kdecore\.1\.0 - not found
> ===>  Verifying install for kdecore\.1\.0 in /usr/ports/x11/kdelibs

This occurs because the kde meta port actually builds lots of other ports.
See the Makefile:

LIB_DEPENDS=    kdecore\\.1\\.0:${PORTSDIR}/x11/kdelibs
RUN_DEPENDS=    kwm:${PORTSDIR}/x11/kdebase \
                kcalc:${PORTSDIR}/misc/kdeutils \
                kmahjongg:${PORTSDIR}/games/kdegames \
                kghostview:${PORTSDIR}/graphics/kdegraphics \
                kmail:${PORTSDIR}/net/kdenetwork \
                kmedia:${PORTSDIR}/audio/kdemultimedia

This means that it will try to build the kdelibs, kdebase, kdeutils,
kdegames, kdegraphics, and kdemultimedia port.  This will take a LONG time
to download all the dependencies for non-KDE ports if you don't have them
less yet the KDE tarballs.  :-)

If you want to just try it out I would suggest trying the kdebase port.
That has the following dependencies:

LIB_DEPENDS=    gif\\.[23]\\.:${PORTSDIR}/graphics/giflib \
                jpeg\\.9\\.:${PORTSDIR}/graphics/jpeg \
                kdecore\\.1\\.[0-9]:${PORTSDIR}/x11/kdelibs \
                kdeui\\.1\\.[0-9]:${PORTSDIR}/x11/kdelibs \
                jscript\\.0\\.9[0-9]:${PORTSDIR}/x11/kdelibs \
                khtmlw\\.1\\.[0-9]:${PORTSDIR}/x11/kdelibs \
                kfm\\.1\\.[0-9]:${PORTSDIR}/x11/kdelibs \
                mediatool\\.1\\.[0-9]:${PORTSDIR}/x11/kdelibs

You'll then need giflib (version .23), jpeg (version .9) and the kdelibs
port.

This will get you the base KDE system.  You can then add the other bits as
you want/need them.  

One other possible option is to use Wolfram Schneider's portcheckout
utility.  I've attached it (it was JUST sent in to ports the other day,
but not as a PR AFAIK).  It will fetch a port and all of its dependencies
that you don't have.  Note I have not tried this yet.

Good luck.

Brett
******************************************************************
Brett Taylor            brett@peloton.physics.montana.edu
http://peloton.physics.montana.edu/brett/

"There is something uncanny in the noiseless rush of the cyclist,
 as he comes into view, passes by, and disappears."
					 -   Popular Science, 1891


[-- Attachment #2 --]

From wosch@panke.de.freebsd.org Fri Sep 11 11:55:45 1998
Date: Thu, 10 Sep 1998 23:46:11 +0200 (MET DST)
From: Wolfram Schneider <wosch@panke.de.freebsd.org>
To: ports@FreeBSD.ORG
Subject: Portcheckout script

    [ The following text is in the "ISO-8859-1" character set. ]

    [ Your display is set for the "US-ASCII" character set. Some ]

    [ characters may be displayed incorrectly. ]


I wrote a script to check out a FreeBSD port *and* all runtime and
buildtime depending ports into the current working directory. The
output is written to stdout as an executable shell-script.

Here is the manpage and the script.


NAME
        portcheckout - checkout ports and all depending ports

SYNOPSIS
        portcheckout ports [...]

DESCRIPTION
    Portcheckout(1) checks out a FreeBSD port and all runtime and buildtime
    depending ports into the current working directory. The output is
    written to stdout as an executable shell-script.

    Compiling a FreeBSD usually require a full tree of ports in /usr/port. A
    cvs checkout or a cvs update command takes a very long time and need
    much free space.

    With portcheckout, you checkout only the parts of the port tree which
    you really need. This is a magnitude faster!

FILES
    Portcheckout depend on a an up to date INDEX file in /usr/ports/INDEX.

EXAMPLE
      $cd /tmp || exit 1
      PORTSDIR="/tmp/ports"; export PORTSDIR
       
      # checkout ports
      # gnuplot-340
      cvs co ports/math/gnuplot
       
      # checkout depencies
      # png-1.0.2
      cvs co ports/graphics/png
      # gd-1.3
      cvs co ports/graphics/gd
       
      # Compile and install gnuplot-340
      (cd ports/math/gnuplot && make all install clean)

AUTHOR
    Wolfram Schneider <wosch@FreeBSD.org>, Berlin, September 1998.


#!/usr/local/bin/perl
# Copyright (c) Sep 1998 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $Id: ruplot.pl,v 1.2 1998/09/06 13:58:41 wosch Exp $
#
# portcheckout - do a `cvs checkout' for given ports and
#                all depending ports.

=pod

=head1 NAME

    portcheckout - checkout ports and all depending ports

=head1 SYNOPSIS

    portcheckout ports [...]

=head1 DESCRIPTION


Portcheckout(1) checks out a FreeBSD port and all runtime and
buildtime depending ports into the current working directory.
The output is written to stdout as an executable shell-script.

Compiling a FreeBSD usually require a full tree of ports
in /usr/port. A cvs checkout or a cvs update command 
takes a very long time and need much free space.

With portcheckout, you checkout only the parts of the port 
tree which you really need. This is a magnitude faster! 

=head1 FILES

Portcheckout depend on a an up to date INDEX file in /usr/ports/INDEX.

=head1 EXAMPLE

  $cd /tmp || exit 1
  PORTSDIR="/tmp/ports"; export PORTSDIR
   
  # checkout ports
  # gnuplot-340
  cvs co ports/math/gnuplot
   
  # checkout depencies
  # png-1.0.2
  cvs co ports/graphics/png
  # gd-1.3
  cvs co ports/graphics/gd
   
  # Compile and install gnuplot-340
  (cd ports/math/gnuplot && make all install clean)

=head1 AUTHOR

Wolfram Schneider <wosch@FreeBSD.org>, Berlin, September 1998.

=cut


$dir = `pwd`; chomp($dir);
$index = '/usr/ports/INDEX';

sub usage {
    warn "usage portcheckout ports ... \n\n";
    sleep 1;

    $ENV{'PAGER'} = 'cat';
    exec pod2text, $0;
    exit 2;
}

&usage if $#ARGV < 0;

sub read_index {
    local($index, *port, @ports) = @_;

    my $string;
    for($i = 0; $i <= $#ports; $i++) {
	$string .= '^' . $ports[$i];
	$string .= '|' if $i < $#ports;
    }

    die "Cannot open INDEX file: $index: $!\n" if (! -r $index);

    # egrep is fast than perl reg expr
    open(INDEX, "-|") || exec ('egrep', '--', $string, $index) ||
        die "open $index: $!\n";


    my $dep;
    my ($distributionname, $portpath, $installationprefix, 
	 $comment, $descriptionfile, $maintainer, $categories,
	$builddeps, $rundeps);

    while(<INDEX>) {

	($distributionname, $portpath, $installationprefix, 
	 $comment, $descriptionfile, $maintainer, $categories,
	 $builddeps, $rundeps) = split('\|');

	$portpath =~ s%/usr/%%;
	
	$port{"$distributionname"} = $portpath;
	    
	# save depencies
	$depends_no{"$distributionname"}++;

	foreach $dep (split(' ', $builddeps)) {
	    $depends{"$dep"}++;
	}

	foreach $dep (split(' ', $rundeps)) {
	    $depends{"$dep"}++;
	}
    }
    close INDEX;
}    

&read_index($index, *port, @ARGV);
{
    my @data = keys %port;
    die "No matching ports found for: @ARGV\n" 
	if $#data < 0;
}

# shell header
print "cd $dir || exit 1\n";
print qq{PORTSDIR="$dir/ports"; export PORTSDIR\n};
# uncomment next line if you have write permission to /usr/ports/distfiles
#print qq{DISTDIR="/usr/ports/distfiles"; export DISTDIR\n};
print "\n# checkout ports\n";

# checkout main ports
foreach (keys %port) {
    print "# $_\n";
    print qq|cvs co $port{$_}\n|;
}

# avoid cycles of ports 
# Port B depend on A, C depend on B and A
foreach (keys %depends_no) {
    undef $depends{"$_"};
}

# checkout depending ports
my @list = keys %depends;
if ($#list >= 0) {
    &read_index($index, *portdepends, @list);

    print "\n# checkout depencies\n";
    foreach (keys %portdepends) {
	# already checked out as master port
	next if $port{"$_"};

	print "# $_\n";
	print qq|cvs co $portdepends{$_}\n|;
    }
}

# Compile and install
foreach (keys %port) {
    print "\n# Compile and install $_\n";
    print qq|(cd $port{$_} && make all install clean)\n|;
}

-- 
Wolfram Schneider <wosch@freebsd.org> http://www.freebsd.org/~w/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.02A.9809111151030.234-200000>