aboutsummaryrefslogblamecommitdiffstats
path: root/main/kbd/APKBUILD
blob: 99a8a1c5a4e0b480472dd8f987734a360fb29fec (plain) (tree)
1
2
3
4
5
6
7
8
9


                                                    
            
        
                                                                               
                             
          
                          
                  

                                                                           
                                                              
                                                                          
                                                                     


                      

               
 



                                
 
           
                       
 
                                        


         


                                 
                               
                               
                                       

                                                    



            

                                        













                                                                            


           

                                      




                                                 



                                               
 




                                                                 
 



                                                      
 
                                    























                                                                                                              
 
                                    

                                                           


                                          
                                                       


                                           

 



                                               

                                                                        

                                     






                                                       
                           


















                                                                                                             

 
        
                                              
                
 


                                                                           
            

 
                                                                                                                                                              

                                                                                                                                                
                                                                                                                                          
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=kbd
pkgver=2.4.0
pkgrel=1
pkgdesc="Tools for configuring the console (keyboard, virtual terminals, etc.)"
url="http://kbd-project.org/"
arch="all"
license="GPL-2.0-or-later"
depends="kbd-misc"
makedepends="linux-headers linux-pam-dev check-dev ckbcomp xkeyboard-config
	autoconf automake"
subpackages="$pkgname-bkeymaps::noarch $pkgname-legacy::noarch
	$pkgname-misc::noarch $pkgname-doc $pkgname-openrc $pkgname-vlock"
source="https://www.kernel.org/pub/linux/utils/kbd/kbd-$pkgver.tar.gz
	loadkeys.initd
	loadkeys.confd

	error.h
	"

_datadir=/usr/share
_xmapdir="$_datadir"/keymaps/xkb
_bmapdir="$_datadir"/bkeymaps
_badmaps="pk-ara"

prepare() {
	default_prepare

	cp "$srcdir"/error.h "$builddir"
}

build() {
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--disable-nls \
		--prefix=/usr \
		--datadir="$_datadir" \
		--htmldir=/usr/share/html/$pkgname \
		--disable-static
	make
}

check() {
	# dumpkeys-bkeymap fails
	[ "$CARCH" = s390x ] && return 0
	make check
}

_listxmaps() {
	local invariant line; invariant=false
	grep -v '^$' /usr/share/X11/xkb/rules/base.lst | while read line; do
	case "$line" in
		'! variant') invariant=true ;;
		'!'*) invariant=false ;;
		*) if $invariant; then
			echo "$line" | cut -d: -f1
		fi ;;
		esac
	done
}

package() {
	make DESTDIR="$pkgdir" install

	install -Dm755 "$srcdir"/loadkeys.initd \
		"$pkgdir"/etc/init.d/loadkeys
	install -Dm644 "$srcdir"/loadkeys.confd \
		"$pkgdir"/etc/conf.d/loadkeys

	# Move and fixup legacy keymaps
	mkdir legacy
	mv "$pkgdir"/usr/share/keymaps/* legacy
	mv legacy "$pkgdir"/usr/share/keymaps

	cd "$pkgdir"/usr/share/keymaps/legacy/i386
	# Make ISO-8815-9 maps the default, instead of 7-bit ones
	ln -s pt-latin9.map.gz qwerty/pt.map.gz
	mv azerty/fr.map.gz azerty/fr-old.map.gz
	ln -s fr-latin9.map.gz azerty/fr.map.gz

	# Add some legacy aliases
	ln -s fr-latin9.map.gz azerty/fr-latin0.map.gz
	ln -s sv-latin1.map.gz qwerty/se-latin1.map.gz
	ln -s sr-cy.map.gz qwerty/sr-latin.map.gz

	# Rename conflicting keymaps
	mv fgGIod/trf.map.gz fgGIod/trf-fgGIod.map.gz
	mv olpc/es.map.gz olpc/es-olpc.map.gz
	mv olpc/pt.map.gz olpc/pt-olpc.map.gz
	mv qwerty/cz.map.gz qwerty/cz-qwerty.map.gz

	# Remove useless layouts
	rm -f i386/qwerty/ro_win.map.gz

	cd "$builddir"

	# Compile keymaps from X.org layouts
	mkdir -p "$pkgdir$_xmapdir"
	local layout variant
	_listxmaps | while read -r variant layout; do
		if ! test -f "$pkgdir$_xmapdir"/"$layout".map.gz; then
			echo "Generating keymap $layout..."
			ckbcomp "$layout" | gzip > "$pkgdir$_xmapdir"/"$layout".map.gz || exit 1
		fi
		echo "Generating keymap $layout-$variant..."
		ckbcomp "$layout" "$variant" | gzip > "$pkgdir$_xmapdir"/"$layout"-"$variant".map.gz || exit 1
	done

	# Do some fix-ups on X.org keymaps
	mv "$pkgdir$_xmapdir"/fi.map.gz "$pkgdir$_xmapdir"/fi-kotoistus.map.gz

	# Install html documentation
	mkdir -p "$pkgdir$_datadir"/html/$pkgname
	mv docs/doc/*.html "$pkgdir$_datadir"/html/$pkgname

	# Replace busybox setfont utility.
	mkdir -p "$pkgdir"/usr/sbin
	mv "$pkgdir"/usr/bin/setfont "$pkgdir"/usr/sbin

	# Link open to openvt
	ln -s openvt "$pkgdir"/usr/bin/open
}

vlock() {
	pkgdesc="$pkgname vlock implemantation"
	depends=

	# This is the only binary needing linux-pam so moving this to a
	# subpackage reduces the amount of depencies of the kbd package.

	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/vlock "$subpkgdir"/usr/bin
}

bkeymaps() {
	pkgdesc="X.org-derived binary keymaps"
	depends=
	replaces="bkeymaps"
	provides="bkeymaps"

	mkdir -p "$subpkgdir$_bmapdir"
	local map variant layout; for map in "$pkgdir$_xmapdir"/*.map.gz; do
		variant="$(basename "$map" | cut -d. -f1)"
		case "$variant" in $_badmaps) continue ;; esac

		layout="${variant%%-*}"
		mkdir -p "$subpkgdir$_bmapdir"/$layout
		echo "Generating binary keymap $variant..."
		"$pkgdir"/usr/bin/loadkeys -ub "$map" | gzip > "$subpkgdir$_bmapdir"/$layout/$variant.bmap.gz
	done
}

legacy() {
	pkgdesc="kbd legacy keymaps"
	depends=

	mkdir -p "$subpkgdir$_datadir"/keymaps
	mv "$pkgdir$_datadir"/keymaps/legacy "$subpkgdir$_datadir"/keymaps
}

misc() {
	pkgdesc="kbd keymaps and console data"
	depends=

	mkdir -p "$subpkgdir$_datadir"
	local dir; for dir in consolefonts consoletrans keymaps unimaps; do
		mv "$pkgdir$_datadir"/$dir "$subpkgdir$_datadir"
	done
}

sha512sums="7d63003d5d51c65863417f2f48f5298b6ab29715d477e04948973013809f42e89ce94bfc2ebf9590869e0fcde9fe47b45888f37ab0bbd7e9255d9721d91285b1  kbd-2.4.0.tar.gz
64b5ab4c362350521da8f507d22c0b77784da99bbe1b32f0c001cd826f63c607e3f9cd6af01f06a61af8bd709760bbf2bb3cfe2010c33925f2987a1af6ef4998  loadkeys.initd
12028796552a5ffed1d5cb19d37fc6a73fb4f2e2bf34d837a81171c7ebee98d6c3f557715bf79706d79ce053b9b2450cd8cf1c4ea045428fb7d8a5915ae3ed78  loadkeys.confd
c66f6b0d8c8b8d285c740bdbe7130dee272ac01cd5e73b35a58cedf1a77fe8d9e062631b804fb58014d8eb9861c8f28aed07bc022ef31662bcc61b5c85a21752  error.h"