ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ozone/mgar/pkg/get/mkcatalog.sh
Revision: 8
Committed: Sat Jun 20 19:10:30 2026 UTC (4 weeks, 2 days ago) by operz
Content type: application/x-sh
File size: 2831 byte(s)
Log Message:
mkcatalog.sh: use pipe as dep separator (pkgutil expects | not ,)

File Contents

# Content
1 #!/usr/bin/bash
2 # Generate pkgutil catalog and descriptions from .pkg.gz files in EXPORTDIR
3 # Writes catalog + descriptions to OUTDIR.
4
5 EXPORTDIR=/export/home/ai/ozsw-export
6 OUTDIR=/tmp/ozsw-catalog.$$
7 TMPBASE=$OUTDIR/work
8
9 mkdir -p "$OUTDIR" "$TMPBASE"
10 > "$OUTDIR/catalog"
11 > "$OUTDIR/descriptions"
12
13 # Deps to strip: GAR artifacts that don't exist in our repo
14 STRIP_DEPS="CSWcas-dictconf OZSWcommon"
15
16 for pkgfile in "$EXPORTDIR"/*.pkg.gz; do
17 filename=$(basename "$pkgfile")
18 echo "Processing $filename ..." >&2
19
20 # File size and md5
21 size=$(wc -c < "$pkgfile" | tr -d ' \t')
22 md5=$(/opt/ozsw/bin/openssl md5 < "$pkgfile" | awk '{print $NF}')
23
24 # Extract to temp dir
25 pkgtmpdir="$TMPBASE/pkg"
26 rm -rf "$pkgtmpdir"
27 mkdir -p "$pkgtmpdir/stream" "$pkgtmpdir/root"
28
29 gunzip -c "$pkgfile" > "$pkgtmpdir/stream/pkg.pkg"
30 pkgtrans "$pkgtmpdir/stream/pkg.pkg" "$pkgtmpdir/root" all 2>/dev/null || {
31 echo " WARNING: pkgtrans failed for $filename" >&2
32 rm -rf "$pkgtmpdir"
33 continue
34 }
35
36 pkgdir=$(ls -d "$pkgtmpdir/root"/OZSW* 2>/dev/null | head -1)
37 if [ -z "$pkgdir" ]; then
38 echo " WARNING: no OZSW package dir in $filename, skipping" >&2
39 rm -rf "$pkgtmpdir"
40 continue
41 fi
42 pkgname=$(basename "$pkgdir")
43
44 # Common name from OPENCSW_CATALOGNAME (reliable, no spaces)
45 common=$(grep '^OPENCSW_CATALOGNAME=' "$pkgdir/pkginfo" | cut -d= -f2-)
46 if [ -z "$common" ]; then
47 # Fallback: strip OZSW prefix and lowercase
48 common=$(echo "$pkgname" | gsed 's/^OZSW//' | tr '[:upper:]' '[:lower:]')
49 fi
50
51 # Version
52 version=$(grep '^VERSION=' "$pkgdir/pkginfo" | cut -d= -f2-)
53
54 # Category (first word)
55 category=$(grep '^CATEGORY=' "$pkgdir/pkginfo" | cut -d= -f2- | awk '{print $1}')
56 [ -z "$category" ] && category="application"
57
58 # Description: NAME field is "catalogname - long description"
59 namefield=$(grep '^NAME=' "$pkgdir/pkginfo" | cut -d= -f2-)
60 desc=$(echo "$namefield" | gsed 's/^[^ ]* - //')
61
62 # Dependencies: P lines in install/depend, filter out GAR artifacts
63 deps="none"
64 if [ -f "$pkgdir/install/depend" ]; then
65 deplist=$(grep '^P ' "$pkgdir/install/depend" 2>/dev/null | awk '{print $2}')
66 for strip in $STRIP_DEPS; do
67 deplist=$(echo "$deplist" | grep -v "^${strip}$")
68 done
69 deplist=$(echo "$deplist" | tr '\n' '|' | gsed 's/|$//')
70 [ -n "$deplist" ] && deps="$deplist"
71 fi
72
73 echo "$common $version $pkgname $filename $md5 $size $deps $category" >> "$OUTDIR/catalog"
74 echo "$pkgname - $desc" >> "$OUTDIR/descriptions"
75
76 rm -rf "$pkgtmpdir"
77 done
78
79 rm -rf "$TMPBASE"
80
81 echo "" >&2
82 echo "Generated $(wc -l < $OUTDIR/catalog) catalog entries." >&2
83 echo "Output: $OUTDIR/catalog $OUTDIR/descriptions" >&2
84 echo "$OUTDIR"

Properties

Name Value
svn:executable *