Class: PkgForge::DSL::Build

Inherits:
Base
  • Object
show all
Defined in:
lib/pkgforge/components/dirs.rb,
lib/pkgforge/base.rb,
lib/pkgforge/components/build.rb,
lib/pkgforge/components/patch.rb,
lib/pkgforge/components/configure.rb

Overview

Add configure flag options to Build DSL

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from PkgForge::Base

Instance Method Details

#configure(env = {}) ⇒ Object



44
45
46
# File 'lib/pkgforge/components/build.rb', line 44

def configure(env = {})
  run ['./configure'] + configure_flag_strings, default_env.merge(env)
end

#configure_flag_stringsObject



28
29
30
31
32
# File 'lib/pkgforge/components/configure.rb', line 28

def configure_flag_strings
  @forge.configure_flags.map do |flag, value|
    "--#{flag}#{'=' if value}#{value}"
  end
end

#cp(src, dest = nil) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/pkgforge/components/build.rb', line 67

def cp(src, dest = nil)
  dest ||= src
  dest = File.join(releasedir, dest)
  src = File.join(tmpdir(:build), src)
  dest_dir = File.dirname dest
  FileUtils.mkdir_p dest_dir
  FileUtils.cp_r src, dest
  nil
end

#default_envObject



78
79
80
81
82
83
84
# File 'lib/pkgforge/components/build.rb', line 78

def default_env
  {
    'CC' => 'musl-gcc',
    'CFLAGS' => @forge.cflags.join(' '),
    'LIBS' => @forge.libs.join(' ')
  }
end

#dep(package) ⇒ Object



50
51
52
# File 'lib/pkgforge/components/dirs.rb', line 50

def dep(package)
  @forge.tmpdir(package.to_sym)
end

#install(env = {}) ⇒ Object



54
55
56
# File 'lib/pkgforge/components/build.rb', line 54

def install(env = {})
  run "make DESTDIR=#{@forge.releasedir} install", default_env.merge(env)
end

#make(env = {}) ⇒ Object



49
50
51
# File 'lib/pkgforge/components/build.rb', line 49

def make(env = {})
  run 'make', default_env.merge(env)
end

#patch(file) ⇒ Object



41
42
43
# File 'lib/pkgforge/components/patch.rb', line 41

def patch(file)
  @forge.run_patch(file)
end

#releasedirObject



45
46
47
# File 'lib/pkgforge/components/dirs.rb', line 45

def releasedir
  @forge.tmpdir(:release)
end

#rm(paths) ⇒ Object



59
60
61
62
63
64
# File 'lib/pkgforge/components/build.rb', line 59

def rm(paths)
  paths = [paths] if paths.is_a? String
  paths.map! { |x| File.join(@forge.releasedir, x) }
  FileUtils.rm_r paths
  nil
end

#run(*args) ⇒ Object



39
40
41
# File 'lib/pkgforge/components/build.rb', line 39

def run(*args)
  @forge.run(*args)
end

#tmpdir(id) ⇒ Object



55
56
57
# File 'lib/pkgforge/components/dirs.rb', line 55

def tmpdir(id)
  @forge.tmpdir(id)
end