Hi,

See below.

On Thu, Apr 28, 2011 at 04:13:28PM -0500, George McCollister wrote:
> opkg and opkg-utils can now be used to build .ipk files and generate images
> from them.
> 
> No longer default HOST_IPKG_UTILS and HOST_IPKG to yes.
> HOST_PACKAGE_MANAGEMENT_IPKG will select HOST_IPKG.
> HOST_IPKG will select HOST_IPKG_UTILS.
> 
> Added package management selection to hosttools.
> 
> Changed scripts to use the package management utilities for the selected
> package management system.
> 
> Signed-off-by: George McCollister <[email protected]>
> ---
>  rules/host-ipkg-utils.in                        |    2 -
>  rules/host-ipkg.in                              |    3 +-
>  rules/host-package-management.in                |   22 +++++++++++
>  rules/post/image_ipkg.make                      |    9 +++--
>  rules/post/ptxd_make_image_common.make          |    1 +
>  rules/post/ptxd_make_xpkg_common.make           |    4 ++-
>  rules/post/virtual.make                         |    5 +++
>  scripts/ipkg-push                               |    5 ++-
>  scripts/lib/ptxd_make_image_prepare_work_dir.sh |   18 ++++++---
>  scripts/lib/ptxd_make_ipkg_finish.sh            |    3 +-
>  scripts/lib/ptxd_make_opkg_common.sh            |   22 +++++++++++
>  scripts/lib/ptxd_make_opkg_finish.sh            |   45 
> +++++++++++++++++++++++
>  12 files changed, 122 insertions(+), 17 deletions(-)
>  create mode 100644 rules/host-package-management.in
>  create mode 100644 scripts/lib/ptxd_make_opkg_common.sh
>  create mode 100644 scripts/lib/ptxd_make_opkg_finish.sh
> 
> diff --git a/rules/host-ipkg-utils.in b/rules/host-ipkg-utils.in
> index ff5018a..da10ff0 100644
> --- a/rules/host-ipkg-utils.in
> +++ b/rules/host-ipkg-utils.in
> @@ -2,8 +2,6 @@
>  
>  config HOST_IPKG_UTILS
>       tristate
> -     # no prompt, policy is that we always need it
> -     default y
>       help
>         ipkg-utils let you build packages in the ipkg format.
>  
> diff --git a/rules/host-ipkg.in b/rules/host-ipkg.in
> index 00c8b2a..fa8b1d6 100644
> --- a/rules/host-ipkg.in
> +++ b/rules/host-ipkg.in
> @@ -2,8 +2,7 @@
>  
>  config HOST_IPKG
>       tristate
> -     default y
> -     # no prompt, policy is that we always need it
> +     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 0000000..f3d0f41
> --- /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 0385383..a375868 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 packets 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 fd639a3..5969fd4 100644
> --- a/rules/post/ptxd_make_image_common.make
> +++ b/rules/post/ptxd_make_image_common.make
> @@ -17,6 +17,7 @@ DOPERMISSIONS := '{ \
>  image/env = \
>       $(call ptx/env) \
>       image_pkgs_selected_target="$(call ptx/escape,$(PTX_PACKAGES_INSTALL))" 
> \
> +     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 c7bff35..8d27c35 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 <[email protected]>
> +#               2011 by George McCollister <[email protected]>
>  #
>  # 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 a484e52..4ba83fc 100644
> --- a/rules/post/virtual.make
> +++ b/rules/post/virtual.make
> @@ -1,6 +1,7 @@
>  # -*-makefile-*-
>  #
>  # Copyright (C) 2003-2010 by Marc Kleine-Budde <[email protected]>
> +#               2011 by George McCollister <[email protected]>
>  # See CREDITS for details about who has contributed to this project.
>  #
>  # For further information about the PTXdist project and license conditions
> @@ -19,6 +20,10 @@ ifdef PTXCONF_HOST_IPKG_UTILS
>  $(STATEDIR)/virtual-cross-tools.install: 
> $(STATEDIR)/host-ipkg-utils.install.post
>  endif
>  
> +ifdef PTXCONF_HOST_OPKG_UTILS
> +$(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 4c8d224..3f8c823 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 1715abe..3dd6229 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 <[email protected]>
> +#               2011 by George McCollister <[email protected]>
>  #
>  # See CREDITS for details about who has contributed to this project.
>  #
> @@ -22,11 +23,16 @@
>  # 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
> +     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 +56,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 +68,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_ipkg_finish.sh 
> b/scripts/lib/ptxd_make_ipkg_finish.sh
> index 8f91916..fe91954 100644
> --- a/scripts/lib/ptxd_make_ipkg_finish.sh
> +++ b/scripts/lib/ptxd_make_ipkg_finish.sh
> @@ -2,6 +2,7 @@
>  #
>  # Copyright (C) 2005, 2006, 2007 Robert Schwebel <[email protected]>
>  #               2008, 2009, 2010 by Marc Kleine-Budde <[email protected]>
> +#               2011 by George McCollister <[email protected]>
>  #
>  # See CREDITS for details about who has contributed to this project.
>  #
> @@ -30,7 +31,7 @@ ptxd_make_ipkg_finish() {
>      dep="${pkg_xpkg_deps[*]}"
>      dep="${dep// /, }"
>  
> -    sed -i -e "s:@DEPENDS@:${dep}:g" "${pkg_ipkg_control}" || return
> +    sed -i -e "s:@DEPENDS@:${dep}:g" "${pkg_xpkg_control}" || return

These changes belong to "make ptxd_make_xpkg more generic"

Michael

>  
>      local -a fake_args
>      if [ -f "${pkg_fake_env}" ]; then
> diff --git a/scripts/lib/ptxd_make_opkg_common.sh 
> b/scripts/lib/ptxd_make_opkg_common.sh
> new file mode 100644
> index 0000000..dca8580
> --- /dev/null
> +++ b/scripts/lib/ptxd_make_opkg_common.sh
> @@ -0,0 +1,22 @@
> +#!/bin/bash
> +#
> +# Copyright (C) 2009 by Marc Kleine-Budde <[email protected]>
> +#               2011 by George McCollister <[email protected]>
> +#
> +# 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 0000000..97e1034
> --- /dev/null
> +++ b/scripts/lib/ptxd_make_opkg_finish.sh
> @@ -0,0 +1,45 @@
> +#!/bin/bash
> +#
> +# Copyright (C) 2005, 2006, 2007 Robert Schwebel <[email protected]>
> +#               2008, 2009, 2010 by Marc Kleine-Budde <[email protected]>
> +#               2011 by George McCollister <[email protected]>
> +#
> +# 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
> -- 
> 1.7.1
> 
> 
> -- 
> ptxdist mailing list
> [email protected]
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

-- 
ptxdist mailing list
[email protected]

Reply via email to