autoproj 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,18 @@
1
+ = Version 1.2.4
2
+ * manage LD_LIBRARY_PATH
3
+ * only include the values relevant to our packages in the generated env.sh,
4
+ instead of overcrowding them with inherited values.
5
+
6
+ = Version 1.2.3
7
+ * fix the definition of the subversion package under ubuntu/debian
8
+ * improve selection of packages on the command line. Most glitches
9
+ that appears when using that feature are gone now.
10
+ * allow to give options to the VCS during boostrap, and to switch
11
+ the source of the configuration. I.e.
12
+ autoproj switch-config git URL branch=newbranch
13
+ will exchange/update the configuration in autoproj/ with the specified one.
14
+ * bugfixes
15
+
1
16
  = Version 1.2.2
2
17
  * added support for Gentoo
3
18
  * added support for Ubuntu 9.10 [Karmic Koala]
data/Manifest.txt CHANGED
@@ -13,6 +13,7 @@ doc/guide/src/customization.page
13
13
  doc/guide/src/default.css
14
14
  doc/guide/src/default.template
15
15
  doc/guide/src/htmldoc.metainfo
16
+ doc/guide/src/htmldoc.virtual
16
17
  doc/guide/src/images/bodybg.png
17
18
  doc/guide/src/images/contbg.png
18
19
  doc/guide/src/images/footerbg.png
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ begin
14
14
  self.changes = paragraphs_of('History.txt', 0..1).join("\n\n")
15
15
 
16
16
  extra_deps <<
17
- ['autobuild', '>= 1.4.0'] <<
17
+ ['autobuild', '>= 1.4.3'] <<
18
18
  ['rmail', '>= 1.0.0'] <<
19
19
  ['utilrb', '>= 1.3.3'] <<
20
20
  ['nokogiri', '>= 1.3.3'] <<
data/bin/autoproj CHANGED
@@ -35,18 +35,28 @@ parser = OptionParser.new do |opts|
35
35
  opts.banner = <<-EOBANNER
36
36
  autoproj mode [options]
37
37
  where 'mode' is one of:
38
- build: import, build and install all selected packages
38
+ build: import, build and install all packages that need it. A package or package
39
+ set name can be given, in which case only this package and its dependencies
40
+ will be taken into account. Example:
41
+
42
+ autoproj build drivers/hokuyo
43
+
39
44
  force-build: triggers all build commands, i.e. don't be lazy like in "build"
40
- fast-build: builds without updating and installing OS dependencies
41
- rebuild: remove all build products, thus triggering a full rebuild
45
+ fast-build: builds without updating and without considering OS dependencies
46
+ rebuild: clean and then rebuild
42
47
  doc: generate and install documentation for packages that have some
43
48
  update: only import/update packages, do not build them
44
49
  status: displays the state of the packages w.r.t. their source VCS
45
50
  bootstrap: starts a new autoproj installation. Usage:
46
51
  autoproj bootstrap [manifest_url|source_vcs source_url opt1=value1 opt2=value2 ...]
47
52
 
48
- list-sets: list all available sources
49
- update-sets: update all remote sources, but do not build
53
+ list-sets: list all available package sets
54
+ update-sets: update the package sets definitions
55
+ switch-config: change where the configuration should be taken from. Syntax:
56
+ autoproj switch-config source_vcs source_url opt1=value1 opt2=value2 ...
57
+
58
+ For example:
59
+ autoproj switch-config git git://github.com/doudou/rubim-all.git branch=all
50
60
 
51
61
  Additional options:
52
62
  EOBANNER
@@ -185,6 +195,68 @@ def do_status(packages)
185
195
  end
186
196
  end
187
197
 
198
+ def switch_config(*args)
199
+ Autoproj.load_config
200
+ if Autoproj.has_config_key?('manifest_source')
201
+ vcs = Autoproj.normalize_vcs_definition(Autoproj.user_config('manifest_source'))
202
+ end
203
+
204
+ if vcs && (vcs.type == args[0] && vcs.url == args[1])
205
+ # Don't need to do much: simply change the options and save the config
206
+ # file, the VCS handler will take care of switching the options
207
+ else
208
+ # We will have to delete the current autoproj directory. Ask the user.
209
+ opt = Autoproj::BuildOption.new("delete current config", "boolean", Hash[:default => "false", :doc => "delete the current configuration ? (required to switch)"], nil)
210
+ return if !opt.ask(nil)
211
+ FileUtils.rm_rf File.join(Autoproj.config_dir)
212
+ do_switch_config(*args)
213
+ end
214
+
215
+ # And now save the options: note that we keep the current option set even
216
+ # though we switched configuration. This is not a problem as undefined
217
+ # options will not be reused
218
+ #
219
+ # TODO: cleanup the options to only keep the relevant ones
220
+ vcs_def = Hash['type' => args.shift, 'url' => args.shift]
221
+ args.each do |opt|
222
+ opt_name, opt_val = opt.split '='
223
+ vcs_def[opt_name] = opt_val
224
+ end
225
+ # Validate the option hash, just in case
226
+ Autoproj.normalize_vcs_definition(vcs_def)
227
+ # Save the new options
228
+ Autoproj.change_option('manifest_source', vcs_def, true)
229
+ Autoproj.save_config
230
+ end
231
+
232
+ def do_switch_config(*args)
233
+ vcs_def = Hash.new
234
+ vcs_def[:type] = args.shift
235
+ vcs_def[:url] = args.shift
236
+ while !args.empty?
237
+ name, value = args.shift.split("=")
238
+ vcs_def[name] = value
239
+ end
240
+
241
+ vcs = Autoproj.normalize_vcs_definition(vcs_def)
242
+
243
+ # Install the OS dependencies required for this VCS
244
+ Autobuild::Reporting.report do
245
+ osdeps = Autoproj::OSDependencies.load_default
246
+ osdeps.install([vcs.type])
247
+ Autoproj::Manifest.import_whole_installation(vcs, File.join(Dir.pwd, "autoproj"))
248
+ end
249
+
250
+ # Now write it in the config file
251
+ File.open(File.join(Autoproj.config_dir, "config.yml"), "a") do |io|
252
+ io.puts <<-EOTEXT
253
+ manifest_source:
254
+ type: #{vcs_def.delete(:type)}
255
+ url: #{vcs_def.delete(:url)}
256
+ #{vcs_def.map { |k, v| "#{k}: #{v}" }.join("\n ")}
257
+ EOTEXT
258
+ end
259
+ end
188
260
 
189
261
  def do_bootstrap(*args)
190
262
  if File.exists?(File.join("autoproj", "manifest"))
@@ -192,10 +264,6 @@ def do_bootstrap(*args)
192
264
  end
193
265
  Autobuild.logdir = File.join('build', 'log')
194
266
 
195
- if args.size > 2
196
- raise ConfigError, "usage: autoproj bootstrap [manifest_url | vcs_type vcs_url]"
197
- end
198
-
199
267
  # Check if we are being called from another GEM_HOME. If it is the case,
200
268
  # assume that we are bootstrapping from another installation directory and
201
269
  # start by copying the .gems directory
@@ -226,33 +294,8 @@ def do_bootstrap(*args)
226
294
  io.write(manifest_data)
227
295
  end
228
296
 
229
- elsif args.size == 2 # is a VCS definition for the manifest itself ...
230
- vcs_def = Hash.new
231
- vcs_def[:type] = args.shift
232
- vcs_def[:url] = args.shift
233
- while !args.empty?
234
- name, value = args.shift.split("=")
235
- vcs_def[name] = value
236
- end
237
-
238
- vcs = Autoproj.normalize_vcs_definition(vcs_def)
239
-
240
- # Install the OS dependencies required for this VCS
241
- Autobuild::Reporting.report do
242
- osdeps = Autoproj::OSDependencies.load_default
243
- osdeps.install([vcs.type])
244
- Autoproj::Manifest.import_whole_installation(vcs, File.join(Dir.pwd, "autoproj"))
245
- end
246
-
247
- # Now write it in the config file
248
- File.open(File.join(Autoproj.config_dir, "config.yml"), "a") do |io|
249
- io.puts <<-EOTEXT
250
- manifest_source:
251
- type: #{vcs_def.delete(:type)}
252
- url: #{vcs_def.delete(:url)}
253
- #{vcs_def.map { |k, v| "#{k}: #{v}" }.join("\n ")}
254
- EOTEXT
255
- end
297
+ elsif args.size > 2 # is a VCS definition for the manifest itself ...
298
+ do_switch_config(*args)
256
299
  end
257
300
 
258
301
  # Finally, generate an env.sh script
@@ -313,7 +356,12 @@ begin
313
356
  when "list-sets"
314
357
  only_update_sources = true
315
358
  Autobuild.do_update = false
316
-
359
+ when "switch-config"
360
+ if switch_config(*args)
361
+ exit 0
362
+ else
363
+ exit 1
364
+ end
317
365
  when "doc"
318
366
  Autobuild.do_update = false
319
367
  Autobuild.do_doc = true
@@ -323,7 +371,16 @@ begin
323
371
  exit(1)
324
372
  end
325
373
 
374
+ # Expand directories in the selected_packages set
326
375
  root_dir = Autoproj.root_dir
376
+ selected_packages.map! do |name|
377
+ if File.directory?(name)
378
+ File.expand_path(name).gsub(/^#{Regexp.quote(root_dir)}/, '')
379
+ else
380
+ name
381
+ end
382
+ end
383
+
327
384
  Dir.chdir(root_dir)
328
385
 
329
386
  # Load user configuration
@@ -335,7 +392,7 @@ begin
335
392
  end
336
393
  end
337
394
  # Set up some important autobuild parameters
338
- Autoproj.env_inherit 'PATH', 'PKG_CONFIG_PATH', 'RUBYLIB'
395
+ Autoproj.env_inherit 'PATH', 'PKG_CONFIG_PATH', 'RUBYLIB', 'LD_LIBRARY_PATH'
339
396
  Autoproj.env_set 'GEM_HOME', Autoproj.gem_home
340
397
  Autoproj.env_set 'RUBYOPT', "-rubygems"
341
398
  Autobuild.prefix = Autoproj.build_dir
@@ -490,6 +547,10 @@ begin
490
547
  # Now starts a different stage of the whole build. Until now, we were
491
548
  # working on the whole package set. Starting from now, we need to build the
492
549
  # package sets based on the layout file
550
+ #
551
+ # First, we allow to user to specify packages based on disk paths, so
552
+ # resolve those
553
+ selected_packages = Autoproj.manifest.expand_package_selection(selected_packages)
493
554
 
494
555
  # This keeps a hash of package_name => layout_name for all packages that
495
556
  # have already been handled
@@ -613,6 +674,11 @@ begin
613
674
  STDERR.puts color("WARN: #{name} has not been completely built, #{name}env.sh is not updated", :magenta)
614
675
  end
615
676
  end
677
+
678
+ libdir = File.join(prefix, "lib")
679
+ if File.directory?(libdir)
680
+ Autoproj.validate_solib_dependencies(libdir)
681
+ end
616
682
  end
617
683
 
618
684
  if !all_env_sh.empty?
@@ -306,7 +306,7 @@ git:
306
306
  gentoo: dev-util/git
307
307
 
308
308
  svn:
309
- debian,ubuntu: svn
309
+ debian,ubuntu: subversion
310
310
  gentoo: dev-util/subversion
311
311
 
312
312
  cmake:
@@ -0,0 +1,19 @@
1
+ \--- !omap
2
+ - /api/:
3
+ in_menu: true
4
+
5
+ - /api/index.html:
6
+ routed_title: Autoproj API
7
+ in_menu: false
8
+ sort_info: 99999
9
+ url: ../../api/index.html
10
+
11
+ - /autobuild/:
12
+ in_menu: true
13
+
14
+ - /autobuild/index.html:
15
+ routed_title: Autobuild API
16
+ in_menu: false
17
+ sort_info: 99999
18
+ url: http://doudou.github.com/autobuild/index.html
19
+
@@ -5,9 +5,65 @@ sort_info: 100
5
5
  A package set is made of three things:
6
6
 
7
7
  * the description file (source.yml)
8
- * an optional initialization script (init.rb)
8
+ * an optional initialization script (init.rb) and override script
9
+ (overrides.rb)
9
10
  * autobuild scripts (\*.autobuild)
10
11
 
12
+ Starting a new package set
13
+ --------------------------
14
+
15
+ Create a subdirectory in autoproj/ and add a source.yml file that looks like:
16
+
17
+ {coderay:: yaml}
18
+ name my_package_set_name
19
+ {coderay}
20
+
21
+ Et voila ! You have a new empty package set
22
+
23
+ Adding a package
24
+ ----------------
25
+
26
+ Adding a package to a package set involves changing two files:
27
+
28
+ * the package set's autobuild file that declares what type of package it is and
29
+ * the package set's source.yml file that declares where to get it (version
30
+ control information)
31
+
32
+ For the first step, you need to add one of the following lines:
33
+
34
+ {coderay:: ruby}
35
+ cmake_package "my/package" # for CMake package
36
+ autotools_package "my/package" # for autoconf/automake packages
37
+ orogen_package "my/package" # for orogen packages
38
+ {coderay}
39
+
40
+ The package name will be used to refer to this particular package later on --
41
+ especially for version control definition. If subdirectories are used, like "my"
42
+ in the above example, the package source will be checked out and built in the
43
+ corresponding subdirectory.
44
+
45
+ Now that the package is declared, we need to add version control information to
46
+ the source.yml file. This needs to be done in the version\_control section of
47
+ the file, as for instance:
48
+
49
+ {coderay:: yaml}
50
+ version_control:
51
+ - my/package:
52
+ type: git
53
+ url: git://github.com/blabla/my-package.git
54
+ {coderay}
55
+
56
+ The corresponding subversion definition would be:
57
+
58
+ {coderay:: yaml}
59
+ version_control:
60
+ - my/package:
61
+ type: svn
62
+ url: svn+ssh://svnhosting.com/blabla/trunk/my/package
63
+ {coderay}
64
+
65
+ The remaining of this page is a more in-depth description of this process.
66
+
11
67
  Autobuild scripts
12
68
  -----------------
13
69
  The autobuild scripts lists all the packages defined by this set. It is a
@@ -27,7 +27,7 @@ git:
27
27
  gentoo: dev-util/git
28
28
 
29
29
  svn:
30
- debian,ubuntu: svn
30
+ debian,ubuntu: subversion
31
31
  gentoo: dev-util/subversion
32
32
 
33
33
  cmake:
@@ -53,7 +53,7 @@ module Autoproj
53
53
 
54
54
  # Set a new environment variable
55
55
  def self.env_set(name, *value)
56
- Autobuild.environment[name] = nil
56
+ Autobuild.env_clear(name)
57
57
  env_add(name, *value)
58
58
  end
59
59
  def self.env_add(name, *value)
@@ -61,7 +61,7 @@ module Autoproj
61
61
  Autobuild.env_add(name, *value)
62
62
  end
63
63
  def self.env_set_path(name, *value)
64
- Autobuild.environment[name] = nil
64
+ Autobuild.env_clear(name)
65
65
  env_add_path(name, *value)
66
66
  end
67
67
  def self.env_add_path(name, *value)
@@ -89,7 +89,7 @@ module Autoproj
89
89
  return if type == "none"
90
90
 
91
91
  url = Autoproj.single_expansion(self.url, 'HOME' => ENV['HOME'])
92
- if url && url !~ /^(\w+:\/)?\/|^\w+\@/
92
+ if url && url !~ /^(\w+:\/)?\/|^\w+\@|^(\w+\@)?[\w\.-]+:/
93
93
  url = File.expand_path(url, Autoproj.root_dir)
94
94
  end
95
95
  Autobuild.send(type, url, options)
@@ -164,6 +164,12 @@ module Autoproj
164
164
  def present?; File.directory?(local_dir) end
165
165
  # True if this source is local, i.e. is not under a version control
166
166
  def local?; vcs.local? end
167
+ # True if this source defines nothing
168
+ def empty?
169
+ !source_definition['version_control'] &&
170
+ !each_package.find { true }
171
+ end
172
+
167
173
  # The directory in which data for this source will be checked out
168
174
  def local_dir
169
175
  if local?
@@ -307,6 +313,7 @@ module Autoproj
307
313
 
308
314
  if all_vcs
309
315
  all_vcs.each do |spec|
316
+ spec = spec.dup
310
317
  if spec.values.size != 1
311
318
  # Maybe the user wrote the spec like
312
319
  # - package_name:
@@ -490,7 +497,7 @@ module Autoproj
490
497
  return enum_for(:each_source_file)
491
498
  end
492
499
 
493
- each_source do |source|
500
+ each_source(false) do |source|
494
501
  Dir.glob(File.join(source.local_dir, "*.osdeps")).each do |file|
495
502
  yield(source, file)
496
503
  end
@@ -525,8 +532,12 @@ module Autoproj
525
532
  end
526
533
 
527
534
  source = Source.new(vcs_def)
528
- if source.present? && load_description
529
- source.load_description_file
535
+ if load_description
536
+ if source.present?
537
+ source.load_description_file
538
+ else
539
+ raise InternalError, "cannot load description file as it has not been checked out yet"
540
+ end
530
541
  else
531
542
  # Try to load just the name from the source.yml file
532
543
  source.load_name
@@ -541,11 +552,15 @@ module Autoproj
541
552
  #
542
553
  # Lists all package sets defined in this manifest, by yielding a Source
543
554
  # object that describes it.
544
- def each_source(load_description = true)
555
+ def each_source(load_description = true, &block)
545
556
  if !block_given?
546
557
  return enum_for(:each_source, load_description)
547
558
  end
548
559
 
560
+ if @sources
561
+ return @sources.each(&block)
562
+ end
563
+
549
564
  return if !data['package_sets']
550
565
 
551
566
  # Load the local source first ...
@@ -555,10 +570,24 @@ module Autoproj
555
570
  else
556
571
  local.load_name
557
572
  end
558
- yield(local)
573
+ if load_description
574
+ if !local.empty?
575
+ yield(local)
576
+ if load_description
577
+ @sources = [local]
578
+ end
579
+ end
580
+ @sources ||= []
581
+ else
582
+ yield(local)
583
+ end
559
584
 
560
585
  data['package_sets'].each do |spec|
561
- yield(source_from_spec(spec, load_description))
586
+ source = source_from_spec(spec, load_description)
587
+ if load_description
588
+ @sources << source
589
+ end
590
+ yield(source)
562
591
  end
563
592
  end
564
593
 
@@ -687,6 +716,7 @@ module Autoproj
687
716
  result
688
717
  end
689
718
 
719
+ # Enumerates the sublayouts defined in +layout_def+.
690
720
  def each_sublayout(layout_def)
691
721
  layout_def.each do |value|
692
722
  if value.kind_of?(Hash)
@@ -700,18 +730,18 @@ module Autoproj
700
730
  # and sublayout in order
701
731
  def each_package_set(selection, layout_name = '/', layout_def = data['layout'], &block)
702
732
  if !layout_def
703
- yield('/', default_packages, default_packages)
733
+ yield(layout_name, default_packages, default_packages)
704
734
  return nil
705
735
  end
706
736
 
707
- selection = selection.to_set
737
+ selection = selection.to_set if selection
708
738
 
709
739
  # First of all, do the packages at this level
710
740
  packages = layout_packages(layout_def, false)
711
741
  # Remove excluded packages
712
742
  packages.delete_if { |pkg_name| excluded?(pkg_name) }
713
743
 
714
- if selection && !selection.any? { |sel| layout_name =~ /^\/?#{Regexp.new(sel)}\/?/ }
744
+ if selection
715
745
  selected_packages = packages.find_all { |pkg_name| selection.include?(pkg_name) }
716
746
  else
717
747
  selected_packages = packages.dup
@@ -802,6 +832,66 @@ module Autoproj
802
832
 
803
833
  osdeps.install(required_os_packages)
804
834
  end
835
+
836
+ # Package selection can be done in three ways:
837
+ # * as a subdirectory in the layout
838
+ # * as a on-disk directory
839
+ # * as a package name
840
+ #
841
+ # This method converts the first two directories into the third one
842
+ def expand_package_selection(selected_packages)
843
+ base_dir = Autoproj.root_dir
844
+
845
+ expanded_packages = []
846
+
847
+ # Get all the package names
848
+ package_names = Autobuild::Package.each(true).
849
+ map do |name, pkg|
850
+ pkg.name
851
+ end
852
+
853
+ selected_packages = selected_packages.map do |sel|
854
+ if sel[0] == ?/ # anchored selection
855
+ /^#{sel}/
856
+ else
857
+ Regexp.new(sel)
858
+ end
859
+ end
860
+
861
+ # First, remove packages that are directly referenced by name or by
862
+ # package set names
863
+ selected_packages.delete_if do |sel|
864
+ packages = package_names.find_all { |pkg_name| pkg_name =~ sel }
865
+ expanded_packages.concat(packages)
866
+
867
+ sources = each_source.find_all { |source| source.name =~ sel }
868
+ sources.each do |source|
869
+ expanded_packages.concat(resolve_package_set(source.name))
870
+ end
871
+
872
+ !packages.empty? && !sources.empty?
873
+ end
874
+
875
+ if selected_packages.empty?
876
+ return expanded_packages
877
+ end
878
+
879
+ # Now, expand sublayout and directory names
880
+ each_package_set(nil) do |layout_name, packages, _|
881
+ selected_packages.delete_if do |sel|
882
+ if layout_name[0..-1] =~ Regexp.new("#{sel}\/?$")
883
+ expanded_packages.concat(packages.to_a)
884
+ else
885
+ packages = packages.find_all do |pkg_name|
886
+ (layout_name + pkg_name) =~ sel
887
+ end
888
+ expanded_packages.concat(packages)
889
+ !packages.empty?
890
+ end
891
+ end
892
+ end
893
+ expanded_packages.to_set
894
+ end
805
895
  end
806
896
 
807
897
  # The singleton manifest object on which the current run works
@@ -76,6 +76,10 @@ module Autoproj
76
76
  end
77
77
  end
78
78
 
79
+ def self.change_option(key, value, user_validated = false)
80
+ @user_config[key] = [value, user_validated]
81
+ end
82
+
79
83
  def self.user_config(key)
80
84
  value, seen = @user_config[key]
81
85
  # All non-user options are always considered as "seen"
@@ -50,6 +50,7 @@ module Autoproj
50
50
  Autoproj.env_set_path 'PATH', "#{Autoproj.gem_home}/bin", "/usr/local/bin", "/usr/bin", "/bin"
51
51
  Autoproj.env_set 'PKG_CONFIG_PATH'
52
52
  Autoproj.env_set 'RUBYLIB'
53
+ Autoproj.env_set 'LD_LIBRARY_PATH'
53
54
  end
54
55
 
55
56
  def self.export_env_sh(subdir)
@@ -81,5 +82,17 @@ module Autoproj
81
82
  self.load(source, *path)
82
83
  end
83
84
  end
85
+
86
+ def self.validate_solib_dependencies(dir, exclude_paths = [])
87
+ Find.find(File.expand_path(dir)) do |name|
88
+ next unless name =~ /\.so$/
89
+ next if exclude_paths.find { |p| name =~ p }
90
+
91
+ output = `ldd -r #{name} 2>&1`
92
+ if output =~ /undefined symbol/
93
+ STDERR.puts Autoproj.console.color("WARN: #{name} has undefined symbols", :magenta)
94
+ end
95
+ end
96
+ end
84
97
  end
85
98
 
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Joyeux
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-09 00:00:00 +01:00
12
+ date: 2009-11-26 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.4.0
23
+ version: 1.4.3
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rmail
@@ -143,6 +143,7 @@ files:
143
143
  - doc/guide/src/default.css
144
144
  - doc/guide/src/default.template
145
145
  - doc/guide/src/htmldoc.metainfo
146
+ - doc/guide/src/htmldoc.virtual
146
147
  - doc/guide/src/images/bodybg.png
147
148
  - doc/guide/src/images/contbg.png
148
149
  - doc/guide/src/images/footerbg.png