Skip to content

Commit 0b2dd51

Browse files
author
qount25
committed
Pgpm::Deb::Builder build with pbuilder, then move .deb file to the host
1 parent 11cc4de commit 0b2dd51

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

lib/pgpm/deb/builder.rb

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ def build
1515
prepare
1616
generate_deb_src_files
1717
create_container
18-
#run_pbuilder
19-
#copy_build_from_container
18+
run_pbuilder
19+
copy_build_from_container
2020
cleanup
2121
end
2222

@@ -45,7 +45,7 @@ def create_container
4545

4646
create_opts = " -v #{@pgpm_dir}:/root/pgpm"
4747
create_opts += ":z" if selinux_enabled?
48-
create_opts += " --privileged"
48+
create_opts += " --privileged --annotation run.oci.keep_original_groups=1"
4949
create_opts += " --name #{@container_name} #{@image_name}"
5050

5151
puts " Creating and starting container #{@container_name}"
@@ -55,18 +55,31 @@ def create_container
5555

5656
def generate_deb_src_files
5757
puts "Generating debian files..."
58-
Dir.mkdir "#{@pgpm_dir}/debian"
58+
Dir.mkdir "#{@pgpm_dir}/source/debian"
5959
[:changelog, :control, :copyright, :files, :rules].each do |f|
60-
puts " -> #{@pgpm_dir}/debian/#{f}"
61-
File.write "#{@pgpm_dir}/debian/#{f}", @spec.generate(f)
60+
puts " -> #{@pgpm_dir}/source/debian/#{f}"
61+
File.write "#{@pgpm_dir}/source/debian/#{f}", @spec.generate(f)
6262
end
63-
File.chmod 0740, "#{@pgpm_dir}/debian/rules" # rules file must be executable
63+
File.chmod 0740, "#{@pgpm_dir}/source/debian/rules" # rules file must be executable
6464
end
6565

6666
def run_pbuilder
67+
puts "Building a .deb package with pbuilder..."
68+
cmd_pref = "podman exec -w /root/pgpm/source #{@container_name} "
69+
system("#{cmd_pref} dpkg-buildpackage --build=source")
70+
exit(1) if $?.to_i > 0
71+
dsc_fn = "#{@spec.package.name}-#{@spec.package.version.to_s}_0-1.dsc"
72+
system("#{cmd_pref} fakeroot pbuilder build ../#{dsc_fn}")
73+
exit(1) if $?.to_i > 0
6774
end
6875

6976
def copy_build_from_container
77+
puts "Moving .deb file from podman container into current directory..."
78+
cmd_pref = "podman exec #{@container_name} "
79+
arch = "amd64"
80+
deb_fn = "#{@spec.full_pkg_name}.deb"
81+
system("#{cmd_pref} mv /var/cache/pbuilder/result/#{deb_fn} /root/pgpm/out/")
82+
FileUtils.mv("#{@pgpm_dir}/out/#{deb_fn}", Dir.pwd)
7083
end
7184

7285
def run_container_command(cmd)

lib/pgpm/deb/spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ def source_name
5353
@package.name
5454
end
5555

56+
def full_pkg_name
57+
"#{@package.name}-#{@package.version.to_s}_0-1_#{arch}"
58+
end
59+
5660
def deb_version
5761
"0.1.0"
5862
end

lib/pgpm/deb/templates/control.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Rules-Requires-Root: no
66
Build-Depends: debhelper-compat (= 13), <%= build_deps.join(", ") %>
77
Standards-Version: 4.6.2
88

9-
Package: <%= source_name %>-<%= deb_version %>
9+
Package: <%= source_name %>-<%= source_version %>
1010
Depends: <%= deps.join(", ") %>
1111
Section: libdevel
1212
Architecture: <%= arch %>

0 commit comments

Comments
 (0)