#! /bin/sh # # opkhelper # src/opkbuild # Build opkg packages. # # Copyright (C) 2012 Patrick "P. J." McDermott # # 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 3 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 . print_usage() { printf 'Usage: %s\n' "$1" } # Sanity checks. if [ ! -f format -o ! -f build -o ! -f control ]; then printf 'Error: Current working directory is not a source package.\n' >&2 exit 1 fi if [ "$(cat format)" != '1.0' ]; then printf 'Error: Source package is of an incompatible version.\n' >&2 exit 1 fi # Build *-src package. mkdir -p tmp/dest/usr/src/${pkgname}_${pkgver} cd tmp for file in ../*; do case ${file} in ../tmp) ;; ../*) cp -R ${file} dest/usr/src/${pkgname}_${pkgver} ;; esac done # TODO: Generate control file. oh-buildpkg ${pkgname}-src rm -Rf dest # Build other binary packages. for binpkgdir in ../*.pkg/; do # TODO: Check architecture. if true; then # Make installation directory. # TODO: Maybe this should be an FHS-compliant filesystem hierarchy. mkdir dest # Copy or extract software sources to src. if [ -d ../src ]; then cp -Rp ../src src elif [ -f ../${pkgname}_${pkgver}.tar.gz ]; then tar -xzf ../${pkgname}_${pkgver}.tar.gz fi # TODO: Other compression formats, putting things in src/, ... binpkg=${binpkgdir#'../'} binpkg=${binpkg%'.pkg/} # Build the package. ../build ${binpkg} # Clean up everything except the build stamps. for file in *; do case ${file} in *.buildstamp) ;; *) rm -Rf ${file} ;; esac done fi done