Skip to content

Commit 71bcfdd

Browse files
author
qount25
committed
Rename & package versioned files into a DEB package, assign proper package name
1 parent f2339f8 commit 71bcfdd

File tree

9 files changed

+185
-17
lines changed

9 files changed

+185
-17
lines changed

lib/pgpm/deb/builder.rb

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def build
1717
pull_image
1818
run_build
1919
copy_build_from_container
20-
cleanup
20+
#cleanup
2121
end
2222

2323
private
@@ -59,6 +59,11 @@ def prepare
5959
end
6060
end
6161

62+
["prepare_artifacts.sh", "pg_config.sh"].each do |fn|
63+
script_fn = File.expand_path("#{__dir__}/scripts/#{fn}")
64+
FileUtils.cp script_fn, "#{@pgpm_dir}/source/"
65+
end
66+
6267
end
6368

6469
def pull_image
@@ -90,8 +95,8 @@ def run_build
9095
create_opts += " --privileged --tmpfs /tmp"
9196
create_opts += " --name #{@container_name} #{image_name}"
9297

93-
dsc_fn = "#{@spec.package.name}-#{@spec.package.version.to_s}_0-1.dsc"
94-
deb_fn = "#{@spec.full_pkg_name}.deb"
98+
dsc_fn = "#{@spec.deb_pkg_name}_0-1.dsc"
99+
deb_fn = "#{@spec.deb_pkg_name}_0-1_#{@spec.arch}.deb"
95100

96101
puts " Creating and starting container #{@container_name} & running pbuilder"
97102
system("podman create -it #{create_opts}")
@@ -126,9 +131,10 @@ def run_build
126131
end
127132

128133
def copy_build_from_container
129-
puts "Moving .deb file from podman container into current directory..."
130-
deb_fn = "#{@spec.full_pkg_name}.deb"
131-
FileUtils.mv("#{@pgpm_dir}/out/#{deb_fn}", Dir.pwd)
134+
puts "Copying .deb file from podman container into current directory..."
135+
deb_fn = "#{@spec.deb_pkg_name}_0-1_#{@spec.arch}.deb"
136+
deb_copy_fn = "#{@spec.deb_pkg_name}_#{@spec.arch}.deb"
137+
FileUtils.cp("#{@pgpm_dir}/out/#{deb_fn}", "#{Dir.pwd}/#{deb_copy_fn}")
132138
end
133139

134140
def cleanup
@@ -158,10 +164,6 @@ def selinux_enabled?
158164
system("sestatus | grep 'SELinux status' | grep -o 'enabled'")
159165
end
160166

161-
def safe_package_name
162-
@spec.package.name.gsub(%r{/}, "__")
163-
end
164-
165167
end
166168
end
167169
end

lib/pgpm/deb/scripts/pg_config.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#! /usr/bin/env bash
2+
3+
# Ensure PG_CONFIG is set
4+
if [[ -z "$PG_CONFIG" ]]; then
5+
echo "Error: PG_CONFIG is not set."
6+
exit 1
7+
fi
8+
9+
# Wrapper function for pg_config
10+
pg_config_wrapper() {
11+
"$PG_CONFIG" "$@" | while read -r line; do
12+
if [[ -n "$PGPM_REDIRECT_TO_BUILDROOT" && -f "$line" || -d "$line" ]]; then
13+
echo "$PGPM_BUILDROOT$line"
14+
else
15+
echo "$line"
16+
fi
17+
done
18+
}
19+
20+
# Call the wrapper function with the arguments passed to the script
21+
pg_config_wrapper "$@"
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
#! /usr/bin/env bash
2+
3+
#set -xe
4+
5+
new_extension_so=
6+
7+
echo $PGPM_BUILDROOT
8+
echo $PGPM_EXTENSION_NAME
9+
echo $PGPM_EXTENSION_VERSION
10+
PG_CONFIG="pg_config"
11+
echo "pg_config: $(which pg_config)"
12+
echo "pg_config sharedir: $(pg_config --sharedir)"
13+
14+
for file in $(find $PGPM_BUILDROOT -name '*.so'); do
15+
filename=$(basename "$file")
16+
if [[ "$filename" == "${PGPM_EXTENSION_NAME}.so" ]]; then
17+
extension_so=$filename
18+
dir=$(dirname "$file")
19+
extension_dirname=${dir#"$PGPM_BUILDROOT"}
20+
new_extension_so=$PGPM_EXTENSION_NAME--$PGPM_EXTENSION_VERSION.so
21+
break
22+
fi
23+
done
24+
25+
extdir=$PGPM_BUILDDEB$($PG_CONFIG --sharedir)/extension
26+
27+
# control files
28+
default_control=$extdir/$PGPM_EXTENSION_NAME.control
29+
versioned_control=$extdir/$PGPM_EXTENSION_NAME--$PGPM_EXTENSION_VERSION.control
30+
controls=("$default_control" "$versioned_control")
31+
32+
echo "PWD: $(pwd)"
33+
34+
echo "----------------------"
35+
echo "extension_dirname: $extension_dirname"
36+
echo "new_extension_so: $new_extension_so"
37+
echo "default_control: $default_control"
38+
echo "versioned_control: $versioned_control"
39+
echo "extension_so: $extension_so"
40+
echo "extdir: $extdir"
41+
echo "PGPM_BUILDDEB: $PGPM_BUILDDEB"
42+
echo "----------------------"
43+
44+
echo "CONTROLS CONTENTS"
45+
echo "-----------------"
46+
echo "DEFAULT CONTROL:"
47+
cat $default_control
48+
echo "\nVERSIONED CONTROL:"
49+
cat $versioned_control
50+
echo "-----------------"
51+
52+
if [[ -n "$new_extension_so" ]]; then
53+
54+
mv "$PGPM_BUILDDEB$extension_dirname/$extension_so" "$PGPM_BUILDDEB$extension_dirname/$new_extension_so"
55+
56+
echo "CHANGING EXTENSION NAME IN CONTROLS"
57+
echo "-----------------------------------"
58+
# Change the extension name in controls
59+
for control in "${controls[@]}"; do
60+
if [[ -f "$control" ]]; then
61+
echo "$control"
62+
# extension.so
63+
sed -i "s|${extension_so}'|${new_extension_so}'|g" "$control"
64+
# extension
65+
sed -i "s|${extension_so%".so"}'|${new_extension_so%".so"}'|g" "$control"
66+
fi
67+
done
68+
echo "-----------------------------------"
69+
70+
# sql files
71+
echo "SQL FILES"
72+
echo "---------"
73+
for sql_file in $(find $PGPM_BUILDDEB -name '*.sql' -type f); do
74+
echo "$sql_file"
75+
# extension.so
76+
sed -i "s|/${extension_so}'|/${new_extension_so}'|g" "$sql_file"
77+
# extension
78+
sed -i "s|/${extension_so%".so"}'|/${new_extension_so}'|g" "$sql_file"
79+
done
80+
echo "---------"
81+
82+
# bitcode
83+
84+
pkglibdir=$PGPM_BUILDDEB$($PG_CONFIG --pkglibdir)
85+
86+
bitcode_extension=$pkglibdir/bitcode/${extension_so%".so"}
87+
bitcode_index=$pkglibdir/bitcode/${extension_so%".so"}.index.bc
88+
89+
echo "BITCODE"
90+
echo "-------"
91+
if [[ -d "${bitcode_extension}" ]]; then
92+
echo "$bitcode_extension"
93+
mv "$bitcode_extension" "$pkglibdir/bitcode/${new_extension_so%".so"}"
94+
fi
95+
96+
if [[ -f "${bitcode_index}" ]]; then
97+
echo "$bitcode_index"
98+
mv "${bitcode_index}" "$pkglibdir/bitcode/${new_extension_so%".so"}.index.bc"
99+
fi
100+
echo "-------"
101+
102+
# includes
103+
includedir=$PGPM_BUILDDEB$($PG_CONFIG --includedir-server)
104+
105+
echo "INCLUDES"
106+
echo "--------"
107+
if [[ -d "${includedir}/extension/$PGPM_EXTENSION_NAME" ]]; then
108+
echo "$includedir"
109+
versioned_dir=${includedir}/extension/$PGPM_EXTENSION_NAME--$PGPM_EXTENSION_VERSION
110+
mkdir -p "$versioned_dir"
111+
mv "${includedir}/extension/$PGPM_EXTENSION_NAME" "$versioned_dir"
112+
fi
113+
echo "--------"
114+
115+
# TODO: share, docs, etc.
116+
117+
fi
118+
119+
120+
# Make sure we don't build a default control as it belongs
121+
# to another package
122+
if [[ -f "$default_control" ]]; then
123+
if [[ -f "$versioned_control" ]]; then
124+
# We don't need default control if versioned is present
125+
rm -f "$default_control"
126+
else
127+
# Default becomes versioned
128+
mv "$default_control" "$versioned_control"
129+
# Don't need default_version
130+
sed -i '/default_version/d' "$versioned_control"
131+
fi
132+
fi

lib/pgpm/deb/spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ def source_version
3131
@package.version.to_s
3232
end
3333

34-
def full_pkg_name
35-
"#{@package.name}-#{@package.version.to_s}_0-1_#{arch}"
34+
def deb_pkg_name
35+
"#{@package.name}+#{@package.version.to_s}-pg#{@package.postgres_major_version}"
3636
end
3737

3838
def arch

lib/pgpm/deb/templates/changelog.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<%= self.package.name %>-<%= source_version %> (0-1) UNRELEASED; urgency=medium
1+
<%= deb_pkg_name %> (0-1) UNRELEASED; urgency=medium
22

33
* Version <%= source_version %> package release.
44

lib/pgpm/deb/templates/control.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Source: <%= self.package.name %>-<%= source_version %>
1+
Source: <%= deb_pkg_name %>
22
Description: <%= self.package.description %>
33
Section: libs
44
Priority: optional
@@ -7,7 +7,7 @@ Rules-Requires-Root: no
77
Build-Depends: debhelper-compat (= 13), <%= self.package.build_dependencies.join(", ") %>
88
Standards-Version: 4.6.2
99

10-
Package: <%= self.package.name %>-<%= source_version %>
10+
Package: <%= deb_pkg_name %>
1111
Depends: <%= self.package.dependencies.join(", ") %>
1212
Section: libdevel
1313
Architecture: <%= arch %>

lib/pgpm/deb/templates/copyright.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
22
Source: <url://example.com>
3-
Upstream-Name: <%= self.package.name %>-<%= self.package.name %>
3+
Upstream-Name: <%= self.package.name %>-<%= self.package.version.to_s %>
44
Upstream-Contact: <preferred name and address to reach the upstream project>
55

66
Files:

lib/pgpm/deb/templates/files.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<%= self.package.name %>-<%= source_version %>_0-1_source.buildinfo libs optional
1+
<%= deb_pkg_name %>_source.buildinfo libs optional

lib/pgpm/deb/templates/rules.erb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,21 @@
1414
# Package maintainers to append LDFLAGS.
1515
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
1616

17+
DEB_BUILDDIR ?= $(CURDIR)
1718

1819
%:
1920
dh $@
2021

22+
override_dh_install:
23+
dh_install
24+
chmod +x "$(DEB_BUILDDIR)/prepare_artifacts.sh"
25+
chmod +x "$(DEB_BUILDDIR)/pg_config.sh"
26+
find $(DEB_BUILDDIR) -type f | sort - | sed 's|^$(DEB_BUILDDIR)||' > .pgpm_before | sort
27+
export PG_CONFIG="$(DEB_BUILDDIR)/pg_config.sh"; \
28+
export PGPM_BUILDROOT="$(DEB_BUILDDIR)"; \
29+
export PGPM_EXTENSION_NAME="<%= self.package.extension_name %>"; \
30+
export PGPM_EXTENSION_VERSION="<%= self.package.version %>"; \
31+
export PGPM_BUILDDEB="$(DEB_BUILDDIR)/debian/<%= deb_pkg_name %>"; \
32+
./prepare_artifacts.sh
33+
2134
<%= self.package.build_info[:rules] %>

0 commit comments

Comments
 (0)