[meego-packaging] 4958: Changes to devel:base/mpc-x86

Jan-Simon Möller jsmoeller at linuxfoundation.org
Mon Jun 28 07:06:20 PDT 2010


Hi,
I have made the following changes to mpc-x86 in project devel:base. Please review and accept ASAP.

Thank You,
Jan-Simon Möller

[This message was auto-generated]

---

Request #4958:

  submit:   home:jsmoeller:gccupdate/mpc-x86(r1) -> devel:base/mpc-x86


Message:
    Add mpc-x86

State:   new          2010-06-28T02:03:03 jsmoeller
Comment: None


This is a NEW package in devel:base project.
The files in the new package:
mpc-x86/
  |__  baselibs.conf
  |__  mpc-x86.spec

The content of the spec file, mpc-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 (jsmoeller at linuxfoundation.org)
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

## 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
##
## File libraries_to_prepare:
## 3) fill in the libraries which need special treatment by patchelf
##
## File special_script:
## 4) fill in the special scrit to call, if needed


#\/\/\/\/\/\/\/\/\/\/
### only changes here
#
# The original package name
%define oldname mpc
#
# 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"
#
# 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

Name:          %newname
Version:       %newversion
Release:       1
AutoReqProv:   0
Provides:      %newname
BuildRequires: rpm grep tar patchelf sed
BuildRequires: %oldname
Requires:      %oldname
# no auto requirements - they're generated
License:       %newlicense
Group:         %newgroup
ExclusiveArch: %myexclusive
Summary:       %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
# provides
#%{expand:%( export IFS=$'\n' ; rpm -q --qf '[%{PROVIDES} = %{PROVIDEVERSION}\n]' %oldname | sed -e 's/=.$//' | while read i; do echo "Provides: $i" ; done)}
# requires
#%{expand:%( export IFS=$'\n' ; rpm -q --qf '[%{REQUIRES} \n]' %oldname | sed -e 's/=.$//' | while read i; do echo "Requires: $i" ; done)}

%description
This is a meta-package providing %name.
It is not intended to be used in a normal System!
Original description:
%{expand:%(rpm -q --qf '[%{description}]' %oldname)}



%prep

%build

%install
set +x
mkdir -p %buildroot
rpm -ql %oldname > filestoinclude1
%if %files_to_ignore
for i in `cat %{_sourcedir}/files_to_ignore`; do
 echo "Ignoring file: $i"
 sed -e "s#^${i}.*##" -i filestoinclude1 
done
%endif
tar -T filestoinclude1 -cpf - | ( cd %buildroot && tar -xvpf - )
find %buildroot >  filestoinclude2
cat filestoinclude2 | sed -e "s#%{buildroot}##g" | uniq | sort > filestoinclude
%if %binaries_to_prepare
echo ""
echo "[ .oO Preparing binaries Oo. ]"
echo ""
mkdir %buildroot/%{_prefix}/share/applybinary/
set -x
for binary in `cat %{_sourcedir}/binaries_to_prepare` ; do
  echo "Processing binary: $binary"
#  deps=$(for i in `readelf -a "$binary" | grep "(NEEDED)" | sed -e "s/.*\[//g" -e "s/\].*//g" ` ; do rpm -q --whatprovides "$i" ; done)
  ldd /bin/rpm  | grep -v "ld-linux" | grep -v "linux-gate" |  sed -e "s#=.*##g" -e "s#^\t*##g"  > 1
  deps=$(for i in `cat 1` ; 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 /emul/ia32-linux/lib/ld-linux.so.2 %buildroot/$binary
  patchelf --print-rpath %buildroot/$binary
  patchelf --print-interpreter %buildroot/$binary
  echo "$binary" >> %buildroot/%{_prefix}/share/applybinary/%name
  echo ""
done
set +x
%endif
%if %libraries_to_prepare
echo ""
echo "[ .oO Preparing libraries Oo. ]"
echo ""
%endif
%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
for i in $cleandeps ; do 
  shellquote "  targettype arm requires \"${i}-x86-arm\"" >> /tmp/baselibs_new.conf
done
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
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
%if %binaries_to_prepare
#shellquote "  targettype arm post \"replacenative() {\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"  echo \"Replacing \${myfile}. Backup is \${myfile}.orig-arm.\" \"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"  mv \${myfile} \${myfile}.orig-arm ; ln -s <prefix>\${myfile} \${myfile} \"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"}\"" >> /tmp/baselibs_new.conf
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 "  targettype arm post \"toreplace=\`rpm -ql <name>-<extension> \| grep applybinary/<name>\`\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"if test x\${toreplace} != x ; then\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"  files=\`cat \${toreplace}\`\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"  for myfile in \${files}\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"  do\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"    #only replace files and nothing else by accident\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"    #if test -f \${myfile}; then\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"      replacenative \$myfile\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"    #fi\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"  done\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm post \"fi\"" >> /tmp/baselibs_new.conf
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
#shellquote "  targettype arm preun \"toreplace=\`rpm -ql <name>-<extension> \| grep applybinary/<name>\`\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"if test x\${toreplace} != x ; then\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"  files=\`cat \${toreplace}\`\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"  for myfile in \${files}\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"   do\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"   #only replace files and nothing else by accident\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"    if test -f \${myfile}; then\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"      restorenative \$myfile\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"    fi\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"  done\"" >> /tmp/baselibs_new.conf
#shellquote "  targettype arm preun \"fi\"" >> /tmp/baselibs_new.conf
%endif

cat /tmp/baselibs_new.conf >> %{_sourcedir}/baselibs.conf


echo ""
echo ""
echo ""
echo "REQUIREMENTS:"
grep "requires" %{_sourcedir}/baselibs.conf
echo ""
echo ""
echo ""
sleep 2
set -x

%clean
rm -rf $RPM_BUILD_ROOT

%files -f filestoinclude
%defattr(-,root,root)
%if %binaries_to_prepare
/%{_prefix}/share/applybinary/%name
%endif
===================================================================


More information about the MeeGo-packaging mailing list