Carsten and Simon,

Is this speedrpm idea widely communicated and bought in? 
There would be many new imported packages. 

-----Original Message-----
From: [email protected] [mailto:[email protected]] 
On Behalf Of Carsten V. Munk
Sent: Tuesday, January 11, 2011 3:29 PM
To: [email protected]
Subject: [meego-commits] 11723: New package devel:toolchain/coreutils-x86

Hi,
Adding new package coreutils-x86 in project devel:toolchain. Please review and 
accept ASAP.

Justification for this new package:

Second batch - submit new packages for speedrpm, BMC#12113. When these are 
built, prjconf can be modified to enable speedrpm.

Thank You,
Carsten V. Munk

[This message was auto-generated]

---

Request #11723:

  submit:   devel:hardfp:base/coreutils-x86(r2) -> devel:toolchain/coreutils-x86


Message:
    Second batch - submit new packages for speedrpm, BMC#12113. When these are 
built, prjconf can be modified to enable speedrpm.

State:   new          2011-01-10T23:28:39 cvm
Comment: None


This is a NEW package in devel:toolchain project.
The files in the new package:
coreutils-x86/
  |__  baselibs.conf
  |__  binaries_to_prepare
  |__  coreutils-x86.changes
  |__  coreutils-x86.spec
  |__  files_to_ignore

The content of the spec file, coreutils-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 coreutils
#
# 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 -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 \"  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