ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ozone/mgar/pkg/get/build_get.py
Revision: 36
Committed: Mon Jun 22 20:12:19 2026 UTC (4 weeks ago) by operz
Content type: text/x-python
File size: 3165 byte(s)
Log Message:
nimbus: new GTK3 theme package; basilisk: add LD_LIBRARY_PATH wrapper, SPKG_CLASSES, OZSWatkbridge dep; get: update mirror to pkg.osol.space, fix Python 3 compat

File Contents

# User Rev Content
1 operz 6 #!/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 operz 36 pkgadd -d http://pkg.osol.space/get
6 operz 6 """
7     import os, subprocess, shutil, time
8    
9     PKGNAME = "OZSWget"
10     VERSION = "1.0"
11 operz 36 MIRROR = "http://pkg.osol.space/"
12 operz 6 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 operz 36 os.chmod(ROOT+"/opt/ozsw/bin/pkgutil", 0o755)
28 operz 6
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 operz 36 os.chmod(pi_path, 0o755)
70 operz 6
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 operz 36 VENDOR=http://pkg.osol.space/ packaged for OZSW
81 operz 6 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 operz 36 print("Built: %s (%d bytes)" % (OUT, os.path.getsize(OUT)))