This one seemed to end up in the wrong place

(Hope it's OK that I'm mailing about this when I notice it)

/Carsten

2011/1/19 Austin Zhang <[email protected]>:
> Hi,
> Adding new package elfutils-libs-x86 in project devel:trunk:testing. Please 
> review and accept ASAP.
>
> Justification for this new package:
>
> Fixed BMC#12113 - speedrpm ARM cross compiling
>
> Thank You,
> Austin Zhang
>
> [This message was auto-generated]
>
> ---
>
> Request #12293:
>
>  submit:   devel:base/elfutils-libs-x86(r1)(update) -> 
> devel:trunk:testing/elfutils-libs-x86
>
>
> Message:
>    Fixed BMC#12113 - speedrpm ARM cross compiling
>
> State:   new          2011-01-19T00:23:02 austin
> Comment: None
>
>
> This is a NEW package in devel:trunk:testing project.
> The files in the new package:
> elfutils-libs-x86/
>  |__  baselibs.conf
>  |__  elfutils-libs-x86.changes
>  |__  elfutils-libs-x86.spec
>
> The content of the spec file, elfutils-libs-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 elfutils-libs
> #
> # 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 nodebug 1
>
>
> 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 %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 \"  if test -e ${binary}.orig-arm; then 
> \" " >> /tmp/baselibs_new.conf
>   shellquote "  targettype arm post \"    echo \"${binary}.orig-arm already 
> present - skipping.\" \" " >> /tmp/baselibs_new.conf
>   shellquote "  targettype arm post \"  else \" " >> /tmp/baselibs_new.conf
>   shellquote "  targettype arm post \"    mv ${binary} ${binary}.orig-arm ; 
> ln -s <prefix>${binary} ${binary} \"" >> /tmp/baselibs_new.conf
>   shellquote "  targettype arm post \"  fi \" " >> /tmp/baselibs_new.conf
> done
>
> shellquote " " >> /tmp/baselibs_new.conf
> for binary in `cat %{_sourcedir}/binaries_to_prepare` ; do
>
>  shellquote "  targettype arm preun \"  if test -e ${binary}.orig-arm ; then 
> \"" >> /tmp/baselibs_new.conf
>  shellquote "  targettype arm preun \"    rm -f ${binary} ; mv 
> ${binary}.orig-arm ${binary}\"" >> /tmp/baselibs_new.conf
>  shellquote "  targettype arm preun \"  fi \"" >> /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

Reply via email to