summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rules/host-ipkg-utils.in3
-rw-r--r--rules/host-ipkg.in4
-rw-r--r--rules/host-package-management.in22
-rw-r--r--rules/post/image_ipkg.make9
-rw-r--r--rules/post/ptxd_make_image_common.make1
-rw-r--r--rules/post/ptxd_make_xpkg_common.make4
-rw-r--r--rules/post/virtual.make7
-rwxr-xr-xscripts/ipkg-push5
-rw-r--r--scripts/lib/ptxd_make_image_prepare_work_dir.sh19
-rw-r--r--scripts/lib/ptxd_make_opkg_common.sh22
-rw-r--r--scripts/lib/ptxd_make_opkg_finish.sh45
11 files changed, 124 insertions, 17 deletions
diff --git a/rules/host-ipkg-utils.in b/rules/host-ipkg-utils.in
index ff5018a08..52e8a0d14 100644
--- a/rules/host-ipkg-utils.in
+++ b/rules/host-ipkg-utils.in
@@ -2,8 +2,7 @@
config HOST_IPKG_UTILS
tristate
- # no prompt, policy is that we always need it
- default y
+ default ALLYES
help
ipkg-utils let you build packages in the ipkg format.
diff --git a/rules/host-ipkg.in b/rules/host-ipkg.in
index 00c8b2a5d..c940daaeb 100644
--- a/rules/host-ipkg.in
+++ b/rules/host-ipkg.in
@@ -2,8 +2,8 @@
config HOST_IPKG
tristate
- default y
- # no prompt, policy is that we always need it
+ default ALLYES
+ select HOST_IPKG_UTILS
help
ipkg is used on the development host to install packets into
some directory. Example:
diff --git a/rules/host-package-management.in b/rules/host-package-management.in
new file mode 100644
index 000000000..f3d0f414e
--- /dev/null
+++ b/rules/host-package-management.in
@@ -0,0 +1,22 @@
+## SECTION=hosttools
+
+choice
+ prompt "package management "
+ default HOST_PACKAGE_MANAGEMENT_IPKG
+
+ config HOST_PACKAGE_MANAGEMENT_IPKG
+ bool
+ select HOST_IPKG
+ prompt "ipkg "
+
+ config HOST_PACKAGE_MANAGEMENT_OPKG
+ bool
+ select HOST_OPKG
+ prompt "opkg "
+endchoice
+
+config HOST_PACKAGE_MANAGEMENT
+ string
+ default "ipkg" if HOST_PACKAGE_MANAGEMENT_IPKG
+ default "opkg" if HOST_PACKAGE_MANAGEMENT_OPKG
+
diff --git a/rules/post/image_ipkg.make b/rules/post/image_ipkg.make
index 038538326..9d71bea74 100644
--- a/rules/post/image_ipkg.make
+++ b/rules/post/image_ipkg.make
@@ -18,13 +18,14 @@ $(STATEDIR)/ipkg-push: $(STATEDIR)/host-ipkg-utils.install.post $(STATEDIR)/worl
ifdef PTXCONF_IMAGE_IPKG_FORCED_PUSH
rm -rf $(PTXCONF_SETUP_IPKG_REPOSITORY)/$(PTXCONF_PROJECT)/dists/$(PTXCONF_PROJECT)$(PTXCONF_PROJECT_VERSION)
endif
- @echo "pushing ipkg pakets to ipkg-repository..."
+ @echo "pushing ipkg packages to ipkg-repository..."
@$(HOST_ENV) $(PTXDIST_TOPDIR)/scripts/ipkg-push \
--ipkgdir $(call remove_quotes,$(PKGDIR)) \
--repodir $(call remove_quotes,$(PTXCONF_SETUP_IPKG_REPOSITORY)) \
--revision $(call remove_quotes,$(PTXDIST_VERSION_FULL)) \
--project $(call remove_quotes,$(PTXCONF_PROJECT)) \
- --dist $(call remove_quotes,$(PTXCONF_PROJECT)$(PTXCONF_PROJECT_VERSION))
+ --dist $(call remove_quotes,$(PTXCONF_PROJECT)$(PTXCONF_PROJECT_VERSION)) \
+ --type $(PTXCONF_HOST_PACKAGE_MANAGEMENT)
@echo "ipkg-repository updated"
@touch $@
@@ -37,8 +38,8 @@ PHONY += $(PKGDIR)/Packages
$(PKGDIR)/Packages: $(STATEDIR)/host-ipkg-utils.install.post
@echo "Creating ipkg index '$@'..."
@rm -f $(PKGDIR)/Packages*
- @$(HOST_ENV) \
- ipkg-make-index -l "$(PKGDIR)/Packages.filelist" -p "$(@)" "$(PKGDIR)"
+ @$(HOST_ENV) $(PTXCONF_HOST_PACKAGE_MANAGEMENT)-make-index \
+ -l "$(PKGDIR)/Packages.filelist" -p "$(@)" "$(PKGDIR)"
@echo "done."
# vim: syntax=make
diff --git a/rules/post/ptxd_make_image_common.make b/rules/post/ptxd_make_image_common.make
index 1581173f7..25bfdb4ce 100644
--- a/rules/post/ptxd_make_image_common.make
+++ b/rules/post/ptxd_make_image_common.make
@@ -18,6 +18,7 @@ image/env = \
$(call ptx/env) \
image_pkgs_selected_target="$(call ptx/escape,$(PTX_PACKAGES_INSTALL))" \
image_repo_dist_dir="$(call ptx/escape,$(PTXCONF_SETUP_IPKG_REPOSITORY)/$(call remove_quotes,$(PTXCONF_PROJECT))/dists/$(call remove_quotes,$(PTXCONF_PROJECT))$(call remove_quotes,$(PTXCONF_PROJECT_VERSION)))" \
+ image_xpkg_type=$(PTXCONF_HOST_PACKAGE_MANAGEMENT) \
\
image_work_dir="$(call ptx/escape,$(image/work_dir))" \
image_permissions="$(call ptx/escape,$(image/permissions))"
diff --git a/rules/post/ptxd_make_xpkg_common.make b/rules/post/ptxd_make_xpkg_common.make
index c7bff359a..8d27c35d9 100644
--- a/rules/post/ptxd_make_xpkg_common.make
+++ b/rules/post/ptxd_make_xpkg_common.make
@@ -1,6 +1,7 @@
# -*-makefile-*-
#
# Copyright (C) 2009, 2010 by Marc Kleine-Budde <mkl@pengutronix.de>
+# 2011 by George McCollister <george.mccollister@gmail.com>
#
# See CREDITS for details about who has contributed to this project.
#
@@ -17,7 +18,8 @@ xpkg/env/impl = \
CROSS_STRIP="$(call ptx/escape,$(CROSS_STRIP))" \
pkg_xpkg="$(call ptx/escape,$(1))" \
pkg_ipkg_extra_args=$(PTXCONF_IMAGE_IPKG_EXTRA_ARGS) \
- pkg_xpkg_type="ipkg"
+ pkg_opkg_extra_args=$(PTXCONF_IMAGE_OPKG_EXTRA_ARGS) \
+ pkg_xpkg_type=$(PTXCONF_HOST_PACKAGE_MANAGEMENT)
#
# $1: xpkg label
diff --git a/rules/post/virtual.make b/rules/post/virtual.make
index a484e5284..2d5a2b5e2 100644
--- a/rules/post/virtual.make
+++ b/rules/post/virtual.make
@@ -1,6 +1,7 @@
# -*-makefile-*-
#
# Copyright (C) 2003-2010 by Marc Kleine-Budde <mkl@pengutronix.de>
+# 2011 by George McCollister <george.mccollister@gmail.com>
# See CREDITS for details about who has contributed to this project.
#
# For further information about the PTXdist project and license conditions
@@ -15,10 +16,14 @@ ifdef PTXCONF_HOST_FAKEROOT
$(STATEDIR)/virtual-cross-tools.install: $(STATEDIR)/host-fakeroot.install.post
endif
-ifdef PTXCONF_HOST_IPKG_UTILS
+ifdef PTXCONF_HOST_PACKAGE_MANAGEMENT_IPKG
$(STATEDIR)/virtual-cross-tools.install: $(STATEDIR)/host-ipkg-utils.install.post
endif
+ifdef PTXCONF_HOST_PACKAGE_MANAGEMENT_OPKG
+$(STATEDIR)/virtual-cross-tools.install: $(STATEDIR)/host-opkg-utils.install.post
+endif
+
ifdef PTXCONF_CROSS_PKG_CONFIG_WRAPPER
$(STATEDIR)/virtual-cross-tools.install: $(STATEDIR)/cross-pkg-config-wrapper.install.post
endif
diff --git a/scripts/ipkg-push b/scripts/ipkg-push
index 4c8d224f1..3f8c82339 100755
--- a/scripts/ipkg-push
+++ b/scripts/ipkg-push
@@ -31,6 +31,7 @@ usage() {
echo " --revision <revision> dist revision name to be updated"
echo " --project <projectname> project name"
echo " --dist <distname> use this to make a dist release (optional)"
+ echo " --type <package type> specify package type (default: ipkg)"
echo
exit 0
}
@@ -40,6 +41,7 @@ REPODIR=
DISTREVISION=
PROJECT=
DIST=
+TYPE=ipkg
#
@@ -53,6 +55,7 @@ while [ $# -gt 0 ]; do
--revision) DISTREVISION=`ptxd_abspath $2`; shift 2 ;;
--project) PROJECT=$2; shift 2 ;;
--dist) DIST=$2; shift 2 ;;
+ --type) TYPE=$2; shift 2 ;;
*) usage "unknown option $1" ;;
esac
done
@@ -190,7 +193,7 @@ done
echo "creating index.....: "
-(cd $REPODIR/$PROJECT/dists/$DIST && ipkg-make-index . > Packages)
+(cd $REPODIR/$PROJECT/dists/$DIST && ${TYPE}-make-index . > Packages)
exit
diff --git a/scripts/lib/ptxd_make_image_prepare_work_dir.sh b/scripts/lib/ptxd_make_image_prepare_work_dir.sh
index 1715abe72..d8f7b1d31 100644
--- a/scripts/lib/ptxd_make_image_prepare_work_dir.sh
+++ b/scripts/lib/ptxd_make_image_prepare_work_dir.sh
@@ -1,6 +1,7 @@
#!/bin/bash
#
# Copyright (C) 2010 by Marc Kleine-Budde <mkl@pengutronix.de>
+# 2011 by George McCollister <george.mccollister@gmail.com>
#
# See CREDITS for details about who has contributed to this project.
#
@@ -22,11 +23,17 @@
# out:
# - $image_permissions file containing all permissions
#
-ptxd_make_image_extract_ipkg_files() {
+ptxd_make_image_extract_xpkg_files() {
# FIXME: consolidate "ptxd_install_setup_src"
local src="/etc/ipkg.conf"
- local ipkg_conf="${PTXDIST_TEMPDIR}/${FUNCNAME}_ipkg.conf"
+ local xpkg_conf="${PTXDIST_TEMPDIR}/${FUNCNAME}_xpkg.conf"
local -a list ptxd_reply
+ if ptxd_get_ptxconf "PTXCONF_HOST_PACKAGE_MANAGEMENT_OPKG" > /dev/null; then
+ echo "option force_postinstall 1" > "${xpkg_conf}"
+ src="/etc/opkg/opkg.conf"
+ else
+ src="/etc/ipkg.conf"
+ fi
list=( \
"${PTXDIST_WORKSPACE}/projectroot${PTXDIST_PLATFORMSUFFIX}${src}" \
"${PTXDIST_WORKSPACE}/projectroot${src}${PTXDIST_PLATFORMSUFFIX}" \
@@ -50,10 +57,10 @@ ${list[*]}
ARCH="${PTXDIST_IPKG_ARCH_STRING}" \
SRC="" \
- ptxd_replace_magic "${ptxd_reply}" > "${ipkg_conf}" &&
+ ptxd_replace_magic "${ptxd_reply}" >> "${xpkg_conf}" &&
DESTDIR="${image_work_dir}" \
- fakeroot -- ipkg-cl -f "${ipkg_conf}" -o "${image_work_dir}" \
+ fakeroot -- ${image_xpkg_type}-cl -f "${xpkg_conf}" -o "${image_work_dir}" \
install "${ptxd_reply_ipkg_files[@]}" &&
if ! cat "${ptxd_reply_perm_files[@]}" > "${image_permissions}"; then
echo "${PTXDIST_LOG_PROMPT}error: failed read permission files" >&2
@@ -62,12 +69,12 @@ ${list[*]}
return
}
-export -f ptxd_make_image_extract_ipkg_files
+export -f ptxd_make_image_extract_xpkg_files
ptxd_make_image_prepare_work_dir() {
ptxd_make_image_init &&
ptxd_get_ipkg_files &&
- ptxd_make_image_extract_ipkg_files
+ ptxd_make_image_extract_xpkg_files
}
export -f ptxd_make_image_prepare_work_dir
diff --git a/scripts/lib/ptxd_make_opkg_common.sh b/scripts/lib/ptxd_make_opkg_common.sh
new file mode 100644
index 000000000..dca858021
--- /dev/null
+++ b/scripts/lib/ptxd_make_opkg_common.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright (C) 2009 by Marc Kleine-Budde <mkl@pengutronix.de>
+# 2011 by George McCollister <george.mccollister@gmail.com>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+
+#
+# initialize variables needed to package opkgs
+#
+ptxd_make_opkg_init() {
+ pkg_opkg_tmp="${pkg_xpkg_tmp}/opkg"
+ pkg_xpkg_control_dir="${pkg_opkg_tmp}/CONTROL"
+ pkg_xpkg_control="${pkg_xpkg_control_dir}/control"
+ pkg_xpkg_conffiles="${pkg_xpkg_control_dir}/conffiles"
+}
+export -f ptxd_make_opkg_init
diff --git a/scripts/lib/ptxd_make_opkg_finish.sh b/scripts/lib/ptxd_make_opkg_finish.sh
new file mode 100644
index 000000000..97e10340f
--- /dev/null
+++ b/scripts/lib/ptxd_make_opkg_finish.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+#
+# Copyright (C) 2005, 2006, 2007 Robert Schwebel <r.schwebel@pengutronix.de>
+# 2008, 2009, 2010 by Marc Kleine-Budde <mkl@pengutronix.de>
+# 2011 by George McCollister <george.mccollister@gmail.com>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# the actual opkg package creation, will run in fakeroot
+#
+ptxd_make_opkg_finish_impl() {
+ chown -R 0:0 "${pkg_xpkg_tmp}" &&
+ ptxd_make_xpkg_pkg "${pkg_opkg_tmp}" "${pkg_xpkg_cmds}" "${pkg_xpkg_perms}" &&
+ opkg-build ${pkg_opkg_extra_args} "${pkg_opkg_tmp}" "${ptx_pkg_dir}"
+}
+export -f ptxd_make_opkg_finish_impl
+
+
+#
+# create an opkg package
+#
+ptxd_make_opkg_finish() {
+ local dep
+
+ # replace space with ", "
+ dep="${pkg_xpkg_deps[*]}"
+ dep="${dep// /, }"
+
+ sed -i -e "s:@DEPENDS@:${dep}:g" "${pkg_xpkg_control}" || return
+
+ local -a fake_args
+ if [ -f "${pkg_fake_env}" ]; then
+ fake_args=( "-i" "${pkg_fake_env}" )
+ fi
+ fake_args[${#fake_args[@]}]="-u"
+
+ export ${!pkg_*} ${!ptx_*}
+ fakeroot "${fake_args[@]}" -- ptxd_make_opkg_finish_impl
+}
+export -f ptxd_make_opkg_finish