scons: move host build tool to a proper place
authorPetr Štetiar <ynezz@true.cz>
Sat, 27 Jul 2019 22:08:36 +0000 (00:08 +0200)
committerPetr Štetiar <ynezz@true.cz>
Fri, 13 Sep 2019 05:09:28 +0000 (07:09 +0200)
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 <ynezz@true.cz>
devel/scons/Makefile [new file with mode: 0644]
devel/scons/files/pywrap.sh [new file with mode: 0755]
devel/scons/patches/001-platform_env.patch [new file with mode: 0644]
devel/scons/scons.mk [new file with mode: 0644]

diff --git a/devel/scons/Makefile b/devel/scons/Makefile
new file mode 100644 (file)
index 0000000..fa18487
--- /dev/null
@@ -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 (executable)
index 0000000..bb99029
--- /dev/null
@@ -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 (file)
index 0000000..2be3147
--- /dev/null
@@ -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 (file)
index 0000000..2b76710
--- /dev/null
@@ -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