LinuxQuestions.org
Visit Jeremy's Blog.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 11-24-2010, 06:15 PM   #1
spoovy
Member
 
Registered: Feb 2010
Location: London, UK
Distribution: Scientific, Ubuntu, Fedora
Posts: 373

Rep: Reputation: 43
Problem with Slackbuilds - child process / file not found


I am on my way to building and installing all the many many deps for tomboy at the moment. Everything was going well with my downloading many different slackbuild scripts, tarred files etc and all good.

Until suddenly I keep getting the same nonsensical error, saying that a file isn't present when it clearly is. This happened with three different builds, and I really dont' get it.


Code:
root@poppy:~/tomboy# ls
tomboy-1.2.1.tar.bz2  tomboy.Slackbuild*
root@poppy:~/tomboy# ./tomboy.Slackbuild 
tar (child): /root/tomboy/tomboy.Slackbuild-1.2.1.tar.bz2: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Seems like the slackbuild scripts are trying to add the name of the tarred package onto the script name or something? But why happen three times on the trot? surely it's not the same problem with three differnet scripts?

I'm sure this is something simple but it's late and i can't figure it out and if I don't ask now i'll forget tomorrow.

Thanks
 
Old 11-24-2010, 07:12 PM   #2
mRgOBLIN
Slackware Contributor
 
Registered: Jun 2002
Location: New Zealand
Distribution: Slackware
Posts: 999

Rep: Reputation: 231Reputation: 231Reputation: 231
I think we'd need to see the slackbuild to diagnose this...
Is this a GSB Slackbuild by some chance?
 
Old 11-24-2010, 07:44 PM   #3
andrewthomas
Senior Member
 
Registered: May 2010
Location: Chicago Metro
Distribution: Arch, Gentoo, Slackware
Posts: 1,690

Rep: Reputation: 312Reputation: 312Reputation: 312Reputation: 312
Quote:
Originally Posted by mRgOBLIN View Post
I think we'd need to see the slackbuild to diagnose this...
Is this a GSB Slackbuild by some chance?
I would say that it is.
Code:
#!/bin/bash
# Version: 1.7 GSB Package SlackBuild.
# Copyright (c) 2007,2008,2009 Darren 'Tadgy' Austin <darren (at) gnomeslackbuild.org>
# Copyright (c) 2007,2008,2009 Steve Kennedy <steve (at) gnomeslackbuild.org>
# All rights reserved.
#
# Licenced under the terms of the GNU General Public Licence version 3.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.

# Package variables.
BUILD=1
VERSION=1.2.1

# List any packages here that are required to build this package.
# The list is space seperated and case sensitive.
REQUIRED_PACKAGES="gnome-sharp mono gtk-sharp ndesk-dbus-glib mono-addins gnome-desktop-sharp"

# Build variables.
TAG=${TAG:-gsb}
ARCH=${ARCH:-i486}
TUNE=${TUNE:-i486}
DISTRO=${DISTRO:-slackware}
TMP=${TMP:-/tmp}
PKGDEST=${PKGDEST:-$TMP}

# Script variables.
PKGNAME=$(basename $0 .SlackBuild)
PKG=$TMP/package-$PKGNAME
CWD=$(pwd)
NOCLEANUP=0
FORCEBUILD=0

# Usage.
function usage() {
  cat << EOF
Usage: ${0##*/} [options]

Options:  --force       The package will not be built if a package of the same
                        name is already installed, or any of the packages
                        required to build are missing.  This option over-rides
                        these checks and attempts a build anyway.
          --no-cleanup  By default any temporary source, build and package
                        directories will be deleted once the package is built.
                        This option prevents those files from being removed.
          --help        Show this help screen.
EOF
}

# Parse command line arguments.
while [ $# -gt 0 ]; do
  if [ "$1" = "-force" ] || [ "$1" = "--force" ]; then
    FORCEBUILD=1
    shift
  elif [ "$1" = "-no-cleanup" ] || [ "$1" = "--no-cleanup" ]; then
    NOCLEANUP=1
    shift
  elif [ "$1" = "-help" ] || [ "$1" = "--help" ]; then
    usage
    exit 0
  else
    echo "${0##*/}: Unknown option: $1"
    exit 1
  fi
done

# Package requirements and installation checks.
[ "$FORCEBUILD" = "0" ] && {
  function check_installed() {
    ls -1 /var/log/packages | grep "^${1}-[^-]*-[^-]*-[^-]*$" >/dev/null 2>&1
    return $?
  }

  check_installed "$PKGNAME" && {
    echo "${0##*/}: Remove installed '$PKGNAME' package before build."
    exit 1
  }

  for REQ in $REQUIRED_PACKAGES; do
    check_installed "$REQ" || {
      echo "${0##*/}: Required package '$REQ' not installed."
      exit 1
    }
  done
}

# Temporary space and package storage.
mkdir -p $TMP
rm -rf $PKG
mkdir -p $PKG
mkdir -p $PKG/install
mkdir -p $PKGDEST

# Decompress archive.
cd $TMP &&
tar xjf $CWD/$PKGNAME-$VERSION.tar.bz2 &&
cd $PKGNAME-$VERSION || exit 1

# Apply ARCH specific patches.
if [ "$ARCH" = "i486" -o "$ARCH" = "i586" -o "$ARCH" = "i686" ]; then
  echo "${0##*/}: Applying any patches for $ARCH"
  #cat $CWD/patches/foo.patch | patch -p0 --verbose
elif [ "$ARCH" = "x86_64" ]; then
  echo "${0##*/}: Applying any patches for $ARCH"
  #cat $CWD/patches/foo.patch | patch -p0 --verbose
elif [ "$ARCH" = "powerpc" ]; then
  echo "${0##*/}: Applying any patches for $ARCH"
  #cat $CWD/patches/foo.patch | patch -p0 --verbose
fi

# Fix permissions for building.
chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;

# Configure, Tuning, GCC and Make options.
CONFIGURE_FLAGS=${GSB_CONFIGURE_FLAGS:-""}
if [ "$ARCH" = "i486" -o "$ARCH" = "i586" ]; then
  TUNE_CFLAGS=${GSB_TUNE_CFLAGS:-"-O2 -march=$ARCH -mtune=$TUNE"}
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  TUNE_CFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
  TUNE_CFLAGS="-O2"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
    TUNE_CFLAGS=${GSB_TUNE_CFLAGS:-"-O2 -fPIC"}
    LIBDIRSUFFIX="64"
elif [ "$ARCH" = "powerpc" ]; then
  TUNE_CFLAGS=${GSB_TUNE_CFLAGS:-"-O2 -march=$ARCH"}
fi
EXTRA_CFLAGS=${GSB_EXTRA_CFLAGS:-""}
MAKE_FLAGS=${GSB_MAKE_FLAGS:-""}

# Configure.
CFLAGS="$TUNE_CFLAGS $EXTRA_CFLAGS" CXXFLAGS="$TUNE_CFLAGS $EXTRA_CFLAGS" \
  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib \
  --mandir=/usr/man $CONFIGURE_FLAGS \
  --libdir=/usr/lib \
  --build=$ARCH-$DISTRO-linux \
  --target=$ARCH-$DISTRO-linux \
  --disable-schemas-install \
  --disable-update-mimedb \
  --enable-gnome \
  --disable-evolution \
  || exit 1

# Build and install.
make $MAKE_FLAGS &&
make $MAKE_FLAGS DESTDIR=$PKG install || exit 1

# Fix for pkgconfig files on x86_64 platforms
if [ "$ARCH" = "x86_64" -a -d $PKG/usr/lib/pkgconfig ]; then
  mkdir -p $PKG/usr/lib64 ;
  mv $PKG/usr/lib/pkgconfig $PKG/usr/lib64 ;
fi ;

# Strip debugging symbols.
{ find $PKG | xargs file | egrep "executable|shared object" | grep "ELF" | \
  cut -d: -f1 | xargs strip --strip-unneeded ; } 2>/dev/null

# Compress and fix manpage links.
[ -e $PKG/usr/man ] && {
  find $PKG/usr/man -type f -name \*.? -exec gzip -9f {} \;
  find $PKG/usr/man -type l -name \*.? -printf \
    "( cd '%h'; [ -e '%l.gz' ] &&
     { rm -f '%f'; ln -sf '%l.gz' '%f.gz'; } );\n" | bash
}

# Copy extra documentation into package.
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION
cp -a AUTHORS COPYING* NEWS README \
  $PKG/usr/doc/$PKGNAME-$VERSION
find $PKG/usr/doc/$PKGNAME-$VERSION/ -type f -exec chmod 644 {} \;
chown -R root:root $PKG/usr/doc/$PKGNAME-$VERSION

# Add schemas install to the doinst.sh if schemas are found.
[ -d $PKG/etc/gconf/schemas ] && {
# Make sure we have gconftool installed 
echo "if [ -x usr/bin/gconftool-2 ]; then" >>$PKG/install/doinst.sh
( cd $PKG/etc/gconf/schemas
for schema in *; do
  if [ -z "$(grep gconfentry ${schema})" ]; then
    # Install schemas
    echo "GCONF_CONFIG_SOURCE=\"xml::etc/gconf/gconf.xml.defaults\" \
    usr/bin/gconftool-2 --makefile-install-rule etc/gconf/schemas/${schema} >/dev/null 2>&1" \
    >>$PKG/install/doinst.sh
  else
    # Load default schema if an entry file
    echo "GCONF_CONFIG_SOURCE=\"xml::etc/gconf/gconf.xml.defaults\" \
    usr/bin/gconftool-2 --direct --load etc/gconf/schemas/${schema} >/dev/null 2>&1" \
    >>$PKG/install/doinst.sh
  fi
done
)
# Finish off gconf block
echo "fi" >>$PKG/install/doinst.sh
}

# Package meta files
for FILE in doinst.sh slack-desc slack-required slack-conflicts slack-suggests
do
  [ -e $CWD/$FILE ] && {
    cat $CWD/$FILE >>$PKG/install/$FILE
  }
done

# Create the package
cd $PKG
makepkg -p -l y -c n $PKGDEST/$PKGNAME-${VERSION//-/_}-$ARCH-${BUILD}${TAG}.txz

# Cleanup
if [ "$NOCLEANUP" = "0" ]; then
  rm -rf $PKG $TMP/$PKGNAME-$VERSION
fi;
PKGNAME=$(basename $0 .SlackBuild) So tar xjf $CWD/$PKGNAME-$VERSION.tar.bz2 looks for tomboy.Slackbuild-1.2.1.tar.bz2 which does not exist in the current directory, but tomboy-1.2.1.tar.bz2 does. You need to alter the build.
 
Old 11-24-2010, 08:44 PM   #4
T3slider
Senior Member
 
Registered: Jul 2007
Distribution: Slackware64-14.1
Posts: 2,367

Rep: Reputation: 843Reputation: 843Reputation: 843Reputation: 843Reputation: 843Reputation: 843Reputation: 843
I believe the problem is, the file is named .Slackbuild but $(basename $0 .SlackBuild) tries to remove the suffix .SlackBuild (and it is case sensitive). Renaming the file tomboy.SlackBuild should solve the problem, unless I'm mistaken.
 
Old 11-25-2010, 04:01 AM   #5
spoovy
Member
 
Registered: Feb 2010
Location: London, UK
Distribution: Scientific, Ubuntu, Fedora
Posts: 373

Original Poster
Rep: Reputation: 43
Thanks guys. I just changed the name of the slackbuild from tomboy.Slackbuild to tomboy and it worked fine. The script was from Slacky btw.

It was very late last night
 
Old 11-25-2010, 04:33 AM   #6
GazL
LQ Veteran
 
Registered: May 2008
Posts: 6,918

Rep: Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035Reputation: 5035
Yep, bit of a unreliable way to parse $0 that.

Code:
PKGNAME=${0%.*}
PKGNAME=${PKGNAME##*/}
... might have been better, and doesn't rely on calling an external process.

Though I think that if this had been one of mine I'd have been inclined to just hard code the pkgname in case I ever wanted to version the build script for some reason.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Difference between Child THREAD and Child PROCESS whho Linux - Newbie 12 02-16-2015 12:22 AM
Under which circumstances a child process creates another child process using fork? mitsulas Programming 3 12-08-2009 08:16 AM
Problem with child process karabaja4 Programming 4 07-29-2008 03:05 AM
How to kill a Child and all its subsequent child process in C shayer009 Programming 3 12-04-2007 12:40 AM
RealPlayer child process "_LOCATION_/realplay" not found error krome Red Hat 1 11-11-2003 02:23 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 12:13 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration