please submit directly to Trunk:Testing, this has nothing to do with toolchain.
Anas
On 24 Jan 2011, at 06:20, Xin Zhong wrote:
> Hi,
> Adding new package fdupes-x86 in project devel:toolchain. Please review and
> accept ASAP.
>
> Justification for this new package:
>
> Use native fdupes to reduce the building time for fennec-qt and qt. BMC #12113
>
> Thank You,
> Xin Zhong
>
> [This message was auto-generated]
>
> ---
>
> Request #12606:
>
> submit: home:zhongxin:branches:devel:toolchain/fdupes-x86(r1)(cleanup) ->
> devel:toolchain/fdupes-x86
>
>
> Message:
> Use native fdupes to reduce the building time for fennec-qt and qt. BMC
> #12113
>
> State: new 2011-01-23T22:20:13 zhongxin
> Comment: None
>
>
> This is a NEW package in devel:toolchain project.
> The files in the new package:
> fdupes-x86/
> |__ baselibs.conf
> |__ binaries_to_prepare
> |__ fdupes-x86.changes
> |__ fdupes-x86.spec
>
> The content of the spec file, fdupes-x86.spec:
> ===================================================================
> %define __strip /bin/true
> %define _build_name_fmt
> %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.dontuse.rpm
> # meta spec file for cross-chroot setup
> #
> # Copyright (c) 2010 Jan-Simon Möller ([email protected])
> # License: GPLv2
>
> ## README
> ##
> ## In this file:
> ## 1) define name of original package (see oldname)
> ##
> ## File binaries_to_prepare:
> ## 2) fill in the binaries which need to be available to the foreign chroot
> ## e.g. /bin/bash - this will make a i586 bash available
> ##
>
> #\/\/\/\/\/\/\/\/\/\/
> ### only changes here
> #
> # The original package name
> %define oldname fdupes
> #
> # The architectures this meta package is built on
> %define myexclusive i586
> #
> ### no changes needed below this line
> # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>
>
> ### no changes needed
> #
> # The new package name - convention is %oldname-x86
> %define newname %{oldname}-x86
> #
> # The version of the original package is read from its rpm db info
> %{expand:%%define newversion %(rpm -q --qf '[%{version}]' %oldname)}
> #
> # The license of the original package is read from its rpm db info
> %{expand:%%define newlicense %(rpm -q --qf '[%{license}]' %oldname)}
> #
> # The group information of the original package
> %{expand:%%define newgroup %(rpm -q --qf '[%{group}]' %oldname)}
> #
> # The summary of the original package
> %{expand:%%define newsummary %(rpm -q --qf '[%{summary} - special version ]'
> %oldname)}
> #
> # New rpath to add to files on request
> %define newrpath "/emul/ia32-linux/lib:/emul/ia32-linux/usr/lib"
> %define newinterpreter /emul/ia32-linux/lib/ld-linux.so.2
> #
> # Some automatic checks for availability
> # binaries_to_prepare
> %define binaries_to_prepare %{expand:%(test -e
> %{_sourcedir}/binaries_to_prepare && echo 1 || echo 0)}
> %define libraries_to_prepare %{expand:%(test -e
> %{_sourcedir}/libraries_to_prepare && echo 1 || echo 0)}
> %define special_script %{expand:%(test -e %{_sourcedir}/special_script &&
> echo 1 || echo 0)}
> %define files_to_ignore %{expand:%(test -e %{_sourcedir}/files_to_ignore &&
> echo 1 || echo 0)}
> #
> ### no changes needed below this line
> %define __strip /bin/true
> %define nodebug 1
> %define _build_name_fmt
> %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.dontuse.rpm
>
>
> Name: %newname
> Version: %newversion
> Release: 7
> AutoReqProv: 0
> Provides: %newname
> BuildRequires: rpm grep tar patchelf sed -rpmlint-Moblin -rpmlint-mini
> -post-build-checks
> BuildRequires: %oldname
> Requires: %oldname
> # no auto requirements - they're generated
> License: %newlicense
> Group: %newgroup
> ExclusiveArch: %myexclusive
> Summary: Don't use! %newsummary
> BuildRoot: %{_tmppath}/%{name}-%{version}-build
> %if %binaries_to_prepare
> Source10: binaries_to_prepare
> %endif
> %if %libraries_to_prepare
> Source20: libraries_to_prepare
> %endif
> %if %special_script
> Source30: special_script
> %endif
> %if %files_to_ignore
> Source40: files_to_ignore
> %endif
>
> %description
> This is a meta-package providing %name.
> It is not intended to be used on a normal system/device!
> Original description:
> %{expand:%(rpm -q --qf '[%{description}]' %oldname)}
>
>
>
> %prep
>
> %build
>
> %install
> %if %nodebug
> set +x
> %endif
> mkdir -p %buildroot
> rpm -ql %oldname > filestoinclude1
>
> # ignore files - construct sed script
> sedtmp="sedtmp.$$"
> echo "s#^%{_docdir}.*##" >> $sedtmp
> echo "s#^%{_mandir}.*##" >> $sedtmp
> echo "s#^%{_infodir}.*##" >> $sedtmp
>
> # evaluate files_to_ignore
> %if %files_to_ignore
> for i in `cat %{_sourcedir}/files_to_ignore`; do
> echo "Ignoring file: $i"
> echo "s#^${i}.*##" >> $sedtmp
> done
> %endif
>
> # ignore default filesystem files
> for i in `rpm -ql filesystem`; do
> echo "s#^${i}\$##" >> $sedtmp
> done
>
> #finish up
> echo "/^\$/d" >> $sedtmp
>
> #execute
> sed -f $sedtmp -i filestoinclude1
>
> # tar copy to buildroot
> tar -T filestoinclude1 -cpf - | ( cd %buildroot && tar -xpf - )
> rm filestoinclude1
>
> # Todo: refractor
> # no directories, in filelist
> find %buildroot > filestoinclude2
> cat filestoinclude2 | sed -e "s#%{buildroot}##g" | uniq | sort >
> filestoinclude1
> for i in `cat filestoinclude1`; do
> # no directories
> if ! test -d %buildroot/$i ; then
> #
> echo "$i" >> filestoinclude
> fi
> done
> rm filestoinclude1
> rm filestoinclude2
>
> # patchelf the binaries
> %if %binaries_to_prepare
> echo ""
> echo "[ .oO Preparing binaries Oo. ]"
> echo ""
> mkdir -p %buildroot/%{_prefix}/share/applybinary/
> for binary in `cat %{_sourcedir}/binaries_to_prepare` ; do
> echo "Processing binary: $binary"
> tmp="tmp.$$"
> %if %nodebug
> debug=
> %else
> debug="--debug"
> %endif
> ldd $binary | grep -v "ld-linux" | grep -v "linux-gate" | sed -e
> "s#=.*##g" -e "s#^\t*##g" > $tmp
> deps=$(for i in `cat $tmp` ; do rpm -q --whatprovides "$i" | grep -v "no
> package"; done)
> cleandeps=$(echo "$cleandeps" "$deps" | sort | uniq | sed -e "s/-[0-9].*//g")
> patchelf $debug --set-rpath %newrpath %buildroot/$binary
> patchelf $debug --set-interpreter %newinterpreter %buildroot/$binary
> patchelf $debug --set-rpath %newrpath %buildroot/$binary
> patchelf $debug --set-interpreter %newinterpreter %buildroot/$binary
> if test -n "$debug"; then
> patchelf --print-rpath %buildroot/$binary
> patchelf --print-interpreter %buildroot/$binary
> fi
> echo "$binary" >> %buildroot/%{_prefix}/share/applybinary/%name
> echo ""
> done
> %endif
>
> # stub
> %if %libraries_to_prepare
> echo ""
> echo "[ .oO Preparing libraries Oo. ]"
> echo ""
> %endif
>
> # stub
> %if %special_script
> echo ""
> echo "[ .oO Executing special script Oo. ]"
> echo ""
> %endif
>
> # lets start the shellquote nightmare ;)
> shellquote()
> {
> for arg; do
> arg=${arg//\\/\\\\}
> # arg=${arg//\$/\$} # already needs quoting ;(
> # arg=${arg/\"/\\\"} # dito
> # arg=${arg//\`/\`} # dito
> arg=${arg//\\|/\|}
> arg=${arg//\\|/|}
> echo "$arg"
> done
> }
>
>
> echo "Creating baselibs_new.conf"
> echo ""
> rm -rRf /tmp/baselibs_new.conf || true
>
> shellquote "%{name}" >> /tmp/baselibs_new.conf
> shellquote " targettype x86 block!" >> /tmp/baselibs_new.conf
> shellquote " targettype 32bit block!" >> /tmp/baselibs_new.conf
> shellquote " targettype arm autoreqprov off" >> /tmp/baselibs_new.conf
>
> # automagically fill in basic requirements
> for i in $cleandeps ; do
> shellquote " targettype arm requires \"${i}-x86-arm\"" >>
> /tmp/baselibs_new.conf
> done
>
> # we require the native version
> shellquote " targettype arm requires \"%{oldname}\" " >>
> /tmp/baselibs_new.conf
> shellquote " targettype arm prefix /emul/ia32-linux" >>
> /tmp/baselibs_new.conf
> shellquote " targettype arm extension -arm" >> /tmp/baselibs_new.conf
> shellquote " targettype arm +/" >> /tmp/baselibs_new.conf
>
> # safe space and download time
> shellquote " targettype arm -/%{_mandir}" >> /tmp/baselibs_new.conf
> shellquote " targettype arm -/%{_docdir}" >> /tmp/baselibs_new.conf
> shellquote " targettype arm requires \"meego-accelerator\"" >>
> /tmp/baselibs_new.conf
>
> # replace native with x86 binaries as defined in file
> %if %binaries_to_prepare
> # Todo: error handling if .orig-arm is present
> for binary in `cat %{_sourcedir}/binaries_to_prepare` ; do
> shellquote " targettype arm post \" mv ${binary} ${binary}.orig-arm ; ln
> -s <prefix>${binary} ${binary} \"" >> /tmp/baselibs_new.conf
> done
>
> shellquote " " >> /tmp/baselibs_new.conf
> for binary in `cat %{_sourcedir}/binaries_to_prepare` ; do
> shellquote " targettype arm preun \" rm -f ${binary} ; mv
> ${binary}.orig-arm ${binary}\"" >> /tmp/baselibs_new.conf
> done
> %endif
>
> cat /tmp/baselibs_new.conf >> %{_sourcedir}/baselibs.conf
>
> echo
> "################################################################################"
> echo ""
> echo ""
> echo "REQUIREMENTS:"
> grep "requires" %{_sourcedir}/baselibs.conf | sort | uniq | sed -e "s#
> targettype.*requires ##g" | while read k ; do
> echo "CBinstall: $k"
> done
> echo "Runscripts: %{newname}-arm"
> echo ""
> echo ""
> echo
> "################################################################################"
> set -x
>
> %clean
> rm -rf $RPM_BUILD_ROOT
>
> %files -f filestoinclude
> %defattr(-,root,root)
> %if %binaries_to_prepare
> /%{_prefix}/share/applybinary/%name
> %endif
>
>
> ===================================================================
>
> _______________________________________________
> MeeGo-commits mailing list
> [email protected]
> http://lists.meego.com/listinfo/meego-commits
_______________________________________________
MeeGo-packaging mailing list
[email protected]
http://lists.meego.com/listinfo/meego-packaging