Make gnu symlink creation work again

Since the default configure_args is now expanded immediately it cannot depend
on variables defined later.
To fix this for users of gnu_link_progs another API change is necessary.

gnu_link_progs is now a private array of programs to link. The
private gnu_link function is renamed do_gnu_link. A new public function
named gnu_link is added which handles populating gnu_link_progs and
modifying configure_args.
This commit is contained in:
Tom G. Christensen 2013-10-10 11:56:46 +02:00
parent 6620dc6854
commit 6e408949ea
2 changed files with 26 additions and 12 deletions

View File

@ -152,6 +152,8 @@ patch_prefix="-p1"
gnu_prefix=g
# GNU dir
_gnudir=gnu
# Add --program-prefix to configure if gnu_link is requested?
gnu_configure=1
# Distfiles should be named like this
# <name>-<version>-<pkgver>.sb-<os>-<cpu>-<pkgdirdesig>
@ -764,25 +766,39 @@ check_changelog()
fi
}
# gnu_link: Setup links in $prefix/$_gnudir
# do_gnu_link: Create symlinks in $prefix/$_gnudir
# params: list of programs to link
# For each program given, create a symlink from $prefix/${_bindir}/program to
# $prefix/gnu with the first character stripped from the name
gnu_link()
do_gnu_link()
{
local program
${__mkdir} -p ${stagedir}${prefix}/$_gnudir
setdir ${stagedir}${prefix}/$_gnudir
cd ${stagedir}${prefix}/$_gnudir
for program in $@
do
local dest=${program:1}
echo "Linking $prefix/${_bindir}/$program to $prefix/$_gnudir/$dest"
${__ln_s} ../${_bindir}/$program ${program:1}
${__ln_s} ../${_bindir}/$program ${dest}
done
}
# gnu_link: Prepare for gnu symlink setup
# params: list of programs to link
# Each param is added to the internal gnu_link_progs array
# It will also add --program-prefix=$gnu_prefix to configure_args if requested
gnu_link()
{
local item
for item in "$@"
do
gnu_link_progs+=($item)
done
[ $gnu_configure -eq 1 ] && configure_args=(--program-prefix=$gnu_prefix "${configure_args[@]}")
}
#####################################################
# Define generic functions for different build stages
#####################################################
@ -934,13 +950,11 @@ generic_install()
if [ $autonuke -eq 1 ]; then
do_autonuke
fi
if [ -n "$gnu_link_progs" ]; then
# There are programs that should be linked to $prefix/$_gnudir
local prog
for prog in $gnu_link_progs; do
gnu_link ${gnu_prefix}${prog}
done
fi
# If there are programs that should be linked to $prefix/$_gnudir
local prog
for prog in "${gnu_link_progs[@]}"; do
do_gnu_link ${gnu_prefix}${prog}
done
}
# generic_install_perl(): Install already built perl module

View File

@ -96,7 +96,7 @@ _mandir=share/man
_infodir=share/info
# Default configure args
configure_args=(${gnu_link_progs:+--program-prefix=$gnu_prefix} --prefix=$prefix --mandir=${prefix}/${_mandir} --infodir=${prefix}/${_infodir})
configure_args=(--prefix=$prefix --mandir=${prefix}/${_mandir} --infodir=${prefix}/${_infodir})
# Host specific configuration
[ -r $buildpkgscripts/config.`hostname`.solaris ] && . $buildpkgscripts/config.`hostname`.solaris