@@ -6,14 +6,14 @@ class Builder
6
6
7
7
def initialize ( spec )
8
8
@spec = spec
9
- @container_name = "pgpm-debian12_build -#{ Time . now . to_i } _#{ rand ( 10000 ) } "
9
+ @container_name = "pgpm-debian_build -#{ Time . now . to_i } _#{ rand ( 10000 ) } "
10
10
end
11
11
12
12
def build
13
13
prepare
14
14
generate_deb_src_files
15
- create_container
16
- run_pbuilder
15
+ pull_image
16
+ run_build
17
17
copy_build_from_container
18
18
cleanup
19
19
end
@@ -35,25 +35,16 @@ def prepare
35
35
FileUtils . copy_entry @spec . package . source . to_s , "#{ @pgpm_dir } /source/"
36
36
end
37
37
38
- def create_container
39
- puts "Creating a podman container ..."
38
+ def pull_image
39
+ puts "Checking if podman image exists ..."
40
40
# Check if image exists
41
41
system ( "podman image exists #{ image_name } " )
42
42
if $?. to_i > 0 # image doesn't exist -- pull image from a remote repository
43
- puts " Pulling image #{ image_name } ..."
43
+ puts " No. Pulling image #{ image_name } ..."
44
44
system ( "podman pull quay.io/qount25/pgpm-debian12" )
45
45
else
46
- puts " Image #{ image_name } already exists! OK"
46
+ puts " Yes, image #{ image_name } already exists! OK"
47
47
end
48
-
49
- create_opts = " -v #{ @pgpm_dir } :/root/pgpm"
50
- create_opts += ":z" if selinux_enabled?
51
- create_opts += " --privileged --annotation run.oci.keep_original_groups=1"
52
- create_opts += " --name #{ @container_name } #{ image_name } "
53
-
54
- puts " Creating and starting container #{ @container_name } "
55
- puts " podman run -dti #{ create_opts } "
56
- system ( "podman run -dti #{ create_opts } " )
57
48
end
58
49
59
50
def generate_deb_src_files
@@ -66,27 +57,33 @@ def generate_deb_src_files
66
57
File . chmod 0740 , "#{ @pgpm_dir } /source/debian/rules" # rules file must be executable
67
58
end
68
59
69
- def run_pbuilder
70
- puts "Building a .deb package with pbuilder..."
71
- cmd_pref = "podman exec -w /root/pgpm/source #{ @container_name } "
72
- system ( "#{ cmd_pref } dpkg-buildpackage --build=source" )
73
- exit ( 1 ) if $?. to_i > 0
60
+ def run_build
61
+ # podman run options
62
+ create_opts = " -v #{ @pgpm_dir } :/root/pgpm"
63
+ create_opts += ":z" if selinux_enabled?
64
+ create_opts += " --privileged --annotation run.oci.keep_original_groups=1"
65
+ create_opts += " --name #{ @container_name } #{ image_name } "
66
+
74
67
dsc_fn = "#{ @spec . package . name } -#{ @spec . package . version . to_s } _0-1.dsc"
75
- system ( "#{ cmd_pref } fakeroot pbuilder build ../#{ dsc_fn } " )
68
+ deb_fn = "#{ @spec . full_pkg_name } .deb"
69
+
70
+ # commands to run
71
+ cmds = " /bin/bash -c 'cd /root/pgpm/source"
72
+ cmds += " && dpkg-buildpackage --build=source"
73
+ cmds += " && fakeroot pbuilder build ../#{ dsc_fn } "
74
+ cmds += " && mv /var/cache/pbuilder/result/#{ deb_fn } /root/pgpm/out/'"
75
+
76
+ puts " Creating and starting container #{ @container_name } & running pbuilder"
77
+ system ( "podman run -it #{ create_opts } #{ cmds } " )
76
78
exit ( 1 ) if $?. to_i > 0
77
79
end
78
80
79
81
def copy_build_from_container
80
82
puts "Moving .deb file from podman container into current directory..."
81
- cmd_pref = "podman exec #{ @container_name } "
82
83
deb_fn = "#{ @spec . full_pkg_name } .deb"
83
- system ( "#{ cmd_pref } mv /var/cache/pbuilder/result/#{ deb_fn } /root/pgpm/out/" )
84
84
FileUtils . mv ( "#{ @pgpm_dir } /out/#{ deb_fn } " , Dir . pwd )
85
85
end
86
86
87
- def run_container_command ( cmd )
88
- end
89
-
90
87
def cleanup
91
88
puts "Cleaning up..."
92
89
0 commit comments