diff --git a/bash/bashrc b/bash/bashrc index 0963431fd328790f0c988e4464260a759c69fc0f..53f334d1d18cc538bbc69d390636f4fa27eb7fed 100644 --- a/bash/bashrc +++ b/bash/bashrc @@ -2,5 +2,68 @@ # Check for an interactive session [ -z "$PS1" ] && return -alias ls='ls --color=auto' +# enable bash completion in interactive shells +if [ -f /etc/bash_completion ]; then + . /etc/bash_completion +fi + +# add autocompletion for sudo +complete -cf sudo + +# options +shopt -s cdspell # autocorrects cd misspellings +shopt -s checkwinsize # update the value of LINES and COLUMNS after each command if altered +shopt -s cmdhist # save multi-line commands in history as single line +shopt -s dotglob # include dotfiles in pathname expansion +shopt -s expand_aliases # expand aliases +shopt -s extglob # enable extended pattern-matching features +shopt -s histappend # append to (not overwrite) the history file +shopt -s hostcomplete # attempt hostname expansion when @ is at the beginning of a word +shopt -s nocaseglob # pathname expansion will be treated as case-insensitive + +# exports +export HISTSIZE=10000 # bash history will save N commands +export HISTFILESIZE=${HISTSIZE} # bash will remember N commands +export HISTCONTROL=ignoreboth # ingore duplicates and spaces (ignoreboth, ignoredups, ignorespace) + +# aliases +alias ls='ls --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F' +alias ll='ls -l --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F' +alias la='ls -la --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F' +alias l1='ls -1 --group-directories-first --color=auto -F' +alias pacman='sudo pacman' +alias grep='grep --color=tty -d skip' +alias cp="cp -i" # confirm before overwriting something +alias df='df -h' # human-readable sizes +alias free='free -m' # show sizes in MB +alias vp='vim PKGBUILD' +alias vs='vim SPLITBUILD' +alias checkip='wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1' +alias yt='youtube-dl -b -t $1' + +# ex - archive extractor +# usage: ex +ex () +{ + if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1;; + *.7z) 7z x $1 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac + else + echo "'$1' is not a valid file" + fi +} + +# prompt PS1='[\u@\h \W]\$ ' diff --git a/bc/PKGBUILD b/bc/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..5de36b3b8905010b13789ff3b3bb642510e17faf --- /dev/null +++ b/bc/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 58247 2009-11-06 14:41:31Z eric $ +# Maintainer: dorphell + +pkgname=bc +pkgver=1.06 +pkgrel=7 +pkgdesc="An arbitrary precision calculator language" +arch=('i686' 'x86_64') +url="http://www.gnu.org/software/bc/" +license=('GPL') +depends=('readline') +replaces=('bc-readline') +conflicts=('bc-readline') +install=bc.install +source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz + build-fix.patch bc-1.06-info-dir-entry.patch) +md5sums=('d44b5dddebd8a7a7309aea6c36fda117' 'fc7ecbd9e55ef04c6d3a495692626116'\ + 'b6fe9869830aca0d34badf810fe0cfb3') +sha1sums=('c8f258a7355b40a485007c40865480349c157292' '3af67c59e2232b9329ff0c1cf49d1a8a1cf87cd7'\ + 'c15c2a301ba80cf4d3c03a6e164f4e57fa86e4a2') + +build() { + CFLAGS="$CFLAGS -O3" + cd "${srcdir}/${pkgname}-${pkgver}" + patch -p1 -i "${srcdir}/build-fix.patch" || return 1 + patch -p1 -i "${srcdir}/bc-1.06-info-dir-entry.patch" || return 1 + ./configure --prefix=/usr --mandir=/usr/share/man \ + --infodir=/usr/share/info --with-readline || return 1 + make LEX="flex -I" || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -rf $pkgdir/usr/share/info/dir +} diff --git a/bc/bc-1.06-info-dir-entry.patch b/bc/bc-1.06-info-dir-entry.patch new file mode 100644 index 0000000000000000000000000000000000000000..8c1344c828a417e29e50cae3834b625749332c5a --- /dev/null +++ b/bc/bc-1.06-info-dir-entry.patch @@ -0,0 +1,11 @@ +--- bc-1.06/doc/bc.info.info-dir-entry 2000-10-03 20:36:31.000000000 +0200 ++++ bc-1.06/doc/bc.info 2003-01-06 14:07:40.000000000 +0100 +@@ -1,5 +1,8 @@ + This is bc.info, produced by makeinfo version 4.0 from bc.texi. + ++START-INFO-DIR-ENTRY ++* bc: (bc). Arbritrary precision calculator language. ++END-INFO-DIR-ENTRY +  + File: bc.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + diff --git a/bc/bc.install b/bc/bc.install new file mode 100644 index 0000000000000000000000000000000000000000..e1e2eaa00c7e60522ac7498a4808316180c346b4 --- /dev/null +++ b/bc/bc.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(bc.info.gz dc.info.gz) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/bc/build-fix.patch b/bc/build-fix.patch new file mode 100644 index 0000000000000000000000000000000000000000..98a40820a3a550dfedc5165380e98ba3a3f89b38 --- /dev/null +++ b/bc/build-fix.patch @@ -0,0 +1,13 @@ +diff -wbBur bc-1.06/bc/scan.l bc-1.06.my/bc/scan.l +--- bc-1.06/bc/scan.l 2000-09-13 22:25:47 +0400 ++++ bc-1.06.my/bc/scan.l 2006-12-25 12:39:34 +0300 +@@ -143,7 +143,9 @@ + + /* Definitions for readline access. */ + extern FILE *rl_instream; ++#if 0 + _PROTOTYPE(char *readline, (char *)); ++#endif + + /* rl_input puts upto MAX characters into BUF with the number put in + BUF placed in *RESULT. If the yy input file is the same as diff --git a/boost/PKGBUILD b/boost/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..d49f80015c50126c7f08e6f87d9291006548c66b --- /dev/null +++ b/boost/PKGBUILD @@ -0,0 +1,73 @@ +# $Id: PKGBUILD 72545 2010-03-18 13:05:20Z ibiru $ +# Maintainer: kevin +# Contributor: Giovanni Scafora +# TU: Kritoke +# Contributor: Luca Roccia + +pkgname=boost +pkgver=1.41.0 +_boostver=1_41_0 +pkgrel=1 +pkgdesc="Free peer-reviewed portable C++ source libraries" +arch=('i686' 'x86_64') +url="http://www.boost.org/" +depends=('bzip2' 'zlib') +makedepends=('python>=2.6') +optdepends=('python: for python bindings') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}_${_boostver}.tar.gz + fix-gzip-crc.patch + serialization_fix.patch) +license=('custom') +options=('!ccache') + +build() { + cd "${srcdir}/${pkgname}_${_boostver}" + patch -Np1 -i $srcdir/fix-gzip-crc.patch || return 1 + patch -Np1 -i $srcdir/serialization_fix.patch || return 1 + + # build bjam + cd ${srcdir}/${pkgname}_${_boostver}/tools/jam/src + ./build.sh cc || return 1 + + _bindir="bin.linuxx86" + [ "${CARCH}" = "x86_64" ] && _bindir="bin.linuxx86_64" + + install -m755 -d ${pkgdir}/usr/bin + install -m755 ${_bindir}/bjam ${pkgdir}/usr/bin/bjam || return 1 + + # build bcp + cd ${srcdir}/${pkgname}_${_boostver}/tools/bcp + ../jam/src/${_bindir}/bjam || return 1 + install -m755 ${srcdir}/${pkgname}_${_boostver}/dist/bin/bcp \ + ${pkgdir}/usr/bin/bcp || return 1 + + # build libs + cd ${srcdir}/${pkgname}_${_boostver} + # default "minimal" install: "release link=shared,static + # runtime-link=shared threading=multi" + # --layout=tagged will add the "-mt" suffix for multithreaded libraries + # and installs includes in /usr/include/boost. + # --layout=system no longer adds the -mt suffix for multi-threaded libs. + ./tools/jam/src/${_bindir}/bjam \ + release debug-symbols=off threading=single,multi \ + runtime-link=shared link=shared,static \ + cflags=-fno-strict-aliasing \ + --prefix=${pkgdir}/usr \ + -sPYTHON_ROOT=/usr \ + -sPYTHON_VERSION=2.6 \ + -sTOOLS=gcc \ + --layout=tagged \ + install || return 1 + + # build pyste + cd ${srcdir}/${pkgname}_${_boostver}/libs/python/pyste/install + python setup.py install --root=${pkgdir} || return 1 + + # license + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 ${srcdir}/${pkgname}_${_boostver}/LICENSE_1_0.txt \ + ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 +} +md5sums=('ddb04c9b9164a36a91dcf36819666dd9' + '682f124a765b2935c7352f38c08848cc' + '01337211d40a4a4c9b83c481baade701') diff --git a/boost/fix-gzip-crc.patch b/boost/fix-gzip-crc.patch new file mode 100644 index 0000000000000000000000000000000000000000..1707ff6785b70180c86fa5d2e3c22561bee5d656 --- /dev/null +++ b/boost/fix-gzip-crc.patch @@ -0,0 +1,24 @@ +diff -Nur boost_1_41_0.orig/boost/iostreams/filter/zlib.hpp boost_1_41_0/boost/iostreams/filter/zlib.hpp +--- boost_1_41_0.orig/boost/iostreams/filter/zlib.hpp 2009-10-14 18:20:36.000000000 +0300 ++++ boost_1_41_0/boost/iostreams/filter/zlib.hpp 2009-12-13 16:47:53.078056507 +0200 +@@ -20,6 +20,7 @@ + #include // allocator, bad_alloc. + #include + #include // MSVC, STATIC_CONSTANT, DEDUCED_TYPENAME, DINKUM. ++#include // uint*_t + #include + #include // buffer size. + #include +@@ -43,9 +44,9 @@ + namespace zlib { + // Typedefs + +-typedef unsigned int uint; +-typedef unsigned char byte; +-typedef unsigned long ulong; ++typedef uint32_t uint; ++typedef uint8_t byte; ++typedef uint32_t ulong; + + // Prefix 'x' prevents symbols from being redefined when Z_PREFIX is defined + typedef void* (*xalloc_func)(void*, zlib::uint, zlib::uint); diff --git a/boost/layout-tagged.patch b/boost/layout-tagged.patch new file mode 100644 index 0000000000000000000000000000000000000000..05e60ec91749c7465c970d8d3327b16cbb16b03a --- /dev/null +++ b/boost/layout-tagged.patch @@ -0,0 +1,135 @@ +Patch to add --layout=tagged option which has the same behaviour as the +previous --layout=system. This comes from boost svn changeset r53015 +https://svn.boost.org/trac/boost/changeset/53015/trunk + +--- Jamroot.orig 2009-06-15 23:01:28.000000000 -0400 ++++ Jamroot 2009-06-15 23:08:08.000000000 -0400 +@@ -64,21 +64,26 @@ + # versions of Boost or multiple compilers can + # be used on the same system. + # +-# versioned (default) - Names of boost +-# binaries include the Boost version +-# number and the name and version of the +-# compiler. Boost headers are installed +-# in a subdirectory of whose +-# name contains the Boost version +-# number. +-# +-# system - Binaries names do not include +-# the Boost version number or the name +-# and version number of the compiler. +-# Boost headers are installed directly +-# into . This option is +-# intended for system integrators who +-# are building distribution packages. ++# versioned (default) - Names of boost binaries ++# include the Boost version number, name and ++# version of the compiler and encoded build ++# properties. Boost headers are installed in a ++# subdirectory of whose name contains ++# the Boost version number. ++# ++# tagged -- Names of boost binaries include the ++# encoded build properties such as variant and ++# threading, but do not including compiler name ++# and version, or Boost version. This option is ++# useful if you build several variants of Boost, ++# using the same compiler. ++# ++# system - Binaries names do not include the ++# Boost version number or the name and version ++# number of the compiler. Boost headers are ++# installed directly into . This option ++# is intended for system integrators who are ++# building distribution packages. + # + # --buildid=ID Adds the specified ID to the name of built + # libraries. The default is to not add anything. +@@ -318,53 +323,50 @@ + { + if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB + { ++ local result ; + if $(layout) = versioned + { +- local result = [ common.format-name ++ result = [ common.format-name + -$(BOOST_VERSION_TAG) + -$(BUILD_ID) + : $(name) : $(type) : $(property-set) ] ; +- +- # Optionally add version suffix. On NT, library with version suffix +- # will not be recognized by linkers. On CYGWIN, we get strage +- # duplicate symbol errors when library is generated with version +- # suffix. On OSX, version suffix is not needed -- the linker expects +- # the libFoo.1.2.3.dylib format. AIX linkers do not accept version +- # suffixes either. Pgi compilers can not accept library with version +- # suffix. +- if $(type) = SHARED_LIB && +- ( ! ( [ $(property-set).get ] in windows cygwin darwin aix ) && +- ! ( [ $(property-set).get ] in pgi ) ) +- { +- result = $(result).$(BOOST_VERSION) ; +- } +- +- return $(result) ; ++ } ++ else if $(layout) = tagged ++ { ++ result = [ common.format-name ++ ++ -$(BUILD_ID) ++ : $(name) : $(type) : $(property-set) ] ; + } +- else ++ else if $(layout) = system + { +- local result = [ common.format-name ++ result = [ common.format-name + + -$(BUILD_ID) + : $(name) : $(type) : $(property-set) ] ; +- +- # Optionally add version suffix. On NT, library with version suffix +- # will not be recognized by linkers. On CYGWIN, we get strage +- # duplicate symbol errors when library is generated with version +- # suffix. On OSX, version suffix is not needed -- the linker expects +- # the libFoo.1.2.3.dylib format. AIX linkers do not accept version +- # suffixes either. Pgi compilers can not accept library with version +- # suffix. +- if $(type) = SHARED_LIB && +- ( ! ( [ $(property-set).get ] in windows cygwin darwin aix ) && +- ! ( [ $(property-set).get ] in pgi ) ) +- { +- result = $(result).$(BOOST_VERSION) ; +- } +- +- return $(result) ; + } +- } ++ else ++ { ++ ECHO "error: invalid layout '$(layout)'" ; ++ EXIT ; ++ } ++ ++ # Optionally add version suffix. On NT, library with version suffix ++ # will not be recognized by linkers. On CYGWIN, we get strage ++ # duplicate symbol errors when library is generated with version ++ # suffix. On OSX, version suffix is not needed -- the linker expects ++ # the libFoo.1.2.3.dylib format. AIX linkers do not accept version ++ # suffixes either. Pgi compilers can not accept library with version ++ # suffix. ++ if $(type) = SHARED_LIB && ++ ( ! ( [ $(property-set).get ] in windows cygwin darwin aix ) && ++ ! ( [ $(property-set).get ] in pgi ) ) ++ { ++ result = $(result).$(BOOST_VERSION) ; ++ } ++ ++ return $(result) ; ++ } + } + + diff --git a/boost/serialization_fix.patch b/boost/serialization_fix.patch new file mode 100644 index 0000000000000000000000000000000000000000..142da9d72f4c9f427aaa03d54ab54601c10792b5 --- /dev/null +++ b/boost/serialization_fix.patch @@ -0,0 +1,12 @@ +diff -Nur boost_1_41_0.old/boost/archive/shared_ptr_helper.hpp boost_1_41_0/boost/archive/shared_ptr_helper.hpp +--- boost_1_41_0.old/boost/archive/shared_ptr_helper.hpp 2009-09-20 05:18:42.000000000 +0300 ++++ boost_1_41_0/boost/archive/shared_ptr_helper.hpp 2009-12-17 22:20:48.666281335 +0200 +@@ -108,7 +108,7 @@ + struct non_polymorphic { + static const boost::serialization::extended_type_info * + get_object_identifier(T & t){ +- return boost::serialization::singleton< ++ return & boost::serialization::singleton< + BOOST_DEDUCED_TYPENAME + boost::serialization::type_info_implementation::type + >::get_const_instance(); diff --git a/boost/translate_exception.patch b/boost/translate_exception.patch new file mode 100644 index 0000000000000000000000000000000000000000..68669c13708a10a51097af8adc8bfa7b12054daa --- /dev/null +++ b/boost/translate_exception.patch @@ -0,0 +1,10 @@ +--- a/boost/python/detail/translate_exception.hpp 2009-07-25 15:04:50.000000000 -0700 ++++ b/boost/python/detail/translate_exception.hpp 2009-07-25 15:04:50.000000000 -0700 +@@ -9,6 +9,7 @@ + + # include + # include ++# include + + # include + diff --git a/build.sh b/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..3fbe4783cc6d46360b5b79649f1bb3cd7fc08742 --- /dev/null +++ b/build.sh @@ -0,0 +1,173 @@ +#!/bin/bash +# kdemod-4.3.90-2 +# GPL - jan.mette@berlin.de and philm@chakra-project.org + +# +# setup +# +_script_name="BUILD(ER)" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling messages dependency_handling" +_available_pkglists=`cat _buildscripts/${_cur_repo}-${_build_arch}-pkgs.conf | grep "_" | cut -d "=" -f 1 | awk 'BEGIN {FS="_"} {print $NF}' | sed '/^$/d'` +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +current_repo="$_cur_repo" + + +# +# main +# +build_it() +{ + _mkpkg_flags=$1 + [ -n "$MODE" ] || error "you need to specify a package list defined in _/buildsystem/${_cur_repo}-${_build_arch}-pkgs.conf\n -> ${_available_pkglists}" + + cd $_build_work + + for module in ${whattodo[*]} + do + [[ `echo $module | cut -c1` == '#' ]] && continue + msg "building $module. makepkg flags: $_mkpkg_flags" + pushd $module &>/dev/null + + if [ -e "$_build_work/$module/PKGBUILD" ] ; then + + if [ "$_build_autodepends" = "1" ] ; then + + do_makedeps + do_deps + + ../makepkg -f $_mkpkg_flags || BUILD_BROKEN="1" + + if [ "$BUILD_BROKEN" = "1" ] ; then + if [ "$_build_stop" = "1" ] ; then + echo " " + echo " " + echo "ERROR BUILDING $module" + echo " " + echo " " + exit 1 + else + BROKEN_PKGS="$BROKEN_PKGS $module" + unset BUILD_BROKEN + fi + fi + else + ../makepkg -f $_mkpkg_flags || BUILD_BROKEN="1" + + if [ "$BUILD_BROKEN" = "1" ] ; then + if [ "$_build_stop" = "1" ] ; then + echo " " + echo " " + echo "ERROR BUILDING $module" + echo " " + echo " " + exit 1 + else + BROKEN_PKGS="$BROKEN_PKGS $module" + unset BUILD_BROKEN + fi + fi + fi + + else + echo " " + echo "No PKGBUILD found, exiting... :(" + echo " " + exit 1 + fi + + # Install packages + if [ "$_build_autoinstall" = "1" ] ; then + # Look for the exact package names : + + pushd ${_build_work}/${module} &>/dev/null || exit 1 + + # get the pkgnames, different for an array and a bare string + if [ `grep -e "^pkgname=" PKGBUILD | cut -d'=' -f2 | cut -c1` == "(" ] ; then + # fetch the array + _module_names=`pcregrep -M "^pkgname=\(.*(\n.*[^\)\n])*" PKGBUILD | sed s/"^[^\']*"//g | sed s/[^\']$//` + else + _module_names=("`grep -e "^pkgname=" PKGBUILD | cut -d'=' -f2`") + fi + + # version and rel + #_modver=`grep -e "^pkgver=" PKGBUILD | cut -d'=' -f2` + #_modrel=`grep -e "^pkgrel=" PKGBUILD | cut -d'=' -f2` + + popd &>/dev/null + + # build a list of packages and install them at once + _packages_to_install= + for _m in $_module_names ; do + #_pkg_full_name=`eval echo $_m-$_modver-$_modrel-*.pkg.*` + _pkg_full_name=`eval echo $_m-*.pkg.*` + _packages_to_install="$_packages_to_install $PKGDEST/$_pkg_full_name" + done + sudo pacman -Uf $_packages_to_install || exit 1 + fi + + popd &>/dev/null + done + + msg "removing debug packages ..." + sudo pacman -Rcs kdemod-debug --noconfirm &>/dev/null + echo " " + echo " " + +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +MODE=`echo $1` + +# we take the repo name + the job/stage to reconstruct the variable name +# in $repo_pkgs.cfg and echo its contents... damn, eval is evil ;) + + if [ "$_cur_repo" = "core" ] ; then + whattodo=($(eval echo "\${_build_core_${MODE}[@]}")) + + elif [ "$_cur_repo" = "core-testing" ] ; then + whattodo=($(eval echo "\${_build_core_testing_${MODE}[@]}")) + + elif [ "$_cur_repo" = "platform" ] ; then + whattodo=($(eval echo "\${_build_platform_${MODE}[@]}")) + + elif [ "$_cur_repo" = "platform-testing" ] ; then + whattodo=($(eval echo "\${_build_platform_testing_${MODE}[@]}")) + + elif [ "$_cur_repo" = "desktop" ] ; then + whattodo=($(eval echo "\${_build_desktop_${MODE}[@]}")) + + elif [ "$_cur_repo" = "desktop-testing" ] ; then + whattodo=($(eval echo "\${_build_desktop_testing_${MODE}[@]}")) + + elif [ "$_cur_repo" = "apps" ] ; then + whattodo=($(eval echo "\${_build_apps_${MODE}[@]}")) + + elif [ "$_cur_repo" = "apps-testing" ] ; then + whattodo=($(eval echo "\${_build_apps_testing_${MODE}[@]}")) + + fi + +time build_it f + +if [ -z "$BROKEN_PKGS" ] ; then + title2 "All done" +else + title2 "All done" + title2 "SOME PACKAGES WERE NOT BUILT: $BROKEN_PKGS" +fi + +newline diff --git a/clean-builddir.sh b/clean-builddir.sh new file mode 100755 index 0000000000000000000000000000000000000000..fe643282322846798e64b8e9d3c8742741f86a8f --- /dev/null +++ b/clean-builddir.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="CLEAN BUILD PKGS" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +cleanup_pkgs() { + title2 "Cleaning build packages" + + pushd _repo/build/ &>/dev/null + + status_start "_repo/build" + rm -rf *.tar.gz &>/dev/null + status_done + + popd &>/dev/null +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +cleanup_pkgs + +title "All done" +newline diff --git a/clean-workdir.sh b/clean-workdir.sh new file mode 100755 index 0000000000000000000000000000000000000000..ea7c448f8d06381f8b6fcd5bc3d48e39a59729b2 --- /dev/null +++ b/clean-workdir.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="CLEAN WORK DIRECTORY" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling messages" +_available_pkglists=`cat _buildscripts/${_cur_repo}-${_build_arch}-pkgs.conf | grep "_" | cut -d "=" -f 1 | awk 'BEGIN {FS="_"} {print $NF}' | sed '/^$/d'` +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +cleanup_src() +{ + [ -n "$MODE" ] || error "you need to specify a package list defined in _/buildsystem/${_cur_repo}-${_build_arch}-pkgs.conf\n -> ${_available_pkglists}" + + newline + title2 "Cleaning workdir" + for module in ${whattodo[*]} + do + status_start "${module}" + pushd $module &>/dev/null + rm -rf pkg src dbg hdr &>/dev/null + popd &>/dev/null + status_done + done +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +MODE=`echo $1` + +# we take the repo name + the job/stage to reconstruct the variable name +# in $repo_pkgs.cfg and echo its contents... damn, eval is evil ;) + + if [ "$_cur_repo" = "core" ] ; then + whattodo=($(eval echo "\${_build_core_${MODE}[@]}")) + + elif [ "$_cur_repo" = "core-testing" ] ; then + whattodo=($(eval echo "\${_build_core_testing_${MODE}[@]}")) + + elif [ "$_cur_repo" = "platform" ] ; then + whattodo=($(eval echo "\${_build_platform_${MODE}[@]}")) + + elif [ "$_cur_repo" = "platform-testing" ] ; then + whattodo=($(eval echo "\${_build_platform_testing_${MODE}[@]}")) + + elif [ "$_cur_repo" = "desktop" ] ; then + whattodo=($(eval echo "\${_build_desktop_${MODE}[@]}")) + + elif [ "$_cur_repo" = "desktop-testing" ] ; then + whattodo=($(eval echo "\${_build_desktop_testing_${MODE}[@]}")) + + elif [ "$_cur_repo" = "apps" ] ; then + whattodo=($(eval echo "\${_build_apps_${MODE}[@]}")) + + elif [ "$_cur_repo" = "apps-testing" ] ; then + whattodo=($(eval echo "\${_build_apps_testing_${MODE}[@]}")) + + fi + +cleanup_src + +title "All done" +newline diff --git a/cmake/PKGBUILD b/cmake/PKGBUILD index 44fe30912963864304e709f8907d151b6e7ca53b..d7fc9a293c304386aa17790290a48ac66b64c29e 100644 --- a/cmake/PKGBUILD +++ b/cmake/PKGBUILD @@ -11,8 +11,8 @@ arch=('i686' 'x86_64') license=('custom') url="http://www.cmake.org" depends=('expat' 'curl' 'gcc-libs' 'shared-mime-info') -makedepends=('qt') -optdepends=('qt: cmake-gui') +#makedepends=('qt') +#optdepends=('qt: cmake-gui') install=cmake.install source=("http://www.cmake.org/files/v2.8/$pkgname-$pkgver.tar.gz") md5sums=('3b3679b8a6afaedc38a8c15dd7ff4fcf') @@ -23,8 +23,10 @@ build() { --mandir=/share/man \ --docdir=/share/doc/cmake \ --system-libs \ - --qt-gui \ --parallel=2 + + #--qt-gui \ + make || return 1 make DESTDIR=$pkgdir install diff --git a/coreutils/PKGBUILD b/coreutils/PKGBUILD index ebf756027b874c54aeff1661a154db850b6377e5..cc394e671a7f51206df4b0cb1feb6ca9f9fca6f5 100644 --- a/coreutils/PKGBUILD +++ b/coreutils/PKGBUILD @@ -22,12 +22,14 @@ source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz coreutils-uname.patch coreutils-pam.patch coreutils-6.10-configuration.patch + advcopy-0.2b-8.4.patch su) md5sums=('56f549854d723d9dcebb77919019df55' 'f88e6b4ce09e6d453f595d46d2a153b2' 'c4fcca138b6abf6d443d48a6f0cd8833' '7efee4d5b3653711f9e229493316841c' 'dd4f472de8380104af3ac0ef920fae8b' + '57e881e7968d6747dba774128a830350' 'fa85e5cce5d723275b14365ba71a8aad') build() { @@ -37,6 +39,7 @@ build() { patch -Np1 -i $srcdir/coreutils-pam.patch || return 1 patch -Np1 -i $srcdir/coreutils-i18n.patch || return 1 patch -Np1 -i $srcdir/coreutils-6.10-configuration.patch || return 1 + patch -Np1 -i $srcdir/advcopy-0.2b-8.4.patch || return 1 # from gentoo portage patch -Np1 -i $srcdir/coreutils-uname.patch || return 1 diff --git a/decrease-pkgrels.sh b/decrease-pkgrels.sh new file mode 100755 index 0000000000000000000000000000000000000000..12c45d1fc70dd39eead3e233961ac9a78409bf43 --- /dev/null +++ b/decrease-pkgrels.sh @@ -0,0 +1,201 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="DECREASE PKGRELS" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +_available_pkglists=`cat _buildscripts/${_cur_repo}-${_build_arch}-pkgs.conf | grep "_" | cut -d "=" -f 1 | awk 'BEGIN {FS="_"} {print $NF}' | sed '/^$/d'` +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +decrease_pkgrels() +{ + [ -n "$MODE" ] || error "you need to specify a package list defined in _/buildsystem/${_cur_repo}-${_build_arch}-pkgs.conf\n -> ${_available_pkglists}" + + case "$MODE" in + + all) + title2 "Decreasing all pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=1/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + support) + title2 "Decreasing support pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=1/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + qt) + title2 "Decreasing Qt pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=1/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + kde) + title2 "Decreasing KDE pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=1/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + tools) + title2 "Decreasing tool pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=1/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + esac +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +MODE=`echo $1` + +# we take the repo name + the job/stage to reconstruct the variable name +# in $repo_pkgs.cfg and echo its contents... damn, eval is evil ;) +whattodo=($(eval echo "\${_build_${_cur_repo}_${MODE}[@]}")) + +decrease_pkgrels + +title "All done" +newline diff --git a/dialog/PKGBUILD b/dialog/PKGBUILD index aa6306ceac3ce84cc35801101ab895292279fadb..dd0c6a01614171ae37298525f0a74c2e9e31da6e 100644 --- a/dialog/PKGBUILD +++ b/dialog/PKGBUILD @@ -13,7 +13,7 @@ license=('GPL') groups=('base') depends=('ncurses>=5.6-8') source=(ftp://invisible-island.net/${pkgname}/${pkgname}-$_pkgver.tgz) -md5sums=('ada629276646b462aaab1e734f626eb6') +# md5sums=('ada629276646b462aaab1e734f626eb6') build() { cd ${srcdir}/$pkgname-$_pkgver diff --git a/gcc/PKGBUILD b/gcc/PKGBUILD index 533a028292275dd8b5490c80627a86ed15a32b8e..f2edc088a8edcb5390c55aa17017d8fc863835e4 100644 --- a/gcc/PKGBUILD +++ b/gcc/PKGBUILD @@ -5,9 +5,10 @@ # toolchain build order: kernel-headers->glibc->binutils->gcc->binutils->glibc # NOTE: libtool requires rebuilt with each new gcc version -pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada') +pkgname=('gcc' 'gcc-libs') +#'gcc-ada' 'gcc-fortran' 'gcc-objc' pkgver=4.4.3 -pkgrel=1 +pkgrel=2 #_snapshot=4.4-20091208 _libstdcppmanver=4.4.0 pkgdesc="The GNU Compiler Collection" @@ -16,16 +17,17 @@ license=('GPL' 'LGPL' 'custom') url="http://gcc.gnu.org" makedepends=('binutils>=2.20' 'mpfr>=2.4.1' 'cloog-ppl>=0.15.3' 'gcc-ada') options=('!libtool' '!emptydirs') -source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++,fortran,objc,ada}-${pkgver}.tar.bz2 +source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++,objc}-${pkgver}.tar.bz2 #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-{core,g++,fortran,objc,ada}-${_snapshot}.tar.bz2 ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-man.${_libstdcppmanver}.tar.bz2 gcc_pure64.patch gcc-hash-style-both.patch) + + #ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++,fortran,objc,ada}-${pkgver}.tar.bz2 + md5sums=('054b66f315b3d04ad06544ce26e72365' 'cd179ec4f05ee17ce76464da25a2674c' - '0f8fa5e9edbcf156a061312cae0715ee' '34711c4de46eaf79aa018206dbec4389' - '50abdedabc3c3505579e7c488f454793' '3b94fe4a3cd49819bf57ecc407851b9b' '4030ee1c08dd1e843c0225b772360e76' '6fd395bacbd7b6e47c7b74854b478363') @@ -59,11 +61,12 @@ build() { mkdir build && cd build ../configure --prefix=/usr --enable-shared \ - --enable-languages=c,c++,fortran,objc,obj-c++,ada \ + --enable-languages=c,c++ \ --enable-threads=posix --mandir=/usr/share/man --infodir=/usr/share/info \ --enable-__cxa_atexit --disable-multilib --libdir=/usr/lib \ --libexecdir=/usr/lib --enable-clocale=gnu --disable-libstdcxx-pch \ --with-tune=generic + #--enable-languages=c,c++,fortran,objc,obj-c++,ada \ make || return 1 } @@ -94,6 +97,8 @@ package_gcc-libs() # Install Runtime Library Exception install -Dm644 ${_basedir}/COPYING.RUNTIME \ ${pkgdir}/usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION + + rm -rf $pkgdir/usr/share/info/dir } package_gcc() @@ -130,6 +135,8 @@ package_gcc() # Install Runtime Library Exception install -Dm644 ${_basedir}/COPYING.RUNTIME \ ${pkgdir}/usr/share/licenses/gcc/RUNTIME.LIBRARY.EXCEPTION + + rm -rf $pkgdir/usr/share/info/dir } package_gcc-fortran() diff --git a/gen-rebuild-list.sh b/gen-rebuild-list.sh new file mode 100755 index 0000000000000000000000000000000000000000..3604b6eeff4ff252947b36bf13a3f43b38b0c443 --- /dev/null +++ b/gen-rebuild-list.sh @@ -0,0 +1,54 @@ +#! /bin/bash + +# rebuildlist - list packages needing rebuilt for a soname bump +# +# Copyright (c) 2009 by Allan McRae +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +if [ -z "$1" -o -z "$2" ]; then + echo "Usage $0 [ ...]" + exit +fi + +directory=$1 +shift + +while [ -n "$1" ]; do + grepexpr="$grepexpr -e ${1%%.so}.so" + shift +done + +startdir=$(pwd) +tmpdir=$(mktemp -d) +cd $tmpdir + +for pkg in $(ls $directory/*.pkg.tar.gz); do + pkg=${pkg##*\/} + echo "Scanning $pkg" + mkdir $tmpdir/extract + cp $directory/$pkg $tmpdir/extract + cd $tmpdir/extract + tar -xf $directory/$pkg + rm $pkg + found=$(readelf --dynamic $(find -type f) 2>/dev/null | grep $grepexpr | wc -l) + if [ $found -ne 0 ]; then + echo ${pkg%-*-*-*} >> ../rebuildlist.txt + fi + cd .. + rm -rf extract +done + +cp $tmpdir/rebuildlist.txt $startdir diff --git a/gobject-introspection/PKGBUILD b/gobject-introspection/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..f2ecfbc6e4bbdee769b536d74d611e06a1ccac82 --- /dev/null +++ b/gobject-introspection/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 61463 2009-12-16 16:39:38Z ibiru $ +# Maintainer: Jan de Groot +pkgname=gobject-introspection +pkgver=0.6.6 +pkgrel=1 +pkgdesc="Introspection system for GObject-based libraries" +url="http://live.gnome.org/GObjectInstrospection" +arch=('x86_64' 'i686') +license=('LGPL' 'GPL') +depends=('libffi>=3.0.8' 'glib2>=2.22.0' 'python') +options=('!libtool') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2) +sha256sums=('3843b349d37b8195cc32ac10521fb1558a3610dce30d190437d6a48404b2e2c0') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/gperf/PKGBUILD b/gperf/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..dbbcd65c0f8721d0e0962605f6c3737b31d44522 --- /dev/null +++ b/gperf/PKGBUILD @@ -0,0 +1,22 @@ +#$Id: PKGBUILD 37370 2009-05-01 06:37:35Z eric $ +#Maintainer: Jan de Groot + +pkgname=gperf +pkgver=3.0.4 +pkgrel=1 +pkgdesc="Perfect hash function generator." +arch=('x86_64' 'i686') +url="http://www.gnu.org/software/gperf/" +license=('GPL3') +depends=('gcc-libs' 'texinfo') +install=gperf.install +source=(ftp://ftp.gnu.org/gnu/gperf/${pkgname}-${pkgver}.tar.gz) +md5sums=('c1f1db32fb6598d6a93e6e88796a8632') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + gzip ${pkgdir}/usr/share/info/gperf.info +} diff --git a/gperf/gperf.install b/gperf/gperf.install new file mode 100644 index 0000000000000000000000000000000000000000..1c20e2f5ccb0f05fd81e00aedece6b89d6e4c8ae --- /dev/null +++ b/gperf/gperf.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(gperf.info.gz) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/groff/PKGBUILD b/groff/PKGBUILD index 1aef1c494729cec354614a26d5738394fe339e82..4d0d24a9d84e45c0ae28bf3622cdc95cf8a0c0ac 100644 --- a/groff/PKGBUILD +++ b/groff/PKGBUILD @@ -8,9 +8,9 @@ arch=(i686 x86_64) url="http://www.gnu.org/software/groff/groff.html" license=('GPL') depends=('perl' 'gcc-libs' 'texinfo') -makedepends=('netpbm' 'psutils' 'ghostscript') -optdepends=('netpbm: for use together with man -H command interaction in browsers' - 'psutils: for use together with man -H command interaction in browsers') +# makedepends=('netpbm' 'psutils' 'ghostscript') +# optdepends=('netpbm: for use together with man -H command interaction in browsers' +# 'psutils: for use together with man -H command interaction in browsers') source=(ftp://ftp.gnu.org/gnu/groff/groff-$pkgver.tar.gz site.tmac) install=groff.install diff --git a/heimdal/PKGBUILD b/heimdal/PKGBUILD index d7dc9c43c536dc0f2ba0b3f961817c164b6e7bb4..3e0166a9a4a58dee9903d70f4aa3b3514c44062a 100644 --- a/heimdal/PKGBUILD +++ b/heimdal/PKGBUILD @@ -111,4 +111,6 @@ build() { # Install the license install -Dm644 ${srcdir}/${pkgname}-${pkgver}/LICENSE \ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 + + rm -rf $pkgdir/usr/share/info/dir } diff --git a/increase-pkgrels.sh b/increase-pkgrels.sh new file mode 100755 index 0000000000000000000000000000000000000000..ce85f6fb9cf34b5ecd65666b14db957843776559 --- /dev/null +++ b/increase-pkgrels.sh @@ -0,0 +1,200 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="INCREASE PKGRELS" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +_available_pkglists=`cat _buildscripts/${_cur_repo}-${_build_arch}-pkgs.conf | grep "_" | cut -d "=" -f 1 | awk 'BEGIN {FS="_"} {print $NF}' | sed '/^$/d'` +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +increase_pkgrels() { + [ -n "$MODE" ] || error "you need to specify a package list defined in _/buildsystem/${_cur_repo}-${_build_arch}-pkgs.conf\n -> ${_available_pkglists}" + + case "$MODE" in + + all) + title2 "Increasing all pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=21/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + support) + title2 "Increasing support pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=21/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + qt) + title2 "Increasing Qt pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=21/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + kde) + title2 "Increasing KDE pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=21/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + + tools) + title2 "Increasing tool pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + sed -i -e 's/\/pkgrel=21/g' PKGBUILD + sed -i -e 's/\/pkgrel=20/g' PKGBUILD + sed -i -e 's/\/pkgrel=19/g' PKGBUILD + sed -i -e 's/\/pkgrel=18/g' PKGBUILD + sed -i -e 's/\/pkgrel=17/g' PKGBUILD + sed -i -e 's/\/pkgrel=16/g' PKGBUILD + sed -i -e 's/\/pkgrel=15/g' PKGBUILD + sed -i -e 's/\/pkgrel=14/g' PKGBUILD + sed -i -e 's/\/pkgrel=13/g' PKGBUILD + sed -i -e 's/\/pkgrel=12/g' PKGBUILD + sed -i -e 's/\/pkgrel=11/g' PKGBUILD + sed -i -e 's/\/pkgrel=10/g' PKGBUILD + sed -i -e 's/\/pkgrel=9/g' PKGBUILD + sed -i -e 's/\/pkgrel=8/g' PKGBUILD + sed -i -e 's/\/pkgrel=7/g' PKGBUILD + sed -i -e 's/\/pkgrel=6/g' PKGBUILD + sed -i -e 's/\/pkgrel=5/g' PKGBUILD + sed -i -e 's/\/pkgrel=4/g' PKGBUILD + sed -i -e 's/\/pkgrel=3/g' PKGBUILD + sed -i -e 's/\/pkgrel=2/g' PKGBUILD + popd &>/dev/null + status_done + done + ;; + esac +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +MODE=`echo $1` + +# we take the repo name + the job/stage to reconstruct the variable name +# in $repo_pkgs.cfg and echo its contents... damn, eval is evil ;) +whattodo=($(eval echo "\${_build_${_cur_repo}_${MODE}[@]}")) + +increase_pkgrels + +title "All done" +newline diff --git a/intltool/ChangeLog b/intltool/ChangeLog new file mode 100644 index 0000000000000000000000000000000000000000..cfbb7c7cdc8290abbeffad4ea4f5eba3d9c3d3bd --- /dev/null +++ b/intltool/ChangeLog @@ -0,0 +1,45 @@ +2009-09-08 Eric Belanger + + * intltool 0.41.0-1 + * Upstream update + * Updated url + * Switched to 'any' arch + +2009-03-15 Eric Belanger + + * intltool 0.40.6-1 + * Upstream update + +2009-02-07 Eric Belanger + + * Added I18N-HOWTO doc (close FS#12889) + +2008-11-28 Jan de Groot + + * intltool 0.40.5-1 + * Upstream update + +2008-09-25 Jan de Groot + + * intltool 0.40.4-1 + * Upstream update + +2008-07-28 Eric Belanger + + * intltool 0.40.3-1 + * Upstream update + +2008-07-23 Eric Belanger + + * intltool 0.40.1-1 + * Upstream update + +2008-06-08 Eric Belanger + + * intltool 0.40.0-1 + * Upstream update + +2008-03-01 Eric Belanger + + * intltool 0.37.1-1 + * Upstream update diff --git a/intltool/PKGBUILD b/intltool/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..235c83dcdfe483e5f2a845d63f8793a0fe4b4be2 --- /dev/null +++ b/intltool/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 51483 2009-09-09 00:24:07Z eric $ +# Maintainer: Eric Belanger +# Contributor: Jan de Groot + +pkgname=intltool +pkgver=0.41.0 +pkgrel=1 +pkgdesc="The internationalization tool collection" +arch=('any') +url="https://edge.launchpad.net/intltool" +license=('GPL') +depends=('perlxml') +source=(http://edge.launchpad.net/intltool/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz) +md5sums=('8a6e4afd3fc93637dcd70e36ab899364') +sha1sums=('6a42075e8ef23d171882c43d68081420d5be6798') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -D -m644 doc/I18N-HOWTO ${pkgdir}/usr/share/doc/${pkgname}/I18N-HOWTO || return 1 +} diff --git a/iputils/PKGBUILD b/iputils/PKGBUILD index 595b0ad6b5fc2f1e1962a1fbca20ec875caa73eb..1fec3e7a9d1209eb8fa37cac1a443c7c60484e85 100644 --- a/iputils/PKGBUILD +++ b/iputils/PKGBUILD @@ -11,7 +11,7 @@ license=('GPL') url="http://www.linuxfoundation.org/en/Net:Iputils" groups=('base') depends=('glibc') -makedepends=('opensp' 'libxslt' 'docbook-xsl') +# makedepends=('opensp' 'libxslt' 'docbook-xsl') conflicts=('netkit-base' 'arping' 'netkit-tftpd' 'traceroute') replaces=('netkit-base' 'traceroute') source=(http://www.skbuff.net/iputils/$pkgname-s$pkgver.tar.bz2 @@ -34,22 +34,22 @@ build() install -D -m4755 $i $startdir/pkg/bin/$i done - msg ":: building docs" +# msg ":: building docs" # good god, these docs are a pain # special thanks to Michael(tm) Smith - http://people.w3.org/mike/ # from #docbook on freenode.org for figuring this out - cd doc - for file in *.sgml; do - xf=${file/.sgml/.xml} - osx -xlower -xno-nl-in-tag $file > $xf - sed -i "s|\(.*\), \(.*\)|\1, \2|g" $xf - xsltproc /usr/share/xml/docbook/xsl-stylesheets-1.75.2/manpages/docbook.xsl $xf - done +# cd doc +# for file in *.sgml; do +# xf=${file/.sgml/.xml} +# osx -xlower -xno-nl-in-tag $file > $xf +# sed -i "s|\(.*\), \(.*\)|\1, \2|g" $xf +# xsltproc /usr/share/xml/docbook/xsl-stylesheets-1.75.2/manpages/docbook.xsl $xf +# done - mkdir -p $startdir/pkg/usr/share/man/man8 - install -m644 arping.8 clockdiff.8 ping.8 ping6.8 rarpd.8 rdisc.8 \ - tftpd.8 tracepath.8 tracepath6.8 traceroute6.8 \ - $startdir/pkg/usr/share/man/man8/ +# mkdir -p $startdir/pkg/usr/share/man/man8 +# install -m644 arping.8 clockdiff.8 ping.8 ping6.8 rarpd.8 rdisc.8 \ +# tftpd.8 tracepath.8 tracepath6.8 traceroute6.8 \ +# $startdir/pkg/usr/share/man/man8/ # build traceroute # this is combined in this package because it's awkward as a separate package @@ -57,5 +57,5 @@ build() patch -Np1 -i ../permission-fix.patch || return 1 ./configure --prefix=/usr --sbindir=/bin --mandir=/usr/share/man make CFLAGS="${CFLAGS} -Ilinux-include/" || return 1 - make DESTDIR=${startdir}/pkg install install-man + make DESTDIR=${startdir}/pkg install #install-man } diff --git a/libfetch/PKGBUILD b/libfetch/PKGBUILD index d1a30a12138261a3b1b4b25a745fc14bbfd9887a..a1ded93c62062dd5e27a8290898645a35c875e0d 100644 --- a/libfetch/PKGBUILD +++ b/libfetch/PKGBUILD @@ -15,7 +15,7 @@ source=(Makefile ftp://ftp.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz) # keep an upgrade path for older installations -PKGEXT='.pkg.tar.gz' +# PKGEXT='.pkg.tar.gz' # source PKGBUILD && mksource mksource() { diff --git a/libffi/PKGBUILD b/libffi/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..da90cbf9f6ff224e9a9fb3805a3dbda1b8157878 --- /dev/null +++ b/libffi/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 72255 2010-03-13 20:43:14Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libffi +pkgver=3.0.9 +pkgrel=1 +pkgdesc="A portable, high level programming interface to various calling conventions." +arch=('i686' 'x86_64') +license=('MIT') +url="http://sourceware.org/libffi" +depends=('glibc' 'texinfo') +options=('!libtool' 'force') +install=libffi.install +source=(ftp://sourceware.org/pub/libffi/libffi-${pkgver}.tar.gz) +md5sums=('1f300a7a7f975d4046f51c3022fa5ff1') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 + + rm -rf $pkgdir/usr/share/info/dir +} diff --git a/libffi/libffi.install b/libffi/libffi.install new file mode 100644 index 0000000000000000000000000000000000000000..151b79b60d94f2eac4e2633ff147e93a1d9de685 --- /dev/null +++ b/libffi/libffi.install @@ -0,0 +1,18 @@ +infodir=/usr/share/info +filelist=(libffi.info.gz) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/libxslt/ChangeLog b/libxslt/ChangeLog new file mode 100644 index 0000000000000000000000000000000000000000..ccd584811b590b716386be77ccdde4852e63d545 --- /dev/null +++ b/libxslt/ChangeLog @@ -0,0 +1,9 @@ +2008-05-31 Eric Belanger + + * libxslt 1.1.24-1 + * Upstream update + +2008-05-01 Eric Belanger + + * libxslt 1.1.23-1 + * Upstream update diff --git a/libxslt/PKGBUILD b/libxslt/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..9c1a44716015303d958c0b25e5ab0cafd6b427d1 --- /dev/null +++ b/libxslt/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 58465 2009-11-08 16:04:10Z jgc $ +# Maintainer: Eric Belanger +# Contributor: John Proctor + +pkgname=libxslt +pkgver=1.1.26 +pkgrel=1 +pkgdesc="XML stylesheet transformation library" +arch=('i686' 'x86_64') +url="http://xmlsoft.org/XSLT/" +license=('custom') +depends=('libxml2>=2.7.6' 'libgcrypt>=1.4.4') +makedepends=('python>=2.6') +options=('!libtool') +source=(ftp://xmlsoft.org/libxslt/${pkgname}-${pkgver}.tar.gz) +md5sums=('e61d0364a30146aaa3001296f853b2b9') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/licenses/PKGBUILD b/licenses/PKGBUILD index 547127769d03a4694a347294cb407f993560b2cb..8235b5cf61a657c190539e5a12b15c939809ce52 100644 --- a/licenses/PKGBUILD +++ b/licenses/PKGBUILD @@ -48,7 +48,7 @@ md5sums=('3b83ef96387f14655fc854ddc3c6bd57' 'd32239bcb673463ab874e80d47fae504' '243b725d71bb5df4a1e5920b344b86ad' 'b52f2d57d10c4f7ee67a7eb9615d5d24' - '0a104fd5e8dd4324ceea2c30d774f311' + 'aae698ef77be7613e20372564de03235' '10b9de612d532fdeeb7fe8fcd1435cc6' '9f4337828d782bdea41f03dd2ad1b808' 'bfe1f75d606912a4111c90743d6c7325' diff --git a/logrotate/PKGBUILD b/logrotate/PKGBUILD index cc43a60e112760ae642627a73d2b5db707eb4fa3..4d4c962a3017a248f07c29ec7bb351a96222c52d 100644 --- a/logrotate/PKGBUILD +++ b/logrotate/PKGBUILD @@ -14,7 +14,8 @@ depends=('popt' 'cron' 'gzip') backup=('etc/logrotate.conf') #WTF are you doing, Fedora? _pkgmd5=b3589bea6d8d5afc8a84134fddaae973 -source=( http://cvs.fedora.redhat.com/repo/pkgs/$pkgname/$pkgname-$pkgver.tar.gz/$_pkgmd5/$pkgname-$pkgver.tar.gz +source=( #http://cvs.fedora.redhat.com/repo/pkgs/$pkgname/$pkgname-$pkgver.tar.gz/$_pkgmd5/$pkgname-$pkgver.tar.gz + http://fedorahosted.org/releases/l/o/$pkgname/$pkgname-$pkgver.tar.gz logrotate.conf logrotate.cron.daily) md5sums=($_pkgmd5 '462a5f364717461537eb2ae6394ad23e' diff --git a/makepkg b/makepkg new file mode 100755 index 0000000000000000000000000000000000000000..8b3247a993c8f4b66bbaffc2245af08cfe7a4804 --- /dev/null +++ b/makepkg @@ -0,0 +1,2366 @@ +#!/bin/bash -e +# +# makepkg - make packages compatable for use with pacman +# @configure_input@ +# +# Copyright (c) 2006-2009 Pacman Development Team +# Copyright (c) 2002-2006 by Judd Vinet +# Copyright (c) 2005 by Aurelien Foret +# Copyright (c) 2006 by Miklos Vajna +# Copyright (c) 2005 by Christian Hamar +# Copyright (c) 2006 by Alex Smith +# Copyright (c) 2006 by Andras Voroskoi +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# makepkg uses quite a few external programs during its execution. You +# need to have at least the following installed for makepkg to function: +# awk, bsdtar (libarchive), bzip2, coreutils, fakeroot, find (findutils), +# getopt (util-linux), gettext, grep, gzip, openssl, sed + +# gettext initialization +export TEXTDOMAIN='pacman' +export TEXTDOMAINDIR='/usr/share/locale' + +# file -i does not work on Mac OSX unless legacy mode is set +export COMMAND_MODE='legacy' + +myver='3.3-kdemod' +confdir='../_buildscripts' +BUILDSCRIPT='PKGBUILD' +startdir="$PWD" +ARCH="$_arch" +current_repo=`pushd $startdir &>/dev/null; pushd .. &>/dev/null; pwd | awk -F '/' '{print $NF}'; popd &>/dev/null; popd &>/dev/null` +srcdir="$startdir/src" +pkgdir="$startdir/pkg" +dbgdir="$startdir/dbg" +hdrdir="$startdir/hdr" + +packaging_options=('strip' 'splitdbg' 'splithdr' 'docs' 'libtool' 'emptydirs' 'zipman' 'purge') +other_options=('ccache' 'distcc' 'makeflags' 'force') +splitpkg_overrides=('pkgdesc' 'license' 'groups' 'depends' 'optdepends' 'provides' \ + 'conflicts' 'replaces' 'backup' 'options' 'install') +readonly -a packaging_options other_options splitpkg_overrides + +# Options +ASROOT=0 +CLEANUP=0 +CLEANCACHE=0 +DEP_BIN=0 +FORCE=0 +INFAKEROOT=0 +GENINTEG=0 +INSTALL=0 +NOBUILD=0 +NODEPS=0 +NOEXTRACT=0 +RMDEPS=0 +REPKG=0 +LOGGING=0 +SOURCEONLY=0 +IGNOREARCH=0 +HOLDVER=0 +PKGFUNC=0 +SPLITPKG=0 +COLORMSG=0 + +# Forces the pkgver of the current PKGBUILD. Used by the fakeroot call +# when dealing with svn/cvs/etc PKGBUILDs. +FORCE_VER="" + +PACMAN_OPTS= + +### SUBROUTINES ### + +plain() { + local mesg=$1; shift + if [ $COLORMSG -eq 1 ]; then + printf "\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2 + else + printf " ${mesg}\n" "$@" >&2 + fi +} + +msg() { + local mesg=$1; shift + if [ $COLORMSG -eq 1 ]; then + printf "\033[1;32m==>\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2 + else + printf "==> ${mesg}\n" "$@" >&2 + fi +} + +msg2() { + local mesg=$1; shift + if [ $COLORMSG -eq 1 ]; then + printf "\033[1;34m ->\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2 + else + printf " -> ${mesg}\n" "$@" >&2 + fi +} + +warning() { + local mesg=$1; shift + if [ $COLORMSG -eq 1 ]; then + printf "\033[1;33m==> $(gettext "WARNING:")\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2 + else + printf "==> $(gettext "WARNING:") ${mesg}\n" "$@" >&2 + fi +} + +error() { + local mesg=$1; shift + if [ $COLORMSG -eq 1 ]; then + printf "\033[1;31m==> $(gettext "ERROR:")\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2 + else + printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2 + fi +} + + +## +# Special exit call for traps, Don't print any error messages when inside, +# the fakeroot call, the error message will be printed by the main call. +## +trap_exit() { + if [ "$INFAKEROOT" -eq 0 ]; then + echo + error "$@" + fi + exit 1 +} + + +## +# Clean up function. Called automatically when the script exits. +## +clean_up() { + local EXIT_CODE=$? + + if [ "$INFAKEROOT" -eq 1 ]; then + # Don't clean up when leaving fakeroot, we're not done yet. + return + fi + + if [ $EXIT_CODE -eq 0 -a "$CLEANUP" -eq 1 ]; then + # If it's a clean exit and -c/--clean has been passed... + msg "$(gettext "Cleaning up...")" + rm -rf "$pkgdir" "$srcdir" + if [ -n "$pkgname" ]; then + # Can't do this unless the BUILDSCRIPT has been sourced. + rm -f "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-build.log"* + if [ "$PKGFUNC" -eq 1 ]; then + rm -f "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-package.log"* + elif [ "$SPLITPKG" -eq 1 ]; then + for pkg in ${pkgname[@]}; do + rm -f "${pkg}-${pkgver}-${pkgrel}-${CARCH}-package.log"* + done + fi + fi + fi + + remove_deps +} + + +## +# Signal Traps +## +trap 'clean_up' 0 +trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP QUIT +trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT +trap 'trap_exit "$(gettext "An unknown error has occured. Exiting...")"' ERR + +# a source entry can have two forms : +# 1) "filename::http://path/to/file" +# 2) "http://path/to/file" + +# extract the filename from a source entry +get_filename() { + # if a filename is specified, use it + local filename=$(echo $1 | sed 's|::.*||') + # if it is just an url, we only keep the last component + echo "$filename" | sed 's|^.*://.*/||g' +} + +# extract the url from a source entry +get_url() { + # strip an eventual filename + echo $1 | sed 's|.*::||' +} + +## +# Checks to see if options are present in makepkg.conf or PKGBUILD; +# PKGBUILD options always take precedence. +# +# usage : check_option( $option ) +# return : y - enabled +# n - disabled +# ? - not found +## +check_option() { + local ret=$(in_opt_array "$1" ${options[@]}) + if [ "$ret" != '?' ]; then + echo $ret + return + fi + + # fall back to makepkg.conf options + ret=$(in_opt_array "$1" ${OPTIONS[@]}) + if [ "$ret" != '?' ]; then + echo $ret + return + fi + + echo '?' # Not Found +} + + +## +# Check if option is present in BUILDENV +# +# usage : check_buildenv( $option ) +# return : y - enabled +# n - disabled +# ? - not found +## +check_buildenv() { + echo $(in_opt_array "$1" ${BUILDENV[@]}) +} + + +## +# usage : in_opt_array( $needle, $haystack ) +# return : y - enabled +# n - disabled +# ? - not found +## +in_opt_array() { + local needle=$(echo $1 | tr '[:upper:]' '[:lower:]'); shift + + local opt + for opt in "$@"; do + opt=$(echo $opt | tr '[:upper:]' '[:lower:]') + if [ "$opt" = "$needle" ]; then + echo 'y' # Enabled + return + elif [ "$opt" = "!$needle" ]; then + echo 'n' # Disabled + return + fi + done + + echo '?' # Not Found +} + + +## +# usage : in_array( $needle, $haystack ) +# return : 0 - found +# 1 - not found +## +in_array() { + local needle=$1; shift + [ -z "$1" ] && return 1 # Not Found + local item + for item in "$@"; do + [ "$item" = "$needle" ] && return 0 # Found + done + return 1 # Not Found +} + +get_downloadclient() { + # $1 = url with valid protocol prefix + local url=$1 + local proto=$(echo "$url" | sed 's|://.*||') + + # loop through DOWNLOAD_AGENTS variable looking for protocol + local i + for i in "${DLAGENTS[@]}"; do + local handler=$(echo $i | sed 's|::.*||') + if [ "$proto" = "$handler" ]; then + agent=$(echo $i | sed 's|^.*::||') + break + fi + done + + # if we didn't find an agent, return an error + if [ -z "$agent" ]; then + error "$(gettext "There is no agent set up to handle %s URLs. Check %s.")" "$proto" "$MAKEPKG_CONF" + plain "$(gettext "Aborting...")" + exit 1 # $E_CONFIG_ERROR + fi + + # ensure specified program is installed + local program="$(echo $agent | awk '{print $1 }')" + if [ ! -x "$program" ]; then + local baseprog=$(basename $program) + error "$(gettext "The download program %s is not installed.")" "$baseprog" + plain "$(gettext "Aborting...")" + exit 1 # $E_MISSING_PROGRAM + fi + + echo "$agent" +} + +download_file() { + # download command + local dlcmd=$1 + # url of the file + local url=$2 + # destination file + local file=$3 + # temporary download file, default to last component of the url + local dlfile=$(echo "$url" | sed 's|^.*://.*/||g') + + # replace %o by the temporary dlfile if it exists + if echo "$dlcmd" | grep -q "%o" ; then + dlcmd=${dlcmd//\%o/\"$file.part\"} + dlfile="$file.part" + fi + # add the url, either in place of %u or at the end + if echo "$dlcmd" | grep -q "%u" ; then + dlcmd=${dlcmd//\%u/\"$url\"} + else + dlcmd="$dlcmd \"$url\"" + fi + + eval $dlcmd || return $? + + # rename the temporary download file to the final destination + if [ "$dlfile" != "$file" ]; then + mv -f "$SRCDEST/$dlfile" "$SRCDEST/$file" + fi +} + +check_deps() { + [ $# -gt 0 ] || return + + pmout=$(pacman $PACMAN_OPTS -T "$@") + ret=$? + if [ $ret -eq 127 ]; then #unresolved deps + echo "$pmout" + elif [ $ret -ne 0 ]; then + error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$pmout" + exit 1 + fi +} + +handledeps() { + local R_DEPS_SATISFIED=0 + local R_DEPS_MISSING=1 + + [ $# -eq 0 ] && return $R_DEPS_SATISFIED + + local deplist="$*" + + if [ "$DEP_BIN" -eq 0 ]; then + return $R_DEPS_MISSING + fi + + if [ "$DEP_BIN" -eq 1 ]; then + # install missing deps from binary packages (using pacman -S) + msg "$(gettext "Installing missing dependencies...")" + local ret=0 + + if [ "$ASROOT" -eq 0 ]; then + sudo pacman $PACMAN_OPTS -S --asdeps $deplist || ret=$? + else + pacman $PACMAN_OPTS -S --asdeps $deplist || ret=$? + fi + + if [ $ret -ne 0 ]; then + error "$(gettext "Pacman failed to install missing dependencies.")" + exit 1 # TODO: error code + fi + fi + + # we might need the new system environment + # set -e can cause problems during sourcing profile scripts + set +e + source /etc/profile &>/dev/null + set -e + + return $R_DEPS_SATISFIED +} + +resolve_deps() { + # $pkgdeps is a GLOBAL variable, used by remove_deps() + local R_DEPS_SATISFIED=0 + local R_DEPS_MISSING=1 + + local deplist="$(check_deps $*)" + if [ -z "$deplist" ]; then + return $R_DEPS_SATISFIED + fi + + if handledeps $deplist; then + pkgdeps="$pkgdeps $deplist" + # check deps again to make sure they were resolved + deplist="$(check_deps $*)" + [ -z "$deplist" ] && return $R_DEPS_SATISFIED + elif [ "$DEP_BIN" -eq 1 ]; then + error "$(gettext "Failed to install all missing dependencies.")" + fi + + msg "$(gettext "Missing Dependencies:")" + local dep + for dep in $deplist; do + msg2 "$dep" + done + + return $R_DEPS_MISSING +} + +# fix flyspray bug #5923 +remove_deps() { + # $pkgdeps is a GLOBAL variable, set by resolve_deps() + [ "$RMDEPS" -eq 0 ] && return + [ -z "$pkgdeps" ] && return + + local dep depstrip deplist + deplist="" + for dep in $pkgdeps; do + depstrip=$(echo $dep | sed -e 's|=.*$||' -e 's|>.*$||' -e 's|<.*$||') + deplist="$deplist $depstrip" + done + + msg "Removing installed dependencies..." + local ret=0 + if [ "$ASROOT" -eq 0 ]; then + sudo pacman $PACMAN_OPTS -Rns $deplist || ret=$? + else + pacman $PACMAN_OPTS -Rns $deplist || ret=$? + fi + + # Fixes FS#10039 - exit cleanly as package has built successfully + if [ $ret -ne 0 ]; then + warning "$(gettext "Failed to remove installed dependencies.")" + return 0 + fi +} + +download_sources() { + msg "$(gettext "Retrieving Sources...")" + + if [ ! -w "$SRCDEST" ] ; then + error "$(gettext "You do not have write permission to store downloads in %s.")" "$SRCDEST" + plain "$(gettext "Aborting...")" + exit 1 + fi + + pushd "$SRCDEST" &>/dev/null + + local netfile + for netfile in "${source[@]}"; do + local file=$(get_filename "$netfile") + local url=$(get_url "$netfile") + if [ -f "$startdir/$file" ]; then + msg2 "$(gettext "Found %s in build dir")" "$file" + rm -f "$srcdir/$file" + ln -s "$startdir/$file" "$srcdir/" + continue + elif [ -f "$SRCDEST/$file" ]; then + msg2 "$(gettext "Using cached copy of %s")" "$file" + rm -f "$srcdir/$file" + ln -s "$SRCDEST/$file" "$srcdir/" + continue + fi + + # if we get here, check to make sure it was a URL, else fail + if [ "$file" = "$url" ]; then + error "$(gettext "%s was not found in the build directory and is not a URL.")" "$file" + exit 1 # $E_MISSING_FILE + fi + + # find the client we should use for this URL + local dlclient=$(get_downloadclient "$url") || exit $? + + msg2 "$(gettext "Downloading %s...")" "$file" + # fix flyspray bug #3289 + local ret=0 + download_file "$dlclient" "$url" "$file" || ret=$? + if [ $ret -gt 0 ]; then + error "$(gettext "Failure while downloading %s")" "$file" + plain "$(gettext "Aborting...")" + exit 1 + fi + rm -f "$srcdir/$file" + ln -s "$SRCDEST/$file" "$srcdir/" + done + + popd &>/dev/null +} + +generate_checksums() { + msg "$(gettext "Generating checksums for source files...")" + plain "" + + if [ ! $(type -p openssl) ]; then + error "$(gettext "Cannot find openssl.")" + exit 1 # $E_MISSING_PROGRAM + fi + + local integ + for integ in ${INTEGRITY_CHECK[@]}; do + integ="$(echo $integ | tr '[:upper:]' '[:lower:]')" + case "$integ" in + md5|sha1|sha256|sha384|sha512) : ;; + *) + error "$(gettext "Invalid integrity algorithm '%s' specified.")" "$integ" + exit 1;; # $E_CONFIG_ERROR + esac + + local ct=0 + local numsrc=${#source[@]} + echo -n "${integ}sums=(" + + local i=0; + local indent='' + while [ $i -lt $((${#integ}+6)) ]; do + indent="$indent " + i=$(($i+1)) + done + + local netfile + for netfile in "${source[@]}"; do + local file="$(get_filename "$netfile")" + + if [ ! -f "$file" ] ; then + if [ ! -f "$SRCDEST/$file" ] ; then + error "$(gettext "Unable to find source file %s to generate checksum.")" "$file" + plain "$(gettext "Aborting...")" + exit 1 + else + file="$SRCDEST/$file" + fi + fi + + local sum="$(openssl dgst -${integ} "$file" | awk '{print $NF}')" + [ $ct -gt 0 ] && echo -n "$indent" + echo -n "'$sum'" + ct=$(($ct+1)) + [ $ct -lt $numsrc ] && echo + done + + echo ")" + done +} + +check_checksums() { + [ ${#source[@]} -eq 0 ] && return 0 + + if [ ! $(type -p openssl) ]; then + error "$(gettext "Cannot find openssl.")" + exit 1 # $E_MISSING_PROGRAM + fi + + local correlation=0 + local integ required + for integ in md5 sha1 sha256 sha384 sha512; do + local integrity_sums=($(eval echo "\${${integ}sums[@]}")) + if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then + msg "$(gettext "Validating source files with %s...")" "${integ}sums" + correlation=1 + local errors=0 + local idx=0 + local file + for file in "${source[@]}"; do + local found=1 + file="$(get_filename "$file")" + echo -n " $file ... " >&2 + + if [ ! -f "$file" ] ; then + if [ ! -f "$SRCDEST/$file" ] ; then + echo "$(gettext "NOT FOUND")" >&2 + errors=1 + found=0 + else + file="$SRCDEST/$file" + fi + fi + + if [ $found -gt 0 ] ; then + local expectedsum="$(echo ${integrity_sums[$idx]} | tr '[A-F]' '[a-f]')" + local realsum="$(openssl dgst -${integ} "$file" | awk '{print $NF}')" + if [ "$expectedsum" = "$realsum" ]; then + echo "$(gettext "Passed")" >&2 + else + echo "$(gettext "FAILED")" >&2 + errors=1 + fi + fi + + idx=$((idx + 1)) + done + + if [ $errors -gt 0 ]; then + error "$(gettext "One or more files did not pass the validity check!")" + exit 1 # TODO: error code + fi + elif [ ${#integrity_sums[@]} -gt 0 ]; then + error "$(gettext "Integrity checks (%s) differ in size from the source array.")" "$integ" + exit 1 # TODO: error code + fi + done + +# not so strict, mate +# if [ $correlation -eq 0 ]; then +# error "$(gettext "Integrity checks are missing.")" +# exit 1 # TODO: error code +# fi +} + +extract_sources() { + msg "$(gettext "Extracting Sources...")" + local netfile + for netfile in "${source[@]}"; do + file=$(get_filename "$netfile") + if in_array "$file" ${noextract[@]}; then + #skip source files in the noextract=() array + # these are marked explicitly to NOT be extracted + continue + fi + + if [ ! -f "$file" ] ; then + if [ ! -f "$SRCDEST/$file" ] ; then + error "$(gettext "Unable to find source file %s for extraction.")" "$file" + plain "$(gettext "Aborting...")" + exit 1 + else + file="$SRCDEST/$file" + fi + fi + + # fix flyspray #6246 + local file_type=$(file -bizL "$file") + local cmd='' + case "$file_type" in + *application/x-tar*|*application/zip*|*application/x-zip*|*application/x-cpio*) + cmd="bsdtar -x -f" ;; + *application/x-gzip*) + cmd="gunzip -d -f" ;; + *application/x-bzip*) + cmd="bunzip2 -f" ;; + *application/x-xz*) + cmd="xz -d -f" ;; + *) + # Don't know what to use to extract this file, + # skip to the next file + continue;; + esac + + local ret=0 + msg2 '%s' "$cmd \"$file\"" + $cmd "$file" || ret=$? + if [ $ret -ne 0 ]; then + error "$(gettext "Failed to extract %s")" "$file" + plain "$(gettext "Aborting...")" + exit 1 + fi + done + + if [ $EUID -eq 0 ]; then + # change perms of all source files to root user & root group + chown -R 0:0 "$srcdir" + fi +} + +run_build() { + # use distcc if it is requested (check buildenv and PKGBUILD opts) + if [ "$(check_buildenv distcc)" = "y" -a "$(check_option distcc)" != "n" ]; then + [ -d /usr/lib/distcc/bin ] && export PATH="/usr/lib/distcc/bin:$PATH" + export DISTCC_HOSTS + elif [ "$(check_option distcc)" = "n" ]; then + # if it is not wanted, clear the makeflags too + MAKEFLAGS="" + fi + + # use ccache if it is requested (check buildenv and PKGBUILD opts) + if [ "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then + [ -d /usr/lib/ccache/bin ] && export PATH="/usr/lib/ccache/bin:$PATH" + fi + + # clear user-specified makeflags if requested + if [ "$(check_option makeflags)" = "n" ]; then + MAKEFLAGS="" + fi + + msg "$(gettext "Starting build()...")" + cd "$srcdir" + + # ensure all necessary build variables are exported + export CFLAGS CXXFLAGS MAKEFLAGS LDFLAGS CHOST + # save our shell options so build() can't override what we need + local shellopts=$(shopt -p) + + local ret=0 + if [ "$LOGGING" -eq 1 ]; then + BUILDLOG="${startdir}/${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-build.log" + if [ -f "$BUILDLOG" ]; then + local i=1 + while true; do + if [ -f "$BUILDLOG.$i" ]; then + i=$(($i +1)) + else + break + fi + done + mv "$BUILDLOG" "$BUILDLOG.$i" + fi + + build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]} + else + build 2>&1 || ret=$? + fi + # reset our shell options + eval "$shellopts" + + if [ $ret -gt 0 ]; then + error "$(gettext "Build Failed.")" + plain "$(gettext "Aborting...")" + remove_deps + exit 2 # $E_BUILD_FAILED + fi +} + +run_package() { + if [ -z "$1" ]; then + pkgfunc="package" + nameofpkg="$pkgname" + else + pkgfunc="package_$1" + nameofpkg="$1" + fi + + # clear user-specified makeflags if requested + if [ "$(check_option makeflags)" = "n" ]; then + MAKEFLAGS="" + fi + + msg "$(gettext "Starting %s()...")" "$pkgfunc" + cd "$srcdir" + + # ensure all necessary build variables are exported + export CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST + + local ret=0 + if [ "$LOGGING" -eq 1 ]; then + BUILDLOG="${startdir}/${nameofpkg}-${pkgver}-${pkgrel}-${CARCH}-package.log" + if [ -f "$BUILDLOG" ]; then + local i=1 + while true; do + if [ -f "$BUILDLOG.$i" ]; then + i=$(($i +1)) + else + break + fi + done + mv "$BUILDLOG" "$BUILDLOG.$i" + fi + + # ensure overridden package variables suvrive tee with split packages + logpipe=$(mktemp -u "$startdir/logpipe.XXXXXXXX") + mknod "$logpipe" p + exec 3>&1 + tee "$BUILDLOG" < "$logpipe" & + exec 1>"$logpipe" 2>"$logpipe" + $pkgfunc 2>&1 || ret=$? + sync + exec 1>&3 2>&3 3>&- + rm "$logpipe" + else + $pkgfunc 2>&1 || ret=$? + fi + + if [ $ret -gt 0 ]; then + error "$(gettext "Packaging Failed.")" + plain "$(gettext "Aborting...")" + remove_deps + exit 2 # $E_BUILD_FAILED + fi +} + +tidy_install() { + cd "$pkgdir" + msg "$(gettext "Tidying install...")" + + if [ "$(check_option docs)" = "n" -a -n "${DOC_DIRS[*]}" ]; then + msg2 "$(gettext "Removing doc files...")" + rm -rf ${DOC_DIRS[@]} + fi + + if [ "$(check_option purge)" = "y" -a -n "${PURGE_TARGETS[*]}" ]; then + msg2 "$(gettext "Purging other files...")" + local pt + for pt in "${PURGE_TARGETS[@]}"; do + if [ "${pt}" = "${pt//\/}" ]; then + find . -type f -name "${pt}" -exec rm -f -- '{}' \; + else + rm -f ${pt} + fi + done + fi + + if [ "$(check_option zipman)" = "y" -a -n "${MAN_DIRS[*]}" ]; then + msg2 "$(gettext "Compressing man and info pages...")" + local manpage ext file link hardlinks hl + find ${MAN_DIRS[@]} -type f 2>/dev/null | + while read manpage ; do + # check file still exists (potentially compressed with hard link) + if [ -f ${manpage} ]; then + ext="${manpage##*.}" + file="${manpage##*/}" + if [ "$ext" != "gz" -a "$ext" != "bz2" ]; then + # update symlinks to this manpage + find ${MAN_DIRS[@]} -lname "$file" 2>/dev/null | + while read link ; do + rm -f "$link" + ln -sf "${file}.gz" "${link}.gz" + done + # find hard links and remove them + # the '|| true' part keeps the script from bailing if find returned an + # error, such as when one of the man directories doesn't exist + hardlinks="$(find ${MAN_DIRS[@]} \! -name "$file" -samefile "$manpage" 2>/dev/null)" || true + for hl in ${hardlinks}; do + rm -f "${hl}"; + done + # compress the original + gzip -9 "$manpage" + # recreate hard links removed earlier + for hl in ${hardlinks}; do + ln "${manpage}.gz" "${hl}.gz" + chmod 644 ${hl}.gz + done + fi + fi + done + fi + + if [ "$(check_option splitdbg)" = "y" ] || [ "$SPLIT_DBG" = "1" ]; then + msg2 "$(gettext "Moving debugging symbols from binaries and libraries into separate files...")" + local binary + if [ -z "${STRIP_DIRS[*]}" ]; then + # fall back to default value + STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} + opt/*/{bin,lib,sbin}) + fi + find ${STRIP_DIRS[@]} -type f 2>/dev/null | while read binary ; do + case "$(file -biz "$binary")" in + *application/x-sharedlib*) # Libraries (.so) + /usr/bin/objcopy --only-keep-debug "$binary" "$binary.debug" + /usr/bin/strip --strip-debug --strip-unneeded "$binary" + debug_basebinary=`echo "$binary" | awk -F '/' '{print $NF}'` + debug_symbolfile=`echo "$binary.debug" | awk -F '/' '{print $NF}'` + debug_basedir=`dirname "$binary.debug"` + pushd $debug_basedir &>/dev/null + /usr/bin/objcopy --add-gnu-debuglink="$debug_symbolfile" "$debug_basebinary" + popd &>/dev/null + if [ ! -d "${dbgdir}/usr/lib/debug/${debug_basedir}" ]; then + mkdir -p "${dbgdir}/usr/lib/debug/${debug_basedir}" + fi + mv "$binary.debug" "${dbgdir}/usr/lib/debug/${debug_basedir}/$debug_symbolfile";; + *application/x-archive*) # Libraries (.a) + /usr/bin/objcopy --only-keep-debug "$binary" "$binary.debug" + /usr/bin/strip --strip-debug --strip-unneeded "$binary" + debug_basebinary=`echo "$binary" | awk -F '/' '{print $NF}'` + debug_symbolfile=`echo "$binary.debug" | awk -F '/' '{print $NF}'` + debug_basedir=`dirname "$binary.debug"` + pushd $debug_basedir &>/dev/null + /usr/bin/objcopy --add-gnu-debuglink="$debug_symbolfile" "$debug_basebinary" + popd &>/dev/null + if [ ! -d "${dbgdir}/usr/lib/debug/${debug_basedir}" ]; then + mkdir -p "${dbgdir}/usr/lib/debug/${debug_basedir}" + fi + mv "$binary.debug" "${dbgdir}/usr/lib/debug/${debug_basedir}/$debug_symbolfile";; + *application/x-executable*) # Binaries + /usr/bin/objcopy --only-keep-debug "$binary" "$binary.debug" + /usr/bin/strip --strip-debug --strip-unneeded "$binary" + debug_basebinary=`echo "$binary" | awk -F '/' '{print $NF}'` + debug_symbolfile=`echo "$binary.debug" | awk -F '/' '{print $NF}'` + debug_basedir=`dirname "$binary.debug"` + pushd $debug_basedir &>/dev/null + /usr/bin/objcopy --add-gnu-debuglink="$debug_symbolfile" "$debug_basebinary" + popd &>/dev/null + if [ ! -d "${dbgdir}/usr/lib/debug/${debug_basedir}" ]; then + mkdir -p "${dbgdir}/usr/lib/debug/${debug_basedir}" + fi + mv "$binary.debug" "${dbgdir}/usr/lib/debug/${debug_basedir}/$debug_symbolfile";; + esac + done + fi + + if [ "$(check_option strip)" = "y" -a -n "${STRIP_DIRS[*]}" ]; then + msg2 "$(gettext "Stripping debugging symbols from binaries and libraries...")" + local binary + find ${STRIP_DIRS[@]} -type f 2>/dev/null | while read binary ; do + case "$(file -biz "$binary")" in + *compressed-encoding*) # Skip compressed binarys + ;; + *application/x-sharedlib*) # Libraries (.so) + /usr/bin/strip -S "$binary";; + *application/x-archive*) # Libraries (.a) + /usr/bin/strip -S "$binary";; + *application/x-executable*) # Binaries + /usr/bin/strip "$binary";; + esac + done + fi + + if [ "$(check_option splithdr)" = "y" ] || [ "$SPLIT_HDR" = "1" ]; then + msg2 "$(gettext "Moving header files into separate package...")" + + # this is very hardcoded stuff + if [ -d "${pkgdir}/usr/include" ]; then + msg "DEBUG: moving headers..." + ls -la ${pkgdir}/usr/include + # move headers into new package + mkdir -p ${hdrdir}/usr + mv -v ${pkgdir}/usr/include ${hdrdir}/usr + fi + + if [ -d "${pkgdir}/usr/share/apps/cmake" ]; then + msg "DEBUG: moving .cmake files..." + ls -la ${pkgdir}/usr/share/apps/cmake + # also move .cmake files into the new package + mkdir -p ${hdrdir}/usr/share/apps + mv -v ${pkgdir}/usr/share/apps/cmake ${hdrdir}/usr/share/apps + fi + fi + + if [ "$(check_option libtool)" = "n" ]; then + msg2 "$(gettext "Removing libtool .la files...")" + find . ! -type d -name "*.la" -exec rm -f -- '{}' \; + fi + + if [ "$(check_option emptydirs)" = "n" ]; then + msg2 "$(gettext "Removing empty directories...")" + find . -depth -type d -empty -delete + fi +} + +write_pkginfo() { + local builddate=$(date -u "+%s") + if [ -n "$PACKAGER" ]; then + local packager="$PACKAGER" + else + local packager="Unknown Packager" + fi + local size=$(du -sk | awk '{print $1 * 1024}') + + msg2 "$(gettext "Generating .PKGINFO file...")" + echo "# Generated by makepkg $myver" >.PKGINFO + if [ "$INFAKEROOT" -eq 1 ]; then + echo "# using $(fakeroot -v)" >>.PKGINFO + fi + echo "# $(LC_ALL=C date -u)" >>.PKGINFO + echo "pkgname = $1" >>.PKGINFO + [ "$SPLITPKG" -eq 1 ] && echo "pkgbase = $pkgbase" >>.PKGINFO + echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO + echo "pkgdesc = $pkgdesc" >>.PKGINFO + echo "url = $url" >>.PKGINFO + echo "builddate = $builddate" >>.PKGINFO + echo "packager = $packager" >>.PKGINFO + echo "size = $size" >>.PKGINFO + if [ -n "$CARCH" ]; then + echo "arch = $CARCH" >>.PKGINFO + fi + if [ "$(check_option force)" = "y" ]; then + echo "force = true" >> .PKGINFO + fi + + local it + for it in "${license[@]}"; do + echo "license = $it" >>.PKGINFO + done + for it in "${replaces[@]}"; do + echo "replaces = $it" >>.PKGINFO + done + for it in "${groups[@]}"; do + echo "group = $it" >>.PKGINFO + done + for it in "${depends[@]}"; do + echo "depend = $it" >>.PKGINFO + done + for it in "${optdepends[@]}"; do + echo "optdepend = $it" >>.PKGINFO + done + for it in "${conflicts[@]}"; do + echo "conflict = $it" >>.PKGINFO + done + for it in "${provides[@]}"; do + echo "provides = $it" >>.PKGINFO + done + for it in "${backup[@]}"; do + echo "backup = $it" >>.PKGINFO + done + for it in "${packaging_options[@]}"; do + local ret="$(check_option $it)" + if [ "$ret" != "?" ]; then + if [ "$ret" = "y" ]; then + echo "makepkgopt = $it" >>.PKGINFO + else + echo "makepkgopt = !$it" >>.PKGINFO + fi + fi + done + + # TODO maybe remove this at some point + # warn if license array is not present or empty + if [ -z "$license" ]; then + warning "$(gettext "Please add a license line to your %s!")" "$BUILDSCRIPT" + plain "$(gettext "Example for GPL\'ed software: license=('GPL').")" + fi +} + +write_debug_pkginfo() { + local builddate=$(date -u "+%s") + if [ -n "$PACKAGER" ]; then + local packager="$PACKAGER" + else + local packager="Unknown Packager" + fi + local size=$(du -sk | awk '{print $1 * 1024}') + + msg2 "$(gettext "Generating .PKGINFO file...")" + echo "# Generated by makepkg $myver" >.PKGINFO + if [ "$INFAKEROOT" -eq 1 ]; then + echo "# using $(fakeroot -v)" >>.PKGINFO + fi + echo "# $(LC_ALL=C date -u)" >>.PKGINFO + echo "pkgname = $1-debug" >>.PKGINFO + [ "$SPLITPKG" -eq 1 ] && echo "pkgbase = $pkgbase" >>.PKGINFO + echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO + echo "pkgdesc = $pkgdesc (Debugging Symbols)" >>.PKGINFO + echo "url = $url" >>.PKGINFO + echo "builddate = $builddate" >>.PKGINFO + echo "packager = $packager" >>.PKGINFO + echo "size = $size" >>.PKGINFO + if [ -n "$CARCH" ]; then + echo "arch = $CARCH" >>.PKGINFO + fi + + echo "group = kdemod-debug" >>.PKGINFO + [ "$SPLITPKG" -eq 1 ] && echo "group = $pkgbase-debug" >>.PKGINFO + echo "group = kdemod-uninstall" >>.PKGINFO + + local it + for it in "${packaging_options[@]}"; do + local ret="$(check_option $it)" + if [ "$ret" != "?" ]; then + if [ "$ret" = "y" ]; then + echo "makepkgopt = $it" >>.PKGINFO + else + echo "makepkgopt = !$it" >>.PKGINFO + fi + fi + done + + # TODO maybe remove this at some point + # warn if license array is not present or empty + if [ -z "$license" ]; then + warning "$(gettext "Please add a license line to your %s!")" "$BUILDSCRIPT" + plain "$(gettext "Example for GPL\'ed software: license=('GPL').")" + fi +} + +write_header_pkginfo() { + local builddate=$(date -u "+%s") + if [ -n "$PACKAGER" ]; then + local packager="$PACKAGER" + else + local packager="Unknown Packager" + fi + local size=$(du -sk | awk '{print $1 * 1024}') + + msg2 "$(gettext "Generating .PKGINFO file...")" + echo "# Generated by makepkg $myver" >.PKGINFO + if [ "$INFAKEROOT" -eq 1 ]; then + echo "# using $(fakeroot -v)" >>.PKGINFO + fi + echo "# $(LC_ALL=C date -u)" >>.PKGINFO + echo "pkgname = $1-devel" >>.PKGINFO + [ "$SPLITPKG" -eq 1 ] && echo "pkgbase = $pkgbase" >>.PKGINFO + echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO + echo "pkgdesc = $pkgdesc (Development Headers)" >>.PKGINFO + echo "url = $url" >>.PKGINFO + echo "builddate = $builddate" >>.PKGINFO + echo "packager = $packager" >>.PKGINFO + echo "size = $size" >>.PKGINFO + if [ -n "$CARCH" ]; then + echo "arch = $CARCH" >>.PKGINFO + fi + if [ "$(check_option force)" = "y" ]; then + echo "force = true" >> .PKGINFO + fi + + local it + for it in "${license[@]}"; do + echo "license = $it" >>.PKGINFO + done + + echo "depends = $nameofpkg" >>.PKGINFO + echo "group = kdemod-devel" >>.PKGINFO + echo "group = kdemod-headers" >>.PKGINFO + echo "group = kdemod-uninstall" >>.PKGINFO + + for it in "${packaging_options[@]}"; do + local ret="$(check_option $it)" + if [ "$ret" != "?" ]; then + if [ "$ret" = "y" ]; then + echo "makepkgopt = $it" >>.PKGINFO + else + echo "makepkgopt = !$it" >>.PKGINFO + fi + fi + done + + # TODO maybe remove this at some point + # warn if license array is not present or empty + if [ -z "$license" ]; then + warning "$(gettext "Please add a license line to your %s!")" "$BUILDSCRIPT" + plain "$(gettext "Example for GPL\'ed software: license=('GPL').")" + fi +} + +create_package() { + if [ ! -d "$pkgdir" ]; then + error "$(gettext "Missing pkg/ directory.")" + plain "$(gettext "Aborting...")" + exit 1 # $E_MISSING_PKGDIR + fi + + if [ -z "$1" ]; then + nameofpkg="$pkgname" + else + nameofpkg="$1" + fi + + cd "$pkgdir" + write_pkginfo $nameofpkg + + cd "$pkgdir" + msg "$(gettext "Creating package...")" + + local comp_files=".PKGINFO" + + # check for an install script + if [ -n "$install" ]; then + msg2 "$(gettext "Adding install script...")" + cp "$startdir/$install" .INSTALL + comp_files="$comp_files .INSTALL" + fi + + # do we have a changelog? + if [ -f "$startdir/ChangeLog" ]; then + msg2 "$(gettext "Adding package changelog...")" + cp "$startdir/ChangeLog" .CHANGELOG + comp_files="$comp_files .CHANGELOG" + fi + + # tar it up + msg2 "$(gettext "Compressing package...")" + + case "$PKGEXT" in + *tar.gz) EXT=${PKGEXT%.gz} ;; + *tar.bz2) EXT=${PKGEXT%.bz2} ;; + *tar.xz) EXT=${PKGEXT%.xz} ;; + *) warning "$(gettext "'%s' is not a valid archive extension.")" \ + "$PKGEXT" ; EXT=$PKGEXT ;; + esac + local pkg_file="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${CARCH}${EXT}" + + local ret=0 + + # when fileglobbing, we want * in an empty directory to expand to + # the null string rather than itself + shopt -s nullglob + bsdtar -cf - $comp_files * > "$pkg_file" || ret=$? + shopt -u nullglob + + if [ $ret -eq 0 ]; then + case "$PKGEXT" in + *tar.gz) gzip -f -n "$pkg_file" ;; + *tar.bz2) bzip2 -f "$pkg_file" ;; + *tar.xz) xz -z -f "$pkg_file" ;; + esac + ret=$? + fi + + if [ $ret -ne 0 ]; then + error "$(gettext "Failed to create package file.")" + exit 1 # TODO: error code + fi +} + +create_debug_package() { + if [ ! -d "$dbgdir" ]; then + error "$(gettext "Missing dbg/ directory.")" + plain "$(gettext "Aborting...")" + exit 1 # $E_MISSING_PKGDIR + fi + + if [ -z "$1" ]; then + nameofpkg="$pkgname" + else + nameofpkg="$1" + fi + + cd "$dbgdir" + write_debug_pkginfo $nameofpkg + + cd "$dbgdir" + msg "$(gettext "Creating package...")" + + local comp_files=".PKGINFO" + + # tar it up + msg2 "$(gettext "Compressing package...")" + + case "$PKGEXT" in + *tar.gz) EXT=${PKGEXT%.gz} ;; + *tar.bz2) EXT=${PKGEXT%.bz2} ;; + *tar.xz) EXT=${PKGEXT%.xz} ;; + *) warning "$(gettext "'%s' is not a valid archive extension.")" \ + "$PKGEXT" ; EXT=$PKGEXT ;; + esac + local pkg_file="$PKGDEST/${nameofpkg}-debug-${pkgver}-${pkgrel}-${CARCH}${EXT}" + + local ret=0 + + # when fileglobbing, we want * in an empty directory to expand to + # the null string rather than itself + shopt -s nullglob + bsdtar -cf - $comp_files * > "$pkg_file" || ret=$? + shopt -u nullglob + + if [ $ret -eq 0 ]; then + case "$PKGEXT" in + *tar.gz) gzip -f -n "$pkg_file" ;; + *tar.bz2) bzip2 -f "$pkg_file" ;; + *tar.xz) xz -z -f "$pkg_file" ;; + esac + ret=$? + fi + + if [ $ret -ne 0 ]; then + error "$(gettext "Failed to create debug package file.")" + exit 1 # TODO: error code + fi +} + +create_header_package() { + if [ ! -d "$hdrdir" ]; then + error "$(gettext "Missing hdr/ directory.")" + plain "$(gettext "Aborting...")" + exit 1 # $E_MISSING_PKGDIR + fi + + if [ -z "$1" ]; then + nameofpkg="$pkgname" + else + nameofpkg="$1" + fi + + cd "$hdrdir" + write_header_pkginfo $nameofpkg + + cd "$hdrdir" + msg "$(gettext "Creating package...")" + + local comp_files=".PKGINFO" + + # tar it up + msg2 "$(gettext "Compressing package...")" + + case "$PKGEXT" in + *tar.gz) EXT=${PKGEXT%.gz} ;; + *tar.bz2) EXT=${PKGEXT%.bz2} ;; + *tar.xz) EXT=${PKGEXT%.xz} ;; + *) warning "$(gettext "'%s' is not a valid archive extension.")" \ + "$PKGEXT" ; EXT=$PKGEXT ;; + esac + local pkg_file="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${CARCH}${EXT}" + + local ret=0 + + # when fileglobbing, we want * in an empty directory to expand to + # the null string rather than itself + shopt -s nullglob + bsdtar -cf - $comp_files * > "$pkg_file" || ret=$? + shopt -u nullglob + + if [ $ret -eq 0 ]; then + case "$PKGEXT" in + *tar.gz) gzip -f -n "$pkg_file" ;; + *tar.bz2) bzip2 -f "$pkg_file" ;; + *tar.xz) xz -z -f "$pkg_file" ;; + esac + ret=$? + fi + + if [ $ret -ne 0 ]; then + error "$(gettext "Failed to create header package file.")" + exit 1 # TODO: error code + fi +} + +create_header2_package() { + if [ -z "$1" ]; then + nameofpkg="$pkgname" + else + nameofpkg="$1" + fi + + if [ ! -d "$hdrdir" ]; then + error "$(gettext "Missing hdr/ directory.")" + plain "$(gettext "Aborting...")" + exit 1 # $E_MISSING_PKGDIR + fi + + cd "$hdrdir" + msg "$(gettext "Creating package with header files...")" + + local builddate=$(date -u "+%s") + if [ -n "$PACKAGER" ]; then + local packager="$PACKAGER" + else + local packager="Unknown Packager" + fi + local size=$(du -sk | awk '{print $1 * 1024}') + + # write the .PKGINFO file + msg2 "$(gettext "Generating .PKGINFO file...")" + echo "# Generated by makepkg $myver" >.PKGINFO + if [ "$INFAKEROOT" -eq 1 ]; then + echo "# using $(fakeroot -v)" >>.PKGINFO + fi + echo "# $(LC_ALL=C date -u)" >>.PKGINFO + echo "pkgname = $nameofpkg-devel" >>.PKGINFO + echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO + echo "pkgdesc = $pkgdesc (development files)" >>.PKGINFO + echo "url = $url" >>.PKGINFO + echo "builddate = $builddate" >>.PKGINFO + echo "packager = $packager" >>.PKGINFO + echo "size = $size" >>.PKGINFO + if [ -n "$CARCH" ]; then + echo "arch = $CARCH" >>.PKGINFO + fi + if [ "$(check_option force)" = "y" ]; then + echo "force = true" >> .PKGINFO + fi + + local it + for it in "${license[@]}"; do + echo "license = $it" >>.PKGINFO + done + + echo "depends = $nameofpkg" >>.PKGINFO + echo "group = kdemod-devel" >>.PKGINFO + echo "group = kdemod-headers" >>.PKGINFO + + for it in "${packaging_options[@]}"; do + local ret="$(check_option $it)" + if [ "$ret" != "?" ]; then + if [ "$ret" = "y" ]; then + echo "makepkgopt = $it" >>.PKGINFO + else + echo "makepkgopt = !$it" >>.PKGINFO + fi + fi + done + + # TODO maybe remove this at some point + # warn if license array is not present or empty + if [ -z "$license" ]; then + warning "$(gettext "Please add a license line to your %s!")" "$BUILDSCRIPT" + plain "$(gettext "Example for GPL'ed software: license=('GPL').")" + fi + + local comp_files=".PKGINFO" + + # tar it up + msg2 "$(gettext "Compressing package...")" + + local TAR_OPT + case "$PKGEXT" in + *tar.gz) TAR_OPT="z" ;; + *tar.bz2) TAR_OPT="j" ;; + *) warning "$(gettext "'%s' is not a valid archive extension.")" \ + "$PKGEXT" ;; + esac + + local pkg_file="$PKGDEST/${nameofpkg}-devel-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" + + # when fileglobbing, we want * in an empty directory to expand to + # the null string rather than itself + shopt -s nullglob + + if ! bsdtar -c${TAR_OPT}f "$pkg_file" $comp_files *; then + error "$(gettext "Failed to create package file.")" + exit 1 # TODO: error code + fi + shopt -u nullglob +} + +create_srcpackage() { + cd "$startdir" + + # Get back to our src directory so we can begin with sources. + mkdir -p "$srcdir" + cd "$srcdir" + download_sources + # We can only check checksums if we have all files. + check_checksums + cd "$startdir" + + msg "$(gettext "Creating source package...")" + local srclinks="$(mktemp -d "$startdir"/srclinks.XXXXXXXXX)" + mkdir "${srclinks}"/${pkgbase} + + msg2 "$(gettext "Adding %s...")" "$BUILDSCRIPT" + ln -s "${BUILDFILE}" "${srclinks}/${pkgbase}/${BUILDSCRIPT}" + + if [ -n "$install" ]; then + if [ -f $install ]; then + msg2 "$(gettext "Adding install script...")" + ln -s "${startdir}/$install" "${srclinks}/${pkgbase}/" + else + error "$(gettext "Install script %s not found.")" "$install" + fi + fi + + if [ -f ChangeLog ]; then + msg2 "$(gettext "Adding %s...")" "ChangeLog" + ln -s "${startdir}/ChangeLog" "${srclinks}/${pkgbase}" + fi + + local netfile + for netfile in "${source[@]}"; do + local file=$(get_filename "$netfile") + if [ -f "$netfile" ]; then + msg2 "$(gettext "Adding %s...")" "$netfile" + ln -s "${startdir}/$netfile" "${srclinks}/${pkgbase}" + elif [ "$SOURCEONLY" -eq 2 -a -f "$SRCDEST/$file" ]; then + msg2 "$(gettext "Adding %s...")" "$file" + ln -s "$SRCDEST/$file" "${srclinks}/${pkgbase}/" + fi + done + + local TAR_OPT + case "$SRCEXT" in + *tar.gz) TAR_OPT="z" ;; + *tar.bz2) TAR_OPT="j" ;; + *tar.xz) TAR_OPT="J" ;; + *) warning "$(gettext "'%s' is not a valid archive extension.")" \ + "$SRCEXT" ;; + esac + + local pkg_file="$PKGDEST/${pkgbase}-${pkgver}-${pkgrel}${SRCEXT}" + + # tar it up + msg2 "$(gettext "Compressing source package...")" + cd "${srclinks}" + if ! bsdtar -c${TAR_OPT}Lf "$pkg_file" ${pkgbase}; then + error "$(gettext "Failed to create source package file.")" + exit 1 # TODO: error code + fi + cd "${startdir}" + rm -rf "${srclinks}" +} + +install_package() { + [ "$INSTALL" -eq 0 ] && return + + if [ "$SPLITPKG" -eq 0 ]; then + msg "$(gettext "Installing package ${pkgname} with pacman -U...")" + else + msg "$(gettext "Installing ${pkgbase} package group with pacman -U...")" + fi + + local pkglist + for pkg in ${pkgname[@]}; do + pkglist="${pkglist} $PKGDEST/${pkg}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" + done + + local ret=0 + if [ "$ASROOT" -eq 0 ]; then + sudo pacman $PACMAN_OPTS -U ${pkglist} || ret=$? + else + pacman $PACMAN_OPTS -U ${pkglist} || ret=$? + fi + + if [ $ret -ne 0 ]; then + warning "$(gettext "Failed to install built package(s).")" + return 0 + fi +} + +check_sanity() { + # check for no-no's in the build script + if [ -z "$pkgname" ]; then + error "$(gettext "%s is not allowed to be empty.")" "pkgname" + return 1 + fi + if [ -z "$pkgver" ]; then + error "$(gettext "%s is not allowed to be empty.")" "pkgver" + return 1 + fi + if [ -z "$pkgrel" ]; then + error "$(gettext "%s is not allowed to be empty.")" "pkgrel" + return 1 + fi + if [ "${pkgname:0:1}" == "-" ]; then + error "$(gettext "%s is not allowed to start with a hyphen.")" "pkgname" + return 1 + fi + if [ "$pkgver" != "${pkgver//-/}" ]; then + error "$(gettext "%s is not allowed to contain hyphens.")" "pkgver" + return 1 + fi + if [ "$pkgrel" != "${pkgrel//-/}" ]; then + error "$(gettext "%s is not allowed to contain hyphens.")" "pkgrel" + return 1 + fi + + if [ "$arch" = 'any' ]; then + CARCH='any' + fi + if ! in_array $CARCH ${arch[@]}; then + if [ "$IGNOREARCH" -eq 0 ]; then + error "$(gettext "%s is not available for the '%s' architecture.")" "$pkgbase" "$CARCH" + plain "$(gettext "Note that many packages may need a line added to their %s")" "$BUILDSCRIPT" + plain "$(gettext "such as arch=('%s').")" "$CARCH" + return 1 + fi + fi + + local provide + for provide in ${provides[@]}; do + if [ $provide != ${provide///} ]; then + error "$(gettext "Provides array cannot contain comparison (< or >) operators.")" + return 1 + fi + done + + if [ "$install" -a ! -f "$install" ]; then + error "$(gettext "Install scriptlet (%s) does not exist.")" "$install" + return 1 + fi + + local valid_options=1 + local opt known kopt + for opt in ${options[@]}; do + known=0 + # check if option matches a known option or its inverse + for kopt in ${packaging_options[@]} ${other_options[@]}; do + if [ "${opt}" = "${kopt}" -o "${opt}" = "!${kopt}" ]; then + known=1 + fi + done + if [ $known -eq 0 ]; then + error "$(gettext "options array contains unknown option '%s'")" "$opt" + valid_options=0 + fi + done + if [ $valid_options -eq 0 ]; then + return 1 + fi + + if [ "${#pkgname[@]}" -gt "1" ]; then + for pkg in ${pkgname[@]}; do + if [ "$(type -t package_${pkg})" != "function" ]; then + error "$(gettext "missing package function for split package '%s'")" "$pkg" + return 1 + fi + done + fi + + return 0 +} + +devel_check() { + newpkgver="" + + # Do not update pkgver if --holdver is set, when building a source package, + # when reading PKGBUILD from pipe (-f), or if we cannot write to the file (-w) + if [ "$HOLDVER" -eq 1 -o "$SOURCEONLY" -ne 0 -o ! -f "$BUILDFILE" \ + -o ! -w "$BUILDFILE" ]; then + return + fi + + if [ -z "$FORCE_VER" ]; then + # Check if this is a svn/cvs/etc PKGBUILD; set $newpkgver if so. + # This will only be used on the first call to makepkg; subsequent + # calls to makepkg via fakeroot will explicitly pass the version + # number to avoid having to determine the version number twice. + # Also do a brief check to make sure we have the VCS tool available. + oldpkgver=$pkgver + if [ -n "${_darcstrunk}" -a -n "${_darcsmod}" ] ; then + [ $(type -p darcs) ] || return 0 + msg "$(gettext "Determining latest darcs revision...")" + newpkgver=$(date +%Y%m%d) + elif [ -n "${_cvsroot}" -a -n "${_cvsmod}" ] ; then + [ $(type -p cvs) ] || return 0 + msg "$(gettext "Determining latest cvs revision...")" + newpkgver=$(date +%Y%m%d) + elif [ -n "${_gitroot}" -a -n "${_gitname}" ] ; then + [ $(type -p git) ] || return 0 + msg "$(gettext "Determining latest git revision...")" + newpkgver=$(date +%Y%m%d) + elif [ -n "${_svntrunk}" -a -n "${_svnmod}" ] ; then + [ $(type -p svn) ] || return 0 + msg "$(gettext "Determining latest svn revision...")" + newpkgver=$(LC_ALL=C svn info $_svntrunk | sed -n 's/^Last Changed Rev: \([0-9]*\)$/\1/p') + elif [ -n "${_bzrtrunk}" -a -n "${_bzrmod}" ] ; then + [ $(type -p bzr) ] || return 0 + msg "$(gettext "Determining latest bzr revision...")" + newpkgver=$(bzr revno ${_bzrtrunk}) + elif [ -n "${_hgroot}" -a -n "${_hgrepo}" ] ; then + [ $(type -p hg) ] || return 0 + msg "$(gettext "Determining latest hg revision...")" + if [ -d ./src/$_hgrepo ] ; then + cd ./src/$_hgrepo + hg pull + hg update + else + [[ ! -d ./src/ ]] && mkdir ./src/ + hg clone $_hgroot/$_hgrepo ./src/$_hgrepo + cd ./src/$_hgrepo + fi + newpkgver=$(hg tip --template "{rev}") + cd ../../ + fi + + if [ -n "$newpkgver" ]; then + msg2 "$(gettext "Version found: %s")" "$newpkgver" + fi + + else + # Version number retrieved from fakeroot->makepkg argument + newpkgver=$FORCE_VER + fi +} + +devel_update() { + # This is lame, but if we're wanting to use an updated pkgver for + # retrieving svn/cvs/etc sources, we'll update the PKGBUILD with + # the new pkgver and then re-source it. This is the most robust + # method for dealing with PKGBUILDs that use, e.g.: + # + # pkgver=23 + # ... + # _foo=pkgver + # + if [ -n "$newpkgver" ]; then + if [ "$newpkgver" != "$pkgver" ]; then + if [ -f "$BUILDFILE" -a -w "$BUILDFILE" ]; then + sed -i "s/^pkgver=[^ ]*/pkgver=$newpkgver/" "$BUILDFILE" + sed -i "s/^pkgrel=[^ ]*/pkgrel=1/" "$BUILDFILE" + source "$BUILDFILE" + fi + fi + fi +} + +backup_package_variables() { + for var in ${splitpkg_overrides[@]}; do + indirect="${var}_backup" + eval "${indirect}=(\${$var[@]})" + done +} + +restore_package_variables() { + for var in ${splitpkg_overrides[@]}; do + indirect="${var}_backup" + if [ -n "${!indirect}" ]; then + eval "${var}=(\${$indirect[@]})" + else + unset ${var} + fi + done + + # pkgdesc gets restored as an array - convert back to a string + local pkgdesc_backup="${pkgdesc[@]}" + unset pkgdesc + pkgdesc=${pkgdesc_backup} +} + +# getopt like parser +parse_options() { + local short_options=$1; shift; + local long_options=$1; shift; + local ret=0; + local unused_options="" + + while [ -n "$1" ]; do + if [ ${1:0:2} = '--' ]; then + if [ -n "${1:2}" ]; then + local match="" + for i in ${long_options//,/ }; do + if [ ${1:2} = ${i//:} ]; then + match=$i + break + fi + done + if [ -n "$match" ]; then + if [ ${1:2} = $match ]; then + printf ' %s' "$1" + else + if [ -n "$2" ]; then + printf ' %s' "$1" + shift + printf " '%s'" "$1" + else + echo "makepkg: option '$1' $(gettext "requires an argument")" >&2 + ret=1 + fi + fi + else + echo "makepkg: $(gettext "unrecognized option") '$1'" >&2 + ret=1 + fi + else + shift + break + fi + elif [ ${1:0:1} = '-' ]; then + for ((i=1; i<${#1}; i++)); do + if [[ "$short_options" =~ "${1:i:1}" ]]; then + if [[ "$short_options" =~ "${1:i:1}:" ]]; then + if [ -n "${1:$i+1}" ]; then + printf ' -%s' "${1:i:1}" + printf " '%s'" "${1:$i+1}" + else + if [ -n "$2" ]; then + printf ' -%s' "${1:i:1}" + shift + printf " '%s'" "${1}" + else + echo "makepkg: option $(gettext "requires an argument") -- '${1:i:1}'" >&2 + ret=1 + fi + fi + break + else + printf ' -%s' "${1:i:1}" + fi + else + echo "makepkg: $(gettext "invalid option") -- '${1:i:1}'" >&2 + ret=1 + fi + done + else + unused_options="${unused_options} '$1'" + fi + shift + done + + printf " --" + if [ -n "$unused_options" ]; then + for i in ${unused_options[@]}; do + printf ' %s' "$i" + done + fi + if [ -n "$1" ]; then + while [ -n "$1" ]; do + printf " '%s'" "${1}" + shift + done + fi + printf "\n" + + return $ret +} + +usage() { + printf "makepkg (pacman) %s\n" "$myver" + echo + printf "$(gettext "Usage: %s [options]")\n" "$0" + echo + echo "$(gettext "Options:")" + printf "$(gettext " -A, --ignorearch Ignore incomplete arch field in %s")\n" "$BUILDSCRIPT" + echo "$(gettext " -c, --clean Clean up work files after build")" + echo "$(gettext " -C, --cleancache Clean up source files from the cache")" + printf "$(gettext " --config Use an alternate config file (instead of '%s')")\n" "$confdir/makepkg.conf" + echo "$(gettext " -d, --nodeps Skip all dependency checks")" + echo "$(gettext " -e, --noextract Do not extract source files (use existing src/ dir)")" + echo "$(gettext " -f, --force Overwrite existing package")" + echo "$(gettext " -g, --geninteg Generate integrity checks for source files")" + echo "$(gettext " -h, --help This help")" + echo "$(gettext " -i, --install Install package after successful build")" + echo "$(gettext " -L, --log Log package build process")" + echo "$(gettext " -m, --nocolor Disable colorized output messages")" + echo "$(gettext " -o, --nobuild Download and extract files only")" + printf "$(gettext " -p Use an alternate build script (instead of '%s')")\n" "$BUILDSCRIPT" + echo "$(gettext " -r, --rmdeps Remove installed dependencies after a successful build")" + # fix flyspray feature request #2978 + echo "$(gettext " -R, --repackage Repackage contents of the package without rebuilding")" + echo "$(gettext " -s, --syncdeps Install missing dependencies with pacman")" + echo "$(gettext " -t, --splitdbg Put debugging symbols into their own package")" + echo "$(gettext " -u, --splithdr Put development headers into their own package")" + echo "$(gettext " --allsource Generate a source-only tarball including downloaded sources")" + echo "$(gettext " --asroot Allow makepkg to run as root user")" + echo "$(gettext " --holdver Prevent automatic version bumping for development PKGBUILDs")" + echo "$(gettext " --source Generate a source-only tarball without downloaded sources")" + echo + echo "$(gettext "These options can be passed to pacman:")" + echo + echo "$(gettext " --noconfirm Do not ask for confirmation when resolving dependencies")" + echo "$(gettext " --noprogressbar Do not show a progress bar when downloading files")" + echo + printf "$(gettext "If -p is not specified, makepkg will look for '%s'")\n" "$BUILDSCRIPT" + echo +} + +version() { + printf "makepkg (pacman) %s\n" "$myver" + printf "$(gettext "\ +Copyright (c) 2006-2009 Pacman Development Team .\n\ +Copyright (C) 2002-2006 Judd Vinet .\n\n\ +This is free software; see the source for copying conditions.\n\ +There is NO WARRANTY, to the extent permitted by law.\n")" +} + +# PROGRAM START + +# determine whether we have gettext; make it a no-op if we do not +if [ ! $(type -t gettext) ]; then + gettext() { + echo "$@" + } +fi + +ARGLIST=$@ + +# Parse Command Line Options. +OPT_SHORT="AbcCdefFghiLmop:rRstuV" +OPT_LONG="allsource,asroot,ignorearch,builddeps,clean,cleancache,nodeps" +OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,help,holdver" +OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,rmdeps,repackage,source" +OPT_LONG="$OPT_LONG,syncdeps,splitdbg,splithdr,version,config:" +# Pacman Options +OPT_LONG="$OPT_LONG,noconfirm,noprogressbar" +OPT_TEMP="$(parse_options $OPT_SHORT $OPT_LONG "$@" || echo 'PARSE_OPTIONS FAILED')" +if echo "$OPT_TEMP" | grep -q 'PARSE_OPTIONS FAILED'; then + # This is a small hack to stop the script bailing with 'set -e' + echo; usage; exit 1 # E_INVALID_OPTION; +fi +eval set -- "$OPT_TEMP" +unset OPT_SHORT OPT_LONG OPT_TEMP + +while true; do + case "$1" in + # Pacman Options + --noconfirm) PACMAN_OPTS="$PACMAN_OPTS --noconfirm" ;; + --noprogressbar) PACMAN_OPTS="$PACMAN_OPTS --noprogressbar" ;; + + # Makepkg Options + --allsource) SOURCEONLY=2 ;; + --asroot) ASROOT=1 ;; + -A|--ignorearch) IGNOREARCH=1 ;; + -c|--clean) CLEANUP=1 ;; + -C|--cleancache) CLEANCACHE=1 ;; + --config) shift; MAKEPKG_CONF=$1 ;; + -d|--nodeps) NODEPS=1 ;; + -e|--noextract) NOEXTRACT=1 ;; + -f|--force) FORCE=1 ;; + #hidden opt used by fakeroot call for svn/cvs/etc PKGBUILDs to set pkgver + --forcever) shift; FORCE_VER=$1;; + -F) INFAKEROOT=1 ;; + -g|--geninteg) GENINTEG=1 ;; + --holdver) HOLDVER=1 ;; + -i|--install) INSTALL=1 ;; + -L|--log) LOGGING=1 ;; + -m|--nocolor) USE_COLOR='n' ;; + -o|--nobuild) NOBUILD=1 ;; + -p) shift; BUILDFILE=$1 ;; + -r|--rmdeps) RMDEPS=1 ;; + -R|--repackage) REPKG=1 ;; + --source) SOURCEONLY=1 ;; + -s|--syncdeps) DEP_BIN=1 ;; + -t|--splitdbg) SPLIT_DBG=1 ;; + -u|--splithdr) SPLIT_HDR=1 ;; + + -h|--help) usage; exit 0 ;; # E_OK + -V|--version) version; exit 0 ;; # E_OK + + --) OPT_IND=0; shift; break;; + *) usage; exit 1 ;; # E_INVALID_OPTION + esac + shift +done + +#preserve environment variables +_PKGDEST=${PKGDEST} +_SRCDEST=${SRCDEST} + +# default config is makepkg.conf +MAKEPKG_CONF=${MAKEPKG_CONF:-$confdir/${current_repo}-${ARCH}-makepkg.conf} + +# Source the config file; fail if it is not found +if [ -r "$MAKEPKG_CONF" ]; then + source "$MAKEPKG_CONF" +else + error "$(gettext "%s not found.")" "$MAKEPKG_CONF" + plain "$(gettext "Aborting...")" + exit 1 # $E_CONFIG_ERROR +fi + +# Source user-specific makepkg.conf overrides +# (we dont need that) +# if [ -r ~/.makepkg.conf ]; then +# source ~/.makepkg.conf +# fi + +# check if messages are to be printed using color +if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then + COLORMSG=1 +fi + +# override settings with an environment variable for batch processing +PKGDEST=${_PKGDEST:-$PKGDEST} +PKGDEST=${PKGDEST:-$startdir} #default to $startdir if undefined +SRCDEST=${_SRCDEST:-$SRCDEST} +SRCDEST=${SRCDEST:-$startdir} #default to $startdir if undefined + + +if [ "$HOLDVER" -eq 1 -a -n "$FORCE_VER" ]; then + # The '\\0' is here to prevent gettext from thinking --holdver is an option + error "$(gettext "\\0--holdver and --forcever cannot both be specified" )" + exit 1 +fi + +if [ "$CLEANCACHE" -eq 1 ]; then + #fix flyspray feature request #5223 + if [ -n "$SRCDEST" -a "$SRCDEST" != "$startdir" ]; then + msg "$(gettext "Cleaning up ALL files from %s.")" "$SRCDEST" + echo -n "$(gettext " Are you sure you wish to do this? ")" + echo -n "$(gettext "[Y/n]")" + read answer + answer=$(echo $answer | tr '[:lower:]' '[:upper:]') + if [ "$answer" = "$(gettext "YES")" -o "$answer" = "$(gettext "Y")" ]; then + rm "$SRCDEST"/* + if [ $? -ne 0 ]; then + error "$(gettext "Problem removing files; you may not have correct permissions in %s")" "$SRCDEST" + exit 1 + else + # removal worked + msg "$(gettext "Source cache cleaned.")" + exit 0 + fi + else + # answer = no + msg "$(gettext "No files have been removed.")" + exit 0 + fi + else + # $SRCDEST is $startdir, two possibilities + error "$(gettext "Source destination must be defined in %s.")" "$MAKEPKG_CONF" + plain "$(gettext "In addition, please run makepkg -C outside of your cache directory.")" + exit 1 + fi +fi + +if [ "$INFAKEROOT" -eq 0 ]; then + if [ $EUID -eq 0 -a "$ASROOT" -eq 0 ]; then + # Warn those who like to live dangerously. + error "$(gettext "Running makepkg as root is a BAD idea and can cause")" + plain "$(gettext "permanent, catastrophic damage to your system. If you")" + plain "$(gettext "wish to run as root, please use the --asroot option.")" + exit 1 # $E_USER_ABORT + elif [ $EUID -gt 0 -a "$ASROOT" -eq 1 ]; then + # Warn those who try to use the --asroot option when they are not root + error "$(gettext "The --asroot option is meant for the root user only.")" + plain "$(gettext "Please rerun makepkg without the --asroot flag.")" + exit 1 # $E_USER_ABORT + elif [ "$(check_buildenv fakeroot)" = "y" -a $EUID -gt 0 ]; then + if [ ! $(type -p fakeroot) ]; then + error "$(gettext "Fakeroot must be installed if using the 'fakeroot' option")" + plain "$(gettext "in the BUILDENV array in %s.")" "$MAKEPKG_CONF" + exit 1 + fi + elif [ $EUID -gt 0 ]; then + warning "$(gettext "Running makepkg as an unprivileged user will result in non-root")" + plain "$(gettext "ownership of the packaged files. Try using the fakeroot environment by")" + plain "$(gettext "placing 'fakeroot' in the BUILDENV array in %s.")" "$MAKEPKG_CONF" + sleep 1 + fi +else + if [ -z "$FAKEROOTKEY" ]; then + error "$(gettext "Do not use the '-F' option. This option is only for use by makepkg.")" + exit 1 # TODO: error code + fi +fi + +# check for sudo if we will need it during makepkg execution +if [ "$ASROOT" -eq 0 \ + -a \( "$DEP_BIN" -eq 1 -o "$RMDEPS" -eq 1 -o "$INSTALL" -eq 1 \) ]; then + if [ ! "$(type -p sudo)" ]; then + error "$(gettext "Cannot find the sudo binary! Is sudo installed?")" + plain "$(gettext "Missing dependencies cannot be installed or removed as a normal user")" + plain "$(gettext "without sudo; install and configure sudo to auto-resolve dependencies.")" + exit 1 + fi +fi + +unset pkgname pkgbase pkgver pkgrel pkgdesc url license groups provides +unset md5sums replaces depends conflicts backup source install build +unset makedepends optdepends options noextract + +BUILDFILE=${BUILDFILE:-$BUILDSCRIPT} +if [ ! -f "$BUILDFILE" ]; then + if [ -t 0 ]; then + error "$(gettext "%s does not exist.")" "$BUILDFILE" + exit 1 + else + # PKGBUILD passed through a pipe + BUILDFILE=/dev/stdin + source "$BUILDFILE" + fi +else + crlftest=$(file "$BUILDFILE" | grep -F 'CRLF' || true) + if [ -n "$crlftest" ]; then + error "$(gettext "%s contains CRLF characters and cannot be sourced.")" "$BUILDFILE" + exit 1 + fi + + if [ "${BUILDFILE:0:1}" != "/" ]; then + BUILDFILE="$startdir/$BUILDFILE" + fi + source "$BUILDFILE" +fi + +if [ "$GENINTEG" -eq 1 ]; then + mkdir -p "$srcdir" + cd "$srcdir" + download_sources + generate_checksums + exit 0 # $E_OK +fi + +if [ "$(type -t package)" = "function" ]; then + PKGFUNC=1 +fi + +# check the PKGBUILD for some basic requirements +check_sanity || exit 1 + +# We need to run devel_update regardless of whether we are in the fakeroot +# build process so that if the user runs makepkg --forcever manually, we +# 1) output the correct pkgver, and 2) use the correct filename when +# checking if the package file already exists - fixes FS #9194 +devel_check +devel_update + +if [ "${#pkgname[@]}" -gt "1" ]; then + SPLITPKG=1 +fi + +pkgbase=${pkgbase:-${pkgname[0]}} + +if [ "$SPLITPKG" -eq 0 ]; then + if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \ + -a "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a "$NOBUILD" -eq 0 ]; then + if [ "$INSTALL" -eq 1 ]; then + warning "$(gettext "A package has already been built, installing existing package...")" + install_package + exit $? + else + error "$(gettext "A package has already been built. (use -f to overwrite)")" + exit 1 + fi + fi +else + allpkgbuilt=1 + somepkgbuilt=0 + for pkg in ${pkgname[@]}; do + if [ -f "$PKGDEST/${pkg}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" ]; then + somepkgbuilt=1 + else + allpkgbuilt=0 + fi + done + if [ "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a "$NOBUILD" -eq 0 ]; then + if [ "$allpkgbuilt" -eq 1 ]; then + if [ "$INSTALL" -eq 1 ]; then + warning "$(gettext "The package group has already been built, installing existing packages...")" + install_package + exit $? + else + error "$(gettext "The package group has already been built. (use -f to overwrite)")" + exit 1 + fi + fi + if [ "$somepkgbuilt" -eq 1 ]; then + error "$(gettext "Part of the package group has already been built. (use -f to overwrite)")" + exit 1 + fi + fi + unset allpkgbuilt somepkgbuilt +fi + +# Run the bare minimum in fakeroot +if [ "$INFAKEROOT" -eq 1 ]; then + if [ "$SPLITPKG" -eq 0 ]; then + if [ "$PKGFUNC" -eq 0 ]; then + if [ "$REPKG" -eq 0 ]; then + run_build + if [ "$(check_option splitdbg)" = "y" ] || [ "$(check_option splithdr)" = "y" ] || [ "$SPLIT_DBG" = "1" ] || [ "$SPLIT_HDR" = "1" ]; then + tidy_install + fi + fi + else + run_package + tidy_install + fi + if [ "$(check_option splitdbg)" = "y" ] || [ "$(check_option splithdr)" = "y" ] || [ "$SPLIT_DBG" = "1" ] || [ "$SPLIT_HDR" = "1" ]; then + create_package + # second check, if there are any files + check_dbg_files=`find $dbgdir/ -name "*.debug"` + if [ -z "$check_dbg_files" ]; then + msg "$(gettext "No .debug files found, skipping creation of the debug pkg...")" + else + create_debug_package + fi + + # second check, if there are any files + check_hdr_files=`find $hdrdir/ -name "include"` + if [ -z "$check_hdr_files" ]; then + msg "$(gettext "Skipping creation of the devel pkg...")" + else + create_header_package + fi + else + create_package + fi + else + for pkg in ${pkgname[@]}; do + pkgdir="$pkgdir/pkg_${pkg}" + mkdir -p "$pkgdir" + dbgdir="$startdir/dbg/dbg_${pkg}" + [ ! -d "$dbgdir" ] && mkdir -p "$dbgdir" + hdrdir="$startdir/hdr/hdr_${pkg}" + [ ! -d "$hdrdir" ] && mkdir -p "$hdrdir" + backup_package_variables + run_package $pkg + tidy_install + + if [ "$(check_option splitdbg)" = "y" ] || [ "$(check_option splithdr)" = "y" ] || [ "$SPLIT_DBG" = "1" ] || [ "$SPLIT_HDR" = "1" ]; then + create_package $pkg + # second check, if there are any files + check_dbg_files=`find $dbgdir/ -name "*.debug"` + if [ -z "$check_dbg_files" ]; then + msg "$(gettext "No .debug files found, skipping creation of the debug pkg...")" + else + create_debug_package $pkg + fi + # third check, headers + check_hdr_files=`find $hdrdir/ -name "include"` + if [ -z "$check_hdr_files" ]; then + msg "$(gettext "Skipping creation of the devel pkg...")" + else + create_header_package $pkg + fi + + else + create_package $pkg + fi + + restore_package_variables + pkgdir="${pkgdir%/*}" + done + fi + + msg "$(gettext "Leaving fakeroot environment.")" + exit 0 # $E_OK +fi + +msg "$(gettext "Making package: %s")" "$pkgbase $pkgver-$pkgrel $CARCH ($(date))" + +# if we are creating a source-only package, go no further +if [ "$SOURCEONLY" -ne 0 ]; then + if [ -f "$PKGDEST/${pkgbase}-${pkgver}-${pkgrel}${SRCEXT}" \ + -a "$FORCE" -eq 0 ]; then + error "$(gettext "A package has already been built. (use -f to overwrite)")" + exit 1 + fi + create_srcpackage + msg "$(gettext "Source package created: %s")" "$pkgbase ($(date))" + exit 0 +fi + +# fix flyspray bug #5973 +if [ "$NODEPS" -eq 1 -o "$NOBUILD" -eq 1 -o "$REPKG" -eq 1 ]; then + # no warning message needed for nobuild, repkg + if [ "$NODEPS" -eq 1 ]; then + warning "$(gettext "Skipping dependency checks.")" + fi +elif [ $(type -p pacman) ]; then + unset pkgdeps # Set by resolve_deps() and used by remove_deps() + deperr=0 + + msg "$(gettext "Checking Runtime Dependencies...")" + resolve_deps ${depends[@]} || deperr=1 + + msg "$(gettext "Checking Buildtime Dependencies...")" + resolve_deps ${makedepends[@]} || deperr=1 + + if [ $deperr -eq 1 ]; then + error "$(gettext "Could not resolve all dependencies.")" + exit 1 + fi +else + warning "$(gettext "pacman was not found in PATH; skipping dependency checks.")" +fi + +# ensure we have a sane umask set +umask 0022 + +# get back to our src directory so we can begin with sources +mkdir -p "$srcdir" +mkdir -p "$dbgdir" +mkdir -p "$hdrdir" +cd "$srcdir" + +if [ "$NOEXTRACT" -eq 1 ]; then + warning "$(gettext "Skipping source retrieval -- using existing src/ tree")" + warning "$(gettext "Skipping source integrity checks -- using existing src/ tree")" + warning "$(gettext "Skipping source extraction -- using existing src/ tree")" + + if [ "$NOEXTRACT" -eq 1 -a -z "$(ls "$srcdir" 2>/dev/null)" ]; then + error "$(gettext "The source directory is empty, there is nothing to build!")" + plain "$(gettext "Aborting...")" + exit 1 + fi +elif [ "$REPKG" -eq 1 ]; then + if [ "$PKGFUNC" -eq 0 -a "$SPLITPKG" -eq 0 \ + -a \( ! -d "$pkgdir" -o -z "$(ls "$pkgdir" 2>/dev/null)" \) ]; then + error "$(gettext "The package directory is empty, there is nothing to repackage!")" + plain "$(gettext "Aborting...")" + exit 1 + fi +else + download_sources + check_checksums + extract_sources +fi + +if [ "$NOBUILD" -eq 1 ]; then + msg "$(gettext "Sources are ready.")" + exit 0 #E_OK +else + # check for existing pkg directory; don't remove if we are repackaging + if [ -d "$pkgdir" \ + -a \( "$REPKG" -eq 0 -o "$PKGFUNC" -eq 1 -o "$SPLITPKG" -eq 1 \) ]; then + msg "$(gettext "Removing existing pkg/ directory...")" + rm -rf "$pkgdir" + fi + mkdir -p "$pkgdir" + cd "$startdir" + + # if we are root or if fakeroot is not enabled, then we don't use it + if [ "$(check_buildenv fakeroot)" != "y" -o $EUID -eq 0 ]; then + if [ "$REPKG" -eq 0 ]; then + devel_update + run_build + fi + if [ "$SPLITPKG" -eq 0 ]; then + if [ "$PKGFUNC" -eq 1 ]; then + run_package + tidy_install + elif [ "$REPKG" -eq 0 ]; then + tidy_install + fi + + if [ "$(check_option splitdbg)" = "y" ] || [ "$(check_option splithdr)" = "y" ] || [ "$SPLIT_DBG" = "1" ] || [ "$SPLIT_HDR" = "1" ]; then + create_package + # second check, if there are any files + check_dbg_files=`find $dbgdir/ -name "*.debug"` + if [ -z "$check_dbg_files" ]; then + msg "$(gettext "No .debug files found, skipping creation of debug packages...")" + else + create_debug_package + fi + # second check, if there are any files + check_hdr_files=`find $hdrdir/ -name "include"` + if [ -z "$check_hdr_files" ]; then + msg "$(gettext "Skipping creation of the devel pkg...")" + else + create_header_package + fi + else + create_package + fi + + else + for pkg in ${pkgname[@]}; do + pkgdir="$pkgdir/pkg_$pkg" + mkdir -p "$pkgdir" + dbgdir="$startdir/dbg/dbg_${pkg}" + [ ! -d "$dbgdir" ] && mkdir -p "$dbgdir" + hdrdir="$startdir/hdr/hdr_${pkg}" + [ ! -d "$hdrdir" ] && mkdir -p "$hdrdir" + backup_package_variables + run_package $pkg + tidy_install + + if [ "$(check_option splitdbg)" = "y" ] || [ "$(check_option splithdr)" = "y" ] || [ "$SPLIT_DBG" = "1" ] || [ "$SPLIT_HDR" = "1" ]; then + create_package $pkg + # second check, if there are any files + check_dbg_files=`find $dbgdir/ -name "*.debug"` + if [ -z "$check_dbg_files" ]; then + msg "$(gettext "No .debug files found, skipping creation of debug packages...")" + else + create_debug_package $pkg + fi + check_hdr_files=`find $hdrdir/ -name "include"` + if [ -z "$check_hdr_files" ]; then + msg "$(gettext "Skipping creation of the devel pkg...")" + else + create_header_package $pkg + fi + else + create_package $pkg + fi + + restore_package_variables + pkgdir="${pkgdir%/*}" + done + fi + else + if [ "$REPKG" -eq 0 -a \( "$PKGFUNC" -eq 1 -o "$SPLITPKG" -eq 1 \) ]; then + devel_update + run_build + cd "$startdir" + fi + + msg "$(gettext "Entering fakeroot environment...")" + + if [ -n "$newpkgver" ]; then + fakeroot -- $0 --forcever $newpkgver -F $ARGLIST || exit $? + else + fakeroot -- $0 -F $ARGLIST || exit $? + fi + fi +fi + +msg "$(gettext "Finished making: %s")" "$pkgbase $pkgver-$pkgrel $CARCH ($(date))" + +install_package + +exit 0 #E_OK + +# vim: set ts=2 sw=2 noet: diff --git a/man-pages/PKGBUILD b/man-pages/PKGBUILD index f879eeb060add9deadd341d0af9695644a0a3c3b..27d05020a73976ccca7a3e1529f1f96b366f1df7 100644 --- a/man-pages/PKGBUILD +++ b/man-pages/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: Andreas Radke pkgname=man-pages -pkgver=3.23 +pkgver=3.24 _posixver=2003-a pkgrel=1 pkgdesc="Linux man pages" @@ -13,7 +13,7 @@ groups=('base') depends=() source=(http://www.kernel.org/pub/linux/docs/man-pages/$pkgname-$pkgver.tar.gz http://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/$pkgname-posix-${_posixver}.tar.bz2) -md5sums=('4d0263bded9ad02a123ce11114ef76ac' +md5sums=('083fc666f1f1143157901e96c9810539' '7c78aff03c0a6767ba483d34f19e4b09') build() { diff --git a/only-up.sh b/only-up.sh new file mode 100755 index 0000000000000000000000000000000000000000..9ffbdceb0380c1de2b7fa062434c62b3906e5d2b --- /dev/null +++ b/only-up.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# GPL - philm@chakra-project.org + +# +# setup +# +_script_name="UPLOAD PACKAGES" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +sync_up() +{ + export RSYNC_PASSWORD=`echo $_rsync_pass` + + # move new packages from $ROOT/repos/$REPO/build into thr repo dir + title2 "adding new packages" + mv -v _repo/build/*.pkg.tar.gz _repo/repo/ + + # sync local -> server + title2 "upload pkgs to server" + rsync -avh --progress --delay-updates _repo/repo/ $_rsync_user@$_rsync_server::$_rsync_dir +} + +# +# startup +# +title "${_script_name} - $_cur_repo" + +check_configs +load_configs + +check_rsync +check_accounts + +time sync_up + +title "All done" +newline diff --git a/pacman/PKGBUILD b/pacman/PKGBUILD index 4c0a023809c5bde83194bab30c98c1921f29c5e0..65398c14b0ed65ee1036adfc9940673ef4d15377 100644 --- a/pacman/PKGBUILD +++ b/pacman/PKGBUILD @@ -11,8 +11,8 @@ url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base') depends=('bash' 'libarchive>=2.7.1' 'libfetch>=2.25' 'pacman-mirrorlist') -optdepends=('fakeroot: for makepkg usage as normal user' - 'python: for rankmirrors script usage') +optdepends=('fakeroot: for makepkg usage as normal user') + # 'python: for rankmirrors script usage' backup=(etc/pacman.conf etc/makepkg.conf) install=pacman.install options=(!libtool) diff --git a/perlxml/PKGBUILD b/perlxml/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..b6554fd9605cb1d9ae7baa57089fae9f1a823548 --- /dev/null +++ b/perlxml/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 49946 2009-08-17 06:59:15Z jgc $ +# Maintainer: dorphell +# Contributor: herb + +pkgname=perlxml +_realname=XML-Parser +pkgver=2.36 +pkgrel=2 +pkgdesc="XML::Parser - an XML parser module for perl" +arch=(i686 x86_64) +license=('GPL' 'PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perl>=5.10.0' 'expat>=2.0') +options=(!emptydirs) +source=(http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/${_realname}-${pkgver}.tar.gz) +md5sums=('1b868962b658bd87e1563ecd56498ded') + +build() { + cd "${srcdir}/${_realname}-${pkgver}" + + # install module in vendor directories. + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make MAN1EXT=1p MAN3EXT=3pm || return 1 + make install MAN1EXT=1p MAN3EXT=3pm DESTDIR="${pkgdir}" || return 1 + + # remove perllocal.pod and .packlist. + find "${pkgdir}" -name perllocal.pod -delete + find "${pkgdir}" -name .packlist -delete +} diff --git a/python-m2crypto/PKGBUILD b/python-m2crypto/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..888a6bce9d91a711d141c9c98314baa0106c6d68 --- /dev/null +++ b/python-m2crypto/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 57519 2009-10-31 20:03:26Z eric $ +# Maintainer: Sergej Pupykin +# Contributor: William Rea + +pkgname=python-m2crypto +pkgver=0.20.2 +pkgrel=1 +pkgdesc="A crypto and SSL toolkit for Python" +arch=('i686' 'x86_64') +url="http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto" +license=('BSD') +depends=('python' 'openssl') +makedepends=('swig') +source=(http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-${pkgver}.tar.gz) +md5sums=('6c24410410d6eb1920ea43f77a93613a') +sha1sums=('6e85d7035971c353db74a497fca0ec2eaea4dea0') + +build() { + cd "${srcdir}/M2Crypto-${pkgver}" + python setup.py build + python setup.py install --root="${pkgdir}/" + + install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/python/PKGBUILD b/python/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..6d3acf091d595cc3f395c77457522c84c61fb336 --- /dev/null +++ b/python/PKGBUILD @@ -0,0 +1,78 @@ +# $Id: PKGBUILD 65225 2010-01-25 09:23:15Z allan $ +# Maintainer: Allan McRae +# Contributer: Jason Chu + +pkgname=python +pkgver=2.6.4 +pkgrel=2 +_pybasever=2.6 +pkgdesc="A high-level scripting language" +arch=('i686' 'x86_64') +license=('PSF') +url="http://www.python.org" +depends=('db>=4.8' 'bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite3') +# makedepends=('tk>=8.5.0') +# optdepends=('tk: for IDLE, pynche and modulator') +provides=('python2' 'python-elementtree' 'python-ctypes') +replaces=('python-elementtree' 'python-ctypes') +source=(http://www.python.org/ftp/python/${pkgver}/Python-${pkgver}.tar.bz2 + python-2.6-internal-expat.patch + python-2.6-gdbm.patch + python-2.6-readline.patch + python-2.6-db-4.8.patch + modulator-launcher + pynche-launcher) +md5sums=('fee5408634a54e721a93531aba37f8c1' + '993800dbcc0c4f199c1ceee998a06e71' + '13fab4bb2cacbc433e62d7191a17f71e' + '1f0aed8b96d4531f40fd3e24a80157a5' + '10eb5449ead95b9cb13eae9f9a65894e' + 'b4a531570415280dc406c8d5c1fa8d83' + '9f731b9033db285132a3524fb36409e7') + +build() { + cd ${srcdir}/Python-${pkgver} + + patch -Np0 -i ${srcdir}/python-2.6-internal-expat.patch + patch -Np1 -i ${srcdir}/python-2.6-gdbm.patch + patch -Np0 -i ${srcdir}/python-2.6-readline.patch + + #http://bugs.python.org/issue6949 + patch -Np0 -i ${srcdir}/python-2.6-db-4.8.patch + + export OPT="${CFLAGS}" + ./configure --prefix=/usr --enable-shared --with-threads --enable-unicode + + make || return 1 + make DESTDIR=${pkgdir} install + + rm ${pkgdir}/usr/bin/python + ln -sf python${_pybasever} ${pkgdir}/usr/bin/python + ln -sf python${_pybasever} ${pkgdir}/usr/bin/python2 + + ln -sf ../../libpython${_pybasever}.so \ + ${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so + +# # Install the tools +# #modulator +# sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/modulator-launcher +# install -m755 ${srcdir}/modulator-launcher ${pkgdir}/usr/bin/modulator +# cp -r Tools/modulator ${pkgdir}/usr/lib/python${_pybasever}/site-packages/ + +# #pynche +# sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/pynche-launcher +# install -m755 ${srcdir}/pynche-launcher ${pkgdir}/usr/bin/pynche +# rm -f Tools/pynche/*.pyw +# cp -r Tools/pynche ${pkgdir}/usr/lib/python${_pybasever}/site-packages/ + + #gettext + install -m755 Tools/i18n/pygettext.py ${pkgdir}/usr/bin/ + install -m755 Tools/i18n/msgfmt.py ${pkgdir}/usr/bin/ + + mkdir -p ${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts + install -m644 Tools/scripts/README ${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/ + install -m755 Tools/scripts/*py ${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/ + + # license + install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE +} diff --git a/python/modulator-launcher b/python/modulator-launcher new file mode 100644 index 0000000000000000000000000000000000000000..ba46e934a4f49520f4dd9c8baea2d53c00027679 --- /dev/null +++ b/python/modulator-launcher @@ -0,0 +1,2 @@ +#!/bin/bash +exec /usr/lib/python%%PYBASEVER%%/site-packages/modulator/modulator.py diff --git a/python/pynche-launcher b/python/pynche-launcher new file mode 100644 index 0000000000000000000000000000000000000000..a4338a7944fc48ce379d13c8188fb799815ec727 --- /dev/null +++ b/python/pynche-launcher @@ -0,0 +1,3 @@ +#!/bin/bash +/usr/lib/python%%PYBASEVER%%/site-packages/pynche/pynche + diff --git a/python/python-2.6-db-4.8.patch b/python/python-2.6-db-4.8.patch new file mode 100644 index 0000000000000000000000000000000000000000..2032f924c4bd0eb8f4715df3f6751419717a26a3 --- /dev/null +++ b/python/python-2.6-db-4.8.patch @@ -0,0 +1,123 @@ +Index: setup.py +=================================================================== +--- setup.py (revision 74955) ++++ setup.py (working copy) +@@ -695,7 +695,7 @@ + # a release. Most open source OSes come with one or more + # versions of BerkeleyDB already installed. + +- max_db_ver = (4, 7) ++ max_db_ver = (4, 8) + min_db_ver = (3, 3) + db_setup_debug = False # verbose debug prints from this script? + +Index: Modules/_bsddb.c +=================================================================== +--- Modules/_bsddb.c (revision 74955) ++++ Modules/_bsddb.c (working copy) +@@ -215,7 +215,11 @@ + #define DB_BUFFER_SMALL ENOMEM + #endif + ++#if (DBVER < 48) ++#define DB_GID_SIZE DB_XIDDATASIZE ++#endif + ++ + /* --------------------------------------------------------------------- */ + /* Structure definitions */ + +@@ -4501,7 +4505,11 @@ + DBTxnObject *txn; + #define PREPLIST_LEN 16 + DB_PREPLIST preplist[PREPLIST_LEN]; ++#if (DBVER < 48) + long retp; ++#else ++ u_int32_t retp; ++#endif + + CHECK_ENV_NOT_CLOSED(self); + +@@ -4522,7 +4530,7 @@ + flags=DB_NEXT; /* Prepare for next loop pass */ + for (i=0; i= 42) + {"get_verbose", (PyCFunction)DBEnv_get_verbose, METH_VARARGS}, +@@ -7089,6 +7101,7 @@ + ADD_INT(d, DB_MAX_PAGES); + ADD_INT(d, DB_MAX_RECORDS); + ++#if (DBVER < 48) + #if (DBVER >= 42) + ADD_INT(d, DB_RPCCLIENT); + #else +@@ -7096,7 +7109,11 @@ + /* allow apps to be written using DB_RPCCLIENT on older Berkeley DB */ + _addIntToDict(d, "DB_RPCCLIENT", DB_CLIENT); + #endif ++#endif ++ ++#if (DBVER < 48) + ADD_INT(d, DB_XA_CREATE); ++#endif + + ADD_INT(d, DB_CREATE); + ADD_INT(d, DB_NOMMAP); +@@ -7113,7 +7130,13 @@ + ADD_INT(d, DB_INIT_TXN); + ADD_INT(d, DB_JOINENV); + ++#if (DBVER >= 48) ++ ADD_INT(d, DB_GID_SIZE); ++#else + ADD_INT(d, DB_XIDDATASIZE); ++ /* Allow new code to work in old BDB releases */ ++ _addIntToDict(d, "DB_GID_SIZE", DB_XIDDATASIZE); ++#endif + + ADD_INT(d, DB_RECOVER); + ADD_INT(d, DB_RECOVER_FATAL); diff --git a/python/python-2.6-gdbm.patch b/python/python-2.6-gdbm.patch new file mode 100644 index 0000000000000000000000000000000000000000..0f223f673d567a249074ef31e755b5ea958165c1 --- /dev/null +++ b/python/python-2.6-gdbm.patch @@ -0,0 +1,12 @@ +diff -Naur Python-2.6-old/setup.py Python-2.6/setup.py +--- Python-2.6-old/setup.py 2008-09-30 10:15:45.000000000 +1000 ++++ Python-2.6/setup.py 2008-12-07 16:04:01.000000000 +1000 +@@ -1013,7 +1013,7 @@ + if self.compiler.find_library_file(lib_dirs, 'ndbm'): + ndbm_libs = ['ndbm'] + else: +- ndbm_libs = [] ++ ndbm_libs = ['gdbm', 'gdbm_compat'] + exts.append( Extension('dbm', ['dbmmodule.c'], + define_macros=[('HAVE_NDBM_H',None)], + libraries = ndbm_libs ) ) diff --git a/python/python-2.6-internal-expat.patch b/python/python-2.6-internal-expat.patch new file mode 100644 index 0000000000000000000000000000000000000000..86252abef00270c8aa2dec68514a87f0dd1753f5 --- /dev/null +++ b/python/python-2.6-internal-expat.patch @@ -0,0 +1,33 @@ +--- setup.py 2008-04-22 12:12:24.613554757 +0300 ++++ setup.py 2008-04-22 12:13:09.276544063 +0300 +@@ -1035,18 +1035,15 @@ + # + # More information on Expat can be found at www.libexpat.org. + # +- expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat') +- define_macros = [ +- ('HAVE_EXPAT_CONFIG_H', '1'), +- ] ++ # Use system expat ++ expatinc = '/usr/include' ++ define_macros = [] + + exts.append(Extension('pyexpat', + define_macros = define_macros, + include_dirs = [expatinc], ++ libraries = ['expat'], + sources = ['pyexpat.c', +- 'expat/xmlparse.c', +- 'expat/xmlrole.c', +- 'expat/xmltok.c', + ], + )) + +@@ -1058,6 +1055,7 @@ + exts.append(Extension('_elementtree', + define_macros = define_macros, + include_dirs = [expatinc], ++ libraries = ['expat'], + sources = ['_elementtree.c'], + )) + diff --git a/python/python-2.6-readline.patch b/python/python-2.6-readline.patch new file mode 100644 index 0000000000000000000000000000000000000000..60a3f3b45f85959ad0a10ef6688405f2cc26c974 --- /dev/null +++ b/python/python-2.6-readline.patch @@ -0,0 +1,23 @@ +--- Modules/readline.c 2008-11-04 12:43:31.000000000 -0800 ++++ Modules/readline.c 2009-04-22 15:50:49.000000000 -0700 +@@ -759,6 +759,10 @@ + static char ** + flex_complete(char *text, int start, int end) + { ++#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER ++ rl_completion_append_character ='\0'; ++ rl_completion_suppress_append = 0; ++#endif + Py_XDECREF(begidx); + Py_XDECREF(endidx); + begidx = PyInt_FromLong((long) start); +@@ -799,11 +803,8 @@ + rl_completer_word_break_characters = + strdup(" \t\n`~!@#$%^&*()-=+[{]}\\|;:'\",<>/?"); + /* All nonalphanums except '.' */ +-#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER +- rl_completion_append_character ='\0'; +-#endif + + begidx = PyInt_FromLong(0L); + endidx = PyInt_FromLong(0L); diff --git a/repoclean-builddir.sh b/repoclean-builddir.sh new file mode 100755 index 0000000000000000000000000000000000000000..2f77bc2fe3f577ce5fc31397e86a1d5827ab70f0 --- /dev/null +++ b/repoclean-builddir.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="REPOCLEAN --> BUILD" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +cleanup_pkgs() +{ + title2 "Cleaning build packages" + + title2 "running repo-clean" + repo-clean -m c -s _repo/build/ +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +cleanup_pkgs + +title "All done" +newline diff --git a/repoclean-repodir.sh b/repoclean-repodir.sh new file mode 100755 index 0000000000000000000000000000000000000000..81a81a521a027fd11dd17a1b8ca88725ddb937c6 --- /dev/null +++ b/repoclean-repodir.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="REPOCLEAN --> REPO" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +cleanup_pkgs() +{ + title2 "Cleaning repo packages" + + title2 "running repo-clean" + repo-clean -m c -s _repo/repo/ +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +cleanup_pkgs + +title "All done" +newline diff --git a/reset-pkgrels.sh b/reset-pkgrels.sh new file mode 100755 index 0000000000000000000000000000000000000000..fd7c38fb6e9748f3599079b7f2e4f295af5a7863 --- /dev/null +++ b/reset-pkgrels.sh @@ -0,0 +1,145 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="RESET PKGRELS" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +_available_pkglists=`cat _buildscripts/${_cur_repo}-${_build_arch}-pkgs.conf | grep "_" | cut -d "=" -f 1 | awk 'BEGIN {FS="_"} {print $NF}' | sed '/^$/d'` +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +decrease_pkgrels() +{ + [ -n "$MODE" ] || error "you need to specify a package list defined in _/buildsystem/${_cur_repo}-${_build_arch}-pkgs.conf\n -> ${_available_pkglists}" + + case "$MODE" in + all) + title2 "Resetting all pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + + REL=1 + while [ $REL -le 20 ] + do + sed -i -e "s/\/pkgrel=1/g" PKGBUILD + + REL=$(( $REL + 1 )) + done + + popd &>/dev/null + status_done + done + ;; + + support) + title2 "Resetting support pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + + REL=1 + while [ $REL -le 20 ] + do + sed -i -e "s/\/pkgrel=1/g" PKGBUILD + + REL=$(( $REL + 1 )) + done + + popd &>/dev/null + status_done + done + ;; + + qt) + title2 "Resetting Qt pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + + REL=1 + while [ $REL -le 20 ] + do + sed -i -e "s/\/pkgrel=1/g" PKGBUILD + + REL=$(( $REL + 1 )) + done + + popd &>/dev/null + status_done + done + ;; + + kde) + title2 "Resetting KDE pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + + REL=1 + while [ $REL -le 20 ] + do + sed -i -e "s/\/pkgrel=1/g" PKGBUILD + + REL=$(( $REL + 1 )) + done + + popd &>/dev/null + status_done + done + ;; + + tools) + title2 "Resetting tool pkgrels" + for module in ${whattodo[*]} + do + status_start "$module" + pushd $module &>/dev/null + + REL=1 + while [ $REL -le 20 ] + do + sed -i -e "s/\/pkgrel=1/g" PKGBUILD + + REL=$(( $REL + 1 )) + done + + popd &>/dev/null + status_done + done + ;; + esac +} + +# +# startup +# +title "${_script_name}" + +check_configs +load_configs + +MODE=`echo $1` + +# we take the repo name + the job/stage to reconstruct the variable name +# in $repo_pkgs.cfg and echo its contents... damn, eval is evil ;) +whattodo=($(eval echo "\${_build_${_cur_repo}_${MODE}[@]}")) + +decrease_pkgrels + +title "All done" +newline diff --git a/ruby/PKGBUILD b/ruby/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..feda86d58792597714ff40c550d8ff245a743709 --- /dev/null +++ b/ruby/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 65257 2010-01-26 03:09:25Z allan $ +# Maintainer: Allan McRae +# Contributor: John Proctor +# Contributor: Jeramy Rutley + +pkgname=('ruby' 'ruby-docs') +pkgver=1.9.1_p378 +_pkgver=1.9.1-p378 +pkgrel=1 +pkgdesc="An object-oriented language for quick and easy programming" +arch=('i686' 'x86_64') +license=('custom') +url="http://www.ruby-lang.org/en/" +makedepends=('gdbm' 'db' 'openssl' 'zlib' 'readline') #'tk' +source=(ftp://ftp.ruby-lang.org/pub/ruby/1.9/${pkgname}-${_pkgver}.tar.bz2) +options=('!emptydirs') +md5sums=('5922459622a23612eb9b68a3586cb5f8') + +build() { + cd "${srcdir}/${pkgname}-${_pkgver}" + ./configure --prefix=/usr --enable-shared --enable-pthread || return 1 + make || return 1 +} + +package_ruby() +{ + depends=('gdbm' 'db' 'openssl' 'zlib' 'readline') + provides=('rubygems' 'rake') + conflicts=('rubygems' 'rake') +# optdepends=('tk: for Ruby/TK') + + cd "${srcdir}/${pkgname}-${_pkgver}" + make DESTDIR="${pkgdir}" install || return 1 + install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING" || return 1 +} + +package_ruby-docs() +{ + pkgdesc="Documentation files for ruby" + #arch=('any') + depends=('ruby') + + cd "${srcdir}/${pkgname}-${_pkgver}" + make -j1 DESTDIR="${pkgdir}" install-doc || return 1 +} diff --git a/show-config.sh b/show-config.sh new file mode 100755 index 0000000000000000000000000000000000000000..dd413cbc71bd1aa8c95c7fb5f9ce051aa8ea0d1a --- /dev/null +++ b/show-config.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="CONFIGURATION" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +show_config() +{ + clear + echo " " + echo -e "$_g >$_W $_script_name$_n" + echo " " + echo -e " $_W _cur_repo :$_n $_cur_repo" + echo " " + echo -e "$_g _buildscripts/user.conf: $_n" + echo -e "$_W ----------------------- $_n" + echo -e " $_W _rsync_server :$_n $_rsync_server" + echo -e " $_W _rsync_dir :$_n $_rsync_dir" + echo -e " $_W _rsync_user :$_n $_rsync_user" + echo -e " $_W _rsync_pass :$_n $_rsync_pass" + echo " " + echo -e "$_g _buildscripts/cfg_$_cur_repo.conf: $_n" + echo -e "$_W ------------------------------- $_n" + echo -e " $_W _build_work :$_n $_build_work" + echo -e " $_W _build_autoinstall :$_n $_build_autoinstall" + echo -e " $_W _build_autodepends :$_n $_build_autodepends" + echo -e " $_W _build_stop :$_n $_build_stop" + echo " " + echo -e "$_g _buildscripts/makepkg-$_cur_repo.conf: $_n" + echo -e "$_W ----------------------------------- $_n" + echo -e " $_W CARCH :$_n $CARCH" + echo -e " $_W CHOST :$_n $CHOST" + echo " " + echo -e " $_W CFLAGS :$_n $CFLAGS" + echo -e " $_W CXXFLAGS :$_n $CXXFLAGS" + echo -e " $_W MAKEFLAGS :$_n $MAKEFLAGS" + echo " " + echo -e " $_W BUILDENV :$_n ${BUILDENV[@]}" + echo -e " $_W OPTIONS :$_n ${OPTIONS[@]}" + echo " " + echo -e " $_W PKGDEST :$_n $PKGDEST" + echo -e " $_W SRCDEST :$_n $SRCDEST" + echo " " + echo -e " $_W PACKAGER :$_n $PACKAGER" + echo " " + echo " " +} + +# +# startup +# +check_configs +load_configs + +get_colors +show_config diff --git a/show-pkglists.sh b/show-pkglists.sh new file mode 100755 index 0000000000000000000000000000000000000000..26a8305faf56f87571daa2c35cc279039a368cf2 --- /dev/null +++ b/show-pkglists.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="PACKAGE LISTS" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +show_pkglists() +{ + clear + echo " " + echo -e "$_g >$_W $_script_name$_n" + cat _buildscripts/${_cur_repo}_pkgs.conf | sed 's/"/ /g' + echo " " +} + +# +# startup +# +check_configs +load_configs + +get_colors +show_pkglists diff --git a/sqlite3/PKGBUILD b/sqlite3/PKGBUILD index 166d0fa900ec4359e4856d24d15f9e1fb608a0a2..08569076c59e30b210beeaf9386f557700b85f90 100644 --- a/sqlite3/PKGBUILD +++ b/sqlite3/PKGBUILD @@ -10,25 +10,31 @@ arch=('i686' 'x86_64') license=('custom') url="http://www.sqlite.org/" depends=('readline>=6.0.00') -makedepends=('tcl') +# makedepends=('tcl') conflicts=('sqlite') replaces=('sqlite') -source=(http://www.sqlite.org/sqlite-$pkgver.tar.gz +source=(#http://www.sqlite.org/sqlite-$pkgver.tar.gz + http://www.sqlite.org/sqlite-amalgamation-$pkgver.tar.gz license.txt) options=(!libtool) -md5sums=('a17bd53f1fde11f84adf79c6a1510ce5' +md5sums=('b683b3903e79ab8a6d928dc9d4a56937' 'c1cdbc5544034d9012e421e75a5e4890') build() { cd ${srcdir}/sqlite-${pkgver} + + rm -rf src/tclsqlite.c + export LTLINK_EXTRAS="-ldl" export CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1" ./configure --prefix=/usr \ --enable-threadsafe \ - --enable-threads-override-locks \ - --enable-cross-thread-connections \ - --disable-static \ - --enable-load-extension || return 1 + --disable-static || return 1 + +# --enable-threads-override-locks \ +# --enable-cross-thread-connections \ +# --disable-tcl \ +# --enable-load-extension # rpath removal sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool diff --git a/swig/PKGBUILD b/swig/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..4b6b5132ddf286732c38579918716e4b1df3c9d7 --- /dev/null +++ b/swig/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 55027 2009-10-11 21:30:28Z andrea $ +# Contributor: Tom Newsom +# Maintainer: Jason Chu + +pkgname=swig +pkgver=1.3.40 +pkgrel=1 +pkgdesc="A compiler that makes it easy to integrate C and C++ code with scripting languages" +arch=('i686' 'x86_64') +license=('custom') +url="http://www.swig.org/" +depends=('gcc-libs' 'zlib') +source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz") +md5sums=('2df766c9e03e02811b1ab4bba1c7b9cc') + +build() { + cd ${srcdir}/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${pkgdir} install + install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE +} diff --git a/sync-complete.sh b/sync-complete.sh new file mode 100755 index 0000000000000000000000000000000000000000..ee1b62c71ff0421351138a7ca9a2fc3a508d886d --- /dev/null +++ b/sync-complete.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="SYNC DOWN/UP PACKAGES" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +sync_complete() +{ + export RSYNC_PASSWORD=`echo $_rsync_pass` + rsync -avh --progress $_rsync_user@$_rsync_server::$_rsync_dir/* _repo/repo/ + + # move new packages from $ROOT/repos/$REPO/build into thr repo dir + title2 "adding new packages" + mv -v _repo/build/*.pkg.tar.gz _repo/repo/ + + # run repo-clean on it + title2 "running repo-clean" + repo-clean -m c -s _repo/repo/ + + # create new pacman database + title2 "creating pacman database" + rm -rf _repo/repo/*.db.tar.gz + pushd _repo/repo/ + repo-add $_pkgprefix-$_cur_repo.db.tar.gz *.pkg.tar.gz + popd + + # sync local -> server + title2 "sync local -> server" + rsync -avh --progress --delay-updates --delete-after _repo/repo/ $_rsync_user@$_rsync_server::$_rsync_dir +} + +# +# startup +# +title "${_script_name} - $_cur_repo" + +check_configs +load_configs + +check_rsync +check_accounts + +time sync_complete + +title "All done" +newline diff --git a/sync-down.sh b/sync-down.sh new file mode 100755 index 0000000000000000000000000000000000000000..afd585cbc9e8666b568fd51188643d65fc36d311 --- /dev/null +++ b/sync-down.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="SYNC DOWN PACKAGES" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +sync_down() +{ + export RSYNC_PASSWORD=`echo $_rsync_pass` + rsync -avh --progress $_rsync_user@$_rsync_server::$_rsync_dir/* _repo/repo/ +} + +# +# startup +# +title "${_script_name} - $_cur_repo" + +check_configs +load_configs + +check_rsync +check_accounts + +time sync_down + +title "All done" +newline diff --git a/sync-up.sh b/sync-up.sh new file mode 100755 index 0000000000000000000000000000000000000000..736cb2ada1e1c813214af187ee569720acb4ca32 --- /dev/null +++ b/sync-up.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# GPL - jan.mette@berlin.de + +# +# setup +# +_script_name="SYNC UP PACKAGES" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# main +# +sync_up() +{ + export RSYNC_PASSWORD=`echo $_rsync_pass` + + # move new packages from $ROOT/repos/$REPO/build into thr repo dir + title2 "adding new packages" + mv -v _repo/build/*.pkg.tar.gz _repo/repo/ + + # run repo-clean on it + title2 "running repo-clean" + repo-clean -m c -s _repo/repo/ + + # create new pacman database + title2 "creating pacman database" + rm -rf _repo/repo/*.db.tar.gz + pushd _repo/repo/ + repo-add $_pkgprefix-$_cur_repo.db.tar.gz *.pkg.tar.gz + popd + + # sync local -> server + title2 "sync local -> server" + rsync -avh --progress --delay-updates --delete-after _repo/repo/ $_rsync_user@$_rsync_server::$_rsync_dir +} + +# +# startup +# +title "${_script_name} - $_cur_repo" + +check_configs +load_configs + +check_rsync +check_accounts + +time sync_up + +title "All done" +newline diff --git a/tzdata/PKGBUILD b/tzdata/PKGBUILD index 7eef8a9882365b89fcb810896ce2b6a1379f4c7e..ca13560ce78793d7a0d7fd7caf7eb57750c2126b 100644 --- a/tzdata/PKGBUILD +++ b/tzdata/PKGBUILD @@ -15,9 +15,13 @@ depends=() makedepends=() optdepends=('sh: required by tzselect') options=('!emptydirs') -source=(ftp://elsie.nci.nih.gov/pub/tzcode${_tzcode}.tar.gz \ - ftp://elsie.nci.nih.gov/pub/${pkgname}${_tzdata}.tar.gz \ +source=(http://icu-project.org/repos/icu/data/trunk/tzdata/mirror/tzcode2009t.tar.gz + http://icu-project.org/repos/icu/data/trunk/tzdata/mirror/${pkgname}${_tzdata}.tar.gz \ Makefile.patch) + +# ftp://elsie.nci.nih.gov/pub/tzcode${_tzcode}.tar.gz \ +# ftp://elsie.nci.nih.gov/pub/${pkgname}${_tzdata}.tar.gz \ + md5sums=('17fe1e12237b11d490f62dcec4b4bc11' 'dfd29a56cb39cc8c57b0939608a054f6' 'a64ed97d1fc03c66ee8612c0d9f40507') diff --git a/xinetd/PKGBUILD b/xinetd/PKGBUILD index af0e3623221ba99733862ac3ce0a42b65c258608..40e0411a43cf393d5ec242dad54e6b55d3283013 100644 --- a/xinetd/PKGBUILD +++ b/xinetd/PKGBUILD @@ -10,8 +10,11 @@ license=('custom') depends=('tcp_wrappers') optdepends=('perl: for xconv.pl script') backup=('etc/xinetd.conf' 'etc/xinetd.d/servers' 'etc/xinetd.d/services') -source=(http://www.xinetd.org/xinetd-$pkgver.tar.gz xinetd.conf xinetd \ +source=(http://www.sfr-fresh.com/unix/misc/xinetd-$pkgver.tar.gz xinetd.conf xinetd \ servers services) + +# http://www.xinetd.org/xinetd-$pkgver.tar.gz + md5sums=('567382d7972613090215c6c54f9b82d9' 'f109f699a07bc8cfb5791060f5e87f9e'\ 'ea37a2794f202e6b953d9b6956dad16a' '21f47b4aa20921cfaddddd9f9a407f81'\ '9fa2061dc7dd738c8424251deb86f81e')