From: Petr Štetiar Date: Sat, 27 Jul 2019 22:08:36 +0000 (+0200) Subject: scons: move host build tool to a proper place X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7087efd72a8d75c859ef7e7e6f21e1013f9c92ca;p=feed%2Fpackages.git scons: move host build tool to a proper place This patch aims to move scons host build tool into packages feeds, where this tools belongs. There are currently no packages in the master tree which would need scons, yet scons is build always as part of host tools, just in order to satisfy host build dependency of few packages in the packages feeeds. Signed-off-by: Petr Štetiar --- diff --git a/devel/scons/Makefile b/devel/scons/Makefile new file mode 100644 index 0000000000..fa18487cae --- /dev/null +++ b/devel/scons/Makefile @@ -0,0 +1,56 @@ +# +# Copyright (C) 2011-2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=scons +PKG_VERSION:=3.1.1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@SF/scons \ + https://fossies.org/linux/misc/ +PKG_HASH:=4cea417fdd7499a36f407923d03b4b7000b0f9e8fd7b31b316b9ce7eba9143a5 + +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:= + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/host-build.mk + +define Package/scons + SECTION:=devel + CATEGORY:=Development + TITLE:=scons + HIDDEN:=1 +endef + +define Package/scons/description + SCons is an Open Source software construction tool—that is, a + next-generation build tool. Think of SCons as an improved, cross-platform + substitute for the classic Make utility with integrated functionality + similar to autoconf/automake and compiler caches such as ccache. In short, + SCons is an easier, more reliable and faster way to build software. +endef + +define Host/Configure +endef + +define Host/Compile +endef + +define Host/Install + ./files/pywrap.sh $(HOST_BUILD_DIR)/setup.py install --prefix=$(STAGING_DIR_HOST) + rm -f $(STAGING_DIR_HOST)/bin/scons*.py + for bin in $(STAGING_DIR_HOST)/bin/scons*; do \ + mv "$$$$bin" "$$$$bin.py"; \ + cp ./files/pywrap.sh "$$$$bin"; \ + done +endef + +$(eval $(call BuildPackage,scons)) +$(eval $(call HostBuild)) diff --git a/devel/scons/files/pywrap.sh b/devel/scons/files/pywrap.sh new file mode 100755 index 0000000000..bb990290b3 --- /dev/null +++ b/devel/scons/files/pywrap.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +case "${0##*/}" in + pywrap.sh) arg1="";; + *) arg1="$0.py" ;; +esac + +for bin in python python3; do + case "$($bin -V 2>&1)" in + "Python 3"*) exec $bin $arg1 "$@" ;; + esac +done + +echo "Unable to find a Python 3.x interpreter for executing ${arg1:+$arg1 }$* !" >&2 +exit 1 diff --git a/devel/scons/patches/001-platform_env.patch b/devel/scons/patches/001-platform_env.patch new file mode 100644 index 0000000000..2be31470c2 --- /dev/null +++ b/devel/scons/patches/001-platform_env.patch @@ -0,0 +1,11 @@ +--- a/engine/SCons/Platform/__init__.py ++++ b/engine/SCons/Platform/__init__.py +@@ -65,6 +65,8 @@ def platform_default(): + care about the machine architecture. + """ + osname = os.name ++ if 'PLATFORM' in os.environ: ++ return os.environ['PLATFORM'] + if osname == 'java': + osname = os._osType + if osname == 'posix': diff --git a/devel/scons/scons.mk b/devel/scons/scons.mk new file mode 100644 index 0000000000..2b76710542 --- /dev/null +++ b/devel/scons/scons.mk @@ -0,0 +1,23 @@ +export PLATFORM=posix + +SCONS_VARS = \ + CC="$(TARGET_CC_NOCACHE)" \ + CXX="$(TARGET_CXX_NOCACHE)" \ + CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \ + DESTDIR="$(PKG_INSTALL_DIR)" + +define Build/Configure/Default + (cd $(PKG_BUILD_DIR); \ + $(SCONS_VARS) \ + scons \ + prefix=/usr \ + $(SCONS_OPTIONS) \ + install \ + ) +endef + +define Build/Compile +endef