From 45adc0935c3d54c39356e6d1d56a09ce509effb4 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Fri, 27 Jan 2012 05:06:51 -0500 Subject: Write oh-checkbuilddeps. --- diff --git a/TODO b/TODO index 78a6eba..d3b3ceb 100644 --- a/TODO +++ b/TODO @@ -7,7 +7,6 @@ TODO: * Finish tar archive handling in opkhelper. * Support "Conffiles". [1] * Build packages with copyright information and changelogs. [1] - * Write a script to check build dependencies. Future Plans: * Package signing. [2] diff --git a/man/Makefile.in b/man/Makefile.in index c9cdfc2..3f60035 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -27,7 +27,7 @@ MANDIR = @mandir@ .SUFFIXES: -OBJS = opkbuild.1 oh-applypatches.1 oh-strip.1 \ +OBJS = opkbuild.1 oh-checkbuilddeps.1 oh-applypatches.1 oh-strip.1 \ oh-installfiles.1 oh-gencontrol.1 oh-buildopk.1 .PHONY: all diff --git a/man/oh-checkbuilddeps.1 b/man/oh-checkbuilddeps.1 new file mode 100644 index 0000000..9dd7935 --- /dev/null +++ b/man/oh-checkbuilddeps.1 @@ -0,0 +1,25 @@ +.\" Author: Patrick "P. J." McDermott +.TH oh-checkbuilddeps 1 "2012-01-27" "opkhelper-0.1.0" "opkg Build Helper Tools" +.SH NAME +oh-checkbuilddeps \- Make sure that package build dependencies are installed. +.SH SYNOPSIS +.B oh-checkbuilddeps +.SH DESCRIPTION +.B oh-checkbuilddeps +reads the `Build-Depends' field from the source package control and checks if +each package in the field value is installed. +.SH COPYRIGHT +Copyright (C) 2012 Patrick "P. J." McDermott +.sp +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. +.sp +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. +.sp +You should have received a copy of the GNU General Public License +along with this program. If not, see . diff --git a/src/Makefile.in b/src/Makefile.in index cdf0b73..45be948 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -27,7 +27,7 @@ BINDIR = @bindir@ .SUFFIXES: -OBJS = opkbuild oh-applypatches oh-strip \ +OBJS = opkbuild oh-checkbuilddeps oh-applypatches oh-strip \ oh-installfiles oh-gencontrol oh-buildopk .PHONY: all diff --git a/src/oh-checkbuilddeps b/src/oh-checkbuilddeps new file mode 100644 index 0000000..0655fa6 --- /dev/null +++ b/src/oh-checkbuilddeps @@ -0,0 +1,43 @@ +#! /bin/sh +# +# opkhelper +# src/oh-checkbuilddeps +# Make sure that package build dependencies are installed. +# +# 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 . + +. @@LIBDIR@@/opkhelper/controlfields + +print_usage() +{ + printf 'Usage: %s...\n' "$1" +} + +if [ ${#} -ne 0 ]; then + print_usage ${0} >&2 + exit 1 +fi + +printf 'oh-checkbuilddeps: Checking build dependencies...\n' + +for dep in $(oh_get_field Build-Depends); do + # TODO: Test this. + if [ -z $(opkg status "${dep}" | grep "^Package: ${dep}") ]; then + printf 'oh-checkbuilddeps: Error: Dependency %s not installed.\n' \ + "${dep}" >&2 + exit 1 + fi +done diff --git a/src/opkbuild b/src/opkbuild index 03389f8..10d5c6e 100644 --- a/src/opkbuild +++ b/src/opkbuild @@ -82,10 +82,15 @@ mkdir tmp cd tmp # Get source package name and version. -printf 'opkbuild: Reading source package control fields...\n\n' +printf 'opkbuild: Reading source package control fields...\n' srcpkg=$(oh_get_field Source) version=$(oh_get_field Version) +# Check build dependencies. +oh-checkbuilddeps || error "${srcpkg}-src" + +printf '\n' + # Build *-src package. printf 'opkbuild: Attempting to build package "%s"...\n' "${srcpkg}-src" printf 'opkbuild: Installing files for package "%s"...\n' "${srcpkg}-src" -- cgit v0.9.1