summaryrefslogtreecommitdiff
path: root/src/fullpkg/fullpkg-find
diff options
context:
space:
mode:
Diffstat (limited to 'src/fullpkg/fullpkg-find')
-rwxr-xr-xsrc/fullpkg/fullpkg-find234
1 files changed, 0 insertions, 234 deletions
diff --git a/src/fullpkg/fullpkg-find b/src/fullpkg/fullpkg-find
deleted file mode 100755
index ac2099f..0000000
--- a/src/fullpkg/fullpkg-find
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/usr/bin/env bash
-# set -x # uncomment for debug
-
-# Copyright (C) 2011-2012 Joshua Ismael Haase Hernández (xihh) <hahj87@gmail.com>
-# Copyright (C) 2011-2012 Nicolás Reynolds <fauno@parabola.nu>
-# Copyright (C) 2012 Michał Masłowski <mtjm@mtjm.eu>
-# Copyright (C) 2013-2014 Luke Shumaker <lukeshu@sbcglobal.net>
-#
-# The copy_files() function is taken from makechrootpkg:
-# Copyright (C) 2007 Armin Luntzer <armin@archlinuxppc.org>
-# Copyright (C) 2007 Jason Chu <jchu@xentac.net>
-# Copyright (C) 2007, 2011 Dan McGee <dan@archlinux.org>
-# Copyright (C) 2007-2008 Travis Willard <travis@archlinux.org>
-# Copyright (C) 2007-2009 Aaron Griffin <aaronmgriffin@gmail.com>
-# Copyright (C) 2008 Simo Leone <simo@archlinux.org>
-# Copyright (C) 2009 Biru Ionut <ibiru@archlinux.org>
-# Copyright (C) 2009 Evangelos Foutras <foutrelis@gmail.com>
-# Copyright (C) 2009 Francois Charette <francois@samarqand.localdomain>
-# Copyright (C) 2009 Nezmer <Nezmer@allurelinux.org>
-# Copyright (C) 2009 Ronald van Haren <pressh@gmail.com>
-# Copyright (C) 2009-2011 Andrea Scarpino <andrea@archlinux.org>
-# Copyright (C) 2009-2012 Allan McRae <allan@archlinux.org>
-# Copyright (C) 2009-2012 Eric Bélanger <snowmaniscool@gmail.com>
-# Copyright (C) 2009-2012 Pierre Schmitz <pierre@archlinux.de>
-# Copyright (C) 2010 Byron Clark <byron@theclarkfamily.name>
-# Copyright (C) 2011 Ionut Biru <ibiru@archlinux.org>
-# Copyright (C) 2011 Lukas Fleischer <archlinux@cryptocrack.de>
-# Copyright (C) 2011-2012 Florian Pritz <bluewind@xinu.at>
-# Copyright (C) 2011-2013 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
-# Copyright (C) 2013 Sébastien Luttringer <seblu@seblu.net>
-#
-# Because of the code from makechrootpkg, this file is GPLv2, instead of GPLv3
-# like most of libretools.
-#
-# License: GNU GPLv2
-#
-# 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; version 2 of the License.
-#
-# 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.
-
-
-# Builds packages from ABS recursively. It tries to find dependencies that
-# aren't built or need update and then makepkg them in order.
-
-# TODO: fullpkg-find should find packages wich depend on the
-# package to be build, so we can avoid "missing $name.so errors"
-
-# Get repo name. Asumes ${ABSROOT}/repo/package/PKGBUILD
-guess_repo() {
- basename "$(dirname "$(pwd)")"
-}
-
-# This function is stolen from makechrootpkg.
-copy_files() {
-
- local copydir="$build_dir/${pkgbase:-${pkgname[0]}}"
- mkdir -p "$copydir"
-
- # Copy PKGBUILD and sources
- cp PKGBUILD "$copydir"
- (
- load_PKGBUILD
- for file in "${source[@]}"; do
- file="${file%%::*}"
- file="${file##*://*/}"
- if [[ -f $file ]]; then
- cp "$file" "$copydir/"
- elif [[ -f $SRCDEST/$file ]]; then
- cp "$SRCDEST/$file" "$copydir/"
- fi
- done
-
- # Find all changelog and install files, even inside functions
- for i in 'changelog' 'install'; do
- while read -r file; do
- # evaluate any bash variables used
- eval file=\"$(sed "s/^\\(['\"]\\)\\(.*\\)\\1\$/\\2/" <<< "$file")\"
- [[ -f $file ]] && cp "$file" "$copydir"
- done < <(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
- done
- )
-}
-
-# Checks ABSROOT and look for target pkg deps. Adds them if not built or outdated.
-find_deps() {
- # Check this level
- load_PKGBUILD
-
- local repo="${repo:-$(guess_repo)}"
- local pkgbase="${pkgbase:-${pkgname[0]}}"
-
- # Checking any package built, since otherwise e.g. kdebase would
- # be always considered outdated: there is no package built named kdebase.
- # TODO: maybe check for the package requested in case of recursive calls,
- # instead of the first one listed?
- if is_built "${pkgname[0]}" "$(get_full_version "${pkgname[0]}")"; then
- exit 0 # pkg is built and updated
- fi
-
- # greater levels are built first
- echo "${LEVEL}:${pkgbase}" >>"$build_dir/BUILDORDER"
- # PKGBUILD is already there
- if [[ -d "${build_dir}/${pkgbase}" ]]; then
- exit 0
- # Copy dir to build_dir
- else
- copy_files
-
- # to identify repo later
- echo "repo=$repo" > "${build_dir}/${pkgbase}/.INFO"
- fi
-
- # current package plus a space for every level
- msg2 "%${LEVEL}s%s" '' "${pkgbase}-$(get_full_version)"
-
- ## Check next levels
- declare -i next_level=$LEVEL+1
-
- # All deps
- local deps=("${depends[@]}" "${makedepends[@]}" "${checkdepends[@]}")
- # Strip version specifiers
- deps=("${deps[@]%%[=<>]*}")
- # Filter out duplicates
- read -d $'\n' -a deps <<<"$(printf '%s\n' "${deps[@]}"|sort -u)"
-
- local _dep
- for _dep in "${deps[@]}"; do
-
- local found=false
- # May fail, e.g. since abslibre-mips64el doesn't include
- # arch=any packages.
- local pkgdir=$(toru -p ${_dep}) || true
-
- if [[ -n "$pkgdir" ]] && [[ -d "${pkgdir}" ]; then
- found=true
-
- pushd "${pkgdir}" > /dev/null
- # runs itself on dep's PKGBUILD dir
- "$0" -l "${next_level}" "${build_dir}" || return $?
- popd > /dev/null
- fi
-
- if ! (( found )); then
- echo "dep_not_found:$_dep" >>$build_dir/log
- fi
-
- done
-
- ## End variable block
-
- unset next_level dir
-}
-
-. libremessages
-. "$(librelib conf.sh)"
-load_files makepkg
-
-LEVEL=0
-MAXLEVEL=20
-CLEANFIRST='false'
-UPDATEDB='true'
-
-usage() {
- print "Usage: %s [OPTIONS] [BUILD_DIR]" "${0##*/}"
- print "Finds package dependencies and sets up a build order"
- echo
- prose "Run this from a directory containing a PKGBUILD."
- echo
- prose "This script will create a BUILD_DIR for recursive building; it
- tries to find dependencies that aren't built or need update."
- echo
- prose "If no BUILD_DIR is specified, it will create a temporary
- directory."
- echo
- print "Options:"
- flag "-h" "Show this message"
- flag "-A <$(_ ABSROOT)>" "Use ABSROOT as the root of the ABS tree"
- flag "-c" "Clean BUILD_DIR before working."
- flag "-m <$(_ MAX_LEVEL)>" "Limit the depth of the dependency recursion"
- flag "-n" "Don't update pacman DB"
-}
-
-while getopts 'hA:l:cmn' arg; do
- case "$arg" in
- h) usage; exit 0 ;;
- A) ABSROOT="$OPTARG" ;;
- l) LEVEL="$OPTARG" ;; # hidden option to know dep level.
- c) CLEANFIRST='true' ;;
- m) MAXLEVEL="$OPTARG" ;;
- n) UPDATEDB='false' ;;
- esac
-done
-
-if [[ ! -r PKGBUILD ]]; then
- error "This directory doesn't contain a PKGBUILD"
- usage
- exit 1
-fi
-
-shift $(( OPTIND - 1 ))
-build_dir="${1}"
-
-if [[ "$LEVEL" -eq 0 ]]; then
-
- build_dir="${1:-$(mktemp -d /tmp/fullpkg.XXXXXX)}"
-
- if [[ ! -d "$build_dir" ]]; then
- mkdir -p "$build_dir"
- elif "$CLEANFIRST"; then
- # Erase files already in dir
- msg "Cleaning up files in dir"
- find "$build_dir" -mindepth 1 -delete
- fi
-
- if "$UPDATEDB"; then
- msg "Updating pacman db"
- sudo pacman -Sy --noconfirm || true
- fi
-
- # make files for log and buildorder
- touch "${build_dir}"/{log,BUILDORDER}
- buildorder="${build_dir}/BUILDORDER"
-
- msg "Checking dependencies"
-fi
-
-find_deps
-
-exit 0