build-tool 0.1.4 → 0.2
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.tar.gz.sig +2 -3
- data/History.txt +29 -0
- data/Manifest.txt +39 -10
- data/README.txt +5 -8
- data/Rakefile +14 -6
- data/bin/build-tool +3 -35
- data/db/migrations/001_command_histories.rb +20 -0
- data/db/migrations/002_module_events.rb +24 -0
- data/db/migrations/003_command_histories_add_logfile.rb +19 -0
- data/lib/build-tool.rb +1 -1
- data/lib/build-tool/application.rb +103 -30
- data/lib/build-tool/build-system/autoconf.rb +69 -6
- data/lib/build-tool/build-system/base.rb +2 -25
- data/lib/build-tool/build-system/custom.rb +6 -19
- data/lib/build-tool/build-system/kdel10n.rb +39 -0
- data/lib/build-tool/build-system/none.rb +82 -0
- data/lib/build-tool/cfg/lexer.rb +133 -7
- data/lib/build-tool/cfg/lexer.rex +58 -6
- data/lib/build-tool/cfg/node.rb +13 -1
- data/lib/build-tool/cfg/parser.rb +519 -333
- data/lib/build-tool/cfg/parser.y +74 -11
- data/lib/build-tool/cfg/visitor.rb +182 -20
- data/lib/build-tool/command_actions.rb +202 -0
- data/lib/build-tool/commands.rb +193 -49
- data/lib/build-tool/commands/build.rb +13 -8
- data/lib/build-tool/commands/configure.rb +8 -3
- data/lib/build-tool/commands/environments.rb +4 -8
- data/lib/build-tool/commands/environments/list.rb +8 -0
- data/lib/build-tool/commands/fetch.rb +7 -2
- data/lib/build-tool/commands/gc.rb +53 -0
- data/lib/build-tool/commands/history.rb +111 -0
- data/lib/build-tool/commands/install.rb +6 -1
- data/lib/build-tool/commands/lsfeatures.rb +73 -0
- data/lib/build-tool/commands/modules.rb +3 -7
- data/lib/build-tool/commands/modules/info.rb +15 -6
- data/lib/build-tool/commands/modules/list.rb +10 -5
- data/lib/build-tool/commands/rebase.rb +6 -1
- data/lib/build-tool/commands/recipes.rb +3 -7
- data/lib/build-tool/configuration.rb +24 -1
- data/lib/build-tool/environment.rb +17 -3
- data/lib/build-tool/feature.rb +47 -0
- data/lib/build-tool/history.rb +173 -0
- data/lib/build-tool/module.rb +49 -90
- data/lib/build-tool/recipe.rb +5 -0
- data/lib/build-tool/vcs/archive.rb +140 -0
- data/lib/build-tool/vcs/base.rb +5 -5
- data/lib/build-tool/vcs/git-svn.rb +4 -0
- data/lib/build-tool/vcs/git.rb +4 -0
- data/lib/mj/logging.rb +11 -0
- data/recipes/{kdeqt4.6 → kde}/custom/qt/qtscriptgenerator/compile.sh +0 -0
- data/recipes/{kdeqt4.6 → kde}/custom/qt/qtscriptgenerator/configure.sh +0 -0
- data/recipes/{kdeqt4.6 → kde}/custom/qt/qtscriptgenerator/install.sh +0 -0
- data/recipes/kde/custom/scripting/pyqt4/compile.sh +10 -0
- data/recipes/kde/custom/scripting/pyqt4/configure.sh +14 -0
- data/recipes/kde/custom/scripting/pyqt4/install.sh +10 -0
- data/recipes/kde/custom/scripting/sip/compile.sh +10 -0
- data/recipes/kde/custom/scripting/sip/configure.sh +13 -0
- data/recipes/kde/custom/scripting/sip/install.sh +10 -0
- data/recipes/kde/files/xsession +8 -4
- data/recipes/kde/kde-bindings.recipe +22 -0
- data/recipes/kde/kde-core.recipe +104 -0
- data/recipes/kde/kde-devel.recipe +38 -0
- data/recipes/kde/kde-finance.recipe +17 -0
- data/recipes/kde/kde-graphics.recipe +27 -0
- data/recipes/kde/kde-kdevelop.recipe +116 -0
- data/recipes/kde/kde-l10n.recipe +14 -0
- data/recipes/kde/kde-multimedia.recipe +31 -0
- data/recipes/kde/kde-network.recipe +55 -0
- data/recipes/kde/kde-office.recipe +28 -0
- data/recipes/kde/kde-plasma.recipe +117 -0
- data/recipes/{kdeqt4.6/recipe → kde/kde-qt.recipe} +25 -57
- data/recipes/kde/kde-scripting.recipe +63 -0
- data/recipes/kde/kde-support.recipe +73 -0
- data/recipes/kde/kde-utils.recipe +22 -0
- data/recipes/kde/kde-webdev.recipe +41 -0
- data/recipes/kde/recipe +92 -532
- data/recipes/kde/recipe-local +58 -2
- data/recipes/kde/settings.yaml +17 -0
- data/recipes/kde43/recipe-local +58 -2
- data/test/test_configuration_parser.rb +76 -21
- data/test/test_feature.rb +34 -0
- data/test/test_history.rb +149 -0
- metadata +185 -30
- metadata.gz.sig +0 -0
- data/lib/build-tool/pluginbase.rb +0 -43
- data/recipes/kdeqt4.6/info.yaml +0 -7
- data/recipes/kdeqt4.6/recipe-local +0 -30
- data/recipes/kdeqt4.6/settings.yaml +0 -27
- data/tasks/rdoc.rake +0 -34
- data/test.rb +0 -28
data/lib/build-tool/recipe.rb
CHANGED
@@ -40,6 +40,11 @@ module BuildTool
|
|
40
40
|
return nil
|
41
41
|
end
|
42
42
|
|
43
|
+
def include_file( filename, configuration )
|
44
|
+
logger.debug "Including #{global_config_file_path( filename )}"
|
45
|
+
load_from_file( global_config_file_path( filename ), configuration )
|
46
|
+
end
|
47
|
+
|
43
48
|
def long_description
|
44
49
|
return @long_description if @metainfo_loaded
|
45
50
|
load_metainfo
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
require 'build-tool/vcs/base'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
|
7
|
+
module BuildTool; module VCS
|
8
|
+
|
9
|
+
class ArchiveConfiguration < BaseConfiguration
|
10
|
+
|
11
|
+
def name
|
12
|
+
"archive"
|
13
|
+
end
|
14
|
+
|
15
|
+
def vcs( mod )
|
16
|
+
@module = mod
|
17
|
+
Archive.new( self )
|
18
|
+
end
|
19
|
+
|
20
|
+
end # class ArchiveConfiguration
|
21
|
+
|
22
|
+
|
23
|
+
class Archive < Base
|
24
|
+
|
25
|
+
class ArchiveError < BuildTool::Error; end
|
26
|
+
|
27
|
+
#
|
28
|
+
### Attributes
|
29
|
+
#
|
30
|
+
def name
|
31
|
+
"archive"
|
32
|
+
end
|
33
|
+
|
34
|
+
def fetching_supported?
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
def archive_local_path
|
39
|
+
"#{File.dirname( local_path )}/#{archive_name}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def archive_name
|
43
|
+
File.basename( archive_url )
|
44
|
+
end
|
45
|
+
|
46
|
+
def archive_url
|
47
|
+
"#{repository.url}/#{remote_path}"
|
48
|
+
end
|
49
|
+
|
50
|
+
#
|
51
|
+
### METHODS
|
52
|
+
#
|
53
|
+
|
54
|
+
def checkedout?
|
55
|
+
File.exist? archive_local_path
|
56
|
+
end
|
57
|
+
|
58
|
+
def clone
|
59
|
+
# Check if the archive is already downloaded
|
60
|
+
if File.exist? archive_local_path
|
61
|
+
logger.debug "Archive already fetched. Skipping."
|
62
|
+
return 0
|
63
|
+
end
|
64
|
+
|
65
|
+
# If the archive doesn't exist we assume the unpacked archive
|
66
|
+
# should not exist too.
|
67
|
+
if local_path_exist?
|
68
|
+
logger.debug "We fetch a new archive. Remove the old sources."
|
69
|
+
FileUtils.rm_rf local_path if !$noop
|
70
|
+
end
|
71
|
+
|
72
|
+
# Create the directories parent dir.
|
73
|
+
FileUtils.mkdir_p( File.dirname( local_path ) ) if !$noop
|
74
|
+
|
75
|
+
# Download the archive
|
76
|
+
logger.trace "get #{archive_name} from #{archive_url} to #{archive_local_path}"
|
77
|
+
if !$noop
|
78
|
+
target = open( archive_local_path, "wb" )
|
79
|
+
open( archive_url ) { |file|
|
80
|
+
while c = file.getc
|
81
|
+
target.putc c
|
82
|
+
end
|
83
|
+
}
|
84
|
+
target.close()
|
85
|
+
end
|
86
|
+
|
87
|
+
# Determine if the archive has a top level directory
|
88
|
+
topdir = guess_top_level_directory()
|
89
|
+
|
90
|
+
if archive_name =~ /(\.tgz|\.tar\.gz)$/
|
91
|
+
if self.class.execute( "gunzip -c #{archive_local_path} | tar xf -", File.dirname(local_path) ) != 0
|
92
|
+
raise StandardError, "Failed to unpack the archive: $?"
|
93
|
+
end
|
94
|
+
else
|
95
|
+
raise NotImplementedError, "No idea how to unpack the archive"
|
96
|
+
end
|
97
|
+
|
98
|
+
# Rename the top level directory to our desired path
|
99
|
+
logger.trace "mv #{File.dirname(local_path)}/#{topdir} #{local_path}"
|
100
|
+
if !$noop
|
101
|
+
FileUtils.move( "#{File.dirname(local_path)}/#{topdir}", local_path )
|
102
|
+
end
|
103
|
+
0
|
104
|
+
end
|
105
|
+
|
106
|
+
def fetch()
|
107
|
+
if !checkedout?
|
108
|
+
clone
|
109
|
+
else
|
110
|
+
# No update for archives
|
111
|
+
end
|
112
|
+
return true
|
113
|
+
end
|
114
|
+
|
115
|
+
def guess_top_level_directory
|
116
|
+
return "<topdir>" if $noop
|
117
|
+
topdir = nil
|
118
|
+
if archive_name =~ /(\.tgz|\.tar\.gz)$/
|
119
|
+
if self.class.execute( "gunzip -c #{archive_local_path} | tar tf -" ) { |line|
|
120
|
+
rc = /^([^\/]*)\//.match( line )
|
121
|
+
if topdir and topdir != rc[1]
|
122
|
+
raise StandardError, "Unable to determine toplevel directory for archive #{archive_name}!"
|
123
|
+
end
|
124
|
+
topdir = rc[1]
|
125
|
+
} != 0
|
126
|
+
raise StandardError, "Failed to unpack the archive: $?"
|
127
|
+
end
|
128
|
+
else
|
129
|
+
raise NotImplementedError, "No idea how to unpack the archive"
|
130
|
+
end
|
131
|
+
return topdir
|
132
|
+
end
|
133
|
+
|
134
|
+
def rebase
|
135
|
+
0
|
136
|
+
end
|
137
|
+
|
138
|
+
end # class Archive
|
139
|
+
|
140
|
+
end; end
|
data/lib/build-tool/vcs/base.rb
CHANGED
@@ -24,10 +24,6 @@ module BuildTool; module VCS
|
|
24
24
|
@module.source_directory
|
25
25
|
end
|
26
26
|
|
27
|
-
def module
|
28
|
-
@module
|
29
|
-
end
|
30
|
-
|
31
27
|
end
|
32
28
|
|
33
29
|
#
|
@@ -49,6 +45,10 @@ module BuildTool; module VCS
|
|
49
45
|
#
|
50
46
|
attr_reader :config
|
51
47
|
|
48
|
+
# Collect garbage, do maintenance ...
|
49
|
+
def gc
|
50
|
+
end
|
51
|
+
|
52
52
|
def local_path
|
53
53
|
local_path = @config.local_path
|
54
54
|
raise ConfigurationError, "#{self.class}.local_path not set" if local_path.nil?
|
@@ -95,7 +95,7 @@ module BuildTool; module VCS
|
|
95
95
|
] do
|
96
96
|
class_eval <<-EOS
|
97
97
|
def #{method}
|
98
|
-
raise NotImplementedError, "Method #{method} is not implemented for class
|
98
|
+
raise NotImplementedError, "Method #{method} is not implemented for class %s" % self.class
|
99
99
|
end
|
100
100
|
EOS
|
101
101
|
end
|
data/lib/build-tool/vcs/git.rb
CHANGED
data/lib/mj/logging.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
# Uncomment this line if you want to debug the script
|
4
|
+
# set -x
|
5
|
+
|
6
|
+
source_directory=$1
|
7
|
+
build_directory=$(pwd)
|
8
|
+
|
9
|
+
python ${source_directory}/configure.py \
|
10
|
+
--confirm-license \
|
11
|
+
--bindir=$INSTALL_PREFIX/bin \
|
12
|
+
--destdir=$INSTALL_PREFIX/lib$LIB_SUFFIX/python$PYTHON_VERSION/site-packages \
|
13
|
+
--sipdir=$INSTALL_PREFIX/share/sip \
|
14
|
+
--plugin-destdir=$INSTALL_PREFIX/lib$LIB_SUFFIX/plugins
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
# Uncomment this line if you want to debug the script
|
4
|
+
# set -x
|
5
|
+
|
6
|
+
source_directory=$1
|
7
|
+
build_directory=$(pwd)
|
8
|
+
|
9
|
+
python ${source_directory}/configure.py \
|
10
|
+
-b $INSTALL_PREFIX/bin \
|
11
|
+
-d $INSTALL_PREFIX/lib$LIB_SUFFIX/python$PYTHON_VERSION/site-packages \
|
12
|
+
-v $INSTALL_PREFIX/share/sip \
|
13
|
+
-e $INSTALL_PREFIX/include/python$PYTHON_VERSION
|
data/recipes/kde/files/xsession
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#!/bin/sh
|
1
2
|
# vim:ft=sh
|
2
3
|
# A script to start the kde workspace.
|
3
4
|
#
|
@@ -48,21 +49,23 @@ function path_add
|
|
48
49
|
# your shell login files (bash_profile, profile ...). We override any setting
|
49
50
|
# made there!
|
50
51
|
CMAKE_PREFIX_PATH="<%= settings['CMAKE_PREFIX_PATH'] %>"
|
51
|
-
unset KDEDIRS
|
52
52
|
LD_LIBRARY_PATH="<%= settings['LD_LIBRARY_PATH'] %>"
|
53
53
|
PATH="<%= settings['PATH'] %>"
|
54
54
|
PKG_CONFIG_PATH="<%= settings['PKG_CONFIG_PATH'] %>"
|
55
|
-
|
55
|
+
PYTHONPATH="<%= settings['PYTHONPATH'] %>"
|
56
56
|
XDG_DATA_DIRS="<%= settings['XDG_DATA_DIRS'] %>"
|
57
|
+
unset STRIGI_PLUGIN_PATH
|
58
|
+
unset KDEDIRS
|
57
59
|
|
58
60
|
# Now add the necessary directories from the recipe. If they exist.
|
59
|
-
for path in "<%= settings['KOFFICE_PREFIX'] %>" "<%= settings['KDEDEVEL_PREFIX'] %>" "<%= settings['KDE_PREFIX'] %>" "<%= settings['KDESUPPORT_PREFIX'] %>" ; do
|
61
|
+
for path in "<%= settings['QT_PREFIX'] %>" "<%= settings['KOFFICE_PREFIX'] %>" "<%= settings['KDEDEVEL_PREFIX'] %>" "<%= settings['KDE_PREFIX'] %>" "<%= settings['KDESUPPORT_PREFIX'] %>" ; do
|
60
62
|
if test -d $path ; then
|
61
63
|
path_add "CMAKE_PREFIX_PATH" $path;
|
62
64
|
path_add "KDEDIRS" $path;
|
63
|
-
path_add "LD_LIBRARY_PATH" $path/lib<%= settings['LIB_SUFFIX']
|
65
|
+
path_add "LD_LIBRARY_PATH" $path/lib<%= settings['LIB_SUFFIX'] %>;
|
64
66
|
path_add "PATH" $path/bin;
|
65
67
|
path_add "PKG_CONFIG_PATH" $path/lib<%= settings['LIB_SUFFIX'] %>/pkgconfig;
|
68
|
+
path_add "PYTHONPATH" $path/lib<%= settings['LIB_SUFFIX'] %>/python<%= settings['PYTHON_VERSION'] %>/site-packages;
|
66
69
|
path_add "STRIGI_PLUGIN_PATH" $path/lib<%= settings['LIB_SUFFIX'] %>/strigi;
|
67
70
|
path_add "XDG_DATA_DIRS" $path/share;
|
68
71
|
fi
|
@@ -74,6 +77,7 @@ export KDEDIRS
|
|
74
77
|
export LD_LIBRARY_PATH
|
75
78
|
export PATH
|
76
79
|
export PKG_CONFIG_PATH
|
80
|
+
export PYTHONPATH
|
77
81
|
export STRIGI_PLUGIN_PATH
|
78
82
|
export XDG_DATA_DIRS
|
79
83
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# KDEBINDINGS
|
3
|
+
#############################################################################
|
4
|
+
environment kdebindings < kde
|
5
|
+
var PYTHON_PATH set "<%= settings['KDE_PREFIX'] %>/lib<%= settings['LIB_SUFFIX'] %>/python2.6/site_packages"
|
6
|
+
end
|
7
|
+
|
8
|
+
module kdebindings < kde
|
9
|
+
use environment kdebindings
|
10
|
+
build-system cmake
|
11
|
+
# Currently onto2vocabulary crashes for me.
|
12
|
+
option BUILD_csharp "false"
|
13
|
+
option BUILD_ruby "true"
|
14
|
+
option BUILD_python "true"
|
15
|
+
option BUILD_php "false"
|
16
|
+
option BUILD_falcon "false"
|
17
|
+
option BUILD_java "false"
|
18
|
+
option BUILD_smoke "true"
|
19
|
+
option WITH_Nepomuk "false"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,104 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# KDE
|
3
|
+
#############################################################################
|
4
|
+
environment kde < kdesupport
|
5
|
+
var CMAKE_PREFIX_PATH prepend "<%= settings['KDE_PREFIX'] %>"
|
6
|
+
var KDEDIRS prepend "<%= settings['KDE_PREFIX'] %>"
|
7
|
+
var LD_LIBRARY_PATH prepend "<%= settings['KDE_PREFIX'] %>/lib<%= settings['LIB_SUFFIX'] %>"
|
8
|
+
var MANPATH prepend "<%= settings['KDE_PREFIX'] %>/share/man"
|
9
|
+
var PATH prepend "<%= settings['KDE_PREFIX'] %>/bin"
|
10
|
+
var PKG_CONFIG_PATH prepend "<%= settings['KDE_PREFIX'] %>/lib<%= settings['LIB_SUFFIX'] %>/pkgconfig"
|
11
|
+
var STRIGI_PLUGIN_PATH prepend "<%= settings['KDE_PREFIX'] %>/lib<%= settings['LIB_SUFFIX'] %>/strigi"
|
12
|
+
var XDG_DATA_DIRS prepend "<%= settings['KDE_PREFIX'] %>"
|
13
|
+
end
|
14
|
+
|
15
|
+
module kde TEMPLATE
|
16
|
+
build-prefix "<%= settings['BUILD_DIR'] %>"
|
17
|
+
install-prefix "<%= settings['KDE_PREFIX'] %>"
|
18
|
+
use build-system cmake
|
19
|
+
use environment kde
|
20
|
+
use repository kde-core
|
21
|
+
use vcs git-svn
|
22
|
+
end
|
23
|
+
|
24
|
+
module kde-core < kde TEMPLATE
|
25
|
+
end
|
26
|
+
|
27
|
+
#############################################################################
|
28
|
+
# KDELIBS
|
29
|
+
#############################################################################
|
30
|
+
module "kdesupport/oxygen-icons" < kdesupport
|
31
|
+
# It's part part of KDE and it's not. That's why i put it here for now.
|
32
|
+
# Don't use a KDE/ prefix before it is not necessary to update it very
|
33
|
+
# often.
|
34
|
+
remote-path "oxygen-icons"
|
35
|
+
use repository "kde-icons"
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
module "KDE/kdelibs" < "kde-core"
|
40
|
+
# We use the default environment here to make sure kdelibs is able to
|
41
|
+
# bootstrap
|
42
|
+
use environment kdesupport
|
43
|
+
remote-path "kdelibs"
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
feature webkit
|
48
|
+
short description "WebKit related modules"
|
49
|
+
|
50
|
+
module "KDE/kwebkitpart" < kde
|
51
|
+
use repository kde
|
52
|
+
remote-path "extragear/base/kwebkitpart"
|
53
|
+
end
|
54
|
+
|
55
|
+
end # feature webkit
|
56
|
+
|
57
|
+
module "KDE/kdepimlibs" < "kde-core"
|
58
|
+
remote-path "kdepimlibs"
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
#############################################################################
|
63
|
+
# PyKDE4
|
64
|
+
#############################################################################
|
65
|
+
# The module is needed for plasmas python support.
|
66
|
+
|
67
|
+
feature "scripting"
|
68
|
+
|
69
|
+
feature "python"
|
70
|
+
|
71
|
+
module "KDE/pykde4" < kde
|
72
|
+
remote-path "kdebindings/python/pykde4"
|
73
|
+
build-system cmake
|
74
|
+
# option BUILD_Nepomuk "false"
|
75
|
+
option PYTHON_LIBS_WITH_KDE_LIBS "true"
|
76
|
+
option SIP_DEFAULT_SIP_DIR "<%= settings['KDE_PREFIX'] %>/share/sip"
|
77
|
+
option SIP_INCLUDES "<%= settings['SIP_INCLUDES'] %>"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
#############################################################################
|
85
|
+
# KDEBASE/...
|
86
|
+
#############################################################################
|
87
|
+
module "KDE/kdebase/runtime" < "kde-core"
|
88
|
+
remote-path "kdebase/runtime"
|
89
|
+
end
|
90
|
+
|
91
|
+
module "KDE/kdebase/workspace" < "kde-core"
|
92
|
+
remote-path "kdebase/workspace"
|
93
|
+
build-system cmake
|
94
|
+
option PYTHON_LIBS_WITH_KDE_LIBS "true"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
module "KDE/kdebase/apps" < "kde-core"
|
99
|
+
remote-path "kdebase/apps"
|
100
|
+
end
|
101
|
+
|
102
|
+
module "KDE/kdepim" < kde
|
103
|
+
remote-path "kdepim"
|
104
|
+
end
|