All of lore.kernel.org
 help / color / mirror / Atom feed
* [refpolicy] [PATCH] Add build-time distribution detection to Makefile
@ 2014-02-18 23:20 Nicolas Iooss
  2014-03-03 14:39 ` Christopher J. PeBenito
  0 siblings, 1 reply; 4+ messages in thread
From: Nicolas Iooss @ 2014-02-18 23:20 UTC (permalink / raw)
  To: refpolicy

When using the same policy on several hosts with different Linux distributions
the DISTRO variable can't be defined in the build.conf of the build directory
because this file is tracked with git.

Instead of maintaining a local patch per host to define DISTRO in build.conf
or of building using "make DISTRO=...", this commit introduces a DISTRO_DETECT
boolean in build.conf which automatically fills DISTRO with the name of the
distro of the building host.

DISTRO_DETECT definition is not copied in the installed build.conf file
(/usr/share/selinux/refpolicy/include/build.conf) because this file would have
the DISTRO variable set.
---
 Makefile                 |  6 ++++++
 build.conf               |  3 +++
 support/detect_distro.sh | 42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 51 insertions(+)
 create mode 100644 support/detect_distro.sh

diff --git a/Makefile b/Makefile
index 45bd45d..3926cd5 100644
--- a/Makefile
+++ b/Makefile
@@ -181,6 +181,12 @@ ifeq "$(TYPE)" "mcs"
 endif
 
 # enable distribution-specific policy
+ifeq "$(DISTRO_DETECT)" "y"
+	ifeq "$(DISTRO)" ""
+		DISTRO := $(shell $(SHELL) $(support)/detect_distro.sh)
+	endif
+endif
+
 ifneq ($(DISTRO),)
 	M4PARAM += -D distro_$(DISTRO)
 endif
diff --git a/build.conf b/build.conf
index 5a521c4..c00e4b0 100644
--- a/build.conf
+++ b/build.conf
@@ -29,6 +29,9 @@ NAME = refpolicy
 # Fedora users should enable redhat.
 #DISTRO = redhat
 
+# Detect distribution at build time if DISTRO is empty
+DISTRO_DETECT = y
+
 # Unknown Permissions Handling
 # The behavior for handling permissions defined in the
 # kernel but missing from the policy.  The permissions
diff --git a/support/detect_distro.sh b/support/detect_distro.sh
new file mode 100644
index 0000000..d0b4948
--- /dev/null
+++ b/support/detect_distro.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Detect which Linux distribution is running
+
+# Only Linux is supported
+[ "$(uname -s)" = "Linux" ] || exit
+
+# Use LSB release
+LSB_ID=$(lsb_release --id --short 2> /dev/null)
+if [ -n "$LSB_ID" ]
+then
+    echo "$LSB_ID" | tr '[A-Z]' '[a-z]'
+    exit
+fi
+
+# Use OS release
+if [ -r /etc/os-release ]
+then
+    OS_ID=$(sed -n 's/^ID\s*=\s*\(.*\)$/\1/p' /etc/os-release)
+    if [ -n "$OS_ID" ]
+    then
+        echo "$OS_ID"
+        exit
+    fi
+fi
+
+# Use files
+if [ -r /etc/arch-release ]
+then
+    echo "arch"
+elif [ -r /etc/debian_version ]
+then
+    echo "debian"
+elif [ -r /etc/gentoo-release ]
+then
+    echo "gentoo"
+elif [ -r /etc/redhat-release ]
+then
+    echo "redhat"
+elif [ -r /etc/SuSE-release ]
+then
+    echo "suse"
+fi
-- 
1.8.5.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-03-04 16:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-18 23:20 [refpolicy] [PATCH] Add build-time distribution detection to Makefile Nicolas Iooss
2014-03-03 14:39 ` Christopher J. PeBenito
2014-03-03 23:00   ` Nicolas Iooss
2014-03-04 16:34     ` Christopher J. PeBenito

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.