ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ozone/mgar/pkg/get/build_get.py
Revision: 6
Committed: Sat Jun 20 18:48:08 2026 UTC (4 weeks, 2 days ago) by operz
Content type: text/x-python
File size: 3207 byte(s)
Log Message:
Add get bootstrap package build script

File Contents

# Content
1 #!/usr/bin/python
2 """
3 Build the OZSWget bootstrap package.
4 Creates a raw SVR4 stream package at /tmp/ozsw-get.pkg suitable for:
5 pkgadd -d http://operz.coralcmd.net/pub/osol/ozone/get
6 """
7 import os, subprocess, shutil, time
8
9 PKGNAME = "OZSWget"
10 VERSION = "1.0"
11 MIRROR = "http://operz.coralcmd.net/pub/osol/ozone/pkg"
12 PKGUTIL_SRC = "/export/home/ai/src/ozone/ozone/mgar/pkgutil/pkgutil"
13 BUILD = "/tmp/ozsw-get-build"
14 ROOT = BUILD + "/root"
15 SPOOL = BUILD + "/spool"
16 OUT = "/tmp/ozsw-get.pkg"
17
18 # --- clean slate ---
19 if os.path.exists(BUILD):
20 shutil.rmtree(BUILD)
21 for d in (ROOT+"/opt/ozsw/bin", ROOT+"/opt/ozsw/etc",
22 BUILD+"/install", SPOOL):
23 os.makedirs(d)
24
25 # --- pkgutil binary ---
26 shutil.copy(PKGUTIL_SRC, ROOT+"/opt/ozsw/bin/pkgutil")
27 os.chmod(ROOT+"/opt/ozsw/bin/pkgutil", 0755)
28
29 # --- pkgutil.conf ---
30 open(ROOT+"/opt/ozsw/etc/pkgutil.conf", "w").write(
31 "mirror=%s\n" % MIRROR)
32
33 # --- postinstall script ---
34 postinstall = r"""#!/bin/sh
35 # Create pkgutil working directory and admin file
36 mkdir -p /var/opt/ozsw/pkgutil
37
38 cat > /var/opt/ozsw/pkgutil/admin << 'ENDADMIN'
39 mail=
40 instance=overwrite
41 partial=nocheck
42 runlevel=nocheck
43 idepend=nocheck
44 rdepend=nocheck
45 space=nocheck
46 setuid=nocheck
47 conflict=nocheck
48 action=nocheck
49 networktimeout=60
50 networkretries=3
51 authentication=quit
52 keystore=/var/sadm/security
53 proxy=
54 basedir=default
55 ENDADMIN
56
57 echo ""
58 echo "========================================================"
59 echo " OZSW pkgutil bootstrap installed successfully."
60 echo ""
61 echo " Add /opt/ozsw/bin to your PATH, then:"
62 echo " sudo pkgutil -U # fetch package catalog"
63 echo " sudo pkgutil -a # list available packages"
64 echo " sudo pkgutil -i NAME # install a package"
65 echo "========================================================"
66 """
67 pi_path = BUILD + "/install/postinstall"
68 open(pi_path, "w").write(postinstall)
69 os.chmod(pi_path, 0755)
70
71 # --- pkginfo ---
72 pstamp = time.strftime("%Y%m%d%H%M%S")
73 open(BUILD+"/pkginfo", "w").write("""\
74 PKG=%s
75 NAME=get - OZSW bootstrap installer
76 ARCH=i386
77 VERSION=%s
78 BASEDIR=/
79 CATEGORY=application
80 VENDOR=http://operz.coralcmd.net/ packaged for OZSW
81 EMAIL=operz@coralcmd.net
82 PSTAMP=%s
83 CLASSES=none
84 OPENCSW_CATALOGNAME=get
85 DESC=Bootstraps OZSW: installs pkgutil and configures the package mirror
86 """ % (PKGNAME, VERSION, pstamp))
87
88 # --- prototype ---
89 proto = """\
90 i pkginfo=pkginfo
91 i postinstall=install/postinstall
92 d none opt/ozsw 0755 root bin
93 d none opt/ozsw/bin 0755 root bin
94 d none opt/ozsw/etc 0755 root bin
95 f none opt/ozsw/bin/pkgutil 0755 root bin
96 f none opt/ozsw/etc/pkgutil.conf 0644 root bin
97 """
98 open(BUILD+"/prototype", "w").write(proto)
99
100 # --- pkgmk: build package into spool directory ---
101 ret = subprocess.call([
102 "pkgmk", "-o",
103 "-r", ROOT,
104 "-d", SPOOL,
105 "-f", BUILD+"/prototype",
106 "-p", pstamp,
107 ])
108 if ret != 0:
109 raise SystemExit("pkgmk failed with code %d" % ret)
110
111 # --- pkgtrans: convert to stream format (uncompressed) ---
112 if os.path.exists(OUT):
113 os.unlink(OUT)
114 ret = subprocess.call([
115 "pkgtrans", "-s", SPOOL, OUT, PKGNAME
116 ])
117 if ret != 0:
118 raise SystemExit("pkgtrans failed with code %d" % ret)
119
120 print "Built: %s (%d bytes)" % (OUT, os.path.getsize(OUT))