Scripts: moved the base64 content to clear file

master
Pierre Neidhardt 2013-07-10 18:31:13 +02:00
parent ee37e08f44
commit 75f7d79610
9 changed files with 345 additions and 161 deletions

View File

@ -21,8 +21,9 @@
## See:
## http://kerneltrap.org/mailarchive/git/2007/7/1/250424
## http://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool
## 'ema' is emacs with lightweight configuration.
[mergetool.ediff]
cmd = emacs -q -l ~/.emacs.d/init-light.el --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
cmd = ema --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
[merge]
tool = ediff

View File

@ -1,3 +1,3 @@
#!/bin/sh
emacs -q -l ~/.emacs.d/init-light.el --eval "(ediff \"$1\" \"$2\")"
ema --eval "(ediff \"$1\" \"$2\")"

12
.scripts/em Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
if [ -z "$DISPLAY" ]; then
IS_GRAPHICAL=0
else
IS_GRAPHICAL=$(emacs -batch -Q --eval='(if (fboundp '"'"'tool-bar-mode) (message "1") (message "0"))' 2>&1)
fi
if [ $IS_GRAPHICAL -eq 1 ]; then
emacsclient -a "" -nc "$@"
else
emacsclient -a "" -t "$@"
fi

2
.scripts/ema Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
emacs -q -l ~/.emacs.d/init-light.el "$@"

2
.scripts/emc Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
emacsclient -a "" -t "$@"

View File

@ -13,31 +13,6 @@ echo "==> 'temp' folder"
mkdir -p "$HOME/temp"
echo
## Emacsclient launcher. Required for best emacsclient integration. For a fully
## functional daemon, you should write a file like this and set 'EDITOR=em'. We
## use base64 to encode the script so that we do not need to handle all the
## escape sequences with quotes and so on.
EMFILE='/usr/local/bin/em'
EMCFILE='/usr/local/bin/emc'
if [ -n "$(command -v emacs)" ] && [ ! -f "$EMFILE" ] || [ ! -f "$EMCFILE" ]; then
echo "==> Emacs (press Ctrl-D to skip)"
if [ -z "$(command -v base64)" ]; then
echo ":: base64 not found."
else
sudo sh -c "umask 022 && echo 'IyEvYmluL3NoCmlmIFsgLXogIiRESVNQTEFZIiBdOyB0aGVuCiAgICBJU19HUkFQSElDQUw9MApl
bHNlCiAgICBJU19HUkFQSElDQUw9JChlbWFjcyAtYmF0Y2ggLVEgLS1ldmFsPScoaWYgKGZib3Vu
ZHAgJyInIid0b29sLWJhci1tb2RlKSAobWVzc2FnZSAiMSIpIChtZXNzYWdlICIwIikpJyAyPiYx
KQpmaQoKaWYgWyAkSVNfR1JBUEhJQ0FMIC1lcSAxIF07IHRoZW4KICAgIGVtYWNzY2xpZW50IC1h
ICIiIC1uYyAiJEAiCmVsc2UKICAgIGVtYWNzY2xpZW50IC1hICIiIC10ICIkQCIKZmkK
' | base64 -d > $EMFILE && chmod 755 $EMFILE"
sudo sh -c "umask 022 && echo 'IyEvYmluL3NoCmVtYWNzY2xpZW50IC1hICIiIC10ICIkQCIK
' | base64 -d > $EMCFILE && chmod 755 $EMCFILE"
fi
fi
## Advanced keymaps. They need to be in X11 shared dir to be loaded.
installkeymap ()
{

View File

@ -4,9 +4,9 @@ if [ $# -ne 1 ] || [ "$1" = "-h" ]; then
cat<<EOF
Usage: ${0##*/} PKGBUILD
Convert an Arch Linux PKGBUILD to a univesral standalone bash script. (The
Convert an Arch Linux PKGBUILD to a universal standalone bash script. (The
infamous 'bash' is assumed because PKGBUILD are bash scripts.) The resulting
script tries to resemble makepkg build process when it makes sense. There is no
script tries to resemble makepkg build process where it makes sense. There is no
dependency resolution because we cannot guess the package names of the target
system.
@ -55,135 +55,6 @@ fi
cat "$1" | sed -e 's|--prefix=/usr|--prefix=/usr/local|g' \
-e 's|PREFIX=/usr|PREFIX=/usr/local|g' >> "$UBUILD"
echo 'IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCl9ST09UPSIkKHJlYWxwYXRoICIkMCIpIgpfUk9PVD0i
JHtfUk9PVCUvKn0iCnNyY2Rpcj1zcmMKcGtnZGlyPXBrZwoKRExBR0VOVFM9KCdmdHA6Oi91c3Iv
YmluL2N1cmwgLWZDIC0gLS1mdHAtcGFzdiAtLXJldHJ5IDMgLS1yZXRyeS1kZWxheSAzIC1vICVv
ICV1JwogICAgICAgICAgJ2h0dHA6Oi91c3IvYmluL2N1cmwgLWZMQyAtIC0tcmV0cnkgMyAtLXJl
dHJ5LWRlbGF5IDMgLW8gJW8gJXUnCiAgICAgICAgICAnaHR0cHM6Oi91c3IvYmluL2N1cmwgLWZM
QyAtIC0tcmV0cnkgMyAtLXJldHJ5LWRlbGF5IDMgLW8gJW8gJXUnCiAgICAgICAgICAncnN5bmM6
Oi91c3IvYmluL3JzeW5jIC16ICV1ICVvJwogICAgICAgICAgJ3NjcDo6L3Vzci9iaW4vc2NwIC1D
ICV1ICVvJykKCklOREVOVD0nICAgICcKbXNnICgpCnsKICAgIGVjaG8gIiQodHB1dCBib2xkKSQo
dHB1dCBzZXRmIDIpPT0+JCh0cHV0IHNldGYgNykgJDEiCiAgICBzaGlmdCAxCiAgICBmb3IgaTsg
ZG8KICAgICAgICBlY2hvICIke0lOREVOVH0kaSIKICAgIGRvbmUKICAgIGVjaG8gLW4gIiQodHB1
dCBzZ3IwKSIKfQoKbXNnMiAoKQp7CiAgICBlY2hvICIkKHRwdXQgYm9sZCkkKHRwdXQgc2V0ZiAx
KSAgLT4kKHRwdXQgc2V0ZiA3KSAkMSIKICAgIHNoaWZ0IDEKICAgIGZvciBpOyBkbwogICAgICAg
IGVjaG8gIiR7SU5ERU5UfSRpIgogICAgZG9uZQogICAgZWNobyAtbiAiJCh0cHV0IHNncjApIgp9
Cgp3YXJuaW5nICgpCnsKICAgIGVjaG8gIiQodHB1dCBib2xkKSQodHB1dCBzZXRmIDYpPT0+IFdB
Uk5JTkc6JCh0cHV0IHNldGYgNykgJDEiCiAgICBzaGlmdCAxCiAgICBmb3IgaTsgZG8KICAgICAg
ICBlY2hvICIke0lOREVOVH0kaSIKICAgIGRvbmUKICAgIGVjaG8gLW4gIiQodHB1dCBzZ3IwKSIK
fQoKZXJyb3IgKCkKewogICAgZWNobyAiJCh0cHV0IGJvbGQpJCh0cHV0IHNldGYgNCk9PT4gRVJS
T1I6JCh0cHV0IHNldGYgNykgJDEiCiAgICBzaGlmdCAxCiAgICBmb3IgaTsgZG8KICAgICAgICBl
Y2hvICIke0lOREVOVH0kaSIKICAgIGRvbmUKICAgIGVjaG8gLW4gIiQodHB1dCBzZ3IwKSIKfQoK
X2luaXQoKQp7CiAgICBta2RpciAtcCAiJF9ST09ULyRzcmNkaXIiCiAgICBta2RpciAtcCAiJF9S
T09ULyRwa2dkaXIiCgogICAgc3JjZGlyPSIkKHJlYWxwYXRoICIkc3JjZGlyIikiCiAgICBwa2dk
aXI9IiQocmVhbHBhdGggIiRwa2dkaXIiKSIKfQoKX2xpc3RkZXBzKCkKewogICAgbXNnICIkcGtn
bmFtZSAkcGtndmVyLSRwa2dyZWwiCiAgICBtc2cgIlJ1bnRpbWUgZGVwZW5kZW5jaWVzIgogICAg
cHJpbnRmIC0tICclc1xuJyAiJHtkZXBlbmRzW0BdfSIKICAgIG1zZyAiQnVpbGR0aW1lIGRlcGVu
ZGVuY2llcyIKICAgIHByaW50ZiAtLSAnJXNcbicgIiR7bWFrZWRlcGVuZHNbQF19IgogICAgbXNn
ICJPcHRpb25hbCBkZXBlbmRlbmNpZXMiCiAgICBwcmludGYgLS0gJyVzXG4nICIke29wdGRlcGVu
ZHNbQF19Igp9CgpfZmV0Y2goKQp7CiAgICBtc2cgIlJldHJpZXZpbmcgc291cmNlcy4uLiIKCiAg
ICBmb3IgaSBpbiAkKHNlcSAwICQoKCR7I3NvdXJjZVsqXX0gLTEpKSk7IGRvCiAgICAgICAgVVJJ
PSIke3NvdXJjZVskaV19IgogICAgICAgIGlmIFsgJChlY2hvICIkVVJJIiB8IGdyZXAgLWMgIi8i
KSAtbmUgMCBdOyB0aGVuCiAgICAgICAgICAgIEZJTEU9IiR7VVJJIyMqL30iCgogICAgICAgICAg
ICAjIyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgRExBR0VOVAogICAgICAgICAgICBtc2cyICJEb3du
bG9hZGluZyAkRklMRS4uLiIKICAgICAgICAgICAgd2dldCAiJE9QVF9GT1JDRSIgIiRVUkkiIC1P
ICIkRklMRSIKCiAgICAgICAgICAgICMjIFN0cmFuZ2VseSBlbm91Z2gsIHdnZXQgd2lsbCBub3Qg
cmV0dXJuIDAgb24gc3VjY2Vzcy4gT24gZXJyb3IsIGl0CiAgICAgICAgICAgICMjIHdpbGwgc3Rp
bGwgY3JlYXRlIGEgMC1ieXRlIGZpbGUuCiAgICAgICAgICAgIGlmIFsgJChkdSAtc2IgIiRGSUxF
IiB8IGF3ayAne3ByaW50ICQxfScpIC1lcSAwIF07IHRoZW4KICAgICAgICAgICAgICAgIGVycm9y
ICJGYWlsdXJlIHdoaWxlIGRvd25sb2FkaW5nICRGSUxFIiAiQWJvcnRpbmcuLi4iCiAgICAgICAg
ICAgICAgICBleGl0IDEKICAgICAgICAgICAgZmkKCiAgICAgICAgZmkKICAgIGRvbmUKfQoKX2No
ZWNrc3VtICgpCnsKICAgIGlmICRPUFRfQ0hFQ0tTS0lQOyB0aGVuCiAgICAgICAgd2FybmluZyAi
U2tpcHBpbmcgdmVyaWZpY2F0aW9uIG9mIHNvdXJjZSBmaWxlIGNoZWNrc3Vtcy4iCiAgICAgICAg
cmV0dXJuCiAgICBmaQoKICAgIFJFU1VMVD10cnVlCgogICAgY2FzZSAkeyNzb3VyY2VbKl19IGlu
CiAgICAgICAgJHsjbWQ1c3Vtc1sqXX0pCiAgICAgICAgICAgIENIRUNLU1VNTUVSPW1kNXN1bTs7
CiAgICAgICAgJHsjc2hhMXN1bXNbKl19KQogICAgICAgICAgICBDSEVDS1NVTU1FUj1zaGExc3Vt
OzsKICAgICAgICAkeyNzaGEyNTZzdW1zWypdfSkKICAgICAgICAgICAgQ0hFQ0tTVU1NRVI9c2hh
MjU2c3VtOzsKICAgICAgICAkeyNzaGEzODRzdW1zWypdfSkKICAgICAgICAgICAgQ0hFQ0tTVU1N
RVI9c2hhMzg0c3VtOzsKICAgICAgICAkeyNzaGE1MTJzdW1zWypdfSkKICAgICAgICAgICAgQ0hF
Q0tTVU1NRVI9c2hhNTEyc3VtOzsKICAgICAgICAqKQogICAgICAgICAgICBlcnJvciAiSW50ZWdy
aXR5IGNoZWNrcyBhcmUgZWl0aGVyIG1pc3Npbmcgb3IgZGlmZmVyIGluIHNpemUuIgogICAgICAg
ICAgICBleGl0IDE7OwogICAgZXNhYwoKICAgIG1zZyAiVmFsaWRhdGluZyBzb3VyY2UgZmlsZXMg
d2l0aCAke0NIRUNLU1VNTUVSfXMuLi4iCgogICAgZm9yIGkgaW4gJChzZXEgMCAkKCgkeyNzb3Vy
Y2VbKl19IC0xKSkpOyBkbwogICAgICAgIEZJTEU9IiR7c291cmNlWyRpXSMjKi99IgogICAgICAg
IENIRUNLU1VNPSIkKCRDSEVDS1NVTU1FUiAiJEZJTEUiIHwgY3V0IC1mMSAtZCcgJykiCgogICAg
ICAgIGVjaG8gLW4gIiRJTkRFTlQkRklMRSAuLi4gIgoKICAgICAgICAjIyBOb3RlOiBoZXJlIHdl
IHRha2UgY2FyZSB0byBjb250cm9sIGV4cGFuc2lvbiBhdCB0aGUgcmlnaHQgdGltZS4KICAgICAg
ICBldmFsIHRlc3QgJyRDSEVDS1NVTScgPSAnJHsnJHtDSEVDS1NVTU1FUn0nc1skaV19JwogICAg
ICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgogICAgICAgICAgICBlY2hvICJQYXNzZWQiCiAgICAg
ICAgZWxzZQogICAgICAgICAgICBldmFsIHRlc3QgJyR7JyR7Q0hFQ0tTVU1NRVJ9J3NbJGldfScg
PSAnU0tJUCcKICAgICAgICAgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCiAgICAgICAgICAgICAg
ICBlY2hvICJTa2lwcGVkIgogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBlY2hvICJG
QUlMRUQiCiAgICAgICAgICAgICAgICBSRVNVTFQ9ZmFsc2UKICAgICAgICAgICAgZmkKICAgICAg
ICBmaQoKCiAgICBkb25lCgogICAgaWYgISAkUkVTVUxUOyB0aGVuCiAgICAgICAgZXJyb3IgIk9u
ZSBvciBtb3JlIGZpbGVzIGRpZCBub3QgcGFzcyB0aGUgdmFsaWRpdHkgY2hlY2shIgogICAgICAg
IGV4aXQgMQogICAgZmkKfQoKX2V4dHJhY3QgKCkKewogICAgbXNnICJFeHRyYWN0aW5nIHNvdXJj
ZXMuLi4iCiAgICBmb3IgaSBpbiAkKHNlcSAwICQoKCR7I3NvdXJjZVsqXX0gLTEpKSk7IGRvCiAg
ICAgICAgRklMRT0iJHtzb3VyY2VbJGldIyMqL30iCgkgICAgY2FzZSAiJEZJTEUiIGluCgkJICAg
ICoudGFyLmJ6MnwqLnRiejIpCiAgICAgICAgICAgICAgICBtc2cyICJFeHRyYWN0aW5nICRGSUxF
IHdpdGggdGFyIgogICAgICAgICAgICAgICAgdGFyIHhqZiAiJEZJTEUiIC1DICIkc3JjZGlyIjs7
CgkJICAgICoudGFyLmd6fCoudGd6KQogICAgICAgICAgICAgICAgbXNnMiAiRXh0cmFjdGluZyAk
RklMRSB3aXRoIGJzZHRhZCIKICAgICAgICAgICAgICAgIHRhciB4emYgIiRGSUxFIiAtQyAiJHNy
Y2RpciI7OwoJCSAgICAqLnRhci54enwqLnR4eikKICAgICAgICAgICAgICAgIG1zZzIgIkV4dHJh
Y3RpbmcgJEZJTEUgd2l0aCBic2R0YWQiCiAgICAgICAgICAgICAgICB0YXIgeEpmICIkRklMRSIg
LUMgIiRzcmNkaXIiOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIGxuIC1ycyAiJEZJ
TEUiICIkc3JjZGlyIjs7CgkgICAgZXNhYwogICAgZG9uZQp9CgpfYnVpbGRob29rKCkKewogICAg
bXNnICJTdGFydGluZyBidWlsZCgpLi4uIgogICAgKGNkICIkc3JjZGlyIiAmJiBidWlsZCkKfQoK
X2NsZWFuc2UgKCkKewogICAgIyMgVE9ETzogaW1wbGVtZW50IFB1cmdpbmcgdW53YW50ZWQgZmls
ZXMuLi4KICAgICMgUFVSR0VfVEFSR0VUUz0odXNyL3ssc2hhcmV9L2luZm8vZGlyIC5wYWNrbGlz
dCAqLnBvZCkKCiAgICBtc2cgIlRpZHlpbmcgaW5zdGFsbC4uLiIKICAgIChjZCAiJHBrZ2RpciIg
JiYgXAogICAgICAgIG1zZzIgIkNvbXByZXNzaW5nIG1hbiBhbmQgaW5mbyBwYWdlcy4uLiIgJiYg
XAogICAgICAgIGZpbmQgLiAtdHlwZSBmIC1pbmFtZSAnKi5bMC05XScgLWV4ZWMgZ3ppcCB7fSBc
OyAmJiBcCiAgICAgICAgbXNnMiAiU3RyaXBwaW5nIHVubmVlZGVkIHN5bWJvbHMgZnJvbSBiaW5h
cmllcyBhbmQgbGlicmFyaWVzLi4uIiAmJiBcCiAgICAgICAgZmluZCAuIC10eXBlIGYgLWV4ZWN1
dGFibGUgLWV4ZWMgc3RyaXAgLXMge30gXDsgXAogICAgICAgICkKfQoKX2NvbXByZXNzKCkKewog
ICAgbXNnICJDcmVhdGluZyBwYWNrYWdlIFwiJHBrZ25hbWVcIi4uLiIKCiAgICBVTklOUz0iJHBr
Z25hbWUtJHBrZ3Zlci0kcGtncmVsLXVuaW5zdGFsbC5zaCIKICAgIG1zZzIgIkdlbmVyYXRpbmcg
JFVOSU5TLi4uIgogICAgZWNobyAnIyEvYmluL3NoJyA+ICIkVU5JTlMiCiAgICAoY2QgIiRwa2dk
aXIiICYmIFwKICAgICAgICBmaW5kICogLXR5cGUgZiAtZXhlYyBlY2hvICJybSAvInt9IFw7ID4+
ICIuLi8uLi8kVU5JTlMiICYmIFwKICAgICAgICBmaW5kICogLXR5cGUgZCAtZXhlYyBlY2hvICJy
bWRpciAvInt9IFw7ID4+ICIuLi8uLi8kVU5JTlMiCiAgICApCiAgICBjaG1vZCAreCAiJFVOSU5T
IgoKICAgIG1zZzIgIkNvbXByZXNzaW5nIHBhY2thZ2UuLi4iCiAgICAoY2QgIiRwa2dkaXIiICYm
IHRhciAtLW93bmVyPXJvb3QgLS1ncm91cD1yb290IC0tbnVtZXJpYy1vd25lciAtY0pmICIuLi8k
cGtnbmFtZS0kcGtndmVyLSRwa2dyZWwudGFyLnh6IiAqKQp9CgpfcGFja2FnZWhvb2soKQp7CiAg
ICBpZiAkT1BUX05PQ0xPQkJFUiAmJiBbICQobHMgLWExICIkcGtnZGlyIiB8IHdjIC1sKSAtbmUg
MiBdOyB0aGVuCiAgICAgICAgZXJyb3IgIkEgcGFja2FnZSBoYXMgYWxyZWFkeSBiZWVuIGJ1aWx0
LiAodXNlIC1mIHRvIG92ZXJ3cml0ZSkiCiAgICAgICAgZXhpdCAxCiAgICBmaQoKICAgIHJtIC1y
ZiAiJHBrZ2RpciIKCiAgICBtc2cgIlN0YXJ0aW5nIHBhY2thZ2UoKS4uLiIKICAgIChjZCAiJHNy
Y2RpciIgJiYgcGFja2FnZSkKICAgIF9jbGVhbnNlCiAgICBfY29tcHJlc3MKfQoKX2NsZWFuICgp
CnsKICAgIG1zZyAiQ2xlYW5pbmcgdXAuLi4iCiAgICBybSAtciAiJHNyY2RpciIgIiRwa2dkaXIi
Cn0KCl9pbnN0YWxsKCkKewogICAgbXNnICJJbnN0YWxsaW5nIHBhY2thZ2UgJHBrZ25hbWUuLi4i
CiAgICAjIyBUT0RPOiBmaXggcGVybWl0aW9ucy4KICAgICMgc3VkbyB0YXIgeGYgIiRwa2duYW1l
LSRwa2d2ZXItJHBrZ3JlbC50YXIueHoiIC1DICIvIgp9CgpfcHJpbnRoZWxwICgpCnsKICAgIGNh
dCA8PEVPRQpVc2FnZTogJHsxIyMqL30gW09QVElPTlNdCgpQb3J0IGJ1aWxkZXIgZm9yICRwa2du
YW1lICRwa2d2ZXIuCgpUaGlzIHNjcmlwdCBjYW4gcGVyZm9ybSBtdWx0aXBsZSBvcGVyYXRpb25z
OgogIDEuIEZldGNoIHNvdXJjZSBjb2RlLgogIDIuIEJ1aWxkLgogIDMuIENyZWF0ZSBwYWNrYWdl
LgogIDQuIENsZWFuIGZvbGRlciBmcm9tIGJ1aWxkIGRhdGEuCkRlZmF1bHQgb3BlcmF0aW9uIGlz
IHRvIGZldGNoIHNvdXJjZSBjb2RlIGlmIHJlcXVpcmVkLgoKT3B0aW9uczoKCiAgLWI6ICBCdWls
ZC4KICAtYzogIENsZWFuIHNvdXJjZSBmb2xkZXJzIGZyb20gdGVtcCBmaWxlIChrZWVwIHVwc3Ry
ZWFtIHNvdXJjZSBhbmQgYnVpbHQgcGFja2FnZSkuCiAgLWQ6ICBMaXN0IGRlcGVuZGVuY2llcyBh
bmQgZXhpdC4KICAtZjogIEZvcmNlIG9wZXJhdGlvbiAob3ZlcndyaXRlLCByZWJ1aWxkLCByZWlu
c3RhbGwpLgogIC1oOiAgRGlzcGxheSB0aGlzIGhlbHAuCiAgLWk6ICBJbnN0YWxsLgogIC1SOiAg
Q3JlYXRlIHBhY2thZ2UuCiAgLXM6ICBTa2lwIGludGVncml0eSBjaGVja3MuCgpFT0UKfQoKT1BU
X0ZPUkNFPSJuYyIKT1BUX05PQ0xPQkJFUj10cnVlCgpPUFRfQlVJTEQ9ZmFsc2UKT1BUX1BBQ0tB
R0U9ZmFsc2UKT1BUX0lOU1RBTEw9ZmFsc2UKT1BUX0NMRUFOPWZhbHNlCk9QVF9DSEVDS1NLSVA9
ZmFsc2UKCndoaWxlIGdldG9wdHMgIjpiY2RmaGlScyIgb3B0OyBkbwogICAgY2FzZSAkb3B0IGlu
CiAgICAgICAgYikKICAgICAgICAgICAgT1BUX0JVSUxEPXRydWUgOzsKICAgICAgICBjKQogICAg
ICAgICAgICBPUFRfQ0xFQU49dHJ1ZSA7OwogICAgICAgIGQpCiAgICAgICAgICAgIF9saXN0ZGVw
cwogICAgICAgICAgICBleGl0OzsKICAgICAgICBmKQogICAgICAgICAgICBPUFRfRk9SQ0U9IiIK
ICAgICAgICAgICAgT1BUX05PQ0xPQkJFUj1mYWxzZSA7OwogICAgICAgIGgpCiAgICAgICAgICAg
IF9wcmludGhlbHAgIiQwIgogICAgICAgICAgICBleGl0IDEgOzsKICAgICAgICBpKQogICAgICAg
ICAgICBPUFRfSU5TVEFMTD10cnVlIDs7CiAgICAgICAgUikKICAgICAgICAgICAgT1BUX1BBQ0tB
R0U9dHJ1ZSA7OwogICAgICAgIHMpCiAgICAgICAgICAgIE9QVF9DSEVDS1NLSVA9dHJ1ZSA7Owog
ICAgICAgID8pCiAgICAgICAgICAgIF9wcmludGhlbHAgIiQwIgogICAgICAgICAgICBleGl0IDEg
OzsKICAgICAgICA6KQogICAgICAgICAgICBlY2hvICJNaXNzaW5nIGFyZ3VtZW50LiIKICAgICAg
ICAgICAgX3ByaW50aGVscCAiJDAiCiAgICAgICAgICAgIGV4aXQgMSA7OwogICAgZXNhYwpkb25l
CnNoaWZ0ICQoKCRPUFRJTkQgLSAxKSkKCm1zZyAiTWFraW5nIHBhY2thZ2U6ICRwa2duYW1lICRw
a2d2ZXItJHBrZ3JlbCAoJChkYXRlKSkiCgpfaW5pdApfZmV0Y2gKX2V4dHJhY3QKX2NoZWNrc3Vt
CgppZiAkT1BUX0JVSUxEOyB0aGVuIF9idWlsZGhvb2s7IGZpCmlmICRPUFRfUEFDS0FHRTsgdGhl
biBfcGFja2FnZWhvb2s7IGZpCmlmICRPUFRfSU5TVEFMTDsgdGhlbiBfaW5zdGFsbDsgZmkKaWYg
JE9QVF9DTEVBTjsgdGhlbiBfY2xlYW47IGZpCgptc2cgIkZpbmlzaGVkIG1ha2luZzogJHBrZ25h
bWUgJHtwa2d2ZXJ9LSRwa2dyZWwgJChkYXRlKSIK' | base64 -d >> "$UBUILD"
cat "$(realpath "$0").in" >> "$UBUILD"
chmod +x "$UBUILD"

322
.scripts/ubuilder.in Normal file
View File

@ -0,0 +1,322 @@
################################################################################
_ROOT="$(realpath "$0")"
_ROOT="${_ROOT%/*}"
srcdir=src
pkgdir=pkg
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync -z %u %o'
'scp::/usr/bin/scp -C %u %o')
INDENT=' '
msg ()
{
echo "$(tput bold)$(tput setf 2)==>$(tput setf 7) $1"
shift 1
for i; do
echo "${INDENT}$i"
done
echo -n "$(tput sgr0)"
}
msg2 ()
{
echo "$(tput bold)$(tput setf 1) ->$(tput setf 7) $1"
shift 1
for i; do
echo "${INDENT}$i"
done
echo -n "$(tput sgr0)"
}
warning ()
{
echo "$(tput bold)$(tput setf 6)==> WARNING:$(tput setf 7) $1"
shift 1
for i; do
echo "${INDENT}$i"
done
echo -n "$(tput sgr0)"
}
error ()
{
echo "$(tput bold)$(tput setf 4)==> ERROR:$(tput setf 7) $1"
shift 1
for i; do
echo "${INDENT}$i"
done
echo -n "$(tput sgr0)"
}
_init()
{
mkdir -p "$_ROOT/$srcdir"
mkdir -p "$_ROOT/$pkgdir"
srcdir="$(realpath "$srcdir")"
pkgdir="$(realpath "$pkgdir")"
}
_listdeps()
{
msg "$pkgname $pkgver-$pkgrel"
msg "Runtime dependencies"
printf -- '%s\n' "${depends[@]}"
msg "Buildtime dependencies"
printf -- '%s\n' "${makedepends[@]}"
msg "Optional dependencies"
printf -- '%s\n' "${optdepends[@]}"
}
_fetch()
{
msg "Retrieving sources..."
for i in $(seq 0 $((${#source[*]} -1))); do
URI="${source[$i]}"
if [ $(echo "$URI" | grep -c "/") -ne 0 ]; then
FILE="${URI##*/}"
## TODO: add support for DLAGENT
msg2 "Downloading $FILE..."
wget "$OPT_FORCE" "$URI" -O "$FILE"
## Strangely enough, wget will not return 0 on success. On error, it
## will still create a 0-byte file.
if [ $(du -sb "$FILE" | awk '{print $1}') -eq 0 ]; then
error "Failure while downloading $FILE" "Aborting..."
exit 1
fi
fi
done
}
_checksum ()
{
if $OPT_CHECKSKIP; then
warning "Skipping verification of source file checksums."
return
fi
RESULT=true
case ${#source[*]} in
${#md5sums[*]})
CHECKSUMMER=md5sum;;
${#sha1sums[*]})
CHECKSUMMER=sha1sum;;
${#sha256sums[*]})
CHECKSUMMER=sha256sum;;
${#sha384sums[*]})
CHECKSUMMER=sha384sum;;
${#sha512sums[*]})
CHECKSUMMER=sha512sum;;
*)
error "Integrity checks are either missing or differ in size."
exit 1;;
esac
msg "Validating source files with ${CHECKSUMMER}s..."
for i in $(seq 0 $((${#source[*]} -1))); do
FILE="${source[$i]##*/}"
CHECKSUM="$($CHECKSUMMER "$FILE" | cut -f1 -d' ')"
echo -n "$INDENT$FILE ... "
## Note: here we take care to control expansion at the right time.
eval test '$CHECKSUM' = '${'${CHECKSUMMER}'s[$i]}'
if [ $? -eq 0 ]; then
echo "Passed"
else
eval test '${'${CHECKSUMMER}'s[$i]}' = 'SKIP'
if [ $? -eq 0 ]; then
echo "Skipped"
else
echo "FAILED"
RESULT=false
fi
fi
done
if ! $RESULT; then
error "One or more files did not pass the validity check!"
exit 1
fi
}
_extract ()
{
msg "Extracting sources..."
for i in $(seq 0 $((${#source[*]} -1))); do
FILE="${source[$i]##*/}"
case "$FILE" in
*.tar.bz2|*.tbz2)
msg2 "Extracting $FILE with tar"
tar xjf "$FILE" -C "$srcdir";;
*.tar.gz|*.tgz)
msg2 "Extracting $FILE with bsdtad"
tar xzf "$FILE" -C "$srcdir";;
*.tar.xz|*.txz)
msg2 "Extracting $FILE with bsdtad"
tar xJf "$FILE" -C "$srcdir";;
*)
ln -rs "$FILE" "$srcdir";;
esac
done
}
_buildhook()
{
msg "Starting build()..."
(cd "$srcdir" && build)
}
_cleanse ()
{
## TODO: implement Purging unwanted files...
# PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
msg "Tidying install..."
(cd "$pkgdir" && \
msg2 "Compressing man and info pages..." && \
find . -type f -iname '*.[0-9]' -exec gzip {} \; && \
msg2 "Stripping unneeded symbols from binaries and libraries..." && \
find . -type f -executable -exec strip -s {} \; \
)
}
_compress()
{
msg "Creating package \"$pkgname\"..."
UNINS="$pkgname-$pkgver-$pkgrel-uninstall.sh"
msg2 "Generating $UNINS..."
echo '#!/bin/sh' > "$UNINS"
(cd "$pkgdir" && \
find * -type f -exec echo "rm /"{} \; >> "../../$UNINS" && \
find * -type d -exec echo "rmdir /"{} \; >> "../../$UNINS"
)
chmod +x "$UNINS"
msg2 "Compressing package..."
(cd "$pkgdir" && tar --owner=root --group=root --numeric-owner -cJf "../$pkgname-$pkgver-$pkgrel.tar.xz" *)
}
_packagehook()
{
if $OPT_NOCLOBBER && [ $(ls -a1 "$pkgdir" | wc -l) -ne 2 ]; then
error "A package has already been built. (use -f to overwrite)"
exit 1
fi
rm -rf "$pkgdir"
msg "Starting package()..."
(cd "$srcdir" && package)
_cleanse
_compress
}
_clean ()
{
msg "Cleaning up..."
rm -r "$srcdir" "$pkgdir"
}
_install()
{
msg "Installing package $pkgname..."
## TODO: fix permitions.
# sudo tar xf "$pkgname-$pkgver-$pkgrel.tar.xz" -C "/"
}
_printhelp ()
{
cat <<EOE
Usage: ${1##*/} [OPTIONS]
Port builder for $pkgname $pkgver.
This script can perform multiple operations:
1. Fetch source code.
2. Build.
3. Create package.
4. Clean folder from build data.
Default operation is to fetch source code if required.
Options:
-b: Build.
-c: Clean source folders from temp file (keep upstream source and built package).
-d: List dependencies and exit.
-f: Force operation (overwrite, rebuild, reinstall).
-h: Display this help.
-i: Install.
-R: Create package.
-s: Skip integrity checks.
EOE
}
OPT_FORCE="nc"
OPT_NOCLOBBER=true
OPT_BUILD=false
OPT_PACKAGE=false
OPT_INSTALL=false
OPT_CLEAN=false
OPT_CHECKSKIP=false
while getopts ":bcdfhiRs" opt; do
case $opt in
b)
OPT_BUILD=true ;;
c)
OPT_CLEAN=true ;;
d)
_listdeps
exit;;
f)
OPT_FORCE=""
OPT_NOCLOBBER=false ;;
h)
_printhelp "$0"
exit 1 ;;
i)
OPT_INSTALL=true ;;
R)
OPT_PACKAGE=true ;;
s)
OPT_CHECKSKIP=true ;;
?)
_printhelp "$0"
exit 1 ;;
:)
echo "Missing argument."
_printhelp "$0"
exit 1 ;;
esac
done
shift $(($OPTIND - 1))
msg "Making package: $pkgname $pkgver-$pkgrel ($(date))"
_init
_fetch
_extract
_checksum
if $OPT_BUILD; then _buildhook; fi
if $OPT_PACKAGE; then _packagehook; fi
if $OPT_INSTALL; then _install; fi
if $OPT_CLEAN; then _clean; fi
msg "Finished making: $pkgname ${pkgver}-$pkgrel $(date)"

View File

@ -111,9 +111,8 @@ alias xres='xrandr -s $(xrandr | awk '"'"'/^ / {print $1;exit}'"'"')'
##==============================================================================
## Emacs
##==============================================================================
# See .homeinit
## 'em' is a wrapper script for emacsclient.
if [ -n "$(command -v em)" ]; then
alias ema='emacs -q -l ~/.emacs.d/init-light.el'
alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1; emacs --daemon"
fi