basebuilder_pel7ppc64bebuilder0
6 years ago
6 changed files with 782 additions and 0 deletions
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
From b8e97b8b97ba6147f663fbfdce1ddb585bd95c8e Mon Sep 17 00:00:00 2001 |
||||
From: Yalan Zhang <yalzhang@redhat.com> |
||||
Date: Wed, 29 Mar 2017 17:08:03 +0800 |
||||
Subject: [PATCH] Fix a typo in interface.rng |
||||
|
||||
There is a typo introduced by netcf-make-start-mode-blah-optional.patch, |
||||
it is described in https://bugzilla.redhat.com/show_bug.cgi?id=1436906 |
||||
Message-Id: <1490778483-13695-1-git-send-email-yalzhang@redhat.com> |
||||
|
||||
(cherry picked from commit 6836187a2ebe1382eb47d66ddf99fb664349a7b0) |
||||
--- |
||||
data/xml/interface.rng | 2 +- |
||||
1 file changed, 1 insertion(+), 1 deletion(-) |
||||
|
||||
diff --git a/data/xml/interface.rng b/data/xml/interface.rng |
||||
index 2221e0b..f3e31c6 100644 |
||||
--- a/data/xml/interface.rng |
||||
+++ b/data/xml/interface.rng |
||||
@@ -290,7 +290,7 @@ |
||||
</choice> |
||||
</attribute> |
||||
</element> |
||||
- </optional |
||||
+ </optional> |
||||
</define> |
||||
|
||||
<!-- |
||||
-- |
||||
1.8.3.1 |
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
From 513224ceee718af980b6bc01a3e5f3f0e6452307 Mon Sep 17 00:00:00 2001 |
||||
From: Laine Stump <laine@laine.org> |
||||
Date: Mon, 28 Sep 2015 17:11:11 -0400 |
||||
Subject: [PATCH 1/2] call aug_load() at most once per second |
||||
|
||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1268382 |
||||
|
||||
Previously, netcf would call aug_load() at the start of each public |
||||
API call, and rely on augeas quickly determining if the files needed |
||||
to be reread based on checking the mtime of all files. With a large |
||||
number of files (i.e. several hundred ifcfg files) just checking the |
||||
mtime of all files ends up taking quite a long time; enough to turn a |
||||
simple "virsh iface-list" of 300 bridges + 300 vlans into a 22 second |
||||
ordeal. |
||||
|
||||
With this patch applied, netcf will only call aug_load() at most once |
||||
every second, resulting in runtime for virsh iface-list going down to |
||||
< 1 second. |
||||
|
||||
The trade-off is that the results of a netcf API call could be up to 1 |
||||
second out of date (but only due to changes in the config external to |
||||
netcf). Since ifcfg files change very infrequently, this is likely |
||||
acceptable. |
||||
|
||||
(cherry picked from commit 9b5f4eb57af28a604cd7ac8b2c1be9e49f0b517d) |
||||
--- |
||||
src/dutil_linux.c | 8 +++++++- |
||||
src/dutil_linux.h | 1 + |
||||
2 files changed, 8 insertions(+), 1 deletion(-) |
||||
|
||||
diff --git a/src/dutil_linux.c b/src/dutil_linux.c |
||||
index 0850593..24f4d95 100644 |
||||
--- a/src/dutil_linux.c |
||||
+++ b/src/dutil_linux.c |
||||
@@ -32,6 +32,7 @@ |
||||
#include <unistd.h> |
||||
#include <ctype.h> |
||||
#include <errno.h> |
||||
+#include <time.h> |
||||
|
||||
#include <dirent.h> |
||||
#include <sys/wait.h> |
||||
@@ -151,6 +152,7 @@ int remove_augeas_xfm_table(struct netcf *ncf, |
||||
*/ |
||||
augeas *get_augeas(struct netcf *ncf) { |
||||
int r; |
||||
+ time_t current_time; |
||||
|
||||
if (ncf->driver->augeas == NULL) { |
||||
augeas *aug; |
||||
@@ -186,9 +188,12 @@ augeas *get_augeas(struct netcf *ncf) { |
||||
} |
||||
ncf->driver->copy_augeas_xfm = 0; |
||||
ncf->driver->load_augeas = 1; |
||||
+ ncf->driver->load_augeas_time = 0; |
||||
} |
||||
|
||||
- if (ncf->driver->load_augeas) { |
||||
+ current_time = time(NULL); |
||||
+ if (ncf->driver->load_augeas && |
||||
+ ncf->driver->load_augeas_time != current_time) { |
||||
augeas *aug = ncf->driver->augeas; |
||||
|
||||
r = aug_load(aug); |
||||
@@ -207,6 +212,7 @@ augeas *get_augeas(struct netcf *ncf) { |
||||
} |
||||
ERR_THROW(r > 0, ncf, EOTHER, "errors in loading some config files"); |
||||
ncf->driver->load_augeas = 0; |
||||
+ ncf->driver->load_augeas_time = current_time; |
||||
} |
||||
return ncf->driver->augeas; |
||||
error: |
||||
diff --git a/src/dutil_linux.h b/src/dutil_linux.h |
||||
index a06a15c..75ac631 100644 |
||||
--- a/src/dutil_linux.h |
||||
+++ b/src/dutil_linux.h |
||||
@@ -41,6 +41,7 @@ struct driver { |
||||
struct nl_sock *nl_sock; |
||||
struct nl_cache *link_cache; |
||||
struct nl_cache *addr_cache; |
||||
+ time_t load_augeas_time; |
||||
unsigned int load_augeas : 1; |
||||
unsigned int copy_augeas_xfm : 1; |
||||
unsigned int augeas_xfm_num_tables; |
||||
-- |
||||
1.8.3.1 |
@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
|
||||
From f62aa22beca8e8ce70e8fdbbe46a89ceedc8818d Mon Sep 17 00:00:00 2001 |
||||
From: Laine Stump <laine@laine.org> |
||||
Date: Mon, 27 Mar 2017 00:49:09 -0400 |
||||
Subject: [PATCH 2/2] make <start mode='blah'/> optional |
||||
|
||||
There's no reason to require it when defining an interface (the config |
||||
option it corresponds to is optional), and it isn't even output in the |
||||
status of an interface. |
||||
|
||||
Resolves: https://bugzilla.redhat.com/1436300 |
||||
|
||||
(cherry picked from commit 1b76d1d0a027f933f79cb250fc461488ab7ccfe4) |
||||
--- |
||||
data/xml/interface.rng | 24 +++++++++++++----------- |
||||
1 file changed, 13 insertions(+), 11 deletions(-) |
||||
|
||||
diff --git a/data/xml/interface.rng b/data/xml/interface.rng |
||||
index 8d70e8b..2221e0b 100644 |
||||
--- a/data/xml/interface.rng |
||||
+++ b/data/xml/interface.rng |
||||
@@ -278,17 +278,19 @@ |
||||
</define> |
||||
|
||||
<define name="startmode"> |
||||
- <element name="start"> |
||||
- <attribute name="mode"> |
||||
- <choice> |
||||
- <value>onboot</value> |
||||
- <value>none</value> |
||||
- <value>hotplug</value> |
||||
- <!-- Jim Fehlig lists the following that SuSe supports: |
||||
- manual, ifplug, nfsroot --> |
||||
- </choice> |
||||
- </attribute> |
||||
- </element> |
||||
+ <optional> |
||||
+ <element name="start"> |
||||
+ <attribute name="mode"> |
||||
+ <choice> |
||||
+ <value>onboot</value> |
||||
+ <value>none</value> |
||||
+ <value>hotplug</value> |
||||
+ <!-- Jim Fehlig lists the following that SuSe supports: |
||||
+ manual, ifplug, nfsroot --> |
||||
+ </choice> |
||||
+ </attribute> |
||||
+ </element> |
||||
+ </optional |
||||
</define> |
||||
|
||||
<!-- |
||||
-- |
||||
1.8.3.1 |
@ -0,0 +1,114 @@
@@ -0,0 +1,114 @@
|
||||
From 0be286b3062fc2ff8718cbbc914eb596506d9fac Mon Sep 17 00:00:00 2001 |
||||
From: Laine Stump <laine@laine.org> |
||||
Date: Wed, 7 Oct 2015 13:49:45 -0400 |
||||
Subject: [PATCH 2/2] optimize aug_match() query for all ifcfg files related to |
||||
an interface |
||||
|
||||
This resolves: |
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1269613 |
||||
|
||||
The original augeas search term used by netcf to find, for example, all the |
||||
ifcfg files associated with device "br1" was: |
||||
|
||||
"/files/etc/sysconfig/network-scripts/*[ " |
||||
"DEVICE = 'br1' or BRIDGE = 'br1' or MASTER = 'br1' or MASTER = " |
||||
"../*[BRIDGE = 'br1']/DEVICE ]/DEVICE" |
||||
|
||||
This is *extremely* inefficient - on a test host with 514 host |
||||
bridges, each with an attached vlan interface, a dumpxml of all |
||||
toplevel interfaces took 6m40s (*after* installing an augeas that |
||||
included augeas upstream commits a659f09a, 41e989ca, and 23d5e480 |
||||
which were all pushed after the augeas-1.4.0 release). |
||||
|
||||
In these two messages: |
||||
|
||||
https://www.redhat.com/archives/augeas-devel/2015-October/msg00003.html |
||||
https://www.redhat.com/archives/augeas-devel/2015-October/msg00004.html |
||||
|
||||
David Lutterkort suggested changing the search term to: |
||||
|
||||
"(/files/etc/sysconfig/network-scripts/*[(DEVICE|BRIDGE|MASTER) = 'br1']" |
||||
"|/files/etc/sysconfig/network-scripts/*[MASTER]" |
||||
"[MASTER = ../*[BRIDGE = 'br1']/DEVICE ])/DEVICE |
||||
|
||||
That's what this patch does. Testing shows that it is functionally |
||||
equivalent, and reduces the dumpxml time in the previously described |
||||
test from 6m40s down to 17 seconds. |
||||
|
||||
(cherry picked from commit 396e4e0698d9fb542f2eb8b32790a069e1c0df61) |
||||
--- |
||||
src/drv_redhat.c | 44 ++++++++++++++++++++++++++++++++++---------- |
||||
1 file changed, 34 insertions(+), 10 deletions(-) |
||||
|
||||
diff --git a/src/drv_redhat.c b/src/drv_redhat.c |
||||
index 4935f98..092ef5c 100644 |
||||
--- a/src/drv_redhat.c |
||||
+++ b/src/drv_redhat.c |
||||
@@ -88,6 +88,38 @@ static const struct augeas_xfm_table augeas_xfm_common = |
||||
{ .size = ARRAY_CARDINALITY(augeas_xfm_common_pv), |
||||
.pv = augeas_xfm_common_pv }; |
||||
|
||||
+/* aug_all_related_ifcfgs() - return the count of (and optionally a list |
||||
+ * of, if matches != NULL) the paths for all ifcfg files that are |
||||
+ * related to the interface "name". |
||||
+ */ |
||||
+static |
||||
+int aug_all_related_ifcfgs(struct netcf *ncf, char ***matches, const char *name) { |
||||
+ int nmatches; |
||||
+ |
||||
+ /* this includes the ifcfg files for: |
||||
+ * |
||||
+ * 1) the named interface itself (DEVICE=$name) |
||||
+ * |
||||
+ * 2) any interface naming $name as a bridge it is attached to |
||||
+ * (BRIDGE=$name) |
||||
+ * |
||||
+ * 3) any interface naming $name as the master of a bond it is |
||||
+ * enslaved to (MASTER=$name) |
||||
+ * |
||||
+ * 4) any interface with a MASTER, where the device named as |
||||
+ * MASTER contains a BRIDGE=$name *and* DEVICE=$itself (thus |
||||
+ * catching ethernet devices that are enslaved to a bond that |
||||
+ * is attached to a bridge). |
||||
+ */ |
||||
+ nmatches = aug_fmt_match(ncf, matches, |
||||
+ "(%s[(DEVICE|BRIDGE|MASTER) = '%s']" |
||||
+ "|%s[MASTER][MASTER = ../*[BRIDGE = '%s']/DEVICE " |
||||
+ "])/DEVICE", |
||||
+ ifcfg_path, name, ifcfg_path, name); |
||||
+ return nmatches; |
||||
+ |
||||
+} |
||||
+ |
||||
/* Entries in a ifcfg file that tell us that the interface |
||||
* is not a toplevel interface |
||||
*/ |
||||
@@ -108,12 +140,7 @@ static int is_slave(struct netcf *ncf, const char *intf) { |
||||
static bool has_ifcfg_file(struct netcf *ncf, const char *name) { |
||||
int nmatches; |
||||
|
||||
- nmatches = aug_fmt_match(ncf, NULL, |
||||
- "%s[ DEVICE = '%s'" |
||||
- " or BRIDGE = '%s'" |
||||
- " or MASTER = '%s'" |
||||
- " or MASTER = ../*[BRIDGE = '%s']/DEVICE ]/DEVICE", |
||||
- ifcfg_path, name, name, name, name); |
||||
+ nmatches = aug_all_related_ifcfgs(ncf, NULL, name); |
||||
return nmatches > 0; |
||||
} |
||||
|
||||
@@ -588,10 +615,7 @@ static xmlDocPtr aug_get_xml_for_nif(struct netcf_if *nif) { |
||||
int ndevs = 0, nint = 0; |
||||
|
||||
ncf = nif->ncf; |
||||
- ndevs = aug_fmt_match(ncf, &devs, |
||||
- "%s[ DEVICE = '%s' or BRIDGE = '%s' or MASTER = '%s'" |
||||
- " or MASTER = ../*[BRIDGE = '%s']/DEVICE ]/DEVICE", |
||||
- ifcfg_path, nif->name, nif->name, nif->name, nif->name); |
||||
+ ndevs = aug_all_related_ifcfgs(ncf, &devs, nif->name); |
||||
ERR_BAIL(ncf); |
||||
|
||||
nint = uniq_ifcfg_paths(ncf, ndevs, devs, &intf); |
||||
-- |
||||
1.8.3.1 |
@ -0,0 +1,106 @@
@@ -0,0 +1,106 @@
|
||||
From 1a98ab3a0d95e0e7699de547e2c327c62197db8f Mon Sep 17 00:00:00 2001 |
||||
From: Leno Hou <lenohou@gmail.com> |
||||
Date: Thu, 8 Dec 2016 21:04:15 +0800 |
||||
Subject: [PATCH 1/2] redhat: support vlan devices named as "vlan${TAG}" |
||||
|
||||
Since at least the version of initscripts that is in current |
||||
RHEL6/CentOS6 (9.03.53) initscripts supports two different naming |
||||
styles for vlan interfaces: |
||||
|
||||
$PHYSDEV.$TAG, e.g. "eth0.52" |
||||
vlan$TAG, e.g. "vlan52" |
||||
|
||||
In the former case, both the physical device and the vlan tag are |
||||
embedded in the vlan device name; in the latter case, only the vlan |
||||
tag is embedded in the name, and initscripts (or NetworkManager) looks |
||||
for the attribute PHYSDEV in the ifcfg file, and uses that as the |
||||
physical device. |
||||
|
||||
netcf was originally written back in the days of RHEL5, and interfaces |
||||
named "vlanXXX" weren't supported yet, so until now netcf has only |
||||
recognized the old "eth0.42" style. |
||||
|
||||
This patch fixes that omission - existing vlan interfaces named |
||||
"vlanXYZ" are now properly recognized, and new ones can be created. |
||||
|
||||
(NB: It is still odd that the digits at the end of the interface name |
||||
must match the vlan tag, but there's unfortunately nothing that can be |
||||
done about that, since there is no explicit variable in the ifcfg file |
||||
that can be used to set the vlan tag.) |
||||
|
||||
Resolves: https://bugzilla.redhat.com/1286890 |
||||
|
||||
(cherry picked from commit 0f6596c3e2f914fd36a771421151f409924f65e2) |
||||
|
||||
Signed-off-by: Leno Hou <lenohou@gmail.com> |
||||
--- |
||||
data/xml/redhat-get.xsl | 21 ++++++++++++++++----- |
||||
data/xml/redhat-put.xsl | 21 ++++++++++++++++----- |
||||
2 files changed, 32 insertions(+), 10 deletions(-) |
||||
|
||||
diff --git a/data/xml/redhat-get.xsl b/data/xml/redhat-get.xsl |
||||
index ec56f01..a0bf180 100644 |
||||
--- a/data/xml/redhat-get.xsl |
||||
+++ b/data/xml/redhat-get.xsl |
||||
@@ -46,11 +46,22 @@ |
||||
</xsl:template> |
||||
|
||||
<xsl:template name="vlan-interface-common"> |
||||
- <xsl:variable name="iface" select="pathcomponent:escape(concat(vlan/interface/@name, '.', vlan/@tag))"/> |
||||
- |
||||
- <xsl:attribute name="path">/files/etc/sysconfig/network-scripts/ifcfg-<xsl:value-of select="$iface"/></xsl:attribute> |
||||
- <node label="DEVICE" value="{$iface}"/> |
||||
- <node label="VLAN" value="yes"/> |
||||
+ <xsl:variable name="vlan-name" select="@name"/> |
||||
+ <xsl:choose> |
||||
+ <xsl:when test="contains($vlan-name, '.')"> |
||||
+ <xsl:variable name="iface" select="pathcomponent:escape(concat(vlan/interface/@name, '.', vlan/@tag))"/> |
||||
+ <xsl:attribute name="path">/files/etc/sysconfig/network-scripts/ifcfg-<xsl:value-of select="$iface"/></xsl:attribute> |
||||
+ <node label="DEVICE" value="{$iface}"/> |
||||
+ <node label="VLAN" value="yes"/> |
||||
+ </xsl:when> |
||||
+ <xsl:otherwise> |
||||
+ <xsl:variable name="iface" select="/interface/@name"/> |
||||
+ <xsl:attribute name="path">/files/etc/sysconfig/network-scripts/ifcfg-<xsl:value-of select="$iface"/></xsl:attribute> |
||||
+ <node label="DEVICE" value="{$iface}"/> |
||||
+ <node label="PHYSDEV" value="{vlan/interface/@name}"/> |
||||
+ <node label="VLAN" value="yes"/> |
||||
+ </xsl:otherwise> |
||||
+ </xsl:choose> |
||||
</xsl:template> |
||||
|
||||
<xsl:template name='bare-vlan-interface'> |
||||
diff --git a/data/xml/redhat-put.xsl b/data/xml/redhat-put.xsl |
||||
index ed56c66..2997621 100644 |
||||
--- a/data/xml/redhat-put.xsl |
||||
+++ b/data/xml/redhat-put.xsl |
||||
@@ -56,11 +56,22 @@ |
||||
|
||||
<xsl:template name="vlan-device"> |
||||
<xsl:variable name="name" select="node[@label = 'DEVICE']/@value"/> |
||||
- <xsl:variable name="device" select="substring-before($name, '.')"/> |
||||
- <xsl:variable name="tag" select="substring-after($name, '.')"/> |
||||
- <vlan tag="{$tag}"> |
||||
- <interface name="{$device}"/> |
||||
- </vlan> |
||||
+ <xsl:choose> |
||||
+ <xsl:when test="contains($name, '.')"> |
||||
+ <xsl:variable name="device" select="substring-before($name, '.')"/> |
||||
+ <xsl:variable name="tag" select="substring-after($name, '.')"/> |
||||
+ <vlan tag="{$tag}"> |
||||
+ <interface name="{$device}"/> |
||||
+ </vlan> |
||||
+ </xsl:when> |
||||
+ <xsl:otherwise> |
||||
+ <xsl:variable name="device" select="node[@label = 'PHYSDEV']/@value"/> |
||||
+ <xsl:variable name="tag" select="translate($name, translate($name, '0123456789', ''), '')"/> |
||||
+ <vlan tag="{$tag}"> |
||||
+ <interface name="{$device}"/> |
||||
+ </vlan> |
||||
+ </xsl:otherwise> |
||||
+ </xsl:choose> |
||||
</xsl:template> |
||||
|
||||
<!-- |
||||
-- |
||||
1.8.3.1 |
@ -0,0 +1,394 @@
@@ -0,0 +1,394 @@
|
||||
Name: netcf |
||||
Version: 0.2.8 |
||||
Release: 4%{?dist}%{?extra_release} |
||||
Summary: Cross-platform network configuration library |
||||
|
||||
Group: System Environment/Libraries |
||||
License: LGPLv2+ |
||||
URL: https://fedorahosted.org/netcf/ |
||||
Source0: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.gz |
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) |
||||
|
||||
# Patches |
||||
# One patch per line, in this format: |
||||
# Patch001: file1.patch |
||||
# Patch002: file2.patch |
||||
# ... |
||||
# |
||||
# The patches will automatically be put into the build source tree |
||||
# during the %prep stage (using git, which is now required for an rpm |
||||
# build) |
||||
# |
||||
|
||||
Patch001: netcf-call-aug_load-at-most-once-per-second.patch |
||||
Patch002: netcf-optimize-aug_match-query-for-all-ifcfg-files-related.patch |
||||
Patch003: netcf-redhat-support-vlan-devices-named-as-vlan-TAG.patch |
||||
Patch004: netcf-make-start-mode-blah-optional.patch |
||||
Patch005: netcf-Fix-a-typo-in-interface.rng.patch |
||||
|
||||
# Default to skipping autoreconf. Distros can change just this one |
||||
# line (or provide a command-line override) if they backport any |
||||
# patches that touch configure.ac or Makefile.am. |
||||
%{!?enable_autotools:%define enable_autotools 0} |
||||
|
||||
# git is used to build a source tree with patches applied (see the |
||||
# %prep section) |
||||
BuildRequires: git |
||||
|
||||
# Fedora 20 / RHEL-7 are where netcf first uses systemd. Although earlier |
||||
# Fedora has systemd, netcf still used sysvinit there. |
||||
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7 |
||||
%define with_systemd 1 |
||||
%else |
||||
%define with_systemd 0 |
||||
%endif |
||||
|
||||
%if %{with_systemd} |
||||
BuildRequires: systemd |
||||
Requires(post): systemd |
||||
Requires(preun): systemd |
||||
Requires(postun): systemd |
||||
%endif |
||||
%if 0%{?enable_autotools} |
||||
BuildRequires: autoconf |
||||
BuildRequires: automake |
||||
BuildRequires: gettext-devel |
||||
BuildRequires: libtool |
||||
BuildRequires: /usr/bin/pod2man |
||||
%endif |
||||
|
||||
BuildRequires: readline-devel augeas-devel >= 0.5.2 |
||||
BuildRequires: libxml2-devel libxslt-devel |
||||
|
||||
# force the --with-libnl1 option on F17/RHEL6 and earlier |
||||
%if (0%{?fedora} && 0%{?fedora} < 18) || (0%{?rhel} && 0%{?rhel} < 7) |
||||
%define with_libnl1 1 |
||||
%else |
||||
%define with_libnl1 0 |
||||
%endif |
||||
|
||||
# require libnl3 on F18/RHEL7 and later |
||||
%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 |
||||
BuildRequires: libnl3-devel |
||||
%else |
||||
BuildRequires: libnl-devel |
||||
%endif |
||||
|
||||
Requires: %{name}-libs = %{version}-%{release} |
||||
|
||||
Provides: bundled(gnulib) |
||||
|
||||
%description |
||||
Netcf is a library used to modify the network configuration of a |
||||
system. Network configurations are expressed in a platform-independent |
||||
XML format, which netcf translates into changes to the system's |
||||
'native' network configuration files. |
||||
|
||||
%package devel |
||||
Summary: Development files for %{name} |
||||
Group: Development/Libraries |
||||
Requires: %{name}-libs = %{version}-%{release} |
||||
Requires: pkgconfig |
||||
|
||||
%description devel |
||||
The %{name}-devel package contains libraries and header files for |
||||
developing applications that use %{name}. |
||||
|
||||
%package libs |
||||
Summary: Libraries for %{name} |
||||
Group: System Environment/Libraries |
||||
|
||||
# bridge-utils is needed because /sbin/ifup calls brctl |
||||
# if you create a bridge device |
||||
Requires: bridge-utils |
||||
|
||||
%description libs |
||||
The libraries for %{name}. |
||||
|
||||
%prep |
||||
%setup -q |
||||
|
||||
# Patches have to be stored in a temporary file because RPM has |
||||
# a limit on the length of the result of any macro expansion; |
||||
# if the string is longer, it's silently cropped |
||||
%{lua: |
||||
tmp = os.tmpname(); |
||||
f = io.open(tmp, "w+"); |
||||
count = 0; |
||||
for i, p in ipairs(patches) do |
||||
f:write(p.."\n"); |
||||
count = count + 1; |
||||
end; |
||||
f:close(); |
||||
print("PATCHCOUNT="..count.."\n") |
||||
print("PATCHLIST="..tmp.."\n") |
||||
} |
||||
|
||||
git init -q |
||||
git config user.name rpm-build |
||||
git config user.email rpm-build |
||||
git config gc.auto 0 |
||||
git add . |
||||
git commit -q -a --author 'rpm-build <rpm-build>' \ |
||||
-m '%{name}-%{version} base' |
||||
|
||||
COUNT=$(grep '\.patch$' $PATCHLIST | wc -l) |
||||
if [ $COUNT -ne $PATCHCOUNT ]; then |
||||
echo "Found $COUNT patches in $PATCHLIST, expected $PATCHCOUNT" |
||||
exit 1 |
||||
fi |
||||
if [ $COUNT -gt 0 ]; then |
||||
xargs git am <$PATCHLIST || exit 1 |
||||
fi |
||||
echo "Applied $COUNT patches" |
||||
rm -f $PATCHLIST |
||||
|
||||
|
||||
%build |
||||
%if %{with_libnl1} |
||||
%define _with_libnl1 --with-libnl1 |
||||
%endif |
||||
%if %{with_systemd} |
||||
%define sysinit --with-sysinit=systemd |
||||
%else |
||||
%define sysinit --with-sysinit=initscripts |
||||
%endif |
||||
|
||||
|
||||
%if 0%{?enable_autotools} |
||||
autoreconf -if |
||||
%endif |
||||
|
||||
%configure --disable-static \ |
||||
%{?_with_libnl1} \ |
||||
%{sysinit} |
||||
make %{?_smp_mflags} |
||||
|
||||
%install |
||||
make install DESTDIR=$RPM_BUILD_ROOT SYSTEMD_UNIT_DIR=%{_unitdir} \ |
||||
INSTALL="%{__install} -p" |
||||
find $RPM_BUILD_ROOT -name '*.la' -delete |
||||
|
||||
%preun libs |
||||
|
||||
%if %{with_systemd} |
||||
%systemd_preun netcf-transaction.service |
||||
%else |
||||
if [ $1 = 0 ]; then |
||||
/sbin/chkconfig --del netcf-transaction |
||||
fi |
||||
%endif |
||||
|
||||
%post libs |
||||
|
||||
/sbin/ldconfig |
||||
%if %{with_systemd} |
||||
%systemd_post netcf-transaction.service |
||||
/bin/systemctl --no-reload enable netcf-transaction.service >/dev/null 2>&1 || : |
||||
%else |
||||
/sbin/chkconfig --add netcf-transaction |
||||
%endif |
||||
|
||||
%postun libs |
||||
|
||||
/sbin/ldconfig |
||||
%if %{with_systemd} |
||||
%systemd_postun netcf-transaction.service |
||||
%endif |
||||
|
||||
%files |
||||
%{_bindir}/ncftool |
||||
%{_mandir}/man1/ncftool.1* |
||||
|
||||
%files libs |
||||
%{_datadir}/netcf |
||||
%{_libdir}/*.so.* |
||||
%if %{with_systemd} |
||||
%{_unitdir}/netcf-transaction.service |
||||
%else |
||||
%{_sysconfdir}/rc.d/init.d/netcf-transaction |
||||
%endif |
||||
%attr(0755, root, root) %{_libexecdir}/netcf-transaction.sh |
||||
%doc AUTHORS COPYING NEWS |
||||
|
||||
%files devel |
||||
%doc |
||||
%{_includedir}/* |
||||
%{_libdir}/*.so |
||||
%{_libdir}/pkgconfig/netcf.pc |
||||
|
||||
%changelog |
||||
* Wed Mar 29 2017 Laine Stump <laine@redhat.com> - 0.2.8-4 |
||||
- resolve rhbz#1437021 |
||||
|
||||
* Tue Mar 28 2017 Laine Stump <laine@redhat.com> - 0.2.8-3 |
||||
- resolve rhbz#1286890 |
||||
- resolve rhbz#1436300 |
||||
|
||||
* Fri Jul 01 2016 Laine Stump <laine@redhat.com> - 0.2.8-2 |
||||
- resolve rhbz#1268382 |
||||
- resolve rhbz#1269613 |
||||
|
||||
* Wed May 20 2015 Laine Stump <laine@redhat.com> - 0.2.8-1 |
||||
- Rebase to netcf-0.2.8 |
||||
- resolve rhbz#1165965 - CVE-2014-8119 |
||||
- resolve rhbz#1159000 |
||||
- support multiple IPv4 addresses in interface config (redhat driver) |
||||
- resolve rhbz#1113983 |
||||
- allow static IPv4 config simultaneous with DHCPv4 (redhat driver) |
||||
- resolve rhbz#1170941 |
||||
- remove extra quotes from IPV6ADDR_SECONDARIES (redhat+suse drivers) |
||||
- resolve rhbz#1090011 |
||||
- limit names of new interfaces to IFNAMSIZ characters |
||||
- resolve rhbz#761246 |
||||
- properly parse ifcfg files with comments past column 1 |
||||
|
||||
* Tue Jan 27 2015 - Laine Stump <laine@redhat.com> 0.2.6-3 |
||||
- resolves rhbz#1185850 |
||||
- don't treat failure to read /sys/class/net/$def/operstate as an error |
||||
|
||||
* Thu Nov 13 2014 - Laine Stump <laine@redhat.com> 0.2.6-2 |
||||
- resolves rhbz#1138196 |
||||
- report file path and reason when aug_save fails |
||||
- resolves rhbz#1147650 |
||||
- recognize IPADDR0/PREFIX0/NETMASK0/GATEWAY0 |
||||
- use git to apply patches to source tree |
||||
|
||||
* Fri Aug 22 2014 Laine Stump <laine@redhat.com> - 0.2.6-1 |
||||
- resolves rhbz#1115176 |
||||
- rebase to upstream 0.2.6 |
||||
- allow interleaved elements in interface XML schema |
||||
- allow <link> element in vlan and bond interfaces |
||||
- report link state/speed in interface status |
||||
- change DHCPv6 to DHCPV6C in ifcfg files |
||||
- max vlan id is 4095, not 4096 |
||||
|
||||
* Tue Feb 11 2014 Laine Stump <laine@redhat.com> - 0.2.3-8 |
||||
- resolves rhbz 1060076 |
||||
- Transform STP value from yes/no to on/off |
||||
- resolves rhbz 1060317 |
||||
- Require bridge-utils for netcf-libs in the specfile |
||||
|
||||
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 0.2.3-7 |
||||
- Mass rebuild 2014-01-24 |
||||
|
||||
* Wed Jan 22 2014 Laine Stump <laine@redhat.com> - 0.2.3-6 |
||||
- resolves rhbz#961184 |
||||
- wait for IFF_UP and IFF_RUNNING after calling ifup |
||||
- resolves rhbz#1020204 |
||||
- remove extraneous quotes from BONDING_OPTS |
||||
- resolves rhbz#1044681 |
||||
- eliminate use of uninitialized data when getting mac |
||||
- resolves rhbz#1046594 |
||||
- support systemd based netcf transaction |
||||
|
||||
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 0.2.3-5 |
||||
- Mass rebuild 2013-12-27 |
||||
|
||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.2.3-4 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild |
||||
|
||||
* Sun Jan 20 2013 Richard W.M. Jones <rjones@redhat.com> - 0.2.3-3 |
||||
- Rebuild for libnl soname breakage (RHBZ#901569). |
||||
|
||||
* Fri Jan 18 2013 Daniel P. Berrange <berrange@redhat.com> - 0.2.3-2 |
||||
- Rebuild for libnl3 soname change |
||||
|
||||
* Fri Dec 21 2012 Laine Stump <laine@redhat.com> - 0.2.3-1 |
||||
- Rebase to netcf-0.2.3 |
||||
- eliminate calls to nl_cache_mngt_provide(), to avoid |
||||
non-threadsafe code in libnl (and because it isn't needed |
||||
anyway) (This non-threadsafe code could lead to a segfault) |
||||
- portability fixes for FreeBSD |
||||
- fix bug when a config file has two config parameters with |
||||
identical names |
||||
- add HACKING document |
||||
- always bail immediately if get_augeas fails (doing otherwise |
||||
could lead to a segfault) |
||||
|
||||
* Sat Aug 25 2012 Laine Stump <laine@redhat.com> - 0.2.2-1 |
||||
- Rebase to netcf-0.2.2 |
||||
- specfile: require libnl3-devel for rpm builds on Fedora 18+ and |
||||
RHEL7+. Likewise, force libnl1 for F17- and RHEL6.x-, even if |
||||
libnl3-devel is installed. |
||||
|
||||
* Fri Aug 10 2012 Laine Stump <laine@redhat.com> - 0.2.1-1 |
||||
- Rebase to netcf-0.2.1 |
||||
- update gnulib to fix broken build on systems with nwer glibc (which no |
||||
longer provides gets()). |
||||
- add ncftool manpage |
||||
- interfaces are only "active" if both UP and RUNNING. |
||||
- add "bundled(gnulib)" to specfile to indicate that we use a local |
||||
copy of gnulib sources (used by Fedora/RHEL when determining the scope |
||||
of security bugs). |
||||
- Fix ipcalc_netmask, which was trimming off the last digit in |
||||
character representations of full-length netmasks (all 4 octets |
||||
having 3 chars each) |
||||
- other minor bugfixes |
||||
|
||||
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.9-3 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||
|
||||
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.9-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild |
||||
|
||||
* Tue Jul 26 2011 Laine Stump <laine@redhat.com> - 0.1.9-1 |
||||
- Rebase to netcf-0.1.9 |
||||
- always add <bridge> element to bridge, even if there is no physdev present |
||||
- don't log error if interface isn't found in kernel during status report |
||||
- allow building with C++ |
||||
- update gnulib |
||||
|
||||
* Tue Jun 21 2011 Laine Stump <laine@redhat.com> - 0.1.8-1 |
||||
- Rebase to netcf-0.1.8 |
||||
- new transactional change APIs: ncf_change_(begin|commit|rollback) |
||||
- add stdout/stderr to error text when an external program fails |
||||
- make error reporting of failed execs more exact/correct |
||||
- Remove unnecessary "Requires" of libxml2 and augeas from pkgconfig file |
||||
to pulling in extra packages when building an application that uses netcf. |
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.7-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||
|
||||
* Mon Sep 27 2010 Laine Stump <laine@redhat.com> - 0.1.7-1 |
||||
- New version |
||||
|
||||
* Tue Apr 20 2010 Laine Stump <laine@redhat.com> - 0.1.6-1 |
||||
- New version |
||||
- Remove patch n0001-src-dutil.c-add-missing-includes-for-stat.patch, |
||||
included upstream |
||||
|
||||
* Mon Feb 15 2010 David Lutterkort <lutter@redhat.com> - 0.1.5-2 |
||||
- patch1: add missing includes for stat in dutil.c |
||||
|
||||
* Mon Nov 30 2009 David Lutterkort <lutter@redhat.com> - 0.1.5-1 |
||||
- New version |
||||
|
||||
* Thu Nov 5 2009 David Lutterkort <lutter@redhat.com> - 0.1.4-1 |
||||
- New version |
||||
|
||||
* Tue Oct 27 2009 David Lutterkort <lutter@redhat.com> - 0.1.3-1 |
||||
- New version |
||||
|
||||
* Fri Sep 25 2009 David Lutterkort <lutter@redhat.com> - 0.1.2-1 |
||||
- New Version |
||||
|
||||
* Wed Sep 16 2009 David Lutterkort <lutter@redhat.com> - 0.1.1-1 |
||||
- Remove patch netcf-0.1.0-fix-initialization-of-libxslt.patch, |
||||
included upstream |
||||
|
||||
* Tue Sep 15 2009 Mark McLoughlin <markmc@redhat.com> - 0.1.0-3 |
||||
- Fix libvirtd segfault caused by libxslt init issue (#523382) |
||||
|
||||
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.0-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||
|
||||
* Mon Jul 13 2009 David Lutterkort <lutter@redhat.com> - 0.1.0-1 |
||||
- BR on augeas-0.5.2 |
||||
- Drop explicit requires for augeas-libs |
||||
|
||||
* Wed Apr 15 2009 David Lutterkort <lutter@redhat.com> - 0.0.2-1 |
||||
- Updates acording to Fedora review |
||||
|
||||
* Fri Feb 27 2009 David Lutterkort <lutter@redhat.com> - 0.0.1-1 |
||||
- Initial specfile |
Loading…
Reference in new issue