aboutsummaryrefslogtreecommitdiff
path: root/development/bless/bless.SlackBuild
blob: ea1816600dc6de474f970db14a41fb126f1e759c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/bin/bash

# Slackware build script for bless

# Written by B. Watson (yalhcru@gmail.com)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20211210 bkw: BUILD=2
# - add patch from Debian's 0.6.0-7 to fix saving preferences.
# - don't include useless skeleton of bless-manual.omf in package.
# - don't use gconf from help_script.sh, it broke. just open the
#   HTML help with xdg-open.
# - fix the 'select layout' dialog, now you can see & load system layouts.
# - new-style icon (singular, 48x48).

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=bless
VERSION=${VERSION:-0.6.0}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

# Compiled .net code is "anycpu" by default.
# I see no reason to use lib64 for this. It would mean having separate
# 32-bit and 64-bit packages, even though the actual object code is
# noarch. Also, no CFLAGS because, no C... since I'm not a mono/C#
# expert, I dunno what the equivalent optimization flags should be
# (or if they even exist) so we'll go with whatever upstream does.

ARCH=noarch

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/${PRGNAM}_$VERSION.orig.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L .  -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
        \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+

# Begin rant. FWIW, I'm not very impressed with bless:
# - It has show-stopper bugs that were left in place when the maintainer
#   abandoned it a few years ago (others have fixed the worst of them
#   by now, patches included here).
# - It starts up in Insert mode which definitely violates the principle
#   of least surprise (in normal hex editors, overwrite is generally the
#   default and often only mode). This is so annoying that I patched it.
#   Even in overwrite mode, it'll let you append bytes to the end of
#   the file, which a hex editor shouldn't do in its default mode.
# - It ships with 3 .layout files that get installed in /usr/share, but
#   the layout dialog is broken: you can't choose between the
#   "system" layouts... now I've fixed this, at least.
# - Finally, and maybe this is just my own personal bias, I don't see an
#   obvious way to change the white background to black (if the .layout
#   files are capable of it, great, but I tried really hard to get them
#   to work and they don't seem to behave the way the docs say they do).
#   This means I won't be using this application very much, as it hurts
#   my eyes to look at it for more than a few minutes.
# If it's so awful, why am I writing a SlackBuild for it? Because
# it's a GUI hex editor that (a) uses GTK, (b) doesn't suck quite
# as hard as ghex, and (c) doesn't require KDE and its horde of
# daemons. Someone is going to be glad it's here. People who grew up
# using GUIs are going to prefer this to a textmode app.
# Here endeth the rant.

# Patch from Debian. Might not be needed with newer versions of mono,
# but no harm done.
patch -p1 < $CWD/patches/force_gtk_action_namespace.patch

# Patch from dead gna.org site:
# http://web.archive.org/web/20170205194531/http://gna.org/bugs/?14878
# Fixes "not enough space" error when trying to save.
patch -p1 < $CWD/patches/fix_save.patch

# Similar-named patch from Debian. This one fixes saving preferences.
patch -p1 < $CWD/patches/fix_save_behaviour.patch

# Patch from: https://bugs.launchpad.net/ubuntu/+source/bless/+bug/1622951
# Fixes broken preferences saving.
patch -p1 < $CWD/patches/fixxmltextwriter.patch

# Make bless act like all other hex editors on the planet by NOT starting
# up in Insert mode. I wouldn't have patched this, except that bless
# doesn't auto-save the Insert/Overwrite state across sessions. You can
# set the default via Edit/Preferences, but it doesn't remember the last
# state if you just press Insert to toggle it.
patch -p1 < $CWD/patches/default_overwrite.patch

patch -p1 < $CWD/patches/disambiguate-system.range-and-gtk.range.patch

# 20211210 bkw: make it look in the right place for its own layout files.
sed -i '/FileResourcePath\.GetDataPath("data")/s,"data",".",' \
       src/gui/dialogs/LayoutSelectionDialog.cs

# Grr. The configure script doesn't allow setting CS or MCS or CSC or
# anything to override the compiler (like normal stuff does with CC).
# FFS, it's even hardcoded in C# code...
sed -i 's,gmcs,mcs,g' configure builder/ModuleBuilder.cs

./configure \
  --without-scrollkeeper \
  --prefix=/usr \
  --libdir=/usr/lib \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION

# GRR. Even with --without-scrollkeeper we have to fake it out. I
# could look into using rarian, but I'm not sure what good it would
# do: the .xml and .html help files are already installed in the right
# places, and help_script.sh knows how to display them when you click
# Help/Contents or press F1.
cp doc/user/bless-manual.omf.in doc/user/bless-manual.omf

make
make install DESTDIR=$PKG

# --docdir is ignored.
mkdir -p $PKG/usr/doc/
mv $PKG/usr/share/doc/$PRGNAM $PKG/usr/doc/$PRGNAM-$VERSION
rm -rf $PKG/usr/share/doc $PKG/usr/share/omf

# The help script needed help.
PKGHELP=$PKG/usr/share/$PRGNAM/help_script.sh
sed "s/@VERSION@/$VERSION/g" $CWD/help_script.sh > $PKGHELP
chmod 755 $PKGHELP

# Man page from Debian. Not much to it, but not much was needed.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz

HICOLOR=$PKG/usr/share/icons/hicolor/48x48/apps
PIXMAPS=$PKG/usr/share/pixmaps
rm -f $PIXMAPS/*
mkdir -p $HICOLOR
mv $PKG/usr/share/$PRGNAM/bless-48x48.png $HICOLOR/$PRGNAM.png
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/$PRGNAM/bless-48x48.png
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PIXMAPS/$PRGNAM.png

sed -i '/Icon=/s,=.*,=bless,' $PKG/usr/share/applications/$PRGNAM.desktop

cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE