#!/bin/bash # wpa_supplicant.SlackBuild # Heavily based on the original Slackware build scripts, # Modified by Stuart Winter # Record toolchain & other info for the build log: slackbuildinfo # Paths to skeleton port's source & real Slackware source tree: export CWD=$SLACKSOURCE/$PKGSERIES/$PKGNAM export PORTCWD=$PWD # Temporary build locations: export TMPBUILD=$TMP/build-$PKGNAM export PKG=$TMP/package-$PKGNAM mkpkgdirs # Delete & re-create temporary directories then cd into $TMPBUILD # Determine the CFLAGS for the known architectures: case $ARCH in arm) export SLKCFLAGS="-O2 -march=armv4t" export LIBDIRSUFFIX="" ;; *) export SLKCFLAGS="-O2" ;; esac DOCS="ChangeLog ../COPYING README README-WPS *.txt examples wpa_supplicant.conf.sample" # Support for some of the wireless drivers needs the header files of those # drivers. # Change these *_INCLUDES variables to where _your_ driver include directory # is located. If any of these directories is found, support for the driver # will be added to wpa_supplicant. # My madwifi package for Slackware installs the headers here: MADWIFI_INCLUDES="/usr/include/madwifi" HERMES_INCLUDES="" BROADCOM_INCLUDES="" if ! [ -f $CWD/${PKGNAM}.defconfig ]; then echo "Could not find ${PKGNAM}.defconfig!" exit 1 fi tar xvvf $CWD/${PKGNAM}-${VERSION}.tar.?z* cd ${PKGNAM}-${VERSION} || exit 1 slackhousekeeping #sed -i -e \ # "s/^#define VERSION_STR \"\(.*\)\"/#define VERSION_STR \"\1_$VERSION\"/" \ # src/common/version.h # The source code has been re-organized: cd wpa_supplicant # Create the configuration file for building wpa_supplicant: cat $CWD/${PKGNAM}.defconfig > .config if [ ! -z $MADWIFI_INCLUDES -a -d $MADWIFI_INCLUDES ]; then echo "Adding madwifi driver (Atheros) support" cat <<-EOT >> .config CONFIG_DRIVER_MADWIFI=y CFLAGS += -I${MADWIFI_INCLUDES} EOT fi if [ ! -z $HERMES_INCLUDES -a -d $HERMES_INCLUDES ]; then echo "Adding hermes driver (Agere) support" cat <<-EOT >> .config CONFIG_DRIVER_HERMES=y CFLAGS += -I${HERMES_INCLUDES} EOT fi if [ ! -z $BROADCOM_INCLUDES -a -d $BROADCOM_INCLUDES ]; then echo "Adding broadcom driver support" cat <<-EOT >> .config CONFIG_DRIVER_BROADCOM=y CFLAGS += -I${BROADCOM_INCLUDES} EOT fi make $NUMJOBS || make || exit 1 # Build the Qt4 GUI client make wpa_gui-qt4 || exit 1 # Make man pages if needed ( cd doc/docbook if ! ls *.? >/dev/null 2>&1 ; then make man fi ) # Do not build the developer docs: #PATH=".:$PATH" make docs # This goes into the doc directory later on: cp wpa_supplicant.conf wpa_supplicant.conf.sample # Install binaries: mkdir -p $PKG/usr/sbin $PKG/usr/bin cp wpa_supplicant wpa_passphrase wpa_cli $PKG/usr/sbin/ cp wpa_gui-qt4/wpa_gui $PKG/usr/bin/ # Install dbus configuration file: mkdir -p $PKG/etc/dbus-1/system.d/ cp dbus-wpa_supplicant.conf \ $PKG/etc/dbus-1/system.d/dbus-wpa_supplicant.conf.new # Install a .desktop file for wpa_gui: mkdir -p $PKG/usr/share/applications cat < $PKG/usr/share/applications/wpa_gui.desktop [Desktop Entry] Name=wpa_gui Comment[en]=Wpa_supplicant management Exec=kdesu wpa_gui Icon=wpa_gui Type=Application Categories=Qt;Network; EOT # The icon used for the menu (converted from the wpa_gui.svg in the source) mkdir -p $PKG/usr/share/pixmaps cp -a $CWD/wpa_gui.png $PKG/usr/share/pixmaps/ # Install man pages: for m in 5 8; do mkdir -p $PKG/usr/man/man${m} cp doc/docbook/*.${m} $PKG/usr/man/man${m}/ done # Install a default configuration file: mkdir -p $PKG/etc cat <<-_EOT_ > $PKG/etc/wpa_supplicant.conf.new # See /usr/doc/${PKGNAM}-${VERSION}/wpa_supplicant.conf.sample # for many more options that you can use in this file. # This line enables the use of wpa_cli which is used by rc.wireless # if possible (to check for successful association) ctrl_interface=/var/run/wpa_supplicant # By default, only root (group 0) may use wpa_cli ctrl_interface_group=0 eapol_version=1 ap_scan=1 fast_reauth=1 #country=US # WPA protected network, supply your own ESSID and WPAPSK here: network={ scan_ssid=0 ssid="your_essid_here" proto=WPA RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk=your_64_char_psk_here priority=10 } # Plaintext connection (no WPA, no IEEE 802.1X), # nice for hotel/airport types of WiFi network. network={ key_mgmt=NONE priority=0 } _EOT_ # Create the 'doinst.sh' script: mkdir -p $PKG/install 2>/dev/null cat < $PKG/install/doinst.sh # Handle the incoming configuration files: config() { for infile in \$1; do NEW="\$infile" OLD="\`dirname \$NEW\`/\`basename \$NEW .new\`" # If there's no config file by that name, mv it over: if [ ! -r \$OLD ]; then mv \$NEW \$OLD elif [ "\`cat \$OLD | md5sum\`" = "\`cat \$NEW | md5sum\`" ]; then # toss the redundant copy rm \$NEW fi # Otherwise, we leave the .new copy for the admin to consider... done } config etc/wpa_supplicant.conf.new config etc/dbus-1/system.d/dbus-wpa_supplicant.conf.new EOINS # Add the documentation: mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION cp -a $DOCS $PKG/usr/doc/$PKGNAM-$VERSION cp -a $CWD/README.slackware $PKG/usr/doc/${PKGNAM}-${VERSION}/ chmod -R a-w $PKG/usr/doc/$PKGNAM-$VERSION/* chown -R root:root $PKG/usr/doc/$PKGNAM-$VERSION/* # This should only be read/write by root: chmod 600 $PKG/etc/wpa_supplicant.conf.new # If necessary, start the fakeroot server so we can set file/dir ownerships: start_fakeroot # Apply generic Slackware packaging policies: cd $PKG slackstripall # strip all .a archives and all ELFs slackgzpages -i # compress man & info pages and delete usr/info/dir slackslack # chown -R root:root, chmod -R og-w, slackchown, slack644docs slackdesc # install slack-desc and doinst.sh slackmp # run makepkg -l y -c n # Perform any final checks on the package: cd $PKG slackhlinks # search for any hard links