simp-rake-helpers 5.6.0 → 5.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70abf847eafa19896399cd59bd3ddbc44d402162386e0f478a8fd63fa82af301
4
- data.tar.gz: fb120559d123dc6837d41e54aba7d42d3bbcb8cf4a17045434979a7aee147821
3
+ metadata.gz: 6599aea873a06ae3cfaf152334a7effee7fed04f32fa5161b424475a2e350de8
4
+ data.tar.gz: 7034e551215bf0636963264f2c483179368d3ca653498929b0e1b563253d6324
5
5
  SHA512:
6
- metadata.gz: c69e50b92d1ccedaec0cff1b68dc08626897c4855874afae9363804afad5360e19fedafe9406d8fa251dbe0b973292cfb8fe2c8d2830b32437f05209fb8e02db
7
- data.tar.gz: 016616668c198543c780383df7bf23c3edca2ce3cbba6d99266b150e759c35e60039d82741742b6fd7ddcb3cd1992ca1f97028b612948f9ad34f94455ce21e12
6
+ metadata.gz: f336088887b860878ced18d3391cf7b682cf0cdf460827bfb3525330fc41437a76dae20ed73e1a89875b8a63cc354288746e96cffff83be400d015e898d0972b
7
+ data.tar.gz: 709eb08291c9944c3d3929f872bff72dc36fff4603503945e0d33f2ba06ad4569e65ac933e4d7a1e4691a671372e660f84b26222f4ce049613b7c1ca561454a6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ### 5.6.1 / 2018-10-01
2
+ * Ensure that modules do not contain symlinks per the standard Puppet guidance.
3
+ * Do not try to only use the system cache for yum operations since this
4
+ silently causes all EL6 builds to be rebuilt and can't really work anyway
5
+ since there isn't a local cache unitl after yum runs. After yum runs, the
6
+ local cache will be preferred unless it has expired anyway.
7
+
1
8
  ### 5.6.0 / 2018-09-09
2
9
  * Add support for Beaker 4
3
10
 
@@ -18,6 +18,7 @@ module Simp::Rake::Build
18
18
 
19
19
  @verbose = ENV.fetch('SIMP_PKG_verbose','no') == 'yes'
20
20
  @rpm_build_metadata = 'last_rpm_build_metadata.yaml'
21
+ @rpm_dependency_file = File.join(@base_dir, 'build', 'rpm', 'dependencies.yaml')
21
22
 
22
23
  define_tasks
23
24
  end
@@ -748,11 +749,7 @@ protect=1
748
749
  result = false
749
750
 
750
751
 
751
- rpm_dependency_file = File.join(@base_dir, 'build', 'rpm', 'dependencies.yaml')
752
-
753
- if File.exist?(rpm_dependency_file)
754
- rpm_metadata = YAML.load(File.read(rpm_dependency_file))
755
- end
752
+ rpm_metadata = File.exist?(@rpm_dependency_file) ? YAML.load(File.read(@rpm_dependency_file)) : {}
756
753
 
757
754
  Dir.chdir(dir) do
758
755
  if File.exist?('metadata.json')
@@ -765,7 +762,7 @@ protect=1
765
762
  # release qualifier from the 'dependencies.yaml';
766
763
  # only created if release qualifier if specified in
767
764
  # the 'dependencies.yaml'
768
- Simp::Rake::Build::RpmDeps::generate_rpm_meta_files(dir, rpm_metadata) if rpm_metadata
765
+ Simp::Rake::Build::RpmDeps::generate_rpm_meta_files(dir, rpm_metadata)
769
766
 
770
767
  new_rpm = Simp::Rake::Pkg.new(Dir.pwd, opts[:unique_namespace], @simp_version)
771
768
  new_rpm_info = Simp::RPM.new(new_rpm.spec_file)
@@ -892,6 +889,8 @@ protect=1
892
889
  _verbose = ENV.fetch('SIMP_PKG_verbose','no') == 'yes'
893
890
  dbg_prefix = ' ' # prefix for debug messages
894
891
 
892
+ fail("Could not find RPM dependency file '#{@rpm_dependency_file}'") unless File.exist?(@rpm_dependency_file)
893
+
895
894
  begin
896
895
  yum_helper = Simp::YUM.new(
897
896
  Simp::YUM.generate_yum_conf(File.join(@distro_build_dir, 'yum_data'))
@@ -1,70 +1,160 @@
1
1
  %{lua:
2
2
 
3
+ -- This RPM spec file can build
3
4
  --
4
- -- When you build you must to pass this along so that we know how
5
- -- to get the preliminary information.
6
- -- This directory should hold the following items:
7
- -- * 'build/rpm_metadata/requires' <- optional list of 'Requires', 'Provides',
8
- -- and 'Obsoletes' to supplement those auto-generated in this spec file
9
- -- * 'build/rpm_metadata/release' <- optional RPM release number to use in
10
- -- lieu of number hard-coded in this spec file
11
- -- * 'CHANGELOG' <- optional RPM formatted Changelog to use in lieu of minimal,
12
- -- changelog entry auto-generated in this spec file
13
- -- * 'metadata.json' <- required file that must contain the following metadata:
14
- -- - 'name' - package name
15
- -- - 'version' - package version
16
- -- - 'license' - package license
17
- -- - 'summary' - package summary
18
- -- - 'source' - package source
5
+ -- ## Usage
6
+ --
7
+ -- ### pup_module_info_dir
8
+ --
9
+ -- When you build, you must define the macro 'pup_module_info_dir' so that rpm
10
+ -- knows where to find preliminary information.
11
+ --
12
+ -- If 'pup_module_info_dir' isn't defined or available, rpm will look in
13
+ -- '_sourcedir' for the files, falling back to the current directory as a last
14
+ -- resort.
19
15
  --
20
16
  -- Example:
21
- -- rpmbuild -D 'pup_module_info_dir /home/user/project/puppet_module' -ba SPECS/specfile.spec
22
17
  --
23
- -- If this is not found, we will look in %{_sourcedir} for the files and fall
24
- -- back to the current directory
18
+ -- rpmbuild -D 'pup_module_info_dir /home/user/project/puppet_module' -ba SPECS/specfile.spec
19
+ --
20
+ -- ### relevant files
21
+ --
22
+ -- 'pup_module_info_dir' should be a directory that contains the following items:
25
23
  --
24
+ -- * 'metadata.json' <- REQUIRED file that must contain the
25
+ -- following metadata:
26
+ -- - 'name' - package name
27
+ -- - 'version' - package version
28
+ -- - 'license' - package license
29
+ -- - 'summary' - package summary
30
+ -- - 'source' - package source
31
+ -- * 'build/rpm_metadata/requires' <- optional list of 'Requires',
32
+ -- 'Provides', and 'Obsoletes' to
33
+ -- supplement those auto-generated in
34
+ -- this spec file.
35
+ -- * 'build/rpm_metadata/release' <- optional RPM release number to use in
36
+ -- lieu of the number '0' hard-coded in
37
+ -- this spec file.
38
+ -- * 'CHANGELOG' <- optional RPM-formatted CHANGELOG to
39
+ -- use in lieu of the minimal changelog
40
+ -- entry auto-generated in this file.
41
+ -- * 'build/rpm_metadata/custom/' <- optional directory to place files to
42
+ -- add custom scriptlets and triggers.
43
+ --
44
+ --
45
+
46
+ local LUA_DEBUG = ((rpm.expand('%{lua_debug}') or '0') == '1')
47
+
48
+ -- Print debugging info to STDERR (if LUA_DEBUG is true)
49
+ function lua_stderr( msg )
50
+ if LUA_DEBUG then
51
+ -- io.stderr:write(tostring(msg):gsub("%f[^%z\n]","LUA #stderr#: "))
52
+ -- io.stderr:write(tostring(msg))
53
+ io.stderr:write(msg)
54
+ end
55
+ end
56
+
26
57
 
27
- src_dir = rpm.expand('%{pup_module_info_dir}')
58
+ local function get_src_dir()
59
+ local src_dir = rpm.expand('%{pup_module_info_dir}')
60
+ if src_dir:match('^%%') or (posix.stat(src_dir, 'type') ~= 'directory') then
61
+ lua_stderr("WARNING: -D pup_module_info_dir ("..tostring(src_dir)..") could not be used!\n")
62
+ lua_stderr(" falling back to src_dir = _sourcedir\n")
28
63
 
29
- if string.match(src_dir, '^%%') or (posix.stat(src_dir, 'type') ~= 'directory') then
30
- src_dir = rpm.expand('%{_sourcedir}')
64
+ -- FIXME?: rpmlint considers the use of _sourcedir to be an Error:
65
+ -- (see: https://fedoraproject.org/wiki/Packaging:RPM_Source_Dir)
66
+ src_dir = rpm.expand('%{_sourcedir}')
31
67
 
32
- if (posix.stat((src_dir .. "/metadata.json"), 'type') ~= 'regular') then
33
- src_dir = './'
68
+ if (posix.stat((src_dir .. "/metadata.json"), 'type') ~= 'regular') then
69
+ lua_stderr("WARNING: couldn't find metadata.json in '"..tostring(src_dir).."'!\n")
70
+ lua_stderr(" falling back to src_dir = posix.getcwd() ("..posix.getcwd()..")\n")
71
+
72
+ src_dir = posix.getcwd()
73
+ end
34
74
  end
75
+ return src_dir
35
76
  end
36
77
 
78
+ -- path to project directory / source files
79
+ src_dir = get_src_dir()
80
+
81
+ -- directory to look for customizations (e.g., scriptlets, triggers)
82
+ custom_content_dir = src_dir .. "/build/rpm_metadata/custom/"
83
+
84
+ -- list of custom content to inject into the spec file
85
+ custom_content_table = {}
86
+
87
+ -- list of scriptlets/triggers that have been declared (to avoid duplicates)
88
+ declared_scriptlets_table = {}
89
+
90
+ -- patterns to recognize scriptlet and trigger declarations
91
+ --
92
+ -- NOTE: Lua patterns are not regexes , and do not support alternation.
93
+ -- So, we try to stay efficient by iterating through as few patterns as
94
+ -- possible by short-ciruiting several matches.
95
+ -- (e.g. '^%%pre' matches both '%pre' and '%pretrans')
96
+ --
97
+ SCRIPTLET_PATTERNS = {
98
+ '^%%pre',
99
+ '^%%post',
100
+ '^%%trigger'
101
+ }
102
+
37
103
  -- These UNKNOWN entries should break the build if something bad happens
38
104
 
39
105
  package_name = "UNKNOWN"
40
106
  package_version = "UNKNOWN"
41
107
  module_license = "UNKNOWN"
42
108
 
43
- --
44
109
  -- Default to 0
45
- --
46
-
47
110
  package_release = 0
48
- }
49
111
 
50
- %{lua:
51
- -- Pull the Relevant Metadata out of the Puppet module metadata.json.
52
-
53
- metadata = ''
54
- metadata_file = io.open(src_dir .. "/metadata.json","r")
55
- if metadata_file then
56
- metadata = metadata_file:read("*all")
112
+ lua_stderr("\n")
113
+ lua_stderr("--------------------------------------------------------------------------------\n")
114
+ lua_stderr("RPM/LUA build environment:\n")
115
+ lua_stderr("------:\n")
116
+ lua_stderr("LUA _VERSION = '".._VERSION.."'\n")
117
+ lua_stderr("posix.getcwd() = '"..posix.getcwd().."'\n")
118
+ lua_stderr("\n")
119
+ lua_stderr("macros:\n")
120
+ lua_stderr("------:\n")
121
+ lua_stderr("'%{pup_module_info_dir}' = '"..rpm.expand('%{pup_module_info_dir}').."'\n")
122
+ lua_stderr("_specdir = '"..rpm.expand('%{_specdir}').."'\n")
123
+ lua_stderr("_buildrootdir = '"..rpm.expand('%{_buildrootdir}').."'\n")
124
+ lua_stderr("buildroot = '"..rpm.expand('%{buildroot}').."'\n")
125
+ lua_stderr("RPM_BUILD_ROOT = '"..rpm.expand('%{RPM_BUILD_ROOT}').."'\n")
126
+ lua_stderr("\n")
127
+ lua_stderr("local variables:\n")
128
+ lua_stderr("------:\n")
129
+ lua_stderr("src_dir = '".. src_dir .."'\n")
130
+ lua_stderr("custom_content_dir = '"..custom_content_dir.."'\n# ---\n")
131
+ lua_stderr("--------------------------------------------------------------------------------\n")
132
+ lua_stderr("\n")
57
133
 
58
- -- Ignore the first curly brace
59
- metadata = metadata:gsub("{}?", '|', 1)
60
134
 
61
- -- Ignore all keys that are below the first level
62
- metadata = metadata:gsub("{.-}", '')
63
- metadata = metadata:gsub("%[.-%]", '')
64
- else
65
- error("Could not open 'metadata.json'", 0)
135
+ -- Pull the Relevant Metadata out of the Puppet module metadata.json.
136
+ function read_metadata(src_dir)
137
+ local metadata = ''
138
+ local metadata_file = src_dir .. "/metadata.json"
139
+ local metadata_fh = io.open(metadata_file,'r')
140
+ if metadata_fh then
141
+ metadata = metadata_fh:read("*all")
142
+
143
+ -- Ignore the first curly brace
144
+ metadata = metadata:gsub("{}?", '|', 1)
145
+
146
+ -- Ignore all keys that are below the first level
147
+ metadata = metadata:gsub("{.-}", '')
148
+ metadata = metadata:gsub("%[.-%]", '')
149
+ else
150
+ error("Could not open 'metadata.json': ".. metadata_file, 0)
151
+ end
152
+ return metadata
66
153
  end
67
154
 
155
+
156
+ metadata = read_metadata(src_dir)
157
+
68
158
  -- This starts as an empty string so that we can build it later
69
159
  module_requires = ''
70
160
 
@@ -74,7 +164,7 @@ module_requires = ''
74
164
 
75
165
  -- Get the Module Name and put it in the correct format
76
166
 
77
- local name_match = string.match(metadata, '"name":%s+"(.-)"%s*,')
167
+ local name_match = metadata:match('"name":%s+"(.-)"%s*,')
78
168
 
79
169
  module_author = ''
80
170
  module_name = ''
@@ -83,7 +173,7 @@ if name_match then
83
173
  package_name = ('pupmod-' .. name_match)
84
174
 
85
175
  local i = 0
86
- for str in string.gmatch(name_match,'[^-]+') do
176
+ for str in name_match:gmatch('[^-]+') do
87
177
  if i == 0 then
88
178
  module_author = str
89
179
  else
@@ -106,7 +196,7 @@ end
106
196
 
107
197
  -- Get the Module Version
108
198
 
109
- local version_match = string.match(metadata, '"version":%s+"(.-)"%s*,')
199
+ local version_match = metadata:match('"version":%s+"(.-)"%s*,')
110
200
 
111
201
  if version_match then
112
202
  package_version = version_match
@@ -120,7 +210,7 @@ end
120
210
 
121
211
  -- Get the Module License
122
212
 
123
- local license_match = string.match(metadata, '"license":%s+"(.-)"%s*,')
213
+ local license_match = metadata:match('"license":%s+"(.-)"%s*,')
124
214
 
125
215
  if license_match then
126
216
  module_license = license_match
@@ -134,7 +224,7 @@ end
134
224
 
135
225
  -- Get the Module Summary
136
226
 
137
- local summary_match = string.match(metadata, '"summary":%s+"(.-)"%s*,')
227
+ local summary_match = metadata:match('"summary":%s+"(.-)"%s*,')
138
228
 
139
229
  if summary_match then
140
230
  module_summary = summary_match
@@ -148,7 +238,7 @@ end
148
238
 
149
239
  -- Get the Module Source line for the URL string
150
240
 
151
- local source_match = string.match(metadata, '"source":%s+"(.-)"%s*,')
241
+ local source_match = metadata:match('"source":%s+"(.-)"%s*,')
152
242
 
153
243
  if source_match then
154
244
  module_source = source_match
@@ -173,8 +263,8 @@ end
173
263
 
174
264
  if rel_file then
175
265
  for line in rel_file:lines() do
176
- is_comment = string.match(line, "^%s*#")
177
- is_blank = string.match(line, "^%s*$")
266
+ is_comment = line:match("^%s*#")
267
+ is_blank = line:match("^%s*$")
178
268
 
179
269
  if not (is_comment or is_blank) then
180
270
  package_release = line
@@ -197,7 +287,7 @@ end
197
287
 
198
288
  if req_file then
199
289
  for line in req_file:lines() do
200
- valid_line = (string.match(line, "^Requires: ") or string.match(line, "^Obsoletes: ") or string.match(line, "^Provides: "))
290
+ valid_line = (line:match("^Requires: ") or line:match("^Obsoletes: ") or line:match("^Provides: "))
201
291
 
202
292
  if valid_line then
203
293
  module_requires = (module_requires .. "\n" .. line)
@@ -238,16 +328,10 @@ URL: %{lua: print(module_source)}
238
328
  BuildRoot: %{_tmppath}/%{package_name}-%{version}-%{release}-buildroot
239
329
  BuildArch: noarch
240
330
 
241
- Requires(pre,preun,post,postun): simp-adapter >= 0.0.1
242
-
243
- %if ("%{package_name}" != "pupmod-simp-simplib") && ("%{package_name}" != "pupmod-puppetlabs-stdlib")
244
- Requires: pupmod-simp-simplib >= 1.2.6
245
- %endif
246
-
247
- %if "%{package_name}" != "pupmod-puppetlabs-stdlib"
248
- Requires: pupmod-puppetlabs-stdlib >= 4.9.0
249
- Requires: pupmod-puppetlabs-stdlib < 6.0.0
250
- %endif
331
+ Requires(pre): simp-adapter >= 0.0.1
332
+ Requires(preun): simp-adapter >= 0.0.1
333
+ Requires(preun): simp-adapter >= 0.0.1
334
+ Requires(postun): simp-adapter >= 0.0.1
251
335
 
252
336
  %{lua: print(module_requires)}
253
337
 
@@ -287,6 +371,9 @@ curdir=`pwd`
287
371
  dirname=`basename $curdir`
288
372
  cp -r ../$dirname %{buildroot}/%{prefix}/%{module_name}
289
373
 
374
+ # Modules should *never* contain symlinks
375
+ find %{buildroot} -type l -delete
376
+
290
377
  # Remove unnecessary assets
291
378
  rm -rf %{buildroot}/%{prefix}/%{module_name}/.git
292
379
  rm -f %{buildroot}/%{prefix}/%{module_name}/*.lock
@@ -300,29 +387,151 @@ rm -rf %{buildroot}/%{prefix}/%{module_name}/log
300
387
 
301
388
  mkdir -p %{buildroot}/%{prefix}
302
389
 
303
- %files
304
- %defattr(0640,root,root,0750)
305
- %{prefix}/%{module_name}
390
+ %{lua:
391
+
392
+ -- returns true if 'scriptlet_name' has already been declared
393
+ function is_scriplet_declared(scriptlet_name, declared_scriptlets_table)
394
+ for _,name in ipairs(declared_scriptlets_table) do
395
+ if (name == scriptlet_name) then
396
+ return true
397
+ end
398
+ end
399
+ return false
400
+ end
306
401
 
307
- # when $1 = 1, this is an install
308
- # when $1 = 2, this is an upgrade
309
- %pre
310
- /usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='pre' --rpm_status=$1
402
+ -- returns true if 'line' is a scriptlet or trigger header
403
+ function is_valid_scriptlet_header(line)
404
+ local match = false
405
+ for _, patt in ipairs(SCRIPTLET_PATTERNS) do
406
+ if line:match(patt) then
407
+ match = true
408
+ break
409
+ end
410
+ end
411
+ return match
412
+ end
311
413
 
312
- # when $1 = 1, this is an install
313
- # when $1 = 2, this is an upgrade
314
- %post
315
- /usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='post' --rpm_status=$1
414
+ --
415
+ -- adds content to the custom_content_table
416
+ --
417
+ function define_custom_content(
418
+ content,
419
+ custom_content_table,
420
+ declared_scriptlets_table
421
+ )
422
+ lua_stderr("# evaluating extra content: \n".. (content:gsub("%f[^%z\n]"," | ")) .."\n")
423
+
424
+ if content then
425
+ local _content = ''
426
+ local recording = true
427
+
428
+ for line in content:gmatch("([^\n]*)\n?") do
429
+
430
+ -- skip duplicate scriptlets
431
+ if is_valid_scriptlet_header(line) then
432
+ local _line = line:gsub("^%s+",""):gsub("%s+$","")
433
+ if is_scriplet_declared(_line, declared_scriptlets_table) then
434
+ lua_stderr("WARNING: scriptlet '".._line..
435
+ "' has already been declared (skipping scriptlet).\n")
436
+ recording = false
437
+ else
438
+ lua_stderr('+ "'.._line..'" is recognized as a scriptlet/trigger.\n')
439
+ recording = true
440
+ table.insert(declared_scriptlets_table, _line)
441
+ end
442
+ end
443
+
444
+ if recording then
445
+ _content = _content .. line .. "\n"
446
+ else
447
+ lua_stderr(" skipping line '"..line.."'\n")
448
+ end
449
+ end
450
+ table.insert(custom_content_table, _content )
451
+ end
452
+ end
316
453
 
317
- # when $1 = 1, this is the uninstall of the previous version during an upgrade
318
- # when $1 = 0, this is the uninstall of the only version during an erase
319
- %preun
320
- /usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='preun' --rpm_status=$1
321
454
 
322
- # when $1 = 1, this is the uninstall of the previous version during an upgrade
323
- # when $1 = 0, this is the uninstall of the only version during an erase
324
- %postun
325
- /usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='postun' --rpm_status=$1
455
+ function load_custom_content_files(custom_content_dir, custom_content_table, declared_scriptlets_table)
456
+ if (posix.stat(custom_content_dir, 'type') == 'directory') then
457
+ for i,basename in pairs(posix.dir(custom_content_dir)) do
458
+ local file = custom_content_dir .. basename
459
+ -- only accept files that are not dot files (".filename")
460
+ if (basename:match('^[^%.]') and (posix.stat(file, 'type') == 'regular')) then
461
+ lua_stderr("INFO: found custom RPM spec file snippet: '" .. file .. "'\n")
462
+ local file_handle = io.open(file,'r')
463
+ if file_handle then
464
+ local _content = file_handle:read("*all")
465
+ define_custom_content(_content, custom_content_table, declared_scriptlets_table)
466
+ else
467
+ lua_stderr("WARNING: could not read '"..file.."'\n")
468
+ end
469
+ file_handle:close()
470
+ else
471
+ lua_stderr("WARNING: skipping invalid filename '"..basename.."'\n")
472
+ end
473
+ end
474
+ else
475
+ lua_stderr("WARNING: not found: " .. custom_content_dir .. "\n")
476
+ end
477
+ end
478
+
479
+ -- Declares default scriptlets for SIMP 6.X (referenced from 6.1.0)
480
+ --
481
+ -- In order to keep the package-maintained pupmod-*-* packages.
482
+ -- Packages notify /usr/local/sbin/simp_rpm_helper.
483
+ -- See: https://github.com/simp/simp-adapter/blob/master/src/sbin/simp_rpm_helper
484
+ --
485
+ -- This function should be called last
486
+ --
487
+ function declare_default_scriptlets(custom_content_table, declared_scriptlets_table)
488
+ local DEFAULT_SCRIPTLETS = {
489
+ ['pre'] = {upgrade = 2},
490
+ ['post'] = {upgrade = 2},
491
+ ['preun'] = {upgrade = 0},
492
+ ['postun'] = {upgrade = 0}
493
+ }
494
+ local rpm_dir = rpm.expand('%{prefix}/' .. module_name)
495
+
496
+ for name,data in pairs(DEFAULT_SCRIPTLETS) do
497
+ local content = ('%'..name.."\n"..
498
+ '# (default scriptlet for SIMP 6.x)\n'..
499
+ '# when $1 = 1, this is an install\n'..
500
+ '# when $1 = '.. data.upgrade ..', this is an upgrade\n'..
501
+ 'if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
502
+ ' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
503
+ rpm_dir.." --rpm_section='"..name.."' --rpm_status=$1\n"..
504
+ 'fi\n\n'
505
+ )
506
+
507
+ define_custom_content(content, custom_content_table, declared_scriptlets_table)
508
+ end
509
+ end
510
+
511
+
512
+ -- insert custom content (e.g., rpm_metadata/custom/*, scriptlets)
513
+ function print_extra_content( custom_content_table )
514
+ local extra_content = table.concat(custom_content_table, "\n") .. "\n"
515
+ lua_stderr("\n========== DYNAMIC CONTENT SUMMARY ========== (begin)\n" ..
516
+ rpm.expand( extra_content ) ..
517
+ "\n========== DYNAMIC CONTENT SUMMARY ========== (end)\n")
518
+ print(extra_content)
519
+ end
520
+
521
+
522
+ load_custom_content_files(
523
+ custom_content_dir,
524
+ custom_content_table,
525
+ declared_scriptlets_table
526
+ )
527
+ declare_default_scriptlets(custom_content_table, declared_scriptlets_table)
528
+ print_extra_content(custom_content_table)
529
+ }
530
+
531
+
532
+ %files
533
+ %defattr(0640,root,root,0750)
534
+ %{prefix}/%{module_name}
326
535
 
327
536
  %changelog
328
537
  %{lua:
@@ -345,7 +554,7 @@ default_lookup_table = {
345
554
  changelog = io.open(src_dir .. "/CHANGELOG","r")
346
555
  if changelog then
347
556
  first_line = changelog:read()
348
- if string.match(first_line, "^*%s+%a%a%a%s+%a%a%a%s+%d%d?%s+%d%d%d%d%s+.+") then
557
+ if first_line:match("^*%s+%a%a%a%s+%a%a%a%s+%d%d?%s+%d%d%d%d%s+.+") then
349
558
  changelog:seek("set",0)
350
559
  print(changelog:read("*all"))
351
560
  else
@@ -333,15 +333,6 @@ Requires(preun): simp-adapter >= 0.0.1
333
333
  Requires(preun): simp-adapter >= 0.0.1
334
334
  Requires(postun): simp-adapter >= 0.0.1
335
335
 
336
- %if ("%{package_name}" != "pupmod-simp-simplib") && ("%{package_name}" != "pupmod-puppetlabs-stdlib")
337
- Requires: pupmod-simp-simplib >= 1.2.6
338
- %endif
339
-
340
- %if "%{package_name}" != "pupmod-puppetlabs-stdlib"
341
- Requires: pupmod-puppetlabs-stdlib >= 4.9.0
342
- Requires: pupmod-puppetlabs-stdlib < 6.0.0
343
- %endif
344
-
345
336
  %{lua: print(module_requires)}
346
337
 
347
338
  Provides: pupmod-%{lua: print(module_name)} = %{lua: print(package_version .. "-" .. package_release)}
@@ -380,6 +371,9 @@ curdir=`pwd`
380
371
  dirname=`basename $curdir`
381
372
  cp -r ../$dirname %{buildroot}/%{prefix}/%{module_name}
382
373
 
374
+ # Modules should *never* contain symlinks
375
+ find %{buildroot} -type l -delete
376
+
383
377
  # Remove unnecessary assets
384
378
  rm -rf %{buildroot}/%{prefix}/%{module_name}/.git
385
379
  rm -f %{buildroot}/%{prefix}/%{module_name}/*.lock
@@ -2,5 +2,5 @@ module Simp; end
2
2
  module Simp::Rake; end
3
3
 
4
4
  class Simp::Rake::Helpers
5
- VERSION = '5.6.0'
5
+ VERSION = '5.6.1'
6
6
  end
data/lib/simp/rake/pkg.rb CHANGED
@@ -9,6 +9,7 @@ require 'find'
9
9
  require 'simp/relchecks'
10
10
  require 'simp/rpm'
11
11
  require 'simp/rake/helpers/rpm_spec'
12
+ require 'simp/rake/build/rpmdeps'
12
13
 
13
14
  module Simp; end
14
15
  module Simp::Rake
@@ -216,12 +217,17 @@ module Simp::Rake
216
217
  # :pkg:rpm
217
218
  # -----------------------------
218
219
  namespace :pkg do
220
+ =begin
221
+ WARNING: THIS DOES NOT PULL FROM THE simp-core RPM DEPENDENCIES FILE
222
+ WARNING: YOU WILL PROBABLY NOT GET PROPER FULL SIMP RPMS FROM THIS TASK
223
+
219
224
  desc <<-EOM
220
225
  Build the #{@pkg_name} RPM.
221
226
 
222
227
  By default, the package will be built to support a SIMP-6.X file structure.
223
228
  To build the package for a different version of SIMP, export SIMP_BUILD_version=<5.X,4.X>
224
229
  EOM
230
+ =end
225
231
  task :rpm => [:tar] do |t,args|
226
232
  rpm_opts = [
227
233
  %(-D 'buildroot #{@pkg_dir}/rpmbuild/BUILDROOT'),
@@ -275,6 +281,9 @@ module Simp::Rake
275
281
 
276
282
  srpms = [@full_pkg_name + '.src.rpm']
277
283
  if require_rebuild?(srpms.first, @tar_dest)
284
+ # TODO: Uncomment this after revamping the tests to use a dependencies.yaml file
285
+ # Simp::Rake::Build::RpmDeps.generate_rpm_meta_files(@base_dir, {})
286
+
278
287
  # Need to build the SRPM so that we can get the build dependencies
279
288
  cmd = %(rpmbuild #{rpm_opts.join(' ')} -bs #{@spec_file} > logs/build.srpm.out 2> logs/build.srpm.err)
280
289
  puts "==== pkg:rpm SRPM BUILD: #{cmd}" if @verbose
data/lib/simp/yum.rb CHANGED
@@ -126,7 +126,7 @@ module Simp
126
126
  #
127
127
  # Returns nil if nothing found
128
128
  def available_package(rpm)
129
- yum_output = %x(#{@@yum} -C list #{rpm} 2>/dev/null)
129
+ yum_output = %x(#{@@yum} list #{rpm} 2>/dev/null)
130
130
 
131
131
  found_rpm = nil
132
132
  if $?.success?
@@ -124,7 +124,7 @@ describe 'rake pkg:rpm' do
124
124
 
125
125
  comment 'produces RPM with appropriate dependencies'
126
126
  on host, %(rpm -qpR #{testpackage_rpm} | grep -q simp-adapter)
127
- on host, %(rpm -qpR #{testpackage_rpm} | grep -q pupmod-simp-foo)
127
+ on host, %(rpm -qpR #{testpackage_rpm} | grep -q pupmod-simp-foo), :acceptable_exit_codes => [1]
128
128
  on host, %(rpm -qpR #{testpackage_rpm} | grep -q pupmod-simp-simplib)
129
129
  on host, %(rpm -qpR #{testpackage_rpm} | grep -q pupmod-puppetlabs-stdlib)
130
130
  on host, %(rpm -qp --provides #{testpackage_rpm} | grep -q -x 'pupmod-testpackage = 0.0.1-0')
@@ -1 +1,2 @@
1
- Requires: pupmod-simp-foo >= 1.2.3
1
+ Requires: pupmod-simp-simplib >= 1.2.3
2
+ Requires: pupmod-puppetlabs-stdlib >= 1.2.3
@@ -9,6 +9,10 @@
9
9
  "issues_url": "https://simp/project.atlassian.net",
10
10
  "tags": [ "simp", "test"],
11
11
  "dependencies": [
12
+ {
13
+ "name": "puppetlabs/stdlib",
14
+ "version_requirement": ">= 1.1.0"
15
+ },
12
16
  {
13
17
  "name": "simp/simplib",
14
18
  "version_requirement": ">= 1.1.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simp-rake-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.6.0
4
+ version: 5.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Tessmer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-09-25 00:00:00.000000000 Z
12
+ date: 2018-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: simp-beaker-helpers