Skip to content

Commit b3cde22

Browse files
committed
xbps stuff
1 parent b4570e4 commit b3cde22

File tree

4 files changed

+54
-136
lines changed

4 files changed

+54
-136
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ DESTDIR=
77

88
.DEFAULT: all
99

10+
ARCH=x86_64
11+
1012
install:
1113
install -Dm755 ./iglu.sh $(DESTDIR)$(PREFIX)/sbin/iglu
1214
install -Dm755 ./iglupkg.sh $(DESTDIR)$(PREFIX)/bin/iglupkg
15+
install -Dm644 ./mirror.list $(DESTDIR)/etc/mirror.list

iglu.sh

Lines changed: 41 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,141 +1,54 @@
1-
#!/bin/sh
1+
#!/bin/sh -e
22
# usage: iglu [ add | del | has ] <pkg>
3-
#
4-
# WONTFIX:
5-
# - circular deps shall not be handled
6-
7-
set -e
8-
9-
usage() {
10-
if [ ! -z "$1" ]; then
11-
echo "FATAL: $@"
12-
fi
13-
echo "usage: $(basename $0) [add | del | has | b | ba] <pkg>"
14-
echo "version: 0.2.0"
15-
exit 1
16-
}
173

184
fatal() {
19-
echo "ERROR: $@"
5+
printf "ERROR: %s\n" "$@"
206
exit 1
217
}
228

239
warn() {
24-
echo "WARNING: $@"
25-
}
26-
27-
chop_fs() {
28-
sed -n '/\[fs\]/,/\[backup\]/{/\[fs\]\|\[backup\]/!p}' "$1" \
29-
| awk '{print length, $0}' | sort -rn | cut -d' ' -f2-
10+
printf "WARNING: %s\n" "$@"
3011
}
3112

32-
continue_interactive() {
33-
printf '%s' "Do you wish to proceed?: "
34-
read yn
35-
case $yn in
36-
[Yy]* ) echo "Proceeding";;
37-
[Nn]* ) exit;;
38-
* ) exit;;
39-
esac
40-
}
41-
42-
remove() {
43-
set +e
44-
rm -f "$@" 2> /dev/null
45-
while shift 2> /dev/null; do
46-
if [ -d "/$1" ]; then
47-
rmdir "/$1" 2> /dev/null
48-
elif [ -f "/$1" ]; then
49-
rm -f "/$1" 2> /dev/null
50-
fi
51-
done
52-
set -e
53-
}
54-
55-
assert_deps() {
56-
for dep in $(grep '^deps=' "$1" | cut -d'=' -f2- | tr ':' '\n'); do
57-
[ -f "/usr/share/iglupkg/$dep" ] || fatal "Missing dep $dep"
58-
done
59-
}
60-
61-
CMD=$1
62-
PKG=$2
63-
64-
[ -z "$1" ] && usage
65-
66-
root_req() {
67-
[ $(id -u) -eq 0 ] || fatal "root permissions needed"
68-
}
69-
70-
has() {
71-
while [ ! -z "$1" ]; do
72-
>&2 echo "checking dep $1"
73-
[ -f "/usr/share/iglupkg/$1" ]
74-
shift
75-
done
76-
}
77-
78-
iglupkg_check() {
79-
if ! command -v iglupkg > /dev/null 2>&1; then
80-
echo "iglupkg is missing??!!"
81-
exit 1
13+
usage() {
14+
if [ ! -z "$1" ]; then
15+
fatal "$@"
8216
fi
17+
printf "usage: %s [add | del | has] <pkg>\n" $(basename "$0")
18+
printf "version: 0.3.0\n"
19+
exit 1
8320
}
8421

85-
86-
if [ "$CMD" = "add" ]; then
87-
root_req
88-
META_PATH=$(tar -I zstd -tf "$PKG" | grep 'usr/share/iglupkg/' | tail -n1)
89-
PKGNAME=$(basename "$META_PATH")
90-
91-
TMP_DIR=$(mktemp -d)
92-
tar -I zstd -C "$TMP_DIR" -xf "$PKG" "$META_PATH"
93-
assert_deps "$TMP_DIR/$META_PATH"
94-
95-
if [ -f "/$META_PATH" ]; then
96-
warn "package $PKGNAME already installed. upgrading ..."
97-
98-
chop_fs "$TMP_DIR/$META_PATH" > "$TMP_DIR/new"
99-
chop_fs "/$META_PATH" > "$TMP_DIR/old"
100-
101-
102-
warn "removing duplicate files ..."
103-
TO_REMOVE=$(diff -u "$TMP_DIR/old" "$TMP_DIR/new" | grep -v '^---' | grep -E '^\-' | cut -d'-' -f2- | awk '{ print "/"$1 }')
104-
105-
[ -z "$TO_REMOVE" ] || warn "will remove $TO_REMOVE"
106-
continue_interactive
107-
108-
remove $TO_REMOVE
109-
else
110-
warn "installing $PKGNAME ..."
111-
continue_interactive
112-
fi
113-
tar -I zstd -C / -xf "$PKG"
114-
rm -rf "$TMP_DIR"
115-
elif [ "$CMD" = "del" ]; then
116-
root_req
117-
META_PATH="/usr/share/iglupkg/$PKG"
118-
[ -f "$META_PATH" ] || fatal "package $PKG not installed"
119-
TO_REMOVE=$(chop_fs $META_PATH | awk '{ print "/"$1 }')
120-
[ -z "$TO_REMOVE" ] || warn "will remove $TO_REMOVE"
121-
continue_interactive
122-
123-
remove $TO_REMOVE
124-
elif [ "$CMD" = "has" ]; then
125-
shift
126-
has $@
127-
elif [ "$CMD" = "b" ]; then
128-
#BUILD
129-
iglupkg_check
130-
iglupkg || exit 1
131-
elif [ "$CMD" = "ba" ]; then
132-
#BUILD INSTALL
133-
iglupkg_check
134-
iglupkg || exit 1
135-
cd out/
136-
for pkg in *.tar.*; do
137-
iglu add "$pkg"
138-
done
139-
else
140-
usage "unknown command $CMD"
22+
if [ -z "$1" ]
23+
then
24+
usage
14125
fi
26+
27+
case "$1" in
28+
add)
29+
case "$2" in
30+
*.xbps)
31+
REPO=/var/lib/iglu
32+
cp "$2" "$REPO"
33+
cd "$REPO"
34+
rm -f *-repodata
35+
xbps-rindex -a *.xbps
36+
cd -
37+
b_name=$(basename "$2" | cut -d'.' -f1 | rev | cut -d'-' -f2- | rev)
38+
xbps-install --repository="$REPO" "$b_name" -f
39+
;;
40+
*)
41+
xbps-install "$2"
42+
;;
43+
esac
44+
;;
45+
del)
46+
xbps-remove -R "$2"
47+
;;
48+
has)
49+
xbps-query "$2"
50+
;;
51+
*)
52+
usage "unknown sub command: $1"
53+
;;
54+
esac

iglupkg.sh

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/bin/sh
2+
pkgrel=0
23
muon_base_args="-Dbuildtype=release \
34
-Dprefix=/usr \
45
-Dlibexecdir=lib \
@@ -143,9 +144,9 @@ export JOBS=$(nproc)
143144
. ./build.sh
144145

145146
if command -V iglu 2>/dev/null; then
146-
[ -z "$mkdeps" ] || iglu has $(echo $mkdeps | sed -e "s|:| |g") \
147+
[ -z "$mkdeps" ] || iglu has $mkdeps \
147148
|| fatal 'missing make dependancies'
148-
[ -z "$deps" ] || iglu has $(echo $deps | sed -e "s|$|$cross|" -e "s|:|$cross |g") \
149+
[ -z "$deps" ] || iglu has $deps \
149150
|| fatal 'missing runtime dependancies'
150151
fi
151152

@@ -202,12 +203,12 @@ _p() {
202203
install -d "$pkgdir/usr/share/iglupkg/"
203204
cd "$srcdir"
204205
_genmeta > "$pkgdir/usr/share/iglupkg/$pkgname$cross"
205-
cd "$pkgdir"
206-
if command -V zstd; then
207-
tar --owner=0 --group=0 -cf ../$pkgname$cross.$pkgver.tar.zst * -I zstd
208-
else
209-
tar --owner=0 --group=0 -cf ../$pkgname$cross.$pkgver.tar *
210-
fi
206+
all_deps="$deps:$rdeps"
207+
IFS=: set -- $all_deps
208+
n_deps=$(printf '%s\n' $@ | grep -v '>=' | awk '{printf $0">=0"}')
209+
y_deps=$(printf '%s\n' $@ | grep '>=' || : )
210+
cd "$outdir"
211+
xbps-create -A $ARCH-musl -n $pkgname-$pkgver\_$pkgrel -s "$desc" -D "$n_deps $y_deps" "$pkgdir"
211212
}
212213

213214
if [ -z "$to_run" ]; then

mirror.list

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
https://mirror.iglunix.org

0 commit comments

Comments
 (0)