From da492033300c25047850317fe32069eae9c47e0c Mon Sep 17 00:00:00 2001 From: "Junfeng.dong" Date: Thu, 18 Jul 2013 10:48:40 +0800 Subject: [PATCH 1/1] Init. Change-Id: I122e3b6a237df2a3b2077583b02f13b83191b42e Signed-off-by: Junfeng.dong --- packaging/baselibs.conf | 7 + packaging/eglibc-headers-arm.changes | 3 + packaging/eglibc-headers-arm.spec | 255 +++++++++++++++++++++++++++++++++++ packaging/files_to_ignore | 4 + 4 files changed, 269 insertions(+) create mode 100644 packaging/baselibs.conf create mode 100644 packaging/eglibc-headers-arm.changes create mode 100644 packaging/eglibc-headers-arm.spec create mode 100644 packaging/files_to_ignore diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf new file mode 100644 index 0000000..3d6f12b --- /dev/null +++ b/packaging/baselibs.conf @@ -0,0 +1,7 @@ +arch armv5tel targets i586:armv5tel +arch armv6l targets i586:armv6l +arch armv7l targets i586:armv7l +arch armv7hl targets i586:armv7hl +arch armv7nhl targets i586:armv7nhl + + diff --git a/packaging/eglibc-headers-arm.changes b/packaging/eglibc-headers-arm.changes new file mode 100644 index 0000000..1e585ec --- /dev/null +++ b/packaging/eglibc-headers-arm.changes @@ -0,0 +1,3 @@ + +* Tue Apr 20 17:03:30 UTC 2010 Jan-Simon Möller - 1.0 +- Initial version on meego.com diff --git a/packaging/eglibc-headers-arm.spec b/packaging/eglibc-headers-arm.spec new file mode 100644 index 0000000..7beca1f --- /dev/null +++ b/packaging/eglibc-headers-arm.spec @@ -0,0 +1,255 @@ +# meta spec file for cross-chroot setup +# +# Copyright (c) 2010 Jan-Simon Möller (jsmoeller@linuxfoundation.org) +# 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 eglibc-headers +# +# The architectures this meta package is built on +%define myexclusive %arm +# +### no changes needed below this line +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + + +### no changes needed +# +# The new package name - convention is %oldname-x86 +%define newname %{oldname}-arm +# +# 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 "/opt/cross/%_target_platform/sys-root/lib:/opt/cross/%_target_platform/sys-root/usr/lib" +%define newinterpreter /opt/cross/%_target_platform/sys-root/lib/ld-linux.so.3 +# +# 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 -rpmlint-mini-x86-arm +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 +Source100: baselibs.conf + +Provides: glibc-headers-arm + +%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 %{_target_cpu} autoreqprov off" >> /tmp/baselibs_new.conf +shellquote " targettype %{_target_cpu} targetname cross-%{_target_cpu}-%{oldname} " >> /tmp/baselibs_new.conf +for i in $cleandeps ; do + shellquote " targettype %{_target_cpu} requires \"${i}-cross-%{_target_cpu}-x86\"" >> /tmp/baselibs_new.conf +done +shellquote " targettype %{_target_cpu} prefix /opt/cross/%_target_platform/sys-root" >> /tmp/baselibs_new.conf +shellquote " targettype %{_target_cpu} extension -x86" >> /tmp/baselibs_new.conf +shellquote " targettype %{_target_cpu} +/" >> /tmp/baselibs_new.conf +shellquote " targettype %{_target_cpu} -%{_mandir}" >> /tmp/baselibs_new.conf +shellquote " targettype %{_target_cpu} -%{_docdir}" >> /tmp/baselibs_new.conf +shellquote " targettype %{_target_cpu} requires \"tizen-cross-%{_target_cpu}-sysroot\"" >> /tmp/baselibs_new.conf + +cat /tmp/baselibs_new.conf >> %{_sourcedir}/baselibs.conf + +# Print requirements +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 diff --git a/packaging/files_to_ignore b/packaging/files_to_ignore new file mode 100644 index 0000000..b687c0e --- /dev/null +++ b/packaging/files_to_ignore @@ -0,0 +1,4 @@ +/usr/sbin/glibc_post_upgrade* +/var/cache/ldconfig +/etc/ld.so.conf.d/tizen-accelerator.conf +/etc/ld.so.cache \ No newline at end of file -- 2.7.4