You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							205 lines
						
					
					
						
							6.0 KiB
						
					
					
				
			
		
		
	
	
							205 lines
						
					
					
						
							6.0 KiB
						
					
					
				#!/bin/sh | 
						|
# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
						|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
						|
#  | 
						|
# Filename: package/.../dietlibc/parse-config-9 | 
						|
# Copyright (C) 2006 - 2007 The OpenSDE Project | 
						|
# Copyright (C) 2004 - 2006 The T2 SDE Project | 
						|
# Copyright (C) 1998 - 2004 Clifford Wolf | 
						|
#  | 
						|
# More information can be found in the files COPYING and README. | 
						|
#  | 
						|
# This program is free software; you can redistribute it and/or modify | 
						|
# it under the terms of the GNU General Public License as published by | 
						|
# the Free Software Foundation; version 2 of the License. A copy of the | 
						|
# GNU General Public License can be found in the file COPYING. | 
						|
# --- SDE-COPYRIGHT-NOTE-END --- | 
						|
 | 
						|
# --- FUNCTIONS-BEGIN --- | 
						|
 | 
						|
function set_wrapper_and_misc () { | 
						|
	export DIETHOME=$root/usr/dietlibc | 
						|
	if ! atstage native || [ "$SDECFG_LIBC" != "dietlibc" ] ; then | 
						|
		var_append CC_WRAPPER_OTHERS ":" $dietbin | 
						|
	fi | 
						|
 | 
						|
	if [ "$diet_dynamic_static" == "static"  ] ; then | 
						|
	  var_append extraconfopt ' ' '--disable-shared --without-shared' | 
						|
	  var_append GCC_WRAPPER_INSERT ' ' '-c?:-static' | 
						|
	fi | 
						|
	var_append GCC_WRAPPER_INSERT ' ' '-D__dietlibc__' | 
						|
} | 
						|
 | 
						|
function add_lib () { | 
						|
	var_append CC_WRAPPER_APPEND " " "-c?:$1" | 
						|
} | 
						|
 | 
						|
function remove_lib () { | 
						|
        var_append CC_WRAPPER_REMOVE " " "$1" | 
						|
} | 
						|
 | 
						|
# --- FUNCTIONS-END -- | 
						|
 | 
						|
# decide wether to compile the packet with dietlibc or not | 
						|
if [ "$SDECFG_LIBC" = "dietlibc" -o "$pkg" = "dietlibc" ]; then | 
						|
	pkg_dietlibc_useit=1 | 
						|
else | 
						|
	x="${pkg//-/_}" ; x="${x//+/_}" | 
						|
	eval "pkg_dietlibc_useit=\$SDECFG_DIETLIBC_${x}" | 
						|
fi | 
						|
 | 
						|
[ "$pkg_dietlibc_useit" != 1 ] && pkg_dietlibc_useit=0 | 
						|
 | 
						|
[ "$pkg_dietlibc_useit" = 1 -a $pkg = gcc ] && | 
						|
	var_append extraconfopt " " "--disable-threads" | 
						|
 | 
						|
# never use dietlibc in stage 0 | 
						|
if atstage toolchain; then | 
						|
	pkg_dietlibc_useit=0 | 
						|
fi | 
						|
 | 
						|
if [ "$pkg_dietlibc_useit" = 1 ]; then | 
						|
 | 
						|
	# If we use something like 'i386-pc-linux-gnu' as architecture name, | 
						|
	# some programs start using gnu extensions. So we use ..-dietlibc | 
						|
	# instead. | 
						|
	# | 
						|
	pkg_dietlibc_orig_target="$arch_target" | 
						|
	arch_target="${arch_target/-gnu/-gnudietlibc}" | 
						|
	if atstage native; then | 
						|
		arch_build="${arch_target}" | 
						|
	fi | 
						|
 | 
						|
	if [ -d $base/build/$SDECFG_ID/TOOLCHAIN/$toolsdir/diet-bin ] ; then | 
						|
		PATH="$base/build/$SDECFG_ID/TOOLCHAIN/$toolsdir/diet-bin:$PATH" | 
						|
	fi | 
						|
 | 
						|
	if [ "$SDECFG_DIETLIBC_DYN" = "1" ] | 
						|
	then dietbin="diet-dyn" ; diet_dynamic_static="dynamic" | 
						|
	else dietbin="diet" ; diet_dynamic_static="static" ; fi | 
						|
 | 
						|
	echo_status "Preparing configuration to build this package with dietlibc ("${diet_dynamic_static}"ally)." | 
						|
 | 
						|
	if atstage native; then | 
						|
		var_remove CC_WRAPPER_INSERT " " "-pipe" ; | 
						|
		var_append CC_WRAPPER_REMOVE " " "-pipe" ; | 
						|
 | 
						|
		var_remove GCC_WRAPPER_INSERT " " "-pipe" ; | 
						|
		var_append GCC_WRAPPER_REMOVE " " "-pipe" ; | 
						|
 | 
						|
		var_remove KCC_WRAPPER_INSERT " " "-pipe" ; | 
						|
		var_append KCC_WRAPPER_REMOVE " " "-pipe" ; | 
						|
 | 
						|
	fi | 
						|
 | 
						|
	if [ "$GCC_WRAPPER_INSERT" != "${GCC_WRAPPER_INSERT/-fstack-protector}" ]; then | 
						|
		echo_warning 'Disabling GCC stack-protector for dietlibc-based package.' | 
						|
		var_remove GCC_WRAPPER_INSERT ' ' '-fstack-protector' | 
						|
	fi | 
						|
 | 
						|
	# patch has problems with Plan A patching so we switch with -x 16 to Plan B | 
						|
	if atstage rebuild; then | 
						|
		patchopt="-bfp1 -x 16 -z .orig" | 
						|
	fi | 
						|
 | 
						|
	case "$pkg" in | 
						|
		dietlibc) | 
						|
			;; | 
						|
 | 
						|
		linux*) | 
						|
			echo_status "Dietlibc not utilized for this package." | 
						|
			if atstage native && [ "$diet_dynamic_static" == "static" ]; then | 
						|
			  var_append GCC_WRAPPER_INSERT " " "-static" | 
						|
			fi | 
						|
			;; | 
						|
 | 
						|
		iptables|mmv|grsecurity) | 
						|
			echo_status "Enabling non-portable GNU features." | 
						|
			var_append CC_WRAPPER_INSERT " " "-D_GNU_SOURCE" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
 | 
						|
		coreutils|findutils|curl|procps|radiusclient-ng|libpcap|binutils|udhcp|file|libxml|lvm2|iputils|hotplug2) | 
						|
			echo_status "Enabling non-portable BSD features." | 
						|
			var_append CC_WRAPPER_INSERT " " "-D_BSD_SOURCE" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
 | 
						|
		e2fsprogs|util-linux|ash|irda-utils|ppp|dropbear|nullmailer|traceroute|libevent) | 
						|
			echo_status "Enabling non-portable GNU and BSD features." | 
						|
			var_append CC_WRAPPER_INSERT " " "-D_GNU_SOURCE -D_BSD_SOURCE" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
		nvi) | 
						|
			echo_status "Enabling non-portable GNU, BSD features and types." | 
						|
			var_append CC_WRAPPER_INSERT " " "-D_GNU_SOURCE -D_BSD_SOURCE" | 
						|
			var_append CC_WRAPPER_INSERT " " "-D__BIT_TYPES_DEFINED__" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
		iproute2) | 
						|
			echo_status "Setting __GLIBC__=3 to build the package!" | 
						|
			var_append CC_WRAPPER_INSERT " " "-D__GLIBC__=3" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
		net-tools) | 
						|
			echo_status "Enabling non-portable GNU, BSD features and a lot of other tweaks." | 
						|
			var_append CC_WRAPPER_INSERT " " "-D_GNU_SOURCE -D_BSD_SOURCE" | 
						|
			var_append CC_WRAPPER_INSERT " " "-D__GLIBC__" | 
						|
			var_append CC_WRAPPER_INSERT " " "-D_LINUX_IN6_H" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
		#squid) | 
						|
			#var_append CC_WRAPPER_INSERT " " "-DHAVE_SYS_TIME_H" | 
						|
			#set_wrapper_and_misc | 
						|
		#	;; | 
						|
		*) | 
						|
			echo_status "Using default dietlibc options!" | 
						|
			set_wrapper_and_misc | 
						|
			;; | 
						|
	esac | 
						|
 | 
						|
	case "$pkg" in | 
						|
		sed|lilo|findutils|net-tools|dropbear|udev|rng-tools|udhcp|psmisc|busybox|e2fsprogs) | 
						|
			add_lib "-lcompat" | 
						|
			;; | 
						|
		coreutils) | 
						|
			add_lib "-lcompat" | 
						|
			var_remove patchfiles " " "*acl-xattr.patch" | 
						|
			;; | 
						|
		ncurses) | 
						|
			var_append extraconfopt " " \ | 
						|
			  "--without-cxx-binding --without-cxx" | 
						|
			;; | 
						|
		util-linux) | 
						|
			add_lib "-lrpc -lcompat" | 
						|
			;; | 
						|
		dump) | 
						|
			var_append extraconfopt " " "--disable-rmt" | 
						|
			;; | 
						|
		perl) | 
						|
			add_lib "-lm -lcompat" | 
						|
			;; | 
						|
                openssl|gettext) | 
						|
                        remove_lib "-ldl" | 
						|
                        ;; | 
						|
		iptables) | 
						|
                        add_lib "-lrpc" | 
						|
                        ;; | 
						|
                grsecurity) | 
						|
			var_append makeopt " " "nopam" | 
						|
                        ;; | 
						|
		procps) | 
						|
			if [ "$diet_dynamic_static" == "static"  ]; then | 
						|
				var_append makeopt ' ' 'SHARED=0' | 
						|
				var_append makeinstopt ' ' 'SHARED=0' | 
						|
			fi | 
						|
			;; | 
						|
	esac | 
						|
 | 
						|
	var_append patchfiles " " \ | 
						|
	  `ls $base/package/base/dietlibc/patches/pkg_$pkg.patch 2>/dev/null` | 
						|
	if ! atstage toolchain && [ "$SDECFG_LIBC" = "dietlibc" ]; then | 
						|
	  var_append patchfiles " " \ | 
						|
	  `ls $base/package/base/dietlibc/patches/pkg_$pkg.chroot.patch 2>/dev/null` | 
						|
	fi | 
						|
fi
 | 
						|
 |