Browse Source

add a packaging method that installs files into a subdirectory of bin/ instead of an ipkg

SVN-Revision: 9060
Felix Fietkau 18 years ago
parent
commit
97b6135462
5 changed files with 42 additions and 1 deletions
  1. 31 0
      include/package-bin.mk
  2. 1 0
      include/package-dumpinfo.mk
  3. 1 0
      include/package.mk
  4. 1 1
      scripts/metadata.pl
  5. 8 0
      scripts/metadata.pm

+ 31 - 0
include/package-bin.mk

@@ -0,0 +1,31 @@
+# 
+# Copyright (C) 2007 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ifeq ($(DUMP),)
+  define BuildTarget/bin
+    ifdef Package/$(1)/install
+      ifneq ($(CONFIG_PACKAGE_$(1))$(SDK)$(DEVELOPER),)
+        compile: install-bin-$(1)
+      else
+        compile: $(1)-disabled
+        $(1)-disabled:
+		@echo "WARNING: skipping $(1) -- package not selected"
+      endif
+    endif
+
+    install-bin-$(1): $(STAMP_BUILT)
+	  rm -rf $(BIN_DIR)/$(1)
+	  $(INSTALL_DIR) $(BIN_DIR)/$(1)
+	  $(call Package/$(1)/install,$(BIN_DIR)/$(1))
+
+    clean-$(1):
+	  rm -rf $(BIN_DIR)/$(1)
+
+    clean: clean-$(1)
+    .PHONY: install-bin-$(1)
+  endef
+endif

+ 1 - 0
include/package-dumpinfo.mk

@@ -28,6 +28,7 @@ ifneq ($(DUMP),)
 		echo "Category: $(CATEGORY)"; \
 		echo "Title: $(TITLE)"; \
 		echo "Maintainer: $(MAINTAINER)"; \
+		echo "Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))"; \
 		$(if $(KCONFIG),echo "Kernel-Config: $(KCONFIG)";) \
 		echo -n "Description: "; \
 		getvar $(call shvar,Package/$(1)/description); \

+ 1 - 0
include/package.mk

@@ -25,6 +25,7 @@ include $(INCLUDE_DIR)/quilt.mk
 include $(INCLUDE_DIR)/package-defaults.mk
 include $(INCLUDE_DIR)/package-dumpinfo.mk
 include $(INCLUDE_DIR)/package-ipkg.mk
+include $(INCLUDE_DIR)/package-bin.mk
 
 override MAKEFLAGS=
 export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)

+ 1 - 1
scripts/metadata.pl

@@ -361,7 +361,7 @@ sub print_package_config_category($) {
 			print "\t";
 			$pkg->{menu} and print "menu";
 			print "config PACKAGE_".$pkg->{name}."\n";
-			print "\t\ttristate \"$title\"\n";
+			print "\t\t".($pkg->{tristate} ? 'tristate' : 'bool')." \"$title\"\n";
 			print "\t\tdefault y if DEFAULT_".$pkg->{name}."\n";
 			foreach my $default (split /\s*,\s*/, $pkg->{default}) {
 				print "\t\tdefault $default\n";

+ 8 - 0
scripts/metadata.pm

@@ -63,6 +63,7 @@ sub parse_package_metadata($) {
 			$pkg->{depends} = [];
 			$pkg->{builddepends} = [];
 			$pkg->{subdir} = $subdir;
+			$pkg->{tristate} = 1;
 			$package{$1} = $pkg;
 			push @{$srcpackage{$src}}, $pkg;
 		};
@@ -88,6 +89,13 @@ sub parse_package_metadata($) {
 			push @{$category{$1}->{$src}}, $pkg;
 		};
 		/^Description: \s*(.*)\s*$/ and $pkg->{description} = "\t\t $1\n". get_multiline(*FILE, "\t\t ");
+		/^Type: \s*(.+)\s*$/ and do {
+			$pkg->{type} = [ split /\s+/, $1 ];
+			undef $pkg->{tristate};
+			foreach my $type (@{$pkg->{type}}) {
+				$type =~ /ipkg/ and $pkg->{tristate} = 1;
+			}
+		};
 		/^Config: \s*(.*)\s*$/ and $pkg->{config} = "$1\n".get_multiline(*FILE);
 		/^Prereq-Check:/ and $pkg->{prereq} = 1;
 		/^Preconfig:\s*(.+)\s*$/ and do {