From 725203178348e064faf11728300923282b258a9d Mon Sep 17 00:00:00 2001 From: Timothy Redaelli Date: Tue, 10 Jan 2012 08:08:34 +0000 Subject: [PATCH] updated on Tue Jan 10 08:08:34 UTC 2012 --- apf-firewall/PKGBUILD | 4 +- apf-firewall/apf-arch.init | 4 +- apf-firewall/apf-arch.patch | 744 ++++++++------------- armory-git/Makefile.patch | 6 + armory-git/PKGBUILD | 62 ++ armory-git/run-armory.sh | 3 + backuppc/PKGBUILD | 4 +- cinnamon-extensions-git/PKGBUILD | 9 +- .../cinnamon-extensions-git.install | 3 + cinnamon-settings-git/PKGBUILD | 4 +- evolution-plugins-experimental/PKGBUILD | 4 +- gparted-git/PKGBUILD | 32 +- gtk-theme-hope/PKGBUILD | 6 +- gtk-youtube-viewer/PKGBUILD | 2 +- kernel26-uksm/PKGBUILD | 8 +- ...8-20111223.patch => uksm-2.6.38-20120110.patch} | 708 +++++++++++++------- linux-next/PKGBUILD | 1 + linux-zen/PKGBUILD | 1 + mikutter/PKGBUILD | 4 +- neurolab/PKGBUILD | 33 +- openbve/PKGBUILD | 6 +- parted-git/PKGBUILD | 58 +- parted-git/parted-git.install | 29 + perl-mojolicious/PKGBUILD | 6 +- python-pyssh/PKGBUILD | 10 +- qupzilla/PKGBUILD | 6 +- scribus-rc/PKGBUILD | 36 - scribus-rc/scribus-rc.install | 24 - scribus-rc/scribus.desktop | 62 -- thunderbird-beta-bin-it/PKGBUILD | 4 +- ttf-ms-fonts/PKGBUILD | 4 +- vkplayer/PKGBUILD | 106 +-- vkplayer/PKGBUILD~ | 77 --- vkplayer/make.patch | 8 + vkplayer/vkplayer-0.08.tar.gz | Bin 150722 -> 0 bytes 35 files changed, 1000 insertions(+), 1078 deletions(-) rewrite apf-firewall/apf-arch.patch (98%) create mode 100644 armory-git/Makefile.patch create mode 100644 armory-git/PKGBUILD create mode 100644 armory-git/run-armory.sh rename kernel26-uksm/{uksm-2.6.38-20111223.patch => uksm-2.6.38-20120110.patch} (94%) create mode 100644 parted-git/parted-git.install delete mode 100644 scribus-rc/PKGBUILD delete mode 100644 scribus-rc/scribus-rc.install delete mode 100644 scribus-rc/scribus.desktop rewrite vkplayer/PKGBUILD (86%) delete mode 100644 vkplayer/PKGBUILD~ create mode 100644 vkplayer/make.patch delete mode 100644 vkplayer/vkplayer-0.08.tar.gz diff --git a/apf-firewall/PKGBUILD b/apf-firewall/PKGBUILD index ac505c0bd..d06af7723 100644 --- a/apf-firewall/PKGBUILD +++ b/apf-firewall/PKGBUILD @@ -44,6 +44,6 @@ package_apf-firewall() { } pkgdesc="Advanced Policy Firewall (APF) is an iptables(netfilter) based firewall system designed around the essential needs of todays Linux servers." -sha256sums=('5d2d58359f923dae47792eafc640cfe1556c0bc1b909214dbb1c61b07c9b82eb' - '1342aa3d8ddff58a075c95b5dec545084f475eb33707b83daf511e3cdb83d8c0' +sha256sums=('bec19426e05927394e5d992590aba13cb18d7ea796d6f087d2c0110344fc6d61' + 'b68d39d0439b1a3e89322105557f7c68c63830ca6d18e9cabb68d98e16d4921a' 'be252d7d8e34f4c023d1579daea3f717019e7638da4ef35d0568f86ef7608823') diff --git a/apf-firewall/apf-arch.init b/apf-firewall/apf-arch.init index 32cd66ada..6208bd2d7 100755 --- a/apf-firewall/apf-arch.init +++ b/apf-firewall/apf-arch.init @@ -9,7 +9,7 @@ case "$1" in start) stat_busy "Starting APF firewall" - /usr/local/sbin/apf --start >> /dev/null 2>&1 + /usr/sbin/apf --start >> /dev/null 2>&1 if [ $? -gt 0 ]; then stat_fail else @@ -19,7 +19,7 @@ start) ;; stop) stat_busy "Stopping APF firewall" - /usr/local/sbin/apf --stop >> /dev/null 2>&1 + /usr/sbin/apf --stop >> /dev/null 2>&1 if [ $? -gt 0 ]; then stat_fail else diff --git a/apf-firewall/apf-arch.patch b/apf-firewall/apf-arch.patch dissimilarity index 98% index cc1f4b905..0f070acf9 100644 --- a/apf-firewall/apf-arch.patch +++ b/apf-firewall/apf-arch.patch @@ -1,478 +1,266 @@ -Only in apf-9.7-2/files: conf.apf -diff -crB apf-9.7-2/files/firewall apf-9.7-2-arch/files/firewall -*** apf-9.7-2/files/firewall 2011-11-10 19:53:16.000000000 -0500 ---- apf-9.7-2-arch/files/firewall 2012-01-09 05:53:31.617196010 -0500 -*************** -*** 87,93 **** - # Allow all traffic on trusted interfaces - if [ ! "$IFACE_TRUSTED" == "" ]; then - for i in `echo $IFACE_TRUSTED | tr ',' ' '`; do -! VAL_IF=`/sbin/ip addr list | grep -w $i` - if [ "$VAL_IF" == "" ]; then - eout "{glob} unable to verify status of interface $i; assuming untrusted" - else ---- 87,93 ---- - # Allow all traffic on trusted interfaces - if [ ! "$IFACE_TRUSTED" == "" ]; then - for i in `echo $IFACE_TRUSTED | tr ',' ' '`; do -! VAL_IF=`$ip addr list | grep -w $i` - if [ "$VAL_IF" == "" ]; then - eout "{glob} unable to verify status of interface $i; assuming untrusted" - else -*************** -*** 105,111 **** - $IPT -A PROHIBIT -j REJECT --reject-with icmp-host-prohibited - - # Load our SYSCTL rules -! . $INSTALL_PATH/sysctl.rules >> /dev/null 2>&1 - - # Fix MTU/MSS Problems - $IPT -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ---- 105,111 ---- - $IPT -A PROHIBIT -j REJECT --reject-with icmp-host-prohibited - - # Load our SYSCTL rules -! . $INSTALL_PATH/sysctl.rules >> /dev/null # 2>&1 - - # Fix MTU/MSS Problems - $IPT -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu -diff -crB apf-9.7-2/files/internals/functions.apf apf-9.7-2-arch/files/internals/functions.apf -*** apf-9.7-2/files/internals/functions.apf 2011-12-15 21:30:14.000000000 -0500 ---- apf-9.7-2-arch/files/internals/functions.apf 2012-01-09 04:10:15.000000000 -0500 -*************** -*** 62,165 **** - fi - } - -! ml() { -! MOD=$1 -! VALMOD=$2 -! if [ "$KREL" == "2.4" ]; then -! MEXT="o" -! elif [ "$KREL" == "2.6" ]; then -! MEXT="ko" -! elif [[ "$KREL" =~ "3." ]]; then -! MEXT="ko" -! elif [ ! "$KREL" == "2.4" ] && [ ! "$KREL" == "2.6" ] && [[ ! "$KREL" =~ "3." ]]; then -! if [ ! "$SET_VERBOSE" == "1" ]; then -! echo "kernel version not compatible or netfilter support missing, aborting." -! fi -! eout "{glob} kernel version not compatible or netfilter support missing, aborting." -! exit 1 -! else -! if [ ! "$SET_VERBOSE" == "1" ]; then -! echo "kernel version not compatible or netfilter support missing, aborting." -! fi -! eout "{glob} kernel version not compatible or netfilter support missing, aborting." -! exit 1 -! fi -! -! if [ "$VALMOD" == "1" ] && [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/$1.$MEXT" ]; then -! if [ ! "$SET_VERBOSE" == "1" ]; then -! echo "Unable to load iptables module ($1), aborting." -! fi -! eout "{glob} unable to load iptables module ($1), aborting." -! exit 1 -! fi -! if [ -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/$1.$MEXT" ] || [ -f "/lib/modules/$(uname -r)/kernel/net/netfilter/$1.$MEXT" ]; then -! $MPB $1 >> /dev/null 2>&1 & -! fi -! } - - modinit() { -! # Remove ipchains module if loaded -! IPC_VAL=`$LSM | grep ipchains` -! if [ ! "$IPC_VAL" == "" ]; then -! $RMM ipchains -! fi -! -! if [ ! "$SET_MONOKERN" == "1" ]; then -! # Loading Kernel Modules -! ml ip_tables 1 -! ml iptable_filter -! ml iptable_mangle -! ml ip_conntrack -! ml ip_conntrack_irc -! ml ip_conntrack_ftp -! ml ipt_state -! ml ipt_multiport -! ml ipt_limit -! ml ipt_recent -! ml ipt_LOG -! ml ipt_REJECT -! ml ipt_ecn -! ml ipt_length -! ml ipt_mac -! ml ipt_multiport -! ml ipt_owner -! ml ipt_state -! ml ipt_ttl -! ml ipt_TOS -! ml ipt_TCPMSS -! ml ipt_ULOG -! ml xt_conntrack -! ml xt_conntrack_irc -! ml xt_conntrack_ftp -! ml xt_state -! ml xt_multiport -! ml xt_limit -! ml xt_recent -! ml xt_LOG -! ml xt_REJECT -! ml xt_ecn -! ml xt_length -! ml xt_mac -! ml xt_multiport -! ml xt_owner -! ml xt_state -! ml xt_ttl -! ml xt_TOS -! ml xt_TCPMSS -! ml xt_ULOG -! ml nf_conntrack -! ml nf_conntrack_irc -! ml nf_conntrack_ftp -! fi - } - - check_rab() { -! if [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/ipt_recent.$MEXT" ] && [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/xt_recent.$MEXT" ]; then -! if [ "$RAB" == "1" ]; then -! RAB="0" -! eout "{rab} force set RAB disabled, kernel module xt/ipt_recent not found." -! fi -! fi - } - - get_state() { ---- 62,196 ---- - fi - } - -! #ml() { -! #MOD=$1 -! #VALMOD=$2 -! #if [ "$KREL" == "2.4" ]; then -! #MEXT="o" -! #elif [ "$KREL" == "2.6" ]; then -! #MEXT="ko" -! #elif [[ "$KREL" =~ "3." ]]; then -! #MEXT="ko" -! #elif [ ! "$KREL" == "2.4" ] && [ ! "$KREL" == "2.6" ] && [[ ! "$KREL" =~ "3." ]]; then -! #if [ ! "$SET_VERBOSE" == "1" ]; then -! #echo "kernel version not compatible or netfilter support missing, aborting." -! #fi -! #eout "{glob} kernel version not compatible or netfilter support missing, aborting." -! #exit 1 -! #else -! #if [ ! "$SET_VERBOSE" == "1" ]; then -! #echo "kernel version not compatible or netfilter support missing, aborting." -! #fi -! #eout "{glob} kernel version not compatible or netfilter support missing, aborting." -! #exit 1 -! #fi -! -! #if [ "$VALMOD" == "1" ] && [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/$1.$MEXT" ]; then -! #if [ ! "$SET_VERBOSE" == "1" ]; then -! #echo "Unable to load iptables module ($1), aborting." -! #fi -! #eout "{glob} unable to load iptables module ($1), aborting." -! #exit 1 -! #fi -! #if [ -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/$1.$MEXT" ] || [ -f "/lib/modules/$(uname -r)/kernel/net/netfilter/$1.$MEXT" ]; then -! #$MPB $1 >> /dev/null 2>&1 & -! #fi -! #} -! -! #modinit() { -! ## Remove ipchains module if loaded -! #IPC_VAL=`$LSM | grep ipchains` -! #if [ ! "$IPC_VAL" == "" ]; then -! #$RMM ipchains -! #fi -! -! #if [ ! "$SET_MONOKERN" == "1" ]; then -! ## Loading Kernel Modules -! #ml ip_tables 1 -! #ml iptable_filter -! #ml iptable_mangle -! #ml ip_conntrack -! #ml ip_conntrack_irc -! #ml ip_conntrack_ftp -! #ml ipt_state -! #ml ipt_multiport -! #ml ipt_limit -! #ml ipt_recent -! #ml ipt_LOG -! #ml ipt_REJECT -! #ml ipt_ecn -! #ml ipt_length -! #ml ipt_mac -! #ml ipt_multiport -! #ml ipt_owner -! #ml ipt_state -! #ml ipt_ttl -! #ml ipt_TOS -! #ml ipt_TCPMSS -! #ml ipt_ULOG -! #ml xt_conntrack -! #ml xt_conntrack_irc -! #ml xt_conntrack_ftp -! #ml xt_state -! #ml xt_multiport -! #ml xt_limit -! #ml xt_recent -! #ml xt_LOG -! #ml xt_REJECT -! #ml xt_ecn -! #ml xt_length -! #ml xt_mac -! #ml xt_multiport -! #ml xt_owner -! #ml xt_state -! #ml xt_ttl -! #ml xt_TOS -! #ml xt_TCPMSS -! #ml xt_ULOG -! #ml nf_conntrack -! #ml nf_conntrack_irc -! #ml nf_conntrack_ftp -! #fi -! #} -! -! #check_rab() { -! #if [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/ipt_recent.$MEXT" ] && [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/xt_recent.$MEXT" ]; then -! #if [ "$RAB" == "1" ]; then -! #RAB="0" -! #eout "{rab} force set RAB disabled, kernel module xt/ipt_recent not found." -! #fi -! #fi -! #} - - modinit() { -! [ "$SET_MONOKERN" == "1" ] && return 0 -! -! case "$KREL" in -! 2.4) ;; -! 2.6) ;; -! *) eout "{glob} kernel version not equal to 2.4.x or 2.6.x, aborting."; exit 1;; -! esac -! -! modules="ip_tables iptable_filter iptable_mangle ip_conntrack ip_conntrack_ftp ipt_state ipt_multiport ipt_limit ipt_recent -! ipt_LOG ipt_REJECT ipt_ecn ipt_length ipt_mac ipt_multiport ipt_owner ipt_state ipt_ttl ipt_TOS ipt_TCPMSS ipt_ULOG -! xt_conntrack xt_state xt_multiport xt_limit xt_recent xt_length xt_mac xt_multiport xt_owner xt_state nf_conntrack -! nf_conntrack_irc nf_conntrack_ftp" -! -! # failed to load: xt_conntrack_irc xt_conntrack_ftp xt_LOG xt_REJECT xt_ecn xt_ttl ip_conntrack_irc -! # not tested: xt_TOS xt_TCPMSS xt_ULOG -! -! local m -! for m in $modules; do -! $MPB $m >/dev/null 2>&1 || { eout "{glob} unable to load iptables module ($m), aborting."; return 1; } -! done -! return 0 - } - - check_rab() { -! if [ "$RAB" = "1" ] && [ -z "$(cat /proc/net/ip_tables_matches | grep '^recent')" ]; then -! RAB="0" -! eout "{rab} force set RAB disabled, kernel module xt/ipt_recent not found." -! fi - } - - get_state() { -*************** -*** 287,293 **** - val_rev=`cat $ALLOW_HOSTS | grep -w $HOST` - val_rev2=`cat $GALLOW_HOSTS | grep -w $HOST` - val_rev3=`cat $GDENY_HOSTS | grep -w $HOST` -! val_rev4=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` - if [ ! "$val" == "" ]; then - echo "$HOST already exists in $DENY_HOSTS" - elif [ ! "$val_rev" == "" ]; then ---- 318,324 ---- - val_rev=`cat $ALLOW_HOSTS | grep -w $HOST` - val_rev2=`cat $GALLOW_HOSTS | grep -w $HOST` - val_rev3=`cat $GDENY_HOSTS | grep -w $HOST` -! val_rev4=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` - if [ ! "$val" == "" ]; then - echo "$HOST already exists in $DENY_HOSTS" - elif [ ! "$val_rev" == "" ]; then -*************** -*** 328,334 **** - val_rev=`cat $ALLOW_HOSTS | grep -w $HOST` - val_rev2=`cat $GALLOW_HOSTS | grep -w $HOST` - val_rev3=`cat $GDENY_HOSTS | grep -w $HOST` -! val_rev4=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` - if [ ! "$val" == "" ]; then - echo "$HOST already exists in $DENY_HOSTS" - elif [ ! "$val_rev" == "" ]; then ---- 359,365 ---- - val_rev=`cat $ALLOW_HOSTS | grep -w $HOST` - val_rev2=`cat $GALLOW_HOSTS | grep -w $HOST` - val_rev3=`cat $GDENY_HOSTS | grep -w $HOST` -! val_rev4=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` - if [ ! "$val" == "" ]; then - echo "$HOST already exists in $DENY_HOSTS" - elif [ ! "$val_rev" == "" ]; then -*************** -*** 396,403 **** - /usr/bin/pico -w $iptc - elif [ -f "/usr/bin/nano" ]; then - /usr/bin/nano -w $iptc -! elif [ -f "/bin/vi" ]; then -! /bin/vi $iptc - fi - clear - rm -f $iptc ---- 427,434 ---- - /usr/bin/pico -w $iptc - elif [ -f "/usr/bin/nano" ]; then - /usr/bin/nano -w $iptc -! elif [ -f "/usr/bin/vi" ]; then -! /usr/bin/vi $iptc - fi - clear - rm -f $iptc -*************** -*** 550,556 **** - # - # - for i in `cat $ALLOW_HOSTS | grep -v "#" | grep -v ":" | grep -v "="`; do -! val=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` - if [ ! "$val" ]; then - if [ ! "$i" == "" ] && [ -f "$ALLOW_HOSTS" ]; then - eout "{trust} allow all to/from $i" ---- 581,587 ---- - # - # - for i in `cat $ALLOW_HOSTS | grep -v "#" | grep -v ":" | grep -v "="`; do -! val=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` - if [ ! "$val" ]; then - if [ ! "$i" == "" ] && [ -f "$ALLOW_HOSTS" ]; then - eout "{trust} allow all to/from $i" -*************** -*** 842,848 **** - # - # - for i in `cat $DENY_HOSTS | grep -v "#" | grep -v ":" | grep -v "="`; do -! val=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` - if [ ! "$val" ]; then - if [ ! "$i" == "" ] && [ -f "$DENY_HOSTS" ]; then - eout "{trust} deny all to/from $i" ---- 873,879 ---- - # - # - for i in `cat $DENY_HOSTS | grep -v "#" | grep -v ":" | grep -v "="`; do -! val=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` - if [ ! "$val" ]; then - if [ ! "$i" == "" ] && [ -f "$DENY_HOSTS" ]; then - eout "{trust} deny all to/from $i" -*************** -*** 1501,1507 **** - - refresh() { - eout "{glob} refreshing trust system rules." -! /sbin/iptables-save | grep -E "TDENY|TGDENY" | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | awk '{print$4}' | sort -n | uniq | sort > /etc/apf/internals/refresh.drop.temp - $IPT -F TMP_DROP - for i in `cat /etc/apf/internals/refresh.drop.temp | grep -v "#"`; do - if [ ! "$i" == "" ]; then ---- 1532,1538 ---- - - refresh() { - eout "{glob} refreshing trust system rules." -! $IPTS | grep -E "TDENY|TGDENY" | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | awk '{print$4}' | sort -n | uniq | sort > /etc/apf/internals/refresh.drop.temp - $IPT -F TMP_DROP - for i in `cat /etc/apf/internals/refresh.drop.temp | grep -v "#"`; do - if [ ! "$i" == "" ]; then -diff -crB apf-9.7-2/files/internals/internals.conf apf-9.7-2-arch/files/internals/internals.conf -*** apf-9.7-2/files/internals/internals.conf 2009-03-17 08:37:05.000000000 -0400 ---- apf-9.7-2-arch/files/internals/internals.conf 2012-01-09 03:55:05.000000000 -0500 -*************** -*** 7,19 **** - APPN="apf" - - ifconfig=/sbin/ifconfig -! ip=/sbin/ip -! IPT="/sbin/iptables" - MPB="/sbin/modprobe" -! LSM="/sbin/lsmod" - RMM="/sbin/rmmod" -! IPTS="/sbin/iptables-save" -! IPTR="/sbin/iptables-restore" - DIFF="/usr/bin/diff" - WGET="/usr/bin/wget" - MD5="/usr/bin/md5sum" ---- 7,19 ---- - APPN="apf" - - ifconfig=/sbin/ifconfig -! ip=/usr/sbin/ip -! IPT="/usr/sbin/iptables" - MPB="/sbin/modprobe" -! LSM="/bin/lsmod" - RMM="/sbin/rmmod" -! IPTS="/usr/sbin/iptables-save" -! IPTR="/usr/sbin/iptables-restore" - DIFF="/usr/bin/diff" - WGET="/usr/bin/wget" - MD5="/usr/bin/md5sum" -diff -crB apf-9.7-2/files/sysctl.rules apf-9.7-2-arch/files/sysctl.rules -*** apf-9.7-2/files/sysctl.rules 2011-10-19 01:45:35.000000000 -0400 ---- apf-9.7-2-arch/files/sysctl.rules 2012-01-09 05:53:13.844571069 -0500 -*************** -*** 6,12 **** - SYSCTL_CONNTRACK = 28000 - fi - -! echo $SYSCTL_CONNTRACK > /proc/sys/net/ipv4/ip_conntrack_max - echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses - echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts - ---- 6,14 ---- - SYSCTL_CONNTRACK = 28000 - fi - -! #echo $SYSCTL_CONNTRACK > /proc/sys/net/ipv4/ip_conntrack_max -! echo $SYSCTL_CONNTRACK > /proc/sys/net/ipv4/netfilter/ip_conntrack_max -! - echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses - echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts - -diff -crB apf-9.7-2/files/vnet/vnetgen apf-9.7-2-arch/files/vnet/vnetgen -*** apf-9.7-2/files/vnet/vnetgen 2011-11-10 19:53:16.000000000 -0500 ---- apf-9.7-2-arch/files/vnet/vnetgen 2012-01-09 04:11:34.000000000 -0500 -*************** -*** 41,47 **** - echo "$ip and $ifconfig not found; aborting" - exit 1 - elif [ -f "$ip" ]; then -! for addr in `/sbin/ip addr list | tr '/' ' ' | grep -w inet | grep -w $IF | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do - if [ ! -f "$INSTALL_PATH/vnet/$addr.rules" ]; then - touch $INSTALL_PATH/vnet/$addr.rules - chmod 600 $INSTALL_PATH/vnet/$addr.rules ---- 41,47 ---- - echo "$ip and $ifconfig not found; aborting" - exit 1 - elif [ -f "$ip" ]; then -! for addr in `$ip addr list | tr '/' ' ' | grep -w inet | grep -w $IF | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do - if [ ! -f "$INSTALL_PATH/vnet/$addr.rules" ]; then - touch $INSTALL_PATH/vnet/$addr.rules - chmod 600 $INSTALL_PATH/vnet/$addr.rules -*************** -*** 67,73 **** - if [ -f "$ip" ]; then - valtif=`echo $TIF | grep $anet` - if [ "$valtif" == "" ]; then -! for addr in `/sbin/ip addr list | tr '/' ' ' | grep -w inet | grep -w $anet | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do - if [ ! -f "$INSTALL_PATH/vnet/$addr.rules" ]; then - touch $INSTALL_PATH/vnet/$addr.rules - chmod 600 $INSTALL_PATH/vnet/$addr.rules ---- 67,73 ---- - if [ -f "$ip" ]; then - valtif=`echo $TIF | grep $anet` - if [ "$valtif" == "" ]; then -! for addr in `$ip addr list | tr '/' ' ' | grep -w inet | grep -w $anet | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do - if [ ! -f "$INSTALL_PATH/vnet/$addr.rules" ]; then - touch $INSTALL_PATH/vnet/$addr.rules - chmod 600 $INSTALL_PATH/vnet/$addr.rules +diff -aur apf-9.7-2/files/firewall apf-9.7-2-arch/files/firewall +--- apf-9.7-2/files/firewall 2011-11-10 19:53:16.000000000 -0500 ++++ apf-9.7-2-arch/files/firewall 2012-01-09 05:53:31.617196010 -0500 +@@ -87,7 +87,7 @@ + # Allow all traffic on trusted interfaces + if [ ! "$IFACE_TRUSTED" == "" ]; then + for i in `echo $IFACE_TRUSTED | tr ',' ' '`; do +-VAL_IF=`/sbin/ip addr list | grep -w $i` ++VAL_IF=`$ip addr list | grep -w $i` + if [ "$VAL_IF" == "" ]; then + eout "{glob} unable to verify status of interface $i; assuming untrusted" + else +@@ -105,7 +105,7 @@ + $IPT -A PROHIBIT -j REJECT --reject-with icmp-host-prohibited + + # Load our SYSCTL rules +-. $INSTALL_PATH/sysctl.rules >> /dev/null 2>&1 ++. $INSTALL_PATH/sysctl.rules >> /dev/null # 2>&1 + + # Fix MTU/MSS Problems + $IPT -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu +diff -aur apf-9.7-2/files/internals/functions.apf apf-9.7-2-arch/files/internals/functions.apf +--- apf-9.7-2/files/internals/functions.apf 2011-12-15 21:30:14.000000000 -0500 ++++ apf-9.7-2-arch/files/internals/functions.apf 2012-01-10 01:01:48.040861894 -0500 +@@ -62,104 +62,35 @@ + fi + } + +-ml() { +-MOD=$1 +-VALMOD=$2 +-if [ "$KREL" == "2.4" ]; then +- MEXT="o" +-elif [ "$KREL" == "2.6" ]; then +- MEXT="ko" +-elif [[ "$KREL" =~ "3." ]]; then +- MEXT="ko" +-elif [ ! "$KREL" == "2.4" ] && [ ! "$KREL" == "2.6" ] && [[ ! "$KREL" =~ "3." ]]; then +- if [ ! "$SET_VERBOSE" == "1" ]; then +- echo "kernel version not compatible or netfilter support missing, aborting." +- fi +- eout "{glob} kernel version not compatible or netfilter support missing, aborting." +- exit 1 +-else +- if [ ! "$SET_VERBOSE" == "1" ]; then +- echo "kernel version not compatible or netfilter support missing, aborting." +- fi +- eout "{glob} kernel version not compatible or netfilter support missing, aborting." +- exit 1 +-fi ++modinit() { ++ [ "$SET_MONOKERN" == "1" ] && return 0 + +-if [ "$VALMOD" == "1" ] && [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/$1.$MEXT" ]; then +- if [ ! "$SET_VERBOSE" == "1" ]; then +- echo "Unable to load iptables module ($1), aborting." +- fi +- eout "{glob} unable to load iptables module ($1), aborting." +- exit 1 +-fi +-if [ -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/$1.$MEXT" ] || [ -f "/lib/modules/$(uname -r)/kernel/net/netfilter/$1.$MEXT" ]; then +- $MPB $1 >> /dev/null 2>&1 & +-fi +-} ++ local modules m + +-modinit() { +-# Remove ipchains module if loaded +-IPC_VAL=`$LSM | grep ipchains` +-if [ ! "$IPC_VAL" == "" ]; then +- $RMM ipchains +-fi +- +-if [ ! "$SET_MONOKERN" == "1" ]; then +-# Loading Kernel Modules +-ml ip_tables 1 +-ml iptable_filter +-ml iptable_mangle +-ml ip_conntrack +-ml ip_conntrack_irc +-ml ip_conntrack_ftp +-ml ipt_state +-ml ipt_multiport +-ml ipt_limit +-ml ipt_recent +-ml ipt_LOG +-ml ipt_REJECT +-ml ipt_ecn +-ml ipt_length +-ml ipt_mac +-ml ipt_multiport +-ml ipt_owner +-ml ipt_state +-ml ipt_ttl +-ml ipt_TOS +-ml ipt_TCPMSS +-ml ipt_ULOG +-ml xt_conntrack +-ml xt_conntrack_irc +-ml xt_conntrack_ftp +-ml xt_state +-ml xt_multiport +-ml xt_limit +-ml xt_recent +-ml xt_LOG +-ml xt_REJECT +-ml xt_ecn +-ml xt_length +-ml xt_mac +-ml xt_multiport +-ml xt_owner +-ml xt_state +-ml xt_ttl +-ml xt_TOS +-ml xt_TCPMSS +-ml xt_ULOG +-ml nf_conntrack +-ml nf_conntrack_irc +-ml nf_conntrack_ftp +-fi ++ case "$KREL" in ++ 2.[46]) ;; ++ 3.[0-9]) ;; ++ *) eout "{glob} kernel version not equal to 2.4.x or 2.6.x, aborting."; exit 1;; ++ esac ++ ++ modules="ip_tables iptable_filter iptable_mangle ip_conntrack ip_conntrack_ftp ipt_state ipt_multiport ipt_limit ipt_recent ++ ipt_LOG ipt_REJECT ipt_ecn ipt_length ipt_mac ipt_multiport ipt_owner ipt_state ipt_ttl ipt_TOS ipt_TCPMSS ipt_ULOG ++ xt_TCPMSS xt_conntrack xt_state xt_multiport xt_limit xt_recent xt_length xt_mac xt_multiport xt_owner xt_state nf_conntrack ++ nf_conntrack_irc nf_conntrack_ftp " ++ ++ # failed to load: xt_ULOG xt_TOS xt_conntrack_irc xt_conntrack_ftp xt_LOG xt_REJECT xt_ecn xt_ttl ip_conntrack_irc ++ ++ for m in $modules; do ++ $MPB $m >/dev/null 2>&1 || { eout "{glob} unable to load iptables module ($m), aborting."; return 1; } ++ done ++ return 0 + } + + check_rab() { +-if [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/ipt_recent.$MEXT" ] && [ ! -f "/lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/xt_recent.$MEXT" ]; then +- if [ "$RAB" == "1" ]; then +- RAB="0" +- eout "{rab} force set RAB disabled, kernel module xt/ipt_recent not found." +- fi +-fi ++ if [ "$RAB" = "1" ] && [ -z "$(cat /proc/net/ip_tables_matches | grep '^recent')" ]; then ++ RAB="0" ++ eout "{rab} force set RAB disabled, kernel module ipt_recent not found." ++ fi + } + + get_state() { +@@ -287,7 +218,7 @@ + val_rev=`cat $ALLOW_HOSTS | grep -w $HOST` + val_rev2=`cat $GALLOW_HOSTS | grep -w $HOST` + val_rev3=`cat $GDENY_HOSTS | grep -w $HOST` +- val_rev4=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` ++ val_rev4=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` + if [ ! "$val" == "" ]; then + echo "$HOST already exists in $DENY_HOSTS" + elif [ ! "$val_rev" == "" ]; then +@@ -328,7 +259,7 @@ + val_rev=`cat $ALLOW_HOSTS | grep -w $HOST` + val_rev2=`cat $GALLOW_HOSTS | grep -w $HOST` + val_rev3=`cat $GDENY_HOSTS | grep -w $HOST` +- val_rev4=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` ++ val_rev4=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $HOST` + if [ ! "$val" == "" ]; then + echo "$HOST already exists in $DENY_HOSTS" + elif [ ! "$val_rev" == "" ]; then +@@ -396,8 +327,8 @@ + /usr/bin/pico -w $iptc + elif [ -f "/usr/bin/nano" ]; then + /usr/bin/nano -w $iptc +-elif [ -f "/bin/vi" ]; then +- /bin/vi $iptc ++elif [ -f "/usr/bin/vi" ]; then ++ /usr/bin/vi $iptc + fi + clear + rm -f $iptc +@@ -550,7 +481,7 @@ + # + # + for i in `cat $ALLOW_HOSTS | grep -v "#" | grep -v ":" | grep -v "="`; do +- val=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` ++ val=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` + if [ ! "$val" ]; then + if [ ! "$i" == "" ] && [ -f "$ALLOW_HOSTS" ]; then + eout "{trust} allow all to/from $i" +@@ -842,7 +773,7 @@ + # + # + for i in `cat $DENY_HOSTS | grep -v "#" | grep -v ":" | grep -v "="`; do +- val=`/sbin/ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` ++ val=`$ip addr list $IFACE_IN | grep -w inet | grep -v inet6 | tr '/' ' ' | awk '{print$2}' | grep -w $i` + if [ ! "$val" ]; then + if [ ! "$i" == "" ] && [ -f "$DENY_HOSTS" ]; then + eout "{trust} deny all to/from $i" +@@ -1501,7 +1432,7 @@ + + refresh() { + eout "{glob} refreshing trust system rules." +- /sbin/iptables-save | grep -E "TDENY|TGDENY" | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | awk '{print$4}' | sort -n | uniq | sort > /etc/apf/internals/refresh.drop.temp ++ $IPTS | grep -E "TDENY|TGDENY" | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | awk '{print$4}' | sort -n | uniq | sort > /etc/apf/internals/refresh.drop.temp + $IPT -F TMP_DROP + for i in `cat /etc/apf/internals/refresh.drop.temp | grep -v "#"`; do + if [ ! "$i" == "" ]; then +diff -aur apf-9.7-2/files/internals/internals.conf apf-9.7-2-arch/files/internals/internals.conf +--- apf-9.7-2/files/internals/internals.conf 2009-03-17 08:37:05.000000000 -0400 ++++ apf-9.7-2-arch/files/internals/internals.conf 2012-01-09 03:55:05.000000000 -0500 +@@ -7,13 +7,13 @@ + APPN="apf" + + ifconfig=/sbin/ifconfig +-ip=/sbin/ip +-IPT="/sbin/iptables" ++ip=/usr/sbin/ip ++IPT="/usr/sbin/iptables" + MPB="/sbin/modprobe" +-LSM="/sbin/lsmod" ++LSM="/bin/lsmod" + RMM="/sbin/rmmod" +-IPTS="/sbin/iptables-save" +-IPTR="/sbin/iptables-restore" ++IPTS="/usr/sbin/iptables-save" ++IPTR="/usr/sbin/iptables-restore" + DIFF="/usr/bin/diff" + WGET="/usr/bin/wget" + MD5="/usr/bin/md5sum" +diff -aur apf-9.7-2/files/sysctl.rules apf-9.7-2-arch/files/sysctl.rules +--- apf-9.7-2/files/sysctl.rules 2011-10-19 01:45:35.000000000 -0400 ++++ apf-9.7-2-arch/files/sysctl.rules 2012-01-09 05:53:13.844571069 -0500 +@@ -6,7 +6,9 @@ + SYSCTL_CONNTRACK = 28000 + fi + +-echo $SYSCTL_CONNTRACK > /proc/sys/net/ipv4/ip_conntrack_max ++#echo $SYSCTL_CONNTRACK > /proc/sys/net/ipv4/ip_conntrack_max ++echo $SYSCTL_CONNTRACK > /proc/sys/net/ipv4/netfilter/ip_conntrack_max ++ + echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses + echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts + +diff -aur apf-9.7-2/files/vnet/vnetgen apf-9.7-2-arch/files/vnet/vnetgen +--- apf-9.7-2/files/vnet/vnetgen 2011-11-10 19:53:16.000000000 -0500 ++++ apf-9.7-2-arch/files/vnet/vnetgen 2012-01-09 04:11:34.000000000 -0500 +@@ -41,7 +41,7 @@ + echo "$ip and $ifconfig not found; aborting" + exit 1 + elif [ -f "$ip" ]; then +- for addr in `/sbin/ip addr list | tr '/' ' ' | grep -w inet | grep -w $IF | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do ++ for addr in `$ip addr list | tr '/' ' ' | grep -w inet | grep -w $IF | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do + if [ ! -f "$INSTALL_PATH/vnet/$addr.rules" ]; then + touch $INSTALL_PATH/vnet/$addr.rules + chmod 600 $INSTALL_PATH/vnet/$addr.rules +@@ -67,7 +67,7 @@ + if [ -f "$ip" ]; then + valtif=`echo $TIF | grep $anet` + if [ "$valtif" == "" ]; then +- for addr in `/sbin/ip addr list | tr '/' ' ' | grep -w inet | grep -w $anet | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do ++ for addr in `$ip addr list | tr '/' ' ' | grep -w inet | grep -w $anet | grep -v 127.0.0.1 | grep -vw $NET | awk '{print$2}'`; do + if [ ! -f "$INSTALL_PATH/vnet/$addr.rules" ]; then + touch $INSTALL_PATH/vnet/$addr.rules + chmod 600 $INSTALL_PATH/vnet/$addr.rules diff --git a/armory-git/Makefile.patch b/armory-git/Makefile.patch new file mode 100644 index 000000000..dfb24d7da --- /dev/null +++ b/armory-git/Makefile.patch @@ -0,0 +1,6 @@ +13,14c13,14 +< INCLUDE_OPTS += -I/usr/include/crypto++ -fPIC -DTEST_NETWORK -DUSE_CRYPTOPP -D__STDC_LIMIT_MACROS +< LIBRARY_OPTS += -lcrypto++ -lpthread +--- +> INCLUDE_OPTS += -I/usr/include/crypto++ -fPIC -DTEST_NETWORK -DUSE_CRYPTOPP -D__STDC_LIMIT_MACROS -Icryptopp +> LIBRARY_OPTS += -lcryptopp -lpthread -Icryptopp diff --git a/armory-git/PKGBUILD b/armory-git/PKGBUILD new file mode 100644 index 000000000..83fa21c30 --- /dev/null +++ b/armory-git/PKGBUILD @@ -0,0 +1,62 @@ +# Maintainer: Justin Gottula +pkgname=armory-git +pkgver=20120109 +pkgrel=4 +pkgdesc="Python-Based Bitcoin Software" +arch=('i686' 'x86_64') +url="https://github.com/etotheipi/BitcoinArmory" +license=('AGPL3') +groups=() +depends=('crypto++' 'swig' 'python2' 'twisted' 'qt' 'python2-pyqt') +makedepends=('git' 'gcc' 'make') +provides=('armory') +conflicts=('armory') +replaces=() +backup=() +options=() +install= +source=('Makefile.patch' + 'run-armory.sh') +noextract=() +sha256sums=('3817a40d681ccee86cde141ed26f7db8e1449d5cd76489f95861fb69c43ec85a' + 'baa1d335273af1f1f4d12dd68f066035e5b4485b215172690c307877ac62168c') + +_gitroot='git://github.com/etotheipi/BitcoinArmory.git' +_gitname='BitcoinArmory' +_gitbranch='qtdev' + +build() { + cd "$srcdir" + msg "Connecting to GIT server...." + + if [[ -d "$_gitname" ]]; then + cd "$_gitname" && git pull origin $_gitbranch + msg "The local files are updated." + else + git clone -b $_gitbranch "$_gitroot" "$_gitname" + fi + + msg "GIT checkout done or server timeout" + msg "Starting build..." + + rm -rf "$srcdir/$_gitname-build" + git clone "$srcdir/$_gitname" "$srcdir/$_gitname-build" + cd "$srcdir/$_gitname-build" + + cd cppForSwig + patch Makefile <$srcdir/Makefile.patch + make swig + cd - +} + +package() { + install -Dm 755 "$srcdir/run-armory.sh" "$pkgdir/usr/bin/armory" + + mkdir -p "$pkgdir/opt" + cp -R "$srcdir/$_gitname-build/" "$pkgdir/opt/" + mv "$pkgdir/opt/$_gitname-build" "$pkgdir/opt/$_gitname" + + rm -rf "$pkgdir/opt/$_gitname/cppForSwig/" + rm -rf "$pkgdir/opt/$_gitname/.git/" + rm -rf "$pkgdir/opt/$_gitname/.gitignore" +} diff --git a/armory-git/run-armory.sh b/armory-git/run-armory.sh new file mode 100644 index 000000000..fe3368474 --- /dev/null +++ b/armory-git/run-armory.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +python2 /opt/BitcoinArmory/ArmoryQt.py $@ diff --git a/backuppc/PKGBUILD b/backuppc/PKGBUILD index fa5d57108..dadcab4d4 100644 --- a/backuppc/PKGBUILD +++ b/backuppc/PKGBUILD @@ -1,7 +1,7 @@ # Contributor: David Andersen # Contributor: Cedric Chabanois pkgname=backuppc -pkgver=3.2.0 +pkgver=3.2.1 pkgrel=1 pkgdesc="System for backing up computers to a server's disk." url="http://backuppc.sourceforge.net/" @@ -13,7 +13,7 @@ source=(http://downloads.sourceforge.net/project/backuppc/backuppc/${pkgver}/Bac backuppc.rc backuppc-httpd.conf backuppc-httpd.rc) install=backuppc.install backup=('etc/BackupPC/config.pl' 'etc/BackupPC/hosts' 'etc/httpd/conf/backuppc-httpd.conf') -md5sums=('4b77610d8d1130daf0892fc7134be985' +md5sums=('2334fafb8e03284225a9b8a7fb230012' 'bc7402cb4ec4b5f646e2794be67827d1' 'dab0bb18225d5898dc5ceb9fda39b76c' 'db7bccc7e704a2ad32fef8d3dfddf736') diff --git a/cinnamon-extensions-git/PKGBUILD b/cinnamon-extensions-git/PKGBUILD index d0bc3c1c4..06f892dcf 100644 --- a/cinnamon-extensions-git/PKGBUILD +++ b/cinnamon-extensions-git/PKGBUILD @@ -1,14 +1,15 @@ # Maintainer: crazyelf5 pkgname=cinnamon-extensions-git -pkgver=20120109 +pkgver=20120110 pkgrel=1 pkgdesc="Cinnamon extensions" -arch=('i686' 'x86_64') -url="https://github.com/linuxmint/Cinnamon" +arch=('any') +url="https://github.com/linuxmint/cinnamon-extensions" license=('GPL') depends=('cinnamon' 'gtk3' 'dconf') makedepends=('git') +optdepends=('cinnamon-settings-git: Enable extensions the easy way [AUR]') install=$pkgname.install _gitroot="git://github.com/linuxmint/cinnamon-extensions.git" @@ -26,7 +27,7 @@ build() { msg "GIT checkout done or server timeout" msg "Starting build..." - + install -dm755 "$pkgdir"/usr/share/{glib-2.0/schemas,cinnamon/extensions} find . -type f -name *.xml -exec cp '{}' "$pkgdir/usr/share/glib-2.0/schemas" \; find . -type d -name *@* -exec cp -r '{}' "$pkgdir/usr/share/cinnamon/extensions" \; diff --git a/cinnamon-extensions-git/cinnamon-extensions-git.install b/cinnamon-extensions-git/cinnamon-extensions-git.install index e35143571..b0e83c113 100644 --- a/cinnamon-extensions-git/cinnamon-extensions-git.install +++ b/cinnamon-extensions-git/cinnamon-extensions-git.install @@ -12,6 +12,9 @@ and enter the desired extension name, it should look like this: The extension names are the same as the folder names in /usr/share/cinnamon/extensions +Or you could just install 'cinnamon-settings-git' from AUR + and enable the extensions from there + You need to restart Cinnamon Alt+F2, and type "r" diff --git a/cinnamon-settings-git/PKGBUILD b/cinnamon-settings-git/PKGBUILD index f23dfad8f..f2b239ffe 100644 --- a/cinnamon-settings-git/PKGBUILD +++ b/cinnamon-settings-git/PKGBUILD @@ -1,13 +1,13 @@ # Maintainer: crazyelf5 pkgname=cinnamon-settings-git -pkgver=20120109 +pkgver=20120110 pkgrel=1 pkgdesc="Cinnamon configuration tool" arch=('any') url="https://github.com/linuxmint/cinnamon-settings" license=('GPL') -depends=('cinnamon' 'python2' 'pygtk') +depends=('cinnamon' 'python2' 'python2-gconf' 'python2-gobject2' 'pygtk') makedepends=('git') _gitroot=git://github.com/linuxmint/cinnamon-settings.git diff --git a/evolution-plugins-experimental/PKGBUILD b/evolution-plugins-experimental/PKGBUILD index 411061b3a..957091cef 100644 --- a/evolution-plugins-experimental/PKGBUILD +++ b/evolution-plugins-experimental/PKGBUILD @@ -2,7 +2,7 @@ pkgname=evolution-plugins-experimental _pkgname=evolution -pkgver=3.2.2 +pkgver=3.2.3 pkgrel=1 pkgdesc="Additional experimental (unmaintained) plugins for Gnome Evolution - external-editor" arch=('i686' 'x86_64') @@ -12,7 +12,7 @@ makedepends=('gnome-doc-utils' 'intltool') options=('!libtool' '!emptydirs') url=http://www.gnome.org/projects/evolution/ source=(http://ftp.gnome.org/pub/gnome/sources/${_pkgname}/${pkgver%.*}/${_pkgname}-${pkgver}.tar.xz) -sha256sums=('03c68242bbf494dda3bf34f52ec843c282c9bb07f9415a69fe58237c7efbbe7d') +sha256sums=('a25d523e775c022ec9e68d7b989316e7252b687d70b9db2f60b72bb833099e9d') build() { cd "${srcdir}/${_pkgname}-${pkgver}" diff --git a/gparted-git/PKGBUILD b/gparted-git/PKGBUILD index a54980c9a..3c6c01abd 100644 --- a/gparted-git/PKGBUILD +++ b/gparted-git/PKGBUILD @@ -3,24 +3,25 @@ _pkgname="gparted" pkgname="${_pkgname}-git" -pkgver=20111104 +pkgver=20120110 pkgrel=1 pkgdesc="GNOME Partition Manager, frontend to GNU Parted - GIT Version" arch=('i686' 'x86_64') url="http://gparted.sourceforge.net" license=('GPL') + makedepends=('intltool' 'pkg-config' 'gnome-doc-utils>=0.20.4' 'gnome-common') depends=('util-linux' 'parted' 'gtkmm' 'libsigc++' 'gksu' 'hicolor-icon-theme') optdepends=('e2fsprogs: for ext2/ext3 partitions' - 'dosfstools: for fat16/32 partitions' - 'jfsutils: for jfs partitions' - 'ntfsprogs: for ntfs partitions' - 'reiserfsprogs: for reiserfs partitions' - 'hfsprogs: for hfs+ partitions' - 'xfsprogs: for xfs partitions' - 'polkit: to run gparted directly from menu' - 'gpart: for recovering corrupt partition tables' - 'mtools') + 'dosfstools: for fat16/32 partitions' + 'jfsutils: for jfs partitions' + 'ntfsprogs: for ntfs partitions' + 'reiserfsprogs: for reiserfs partitions' + 'hfsprogs: for hfs+ partitions' + 'xfsprogs: for xfs partitions' + 'polkit: to run gparted directly from menu' + 'gpart: for recovering corrupt partition tables' + 'mtools: for manipulating FAT fs image files') install="${pkgname}.install" conflicts=("${_pkgname}") @@ -39,8 +40,7 @@ _update_git() { msg "Connecting to GIT server...." - if [ -d "${srcdir}/${_gitname}/" ] - then + if [[ -d "${srcdir}/${_gitname}/" ]]; then cd "${srcdir}/${_gitname}/" git reset --hard git fetch @@ -70,9 +70,13 @@ build() { mkdir -p "${srcdir}/${_gitname}_build/BUILD" cd "${srcdir}/${_gitname}_build/BUILD" - CFLAGS="" LDFLAGS="" ../autogen.sh --prefix=/usr --enable-libparted-dmraid + set -x -e + + CFLAGS="" LDFLAGS="" ../autogen.sh --prefix="/usr" --enable-libparted-dmraid echo + set +x +e + msg "Starting make..." CFLAGS="" LDFLAGS="" make echo @@ -87,7 +91,7 @@ package() { echo # Install policy file - install -Dm644 "${srcdir}/org.archlinux.pkexec.gparted.policy" "${pkgdir}/usr/share/polkit-1/actions/org.archlinux.pkexec.gparted.policy" + install -D -m0644 "${srcdir}/org.archlinux.pkexec.gparted.policy" "${pkgdir}/usr/share/polkit-1/actions/org.archlinux.pkexec.gparted.policy" # Install launcher script mkdir -p "${pkgdir}/usr/bin" diff --git a/gtk-theme-hope/PKGBUILD b/gtk-theme-hope/PKGBUILD index 34dd0af5e..a468ca697 100644 --- a/gtk-theme-hope/PKGBUILD +++ b/gtk-theme-hope/PKGBUILD @@ -2,12 +2,12 @@ pkgname=gtk-theme-hope pkgver=20120109 -pkgrel=1 +pkgrel=2 pkgdesc="Matching GTK2, GTK3 Gnome-shell, & XFCE Hope Themes" url="http://grvrulz.deviantart.com/art/Hope-gtk3-206207315" license=('cc-by-nc-sa-3.0') arch=('any') -depends=('gtk-engine-murrine-git') +depends=('gtk-engine-murrine') makedepends=('p7zip') optdepends=('gtk-engine-unico: for the gtk3 theme' 'xfwm4: for XFCE theme' @@ -25,4 +25,4 @@ package() { rm -r ${pkgdir}/usr/share/themes/ptsans } -md5sums=('cd62f2cc2bafeb6b99330397694610f3') +md5sums=('2e6e868446ab1421642a3d02bb2d7574') diff --git a/gtk-youtube-viewer/PKGBUILD b/gtk-youtube-viewer/PKGBUILD index 5b6b28629..7d2b4eb8f 100644 --- a/gtk-youtube-viewer/PKGBUILD +++ b/gtk-youtube-viewer/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Trizen pkgname=gtk-youtube-viewer -pkgver=20120108 +pkgver=20120110 pkgrel=1 pkgdesc="Gtk2 interface for YouTube-Viewer ( http://aur.archlinux.org/packages.php?ID=37779 )" diff --git a/kernel26-uksm/PKGBUILD b/kernel26-uksm/PKGBUILD index a1f3c3d5b..fe39dd28b 100644 --- a/kernel26-uksm/PKGBUILD +++ b/kernel26-uksm/PKGBUILD @@ -6,9 +6,9 @@ pkgname=('kernel26-uksm') _kernelname=${pkgname#kernel26} _basekernel=2.6.38 _kernelversion=2.6.38 -_uksmpatchname="uksm-2.6.38-20111223.patch" +_uksmpatchname="uksm-2.6.38-20120110.patch" pkgver=${_basekernel} -pkgrel=3 +pkgrel=4 makedepends=('xmlto' 'docbook-xsl') arch=(i686 x86_64) license=('GPL2') @@ -16,14 +16,14 @@ url="http://code.google.com/p/uksm/" options=(!strip) pkgdesc="The Linux Kernel and modules with uksm patches" source=(http://www.kernel.org/pub/linux/kernel/v2.6/linux-${_kernelversion}.tar.bz2 - uksm-2.6.38-20111223.patch + uksm-2.6.38-20120110.patch config config.x86_64 # standard config files for mkinitcpio ramdisk kernel26.preset) md5sums=('7d471477bfa67546f902da62227fa976' - '8cbd92a2002d0642211ac9e8e5e1eb9c' + '895cef2544c09e920a08645a292f7997' '2f401f72c379197c5c81cb4c024b128e' 'a508f84e9466110c3fb0d2d9688b3c8c' '0c8e0d5f586727fdc3c97c37660e491f') diff --git a/kernel26-uksm/uksm-2.6.38-20111223.patch b/kernel26-uksm/uksm-2.6.38-20120110.patch similarity index 94% rename from kernel26-uksm/uksm-2.6.38-20111223.patch rename to kernel26-uksm/uksm-2.6.38-20120110.patch index ba8efaf0d..1956957cc 100644 --- a/kernel26-uksm/uksm-2.6.38-20111223.patch +++ b/kernel26-uksm/uksm-2.6.38-20120110.patch @@ -1,6 +1,6 @@ -diff -Nur linux-2.6.38/arch/x86/kernel/entry_32.S uksm-2.6.38/arch/x86/kernel/entry_32.S +diff -urN linux-2.6.38/arch/x86/kernel/entry_32.S uksm-2.6.38-zhang/arch/x86/kernel/entry_32.S --- linux-2.6.38/arch/x86/kernel/entry_32.S 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/arch/x86/kernel/entry_32.S 2011-12-16 01:09:35.000000000 +0800 ++++ uksm-2.6.38-zhang/arch/x86/kernel/entry_32.S 2012-01-09 10:05:23.642269166 +0800 @@ -1413,7 +1413,7 @@ CFI_ADJUST_CFA_OFFSET 4 jmp error_code @@ -10,9 +10,9 @@ diff -Nur linux-2.6.38/arch/x86/kernel/entry_32.S uksm-2.6.38/arch/x86/kernel/en #endif /* -diff -Nur linux-2.6.38/arch/x86/kernel/entry_64.S uksm-2.6.38/arch/x86/kernel/entry_64.S +diff -urN linux-2.6.38/arch/x86/kernel/entry_64.S uksm-2.6.38-zhang/arch/x86/kernel/entry_64.S --- linux-2.6.38/arch/x86/kernel/entry_64.S 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/arch/x86/kernel/entry_64.S 2011-12-16 01:09:35.000000000 +0800 ++++ uksm-2.6.38-zhang/arch/x86/kernel/entry_64.S 2012-01-09 10:05:23.642269166 +0800 @@ -1248,7 +1248,7 @@ decl PER_CPU_VAR(irq_count) jmp error_exit @@ -22,9 +22,9 @@ diff -Nur linux-2.6.38/arch/x86/kernel/entry_64.S uksm-2.6.38/arch/x86/kernel/en /* * Hypervisor uses this for application faults while it executes. -diff -Nur linux-2.6.38/fs/exec.c uksm-2.6.38/fs/exec.c +diff -urN linux-2.6.38/fs/exec.c uksm-2.6.38-zhang/fs/exec.c --- linux-2.6.38/fs/exec.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/fs/exec.c 2011-12-16 01:10:09.000000000 +0800 ++++ uksm-2.6.38-zhang/fs/exec.c 2012-01-09 10:05:55.168936883 +0800 @@ -19,7 +19,7 @@ * current->executable is only used by the procfs. This allows a dispatch * table to check for several different types of binary formats. We keep @@ -71,33 +71,36 @@ diff -Nur linux-2.6.38/fs/exec.c uksm-2.6.38/fs/exec.c * Check permissions, then read the first 128 (BINPRM_BUF_SIZE) bytes * * This may be called multiple times for binary chains (scripts for example). -diff -Nur linux-2.6.38/fs/proc/meminfo.c uksm-2.6.38/fs/proc/meminfo.c +diff -urN linux-2.6.38/fs/proc/meminfo.c uksm-2.6.38-zhang/fs/proc/meminfo.c --- linux-2.6.38/fs/proc/meminfo.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/fs/proc/meminfo.c 2011-12-16 01:10:10.000000000 +0800 -@@ -87,6 +87,9 @@ ++++ uksm-2.6.38-zhang/fs/proc/meminfo.c 2012-01-09 10:05:56.362270256 +0800 +@@ -87,6 +87,10 @@ "SUnreclaim: %8lu kB\n" "KernelStack: %8lu kB\n" "PageTables: %8lu kB\n" +#ifdef CONFIG_KSM + "KsmSharing: %8lu kB\n" ++ "KsmZeroPages: %8lu kB\n" +#endif #ifdef CONFIG_QUICKLIST "Quicklists: %8lu kB\n" #endif -@@ -145,6 +148,9 @@ +@@ -145,6 +149,10 @@ K(global_page_state(NR_SLAB_UNRECLAIMABLE)), global_page_state(NR_KERNEL_STACK) * THREAD_SIZE / 1024, K(global_page_state(NR_PAGETABLE)), +#ifdef CONFIG_KSM + K(global_page_state(NR_KSM_PAGES_SHARING)), ++ K(global_page_state(NR_KSM_ZERO_PAGES)), +#endif #ifdef CONFIG_QUICKLIST K(quicklist_total_size()), #endif -diff -Nur linux-2.6.38/include/linux/ksm.h uksm-2.6.38/include/linux/ksm.h +Binary files linux-2.6.38/.gitignore.swp and uksm-2.6.38-zhang/.gitignore.swp differ +diff -urN linux-2.6.38/include/linux/ksm.h uksm-2.6.38-zhang/include/linux/ksm.h --- linux-2.6.38/include/linux/ksm.h 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/include/linux/ksm.h 2011-12-22 17:46:52.213988023 +0800 -@@ -20,24 +20,6 @@ ++++ uksm-2.6.38-zhang/include/linux/ksm.h 2012-01-09 10:11:24.218947858 +0800 +@@ -20,23 +20,10 @@ struct vm_area_struct *vma, unsigned long address); #ifdef CONFIG_KSM @@ -105,7 +108,7 @@ diff -Nur linux-2.6.38/include/linux/ksm.h uksm-2.6.38/include/linux/ksm.h - unsigned long end, int advice, unsigned long *vm_flags); -int __ksm_enter(struct mm_struct *mm); -void __ksm_exit(struct mm_struct *mm); -- + -static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm) -{ - if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags)) @@ -118,25 +121,27 @@ diff -Nur linux-2.6.38/include/linux/ksm.h uksm-2.6.38/include/linux/ksm.h - if (test_bit(MMF_VM_MERGEABLE, &mm->flags)) - __ksm_exit(mm); -} -- ++extern unsigned long zero_pfn __read_mostly; ++extern unsigned long ksm_zero_pfn __read_mostly; ++extern struct page *empty_ksm_zero_page; + /* * A KSM page is one of those write-protected "shared pages" or "merged pages" - * which KSM maps into multiple mms, wherever identical anonymous page content -@@ -62,6 +44,13 @@ +@@ -62,6 +49,13 @@ (PAGE_MAPPING_ANON | PAGE_MAPPING_KSM); } +/* must be done before linked to mm */ -+extern void ksm_vma_add_new(struct vm_area_struct *vma); ++extern void ksm_vma_add_new(struct vm_area_struct *vma); + +extern void ksm_remove_vma(struct vm_area_struct *vma); -+extern int unmerge_ksm_pages(struct vm_area_struct *vma, ++extern int unmerge_ksm_pages(struct vm_area_struct *vma, + unsigned long start, unsigned long end); + /* * When do_swap_page() first faults in from swap what used to be a KSM page, * no problem, it will be assigned to this vma's anon_vma; but thereafter, -@@ -90,16 +79,184 @@ +@@ -90,16 +84,184 @@ struct vm_area_struct *, unsigned long, void *), void *arg); void ksm_migrate_page(struct page *newpage, struct page *oldpage); @@ -329,7 +334,7 @@ diff -Nur linux-2.6.38/include/linux/ksm.h uksm-2.6.38/include/linux/ksm.h static inline int PageKsm(struct page *page) { -@@ -107,8 +264,9 @@ +@@ -107,8 +269,9 @@ } #ifdef CONFIG_MMU @@ -341,9 +346,9 @@ diff -Nur linux-2.6.38/include/linux/ksm.h uksm-2.6.38/include/linux/ksm.h { return 0; } -diff -Nur linux-2.6.38/include/linux/mm_types.h uksm-2.6.38/include/linux/mm_types.h +diff -urN linux-2.6.38/include/linux/mm_types.h uksm-2.6.38-zhang/include/linux/mm_types.h --- linux-2.6.38/include/linux/mm_types.h 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/include/linux/mm_types.h 2011-12-16 01:10:13.000000000 +0800 ++++ uksm-2.6.38-zhang/include/linux/mm_types.h 2012-01-09 10:05:57.562270296 +0800 @@ -183,6 +183,9 @@ #ifdef CONFIG_NUMA struct mempolicy *vm_policy; /* NUMA policy for the VMA */ @@ -354,20 +359,21 @@ diff -Nur linux-2.6.38/include/linux/mm_types.h uksm-2.6.38/include/linux/mm_typ }; struct core_thread { -diff -Nur linux-2.6.38/include/linux/mmzone.h uksm-2.6.38/include/linux/mmzone.h +diff -urN linux-2.6.38/include/linux/mmzone.h uksm-2.6.38-zhang/include/linux/mmzone.h --- linux-2.6.38/include/linux/mmzone.h 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/include/linux/mmzone.h 2011-12-16 01:10:13.000000000 +0800 -@@ -115,6 +115,9 @@ ++++ uksm-2.6.38-zhang/include/linux/mmzone.h 2012-01-09 10:05:57.562270296 +0800 +@@ -115,6 +115,10 @@ NUMA_OTHER, /* allocation from other node */ #endif NR_ANON_TRANSPARENT_HUGEPAGES, +#ifdef CONFIG_KSM + NR_KSM_PAGES_SHARING, ++ NR_KSM_ZERO_PAGES, +#endif NR_VM_ZONE_STAT_ITEMS }; /* -@@ -344,7 +347,7 @@ +@@ -344,7 +348,7 @@ ZONE_PADDING(_pad1_) /* Fields commonly accessed by the page reclaim scanner */ @@ -376,7 +382,7 @@ diff -Nur linux-2.6.38/include/linux/mmzone.h uksm-2.6.38/include/linux/mmzone.h struct zone_lru { struct list_head list; } lru[NR_LRU_LISTS]; -@@ -722,7 +725,7 @@ +@@ -722,7 +726,7 @@ } /** @@ -385,9 +391,9 @@ diff -Nur linux-2.6.38/include/linux/mmzone.h uksm-2.6.38/include/linux/mmzone.h * highmem zone or not. This is an attempt to keep references * to ZONE_{DMA/NORMAL/HIGHMEM/etc} in general code to a minimum. * @zone - pointer to struct zone variable -diff -Nur linux-2.6.38/include/linux/sched.h uksm-2.6.38/include/linux/sched.h +diff -urN linux-2.6.38/include/linux/sched.h uksm-2.6.38-zhang/include/linux/sched.h --- linux-2.6.38/include/linux/sched.h 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/include/linux/sched.h 2011-12-16 01:10:13.000000000 +0800 ++++ uksm-2.6.38-zhang/include/linux/sched.h 2012-01-09 10:05:57.815603639 +0800 @@ -433,7 +433,6 @@ # define MMF_DUMP_MASK_DEFAULT_ELF 0 #endif @@ -417,9 +423,9 @@ diff -Nur linux-2.6.38/include/linux/sched.h uksm-2.6.38/include/linux/sched.h extern void block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask); -diff -Nur linux-2.6.38/kernel/fork.c uksm-2.6.38/kernel/fork.c +diff -urN linux-2.6.38/kernel/fork.c uksm-2.6.38-zhang/kernel/fork.c --- linux-2.6.38/kernel/fork.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/kernel/fork.c 2011-12-16 01:10:14.000000000 +0800 ++++ uksm-2.6.38-zhang/kernel/fork.c 2012-01-09 10:05:59.635603699 +0800 @@ -328,9 +328,6 @@ rb_link = &mm->mm_rb.rb_node; rb_parent = NULL; @@ -458,9 +464,9 @@ diff -Nur linux-2.6.38/kernel/fork.c uksm-2.6.38/kernel/fork.c khugepaged_exit(mm); /* must run before exit_mmap */ exit_mmap(mm); set_mm_exe_file(mm, NULL); -diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c +diff -urN linux-2.6.38/mm/ksm.c uksm-2.6.38-zhang/mm/ksm.c --- linux-2.6.38/mm/ksm.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/mm/ksm.c 2011-12-22 17:46:27.967320547 +0800 ++++ uksm-2.6.38-zhang/mm/ksm.c 2012-01-09 10:05:59.862270375 +0800 @@ -12,6 +12,47 @@ * Hugh Dickins * @@ -509,7 +515,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c */ #include -@@ -33,142 +74,157 @@ +@@ -33,142 +74,168 @@ #include #include #include @@ -574,17 +580,6 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c +{ + size_t num = n / 4; + register int res; -+ __asm__ __volatile__ -+ ("cld\n\t" -+ "testl %3,%3\n\t" -+ "repe; cmpsd\n\t" -+ "je 1f\n\t" -+ "sbbl %0,%0\n\t" -+ "orl $1,%0\n" -+ "1:" -+ : "=&a" (res), "+&S" (s1), "+&D" (s2), "+&c" (num) -+ : "0" (0) -+ : "cc"); -/** - * struct mm_slot - ksm information per mm that is being scanned @@ -599,8 +594,17 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - struct rmap_item *rmap_list; - struct mm_struct *mm; -}; -+ return res; -+} ++ __asm__ __volatile__ ++ ( ++ "testl %3,%3\n\t" ++ "repe; cmpsd\n\t" ++ "je 1f\n\t" ++ "sbbl %0,%0\n\t" ++ "orl $1,%0\n" ++ "1:" ++ : "=&a" (res), "+&S" (s1), "+&D" (s2), "+&c" (num) ++ : "0" (0) ++ : "cc"); -/** - * struct ksm_scan - cursor for scanning @@ -610,10 +614,11 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - * @seqnr: count of completed full scans (needed when removing unstable node) - * - * There is only the one ksm_scan instance of this cursor structure. -+#elif defined(CONFIG_X86_64) -+#define memcmp memcmpx86_64 ++ return res; ++} ++ +/* -+ * Compare 8-byte-aligned address s1 and s2, with length n ++ * Check the page is all zero ? */ -struct ksm_scan { - struct mm_slot *mm_slot; @@ -621,21 +626,9 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - struct rmap_item **rmap_list; - unsigned long seqnr; -}; -+int memcmpx86_64(void *s1, void *s2, size_t n) ++static int is_full_zero(const void *s1, size_t len) +{ -+ size_t num = n / 8; -+ register int res; -+ __asm__ __volatile__ -+ ("cld\n\t" -+ "testq %q3,%q3\n\t" -+ "repe; cmpsq\n\t" -+ "je 1f\n\t" -+ "sbbq %q0,%q0\n\t" -+ "orq $1,%q0\n" -+ "1:" -+ : "=&a" (res), "+&S" (s1), "+&D" (s2), "+&c" (num) -+ : "0" (0) -+ : "cc"); ++ unsigned char same; -/** - * struct stable_node - node of the stable rbtree @@ -648,10 +641,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - struct hlist_head hlist; - unsigned long kpfn; -}; -+ return res; -+} -+#endif -+#endif ++ len /= 4; -/** - * struct rmap_item - reverse mapping item for virtual addresses @@ -678,60 +668,47 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - }; - }; -}; -+#ifdef CONFIG_X86 -+#ifdef CONFIG_X86_32 -+/* -+ * Check the page is all zero ? -+ */ -+static int check_zero_page(const void *s1, size_t len) -+{ -+ unsigned char diff; -+ len = len>>2; -+ asm("repe; scasl; setnz %0" -+ : "=qm" (diff), "+D" (s1), "+c" (len) -+ : "a" (0) -+ :"cc"); -+ return diff; -+} ++ __asm__ __volatile__ ++ ("repe; scasl;" ++ "sete %0" ++ : "=qm" (same), "+D" (s1), "+c" (len) ++ : "a" (0) ++ : "cc"); + -+#elif defined(CONFIG_X86_64) -+static int check_zero_page(const void *s1, size_t len) -+{ -+ unsigned char diff; -+ len = len>>3; -+ asm("repe; scasq; setnz %0" -+ : "=qm" (diff), "+D" (s1), "+c" (len) -+ : "a" (0) -+ :"cc"); -+ return diff; ++ return same; +} -+#endif -+#else -+static int check_zero_page(const void *s1, size_t len) -+{ -+ int ret = 0; -+ u32 *src = (u32 *)s1; -+ u32 z = 0; -+ len = len>>2; -+ while(len--) -+ if ((ret = *src++ - z) != 0) -+ break; -#define SEQNR_MASK 0x0ff /* low bits of unstable tree seqnr */ -#define UNSTABLE_FLAG 0x100 /* is a node of the unstable tree */ -#define STABLE_FLAG 0x200 /* is listed from the stable tree */ -+ return ret; -+} -+#endif -/* The stable and unstable tree heads */ -static struct rb_root root_stable_tree = RB_ROOT; -static struct rb_root root_unstable_tree = RB_ROOT; -+#define U64_MAX (~((u64)0)) ++#elif defined(CONFIG_X86_64) ++#define memcmp memcmpx86_64 ++/* ++ * Compare 8-byte-aligned address s1 and s2, with length n ++ */ ++int memcmpx86_64(void *s1, void *s2, size_t n) ++{ ++ size_t num = n / 8; ++ register int res; -#define MM_SLOTS_HASH_SHIFT 10 -#define MM_SLOTS_HASH_HEADS (1 << MM_SLOTS_HASH_SHIFT) -static struct hlist_head mm_slots_hash[MM_SLOTS_HASH_HEADS]; ++ __asm__ __volatile__ ++ ( ++ "testq %q3,%q3\n\t" ++ "repe; cmpsq\n\t" ++ "je 1f\n\t" ++ "sbbq %q0,%q0\n\t" ++ "orq $1,%q0\n" ++ "1:" ++ : "=&a" (res), "+&S" (s1), "+&D" (s2), "+&c" (num) ++ : "0" (0) ++ : "cc"); -static struct mm_slot ksm_mm_head = { - .mm_list = LIST_HEAD_INIT(ksm_mm_head.mm_list), @@ -739,6 +716,46 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c -static struct ksm_scan ksm_scan = { - .mm_slot = &ksm_mm_head, -}; ++ return res; ++} ++ ++static int is_full_zero(const void *s1, size_t len) ++{ ++ unsigned char same; ++ ++ len /= 8; ++ ++ __asm__ __volatile__ ++ ("repe; scasq;" ++ "sete %0" ++ : "=qm" (same), "+D" (s1), "+c" (len) ++ : "a" (0) ++ : "cc"); ++ ++ return same; ++} ++ ++#endif ++#else ++static int is_full_zero(const void *s1, size_t len) ++{ ++ unsigned long *src = s1; ++ int i; + ++ len /= sizeof(*src); ++ ++ for (i = 0; i < len; i++) { ++ if (src[i]) ++ return 0; ++ } ++ ++ return 1; ++} ++#endif ++ ++#define U64_MAX (~((u64)0)) ++ ++ +/* + * Flags for rmap_item to judge if it's listed in the stable/unstable tree. + * The flags use the low bits of rmap_item.address @@ -746,7 +763,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c +#define UNSTABLE_FLAG 0x1 +#define STABLE_FLAG 0x2 +#define get_rmap_addr(x) ((x)->address & PAGE_MASK) - ++ +/* + * rmap_list_entry helpers + */ @@ -784,15 +801,13 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c /* The number of nodes in the stable tree */ static unsigned long ksm_pages_shared; -@@ -179,345 +235,408 @@ +@@ -179,345 +246,403 @@ /* The number of nodes in the unstable tree */ static unsigned long ksm_pages_unshared; -/* The number of rmap_items in use: to calculate pages_volatile */ -static unsigned long ksm_rmap_items; -+/*The number pages remap to zero pages */ -+static unsigned long ksm_remap_zero_pages; - +- -/* Number of pages ksmd should scan in one batch */ -static unsigned int ksm_thread_pages_to_scan = 100; +/* @@ -988,8 +1003,6 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c +/*zero page hash table, hash_strength [0 ~ HASH_STRENGTH_MAX]*/ +static u32 *zero_hash_table; + -+extern unsigned long zero_pfn __read_mostly; -+ +static inline struct node_vma *alloc_node_vma(void) { - rmap_item_cache = KSM_KMEM_CACHE(rmap_item, 0); @@ -1462,7 +1475,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c put_page(page); goto stale; } -@@ -525,7 +644,8 @@ +@@ -525,7 +650,8 @@ return page; stale: rcu_read_unlock(); @@ -1472,7 +1485,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c return NULL; } -@@ -533,32 +653,46 @@ +@@ -533,32 +659,46 @@ * Removing rmap_item from stable or unstable tree. * This function will clean the information from the stable/unstable tree. */ @@ -1529,7 +1542,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c /* * Usually ksmd can and must skip the rb_erase, because * root_unstable_tree was already reset to RB_ROOT. -@@ -566,173 +700,458 @@ +@@ -566,169 +706,454 @@ * if this rmap_item was inserted by this scan, rather * than left over from before. */ @@ -1795,11 +1808,15 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - kunmap_atomic(addr2, KM_USER1); - kunmap_atomic(addr1, KM_USER0); - return ret; +-} + if (!vma_can_enter(vma)) { + vma->ksm_vma_slot = NULL; + return; + } -+ + +-static inline int pages_identical(struct page *page1, struct page *page2) +-{ +- return !memcmp_pages(page1, page2); + slot = alloc_vma_slot(); + if (!slot) { + vma->ksm_vma_slot = NULL; @@ -1816,18 +1833,31 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + spin_unlock(&vma_slot_list_lock); } --static inline int pages_identical(struct page *page1, struct page *page2) +-static int write_protect_page(struct vm_area_struct *vma, struct page *page, +- pte_t *orig_pte) +/* + * Called after vma is unlinked from its mm + */ +void ksm_remove_vma(struct vm_area_struct *vma) { -- return !memcmp_pages(page1, page2); +- struct mm_struct *mm = vma->vm_mm; +- unsigned long addr; +- pte_t *ptep; +- spinlock_t *ptl; +- int swapped; +- int err = -EFAULT; + struct vma_slot *slot; -+ + +- addr = page_address_in_vma(page, vma); +- if (addr == -EFAULT) +- goto out; + if (!vma->ksm_vma_slot) + return; -+ + +- BUG_ON(PageTransCompound(page)); +- ptep = page_check_address(page, mm, addr, &ptl, 0); +- if (!ptep) +- goto out; + slot = vma->ksm_vma_slot; + spin_lock(&vma_slot_list_lock); + if (list_empty(&slot->slot_list)) { @@ -1845,10 +1875,9 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + } + spin_unlock(&vma_slot_list_lock); + vma->ksm_vma_slot = NULL; - } ++} --static int write_protect_page(struct vm_area_struct *vma, struct page *page, -- pte_t *orig_pte) +- if (pte_write(*ptep) || pte_dirty(*ptep)) { +/* 32/3 < they < 32/2 */ +#define shiftl 8 +#define shiftr 12 @@ -1876,38 +1905,21 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + * The main random sample hash function. + */ +static u32 random_sample_hash(void *addr, u32 hash_strength) - { -- struct mm_struct *mm = vma->vm_mm; -- unsigned long addr; -- pte_t *ptep; -- spinlock_t *ptl; -- int swapped; -- int err = -EFAULT; ++{ + u32 hash = 0xdeadbeef; + int index, pos, loop = hash_strength; + u32 *key = (u32 *)addr; - -- addr = page_address_in_vma(page, vma); -- if (addr == -EFAULT) -- goto out; ++ + if (loop > HASH_STRENGTH_FULL) + loop = HASH_STRENGTH_FULL; - -- BUG_ON(PageTransCompound(page)); -- ptep = page_check_address(page, mm, addr, &ptl, 0); -- if (!ptep) -- goto out; ++ + HASH_FROM_TO(0, loop); - -- if (pte_write(*ptep) || pte_dirty(*ptep)) { -- pte_t entry; ++ + if (hash_strength > HASH_STRENGTH_FULL) { + loop = hash_strength - HASH_STRENGTH_FULL; + HASH_FROM_TO(0, loop); + } - -- swapped = PageSwapCache(page); -- flush_cache_page(vma, addr, page_to_pfn(page)); ++ + return hash; +} + @@ -2069,13 +2081,13 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + return !memcmp_pages(page1, page2, 0); +} + -+static inline int is_zero_page(struct page *page) ++static inline int is_page_full_zero(struct page *page) +{ + char *addr; + int ret; + + addr = kmap_atomic(page, KM_USER0); -+ ret = check_zero_page(addr, PAGE_SIZE); ++ ret = is_full_zero(addr, PAGE_SIZE); + kunmap_atomic(addr, KM_USER0); + + return ret; @@ -2104,14 +2116,10 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + *old_pte = *ptep; + + if (pte_write(*ptep) || pte_dirty(*ptep)) { -+ pte_t entry; -+ -+ swapped = PageSwapCache(page); -+ flush_cache_page(vma, addr, page_to_pfn(page)); - /* - * Ok this is tricky, when get_user_pages_fast() run it doesnt - * take any lock, therefore the check that we are going to make -@@ -765,6 +1184,11 @@ + pte_t entry; + + swapped = PageSwapCache(page); +@@ -765,6 +1190,11 @@ return err; } @@ -2123,7 +2131,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c /** * replace_page - replace page in vma by new ksm page * @vma: vma that holds the pte pointing to page -@@ -772,7 +1196,7 @@ +@@ -772,7 +1202,7 @@ * @kpage: the ksm page we replace page by * @orig_pte: the original value of the pte * @@ -2132,16 +2140,44 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c */ static int replace_page(struct vm_area_struct *vma, struct page *page, struct page *kpage, pte_t orig_pte) -@@ -784,7 +1208,7 @@ +@@ -783,8 +1213,10 @@ + pmd_t *pmd; pte_t *ptep; spinlock_t *ptl; ++ pte_t entry; ++ unsigned long addr; - int err = -EFAULT; + int err = MERGE_ERR_PGERR; addr = page_address_in_vma(page, vma); if (addr == -EFAULT) -@@ -827,6 +1251,85 @@ +@@ -809,12 +1241,20 @@ + goto out; + } + +- get_page(kpage); +- page_add_anon_rmap(kpage, vma, addr); +- + flush_cache_page(vma, addr, pte_pfn(*ptep)); + ptep_clear_flush(vma, addr, ptep); +- set_pte_at_notify(mm, addr, ptep, mk_pte(kpage, vma->vm_page_prot)); ++ entry = mk_pte(kpage, vma->vm_page_prot); ++ ++ /* special treatment is needed for zero_page */ ++ if ((page_to_pfn(kpage) == ksm_zero_pfn) || ++ (page_to_pfn(kpage) == zero_pfn)) ++ entry = pte_mkspecial(entry); ++ else { ++ get_page(kpage); ++ page_add_anon_rmap(kpage, vma, addr); ++ } ++ ++ set_pte_at_notify(mm, addr, ptep, entry); + + page_remove_rmap(page); + if (!page_mapped(page)) +@@ -827,6 +1267,85 @@ return err; } @@ -2227,7 +2263,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c static int page_trans_compound_anon_split(struct page *page) { int ret = 0; -@@ -854,30 +1357,36 @@ +@@ -854,30 +1373,36 @@ return ret; } @@ -2278,7 +2314,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c goto out; /* -@@ -895,18 +1404,27 @@ +@@ -895,18 +1420,27 @@ * ptes are necessarily already write-protected. But in either * case, we need to lock and check page_count is not raised. */ @@ -2309,7 +2345,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } if ((vma->vm_flags & VM_LOCKED) && kpage && !err) { -@@ -924,378 +1442,2683 @@ +@@ -924,378 +1458,2697 @@ return err; } @@ -3464,23 +3500,34 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + ksm_pages_scanned++; +} + -+static int find_zero_page_hash(int strength, u32 hash) ++static inline int find_zero_page_hash(int strength, u32 hash) +{ -+ return (zero_hash_table[strength]== hash); ++ return (zero_hash_table[strength] == hash); +} + -+static int cmp_and_merge_zero_page(struct vm_area_struct *vma, struct page *page) ++static ++int cmp_and_merge_zero_page(struct vm_area_struct *vma, struct page *page) +{ -+ struct page *zero_page = ZERO_PAGE(0); ++ struct page *zero_page = empty_ksm_zero_page; ++ struct mm_struct *mm = vma->vm_mm; + pte_t orig_pte = __pte(0); -+ + int err = -EFAULT; + ++ if (ksm_test_exit(mm)) ++ goto out; ++ ++ if (PageTransCompound(page) && page_trans_compound_anon_split(page)) ++ goto out; ++ BUG_ON(PageTransCompound(page)); ++ ++ if (!PageAnon(page)) ++ goto out; ++ + if (!trylock_page(page)) + goto out; + + if (write_protect_page(vma, page, &orig_pte, 0) == 0) { -+ if (is_zero_page(page) == 0) ++ if (is_page_full_zero(page)) + err = replace_page(vma, page, zero_page, orig_pte); + } + @@ -3511,6 +3558,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + struct rb_node *parent = NULL, **new; + + remove_rmap_item_from_tree(rmap_item); ++ inc_ksm_pages_scanned(); + + page = rmap_item->page; + @@ -3519,12 +3567,13 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + /*if the page content all zero, re-map to zero-page*/ + if (find_zero_page_hash(hash_strength, hash)) { + if (!cmp_and_merge_zero_page(rmap_item->slot->vma, page)) { -+ ksm_remap_zero_pages++; ++ __inc_zone_page_state(page, NR_KSM_ZERO_PAGES); + return ; ++ } else { ++ inc_rshash_neg(memcmp_cost / 2); + } + } + //ksm_pages_scanned++; -+ inc_ksm_pages_scanned(); + + /* We first start with searching the page inside the stable tree */ + kpage = stable_tree_search(rmap_item, hash); @@ -3964,8 +4013,9 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + if (!PageAnon(page) && !page_trans_compound_anon(page)) + goto putpage; + -+ /*check is zero_page pfn*/ -+ if (page_to_pfn(page) == zero_pfn) ++ /*check is zero_page pfn or ksm_zero_page*/ ++ if ((page_to_pfn(page) == zero_pfn) ++ || (page_to_pfn(page) == ksm_zero_pfn)) + goto putpage; + + flush_anon_page(slot->vma, page, addr); @@ -5284,7 +5334,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c /* * A number of pages can hang around indefinitely on per-cpu * pagevecs, raised page count preventing write_protect_page -@@ -1308,266 +4131,160 @@ +@@ -1308,266 +4161,160 @@ */ lru_add_drain_all(); @@ -5400,7 +5450,9 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c -{ - struct rmap_item *rmap_item; - struct page *uninitialized_var(page); -- ++ for (i = 0; i < ksm_scan_ladder_size; i++) { ++ struct scan_rung *rung = &ksm_scan_ladder[i]; + - while (scan_npages-- && likely(!freezing(current))) { - cond_resched(); - rmap_item = scan_get_next_rmap_item(&page); @@ -5409,9 +5461,6 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - if (!PageKsm(page) || !in_stable_tree(rmap_item)) - cmp_and_merge_page(page, rmap_item); - put_page(page); -+ for (i = 0; i < ksm_scan_ladder_size; i++) { -+ struct scan_rung *rung = &ksm_scan_ladder[i]; -+ + /* + * Before we can go sleep, we should make sure that all the + * pages_to_scan quota for this scan has been finished @@ -5670,7 +5719,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } struct page *ksm_does_need_to_copy(struct page *page, -@@ -1597,11 +4314,13 @@ +@@ -1597,11 +4344,13 @@ unsigned long *vm_flags) { struct stable_node *stable_node; @@ -5685,7 +5734,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c VM_BUG_ON(!PageKsm(page)); VM_BUG_ON(!PageLocked(page)); -@@ -1609,38 +4328,51 @@ +@@ -1609,38 +4358,51 @@ stable_node = page_stable_node(page); if (!stable_node) return 0; @@ -5766,7 +5815,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } if (!search_new_forks++) goto again; -@@ -1651,10 +4383,12 @@ +@@ -1651,10 +4413,12 @@ int try_to_unmap_ksm(struct page *page, enum ttu_flags flags) { struct stable_node *stable_node; @@ -5780,7 +5829,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c VM_BUG_ON(!PageKsm(page)); VM_BUG_ON(!PageLocked(page)); -@@ -1663,34 +4397,42 @@ +@@ -1663,34 +4427,42 @@ if (!stable_node) return SWAP_FAIL; again: @@ -5849,7 +5898,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } if (!search_new_forks++) goto again; -@@ -1703,10 +4445,12 @@ +@@ -1703,10 +4475,12 @@ struct vm_area_struct *, unsigned long, void *), void *arg) { struct stable_node *stable_node; @@ -5863,7 +5912,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c VM_BUG_ON(!PageKsm(page)); VM_BUG_ON(!PageLocked(page)); -@@ -1715,33 +4459,35 @@ +@@ -1715,33 +4489,35 @@ if (!stable_node) return ret; again: @@ -5924,7 +5973,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } if (!search_new_forks++) goto again; -@@ -1771,7 +4517,7 @@ +@@ -1771,7 +4547,7 @@ { struct rb_node *node; @@ -5933,7 +5982,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c struct stable_node *stable_node; stable_node = rb_entry(node, struct stable_node, node); -@@ -1810,7 +4556,7 @@ +@@ -1810,7 +4586,7 @@ */ while ((stable_node = ksm_check_stable_tree(mn->start_pfn, mn->start_pfn + mn->nr_pages)) != NULL) @@ -5942,7 +5991,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c /* fallthrough */ case MEM_CANCEL_OFFLINE: -@@ -1835,7 +4581,7 @@ +@@ -1835,7 +4611,7 @@ static ssize_t sleep_millisecs_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -5951,7 +6000,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } static ssize_t sleep_millisecs_store(struct kobject *kobj, -@@ -1849,34 +4595,58 @@ +@@ -1849,34 +4625,58 @@ if (err || msecs > UINT_MAX) return -EINVAL; @@ -6019,7 +6068,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c static ssize_t run_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) -@@ -1893,28 +4663,12 @@ +@@ -1893,28 +4693,12 @@ err = strict_strtoul(buf, 10, &flags); if (err || flags > UINT_MAX) return -EINVAL; @@ -6049,7 +6098,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c } mutex_unlock(&ksm_thread_mutex); -@@ -1925,6 +4679,30 @@ +@@ -1925,6 +4709,30 @@ } KSM_ATTR(run); @@ -6080,16 +6129,20 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c static ssize_t pages_shared_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { -@@ -1946,60 +4724,300 @@ +@@ -1946,60 +4754,291 @@ } KSM_ATTR_RO(pages_unshared); -static ssize_t pages_volatile_show(struct kobject *kobj, -+static ssize_t pages_remap_zeropage_show(struct kobject *kobj, - struct kobj_attribute *attr, char *buf) +- struct kobj_attribute *attr, char *buf) ++static ssize_t full_scans_show(struct kobject *kobj, ++ struct kobj_attribute *attr, char *buf) { - long ksm_pages_volatile; -- ++ return sprintf(buf, "%llu\n", ksm_scan_round); ++} ++KSM_ATTR_RO(full_scans); + - ksm_pages_volatile = ksm_rmap_items - ksm_pages_shared - - ksm_pages_sharing - ksm_pages_unshared; - /* @@ -6099,19 +6152,6 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c - if (ksm_pages_volatile < 0) - ksm_pages_volatile = 0; - return sprintf(buf, "%ld\n", ksm_pages_volatile); -+ return sprintf(buf, "%lu\n", ksm_remap_zero_pages); - } --KSM_ATTR_RO(pages_volatile); -+KSM_ATTR_RO(pages_remap_zeropage); - - static ssize_t full_scans_show(struct kobject *kobj, - struct kobj_attribute *attr, char *buf) - { -- return sprintf(buf, "%lu\n", ksm_scan.seqnr); -+ return sprintf(buf, "%llu\n", ksm_scan_round); - } - KSM_ATTR_RO(full_scans); - +static ssize_t pages_scanned_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ @@ -6141,14 +6181,19 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + return sprintf(buf, "%lu * 2^%lu\n", (unsigned long)ret, base); + else + return sprintf(buf, "%lu\n", (unsigned long)ret); -+} + } +-KSM_ATTR_RO(pages_volatile); +KSM_ATTR_RO(pages_scanned); -+ + +-static ssize_t full_scans_show(struct kobject *kobj, +- struct kobj_attribute *attr, char *buf) +static ssize_t hash_strength_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) -+{ + { +- return sprintf(buf, "%lu\n", ksm_scan.seqnr); + return sprintf(buf, "%lu\n", hash_strength); -+} + } +-KSM_ATTR_RO(full_scans); +KSM_ATTR_RO(hash_strength); + +static ssize_t sleep_times_show(struct kobject *kobj, @@ -6158,7 +6203,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c +} +KSM_ATTR_RO(sleep_times); + -+ + static struct attribute *ksm_attrs[] = { &sleep_millisecs_attr.attr, - &pages_to_scan_attr.attr, @@ -6168,7 +6213,6 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c &pages_sharing_attr.attr, &pages_unshared_attr.attr, - &pages_volatile_attr.attr, -+ &pages_remap_zeropage_attr.attr, &full_scans_attr.attr, + &min_scan_ratio_attr.attr, + &pages_scanned_attr.attr, @@ -6276,9 +6320,8 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c + if (!zero_hash_table) + return -ENOMEM; + -+ for (i = 0; i< HASH_STRENGTH_MAX; i++) { ++ for (i = 0; i < HASH_STRENGTH_MAX; i++) + zero_hash_table[i] = page_hash(page, i, 0); -+ } + + __free_page(page); + @@ -6401,7 +6444,7 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c err = PTR_ERR(ksm_thread); goto out_free; } -@@ -2007,7 +5025,7 @@ +@@ -2007,7 +5046,7 @@ #ifdef CONFIG_SYSFS err = sysfs_create_group(mm_kobj, &ksm_attr_group); if (err) { @@ -6410,12 +6453,13 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c kthread_stop(ksm_thread); goto out_free; } -@@ -2027,7 +5045,19 @@ +@@ -2026,8 +5065,20 @@ + return 0; out_free: - ksm_slab_free(); -+out_free0: + kfree(zero_hash_table); ++out_free0: + ksm_slab_free(); +out_free1: + kfree(random_nums); +out_free2: @@ -6430,10 +6474,9 @@ diff -Nur linux-2.6.38/mm/ksm.c uksm-2.6.38/mm/ksm.c +late_initcall(ksm_init); +#endif + -Binary files linux-2.6.38/mm/.ksm.c.swp and uksm-2.6.38/mm/.ksm.c.swp differ -diff -Nur linux-2.6.38/mm/madvise.c uksm-2.6.38/mm/madvise.c +diff -urN linux-2.6.38/mm/madvise.c uksm-2.6.38-zhang/mm/madvise.c --- linux-2.6.38/mm/madvise.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/mm/madvise.c 2011-12-16 01:10:14.000000000 +0800 ++++ uksm-2.6.38-zhang/mm/madvise.c 2012-01-09 10:05:59.862270375 +0800 @@ -65,12 +65,6 @@ } new_flags &= ~VM_DONTCOPY; @@ -6458,10 +6501,74 @@ diff -Nur linux-2.6.38/mm/madvise.c uksm-2.6.38/mm/madvise.c #ifdef CONFIG_TRANSPARENT_HUGEPAGE case MADV_HUGEPAGE: case MADV_NOHUGEPAGE: -diff -Nur linux-2.6.38/mm/memory.c uksm-2.6.38/mm/memory.c +diff -urN linux-2.6.38/mm/memory.c uksm-2.6.38-zhang/mm/memory.c --- linux-2.6.38/mm/memory.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/mm/memory.c 2011-12-16 01:10:14.000000000 +0800 -@@ -719,6 +719,10 @@ ++++ uksm-2.6.38-zhang/mm/memory.c 2012-01-09 10:09:28.235610655 +0800 +@@ -112,6 +112,37 @@ + unsigned long zero_pfn __read_mostly; + unsigned long highest_memmap_pfn __read_mostly; + ++#ifdef CONFIG_KSM ++unsigned long ksm_zero_pfn __read_mostly; ++struct page *empty_ksm_zero_page; ++ ++static int __init setup_ksm_zero_page(void) ++{ ++ unsigned long addr; ++ addr = __get_free_pages(GFP_KERNEL | __GFP_ZERO, 0); ++ if (!addr) ++ panic("Oh boy, that early out of memory?"); ++ ++ empty_ksm_zero_page = virt_to_page((void *) addr); ++ SetPageReserved(empty_ksm_zero_page); ++ ++ ksm_zero_pfn = page_to_pfn(empty_ksm_zero_page); ++ ++ return 0; ++} ++core_initcall(setup_ksm_zero_page); ++ ++static inline int is_ksm_zero_pfn(unsigned long pfn) ++{ ++ return pfn == ksm_zero_pfn; ++} ++#else ++static inline int is_ksm_zero_pfn(unsigned long pfn) ++{ ++ return 0; ++} ++#endif ++ + /* + * CONFIG_MMU architectures set up ZERO_PAGE in their paging_init() + */ +@@ -123,6 +154,7 @@ + core_initcall(init_zero_pfn); + + ++ + #if defined(SPLIT_RSS_COUNTING) + + static void __sync_task_rss_stat(struct task_struct *task, struct mm_struct *mm) +@@ -609,7 +641,7 @@ + goto check_pfn; + if (vma->vm_flags & (VM_PFNMAP | VM_MIXEDMAP)) + return NULL; +- if (!is_zero_pfn(pfn)) ++ if (!is_zero_pfn(pfn) && !is_ksm_zero_pfn(pfn)) + print_bad_pte(vma, addr, pte, NULL); + return NULL; + } +@@ -631,7 +663,7 @@ + } + } + +- if (is_zero_pfn(pfn)) ++ if (is_zero_pfn(pfn) || is_ksm_zero_pfn(pfn)) + return NULL; + check_pfn: + if (unlikely(pfn > highest_memmap_pfn)) { +@@ -719,6 +751,10 @@ rss[MM_ANONPAGES]++; else rss[MM_FILEPAGES]++; @@ -6472,7 +6579,17 @@ diff -Nur linux-2.6.38/mm/memory.c uksm-2.6.38/mm/memory.c } out_set_pte: -@@ -1423,7 +1427,7 @@ +@@ -1341,7 +1377,8 @@ + page = vm_normal_page(vma, address, pte); + if (unlikely(!page)) { + if ((flags & FOLL_DUMP) || +- !is_zero_pfn(pte_pfn(pte))) ++ !is_zero_pfn(pte_pfn(pte)) || ++ !is_ksm_zero_pfn(pte_pfn(pte))) + goto bad_page; + page = pte_page(pte); + } +@@ -1423,7 +1460,7 @@ VM_BUG_ON(!!pages != !!(gup_flags & FOLL_GET)); @@ -6481,7 +6598,17 @@ diff -Nur linux-2.6.38/mm/memory.c uksm-2.6.38/mm/memory.c * Require read or write permissions. * If FOLL_FORCE is set, we only require the "MAY" flags. */ -@@ -2158,8 +2162,13 @@ +@@ -1470,7 +1507,8 @@ + page = vm_normal_page(gate_vma, start, *pte); + if (!page) { + if (!(gup_flags & FOLL_DUMP) && +- is_zero_pfn(pte_pfn(*pte))) ++ (is_zero_pfn(pte_pfn(*pte)) || ++ is_ksm_zero_pfn(pte_pfn(*pte)))) + page = pte_page(*pte); + else { + pte_unmap(pte); +@@ -2158,8 +2196,13 @@ clear_page(kaddr); kunmap_atomic(kaddr, KM_USER0); flush_dcache_page(dst); @@ -6496,9 +6623,39 @@ diff -Nur linux-2.6.38/mm/memory.c uksm-2.6.38/mm/memory.c } /* -diff -Nur linux-2.6.38/mm/mmap.c uksm-2.6.38/mm/mmap.c +@@ -2353,10 +2396,15 @@ + if (unlikely(anon_vma_prepare(vma))) + goto oom; + +- if (is_zero_pfn(pte_pfn(orig_pte))) { ++ if (is_zero_pfn(pte_pfn(orig_pte)) ++ || is_ksm_zero_pfn(pte_pfn(orig_pte))) { + new_page = alloc_zeroed_user_highpage_movable(vma, address); + if (!new_page) + goto oom; ++#ifdef CONFIG_KSM ++ if (vma->ksm_vma_slot && is_ksm_zero_pfn(pte_pfn(orig_pte))) ++ vma->ksm_vma_slot->pages_cowed++; ++#endif + } else { + new_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, address); + if (!new_page) +@@ -2378,6 +2426,11 @@ + dec_mm_counter_fast(mm, MM_FILEPAGES); + inc_mm_counter_fast(mm, MM_ANONPAGES); + } ++#ifdef CONFIG_KSM ++ if (is_ksm_zero_pfn(pte_pfn(orig_pte))) ++ __dec_zone_page_state(old_page, ++ NR_KSM_ZERO_PAGES); ++#endif + } else + inc_mm_counter_fast(mm, MM_ANONPAGES); + flush_cache_page(vma, address, pte_pfn(orig_pte)); +Binary files linux-2.6.38/mm/.memory.c.swp and uksm-2.6.38-zhang/mm/.memory.c.swp differ +diff -urN linux-2.6.38/mm/mmap.c uksm-2.6.38-zhang/mm/mmap.c --- linux-2.6.38/mm/mmap.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/mm/mmap.c 2011-12-16 01:10:14.000000000 +0800 ++++ uksm-2.6.38-zhang/mm/mmap.c 2012-01-09 10:05:59.872270374 +0800 @@ -30,6 +30,7 @@ #include #include @@ -6683,9 +6840,9 @@ diff -Nur linux-2.6.38/mm/mmap.c uksm-2.6.38/mm/mmap.c return 0; out: -diff -Nur linux-2.6.38/mm/mremap.c uksm-2.6.38/mm/mremap.c +diff -urN linux-2.6.38/mm/mremap.c uksm-2.6.38-zhang/mm/mremap.c --- linux-2.6.38/mm/mremap.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/mm/mremap.c 2011-12-16 01:10:14.000000000 +0800 ++++ uksm-2.6.38-zhang/mm/mremap.c 2012-01-09 10:05:59.872270374 +0800 @@ -191,8 +191,7 @@ * pages recently unmapped. But leave vma->vm_flags as it was, * so KSM can come around to merge on vma and new_vma afterwards. @@ -6696,9 +6853,9 @@ diff -Nur linux-2.6.38/mm/mremap.c uksm-2.6.38/mm/mremap.c if (err) return err; -diff -Nur linux-2.6.38/mm/rmap.c uksm-2.6.38/mm/rmap.c +diff -urN linux-2.6.38/mm/rmap.c uksm-2.6.38-zhang/mm/rmap.c --- linux-2.6.38/mm/rmap.c 2011-03-15 09:20:32.000000000 +0800 -+++ uksm-2.6.38/mm/rmap.c 2011-12-16 01:10:14.000000000 +0800 ++++ uksm-2.6.38-zhang/mm/rmap.c 2012-01-09 10:05:59.875603707 +0800 @@ -817,9 +817,9 @@ /** @@ -6737,3 +6894,84 @@ diff -Nur linux-2.6.38/mm/rmap.c uksm-2.6.38/mm/rmap.c /* page still mapped by someone else? */ if (!atomic_add_negative(-1, &page->_mapcount)) return; +diff -urN linux-2.6.38/security/apparmor/capability_names.h uksm-2.6.38-zhang/security/apparmor/capability_names.h +--- linux-2.6.38/security/apparmor/capability_names.h 1970-01-01 08:00:00.000000000 +0800 ++++ uksm-2.6.38-zhang/security/apparmor/capability_names.h 2012-01-10 09:30:37.569678996 +0800 +@@ -0,0 +1,37 @@ ++static const char *capability_names[] = { ++[0] = "chown", ++[1] = "dac_override", ++[2] = "dac_read_search", ++[3] = "fowner", ++[4] = "fsetid", ++[5] = "kill", ++[6] = "setgid", ++[7] = "setuid", ++[8] = "setpcap", ++[9] = "linux_immutable", ++[10] = "net_bind_service", ++[11] = "net_broadcast", ++[12] = "net_admin", ++[13] = "net_raw", ++[14] = "ipc_lock", ++[15] = "ipc_owner", ++[16] = "sys_module", ++[17] = "sys_rawio", ++[18] = "sys_chroot", ++[19] = "sys_ptrace", ++[20] = "sys_pacct", ++[21] = "sys_admin", ++[22] = "sys_boot", ++[23] = "sys_nice", ++[24] = "sys_resource", ++[25] = "sys_time", ++[26] = "sys_tty_config", ++[27] = "mknod", ++[28] = "lease", ++[29] = "audit_write", ++[30] = "audit_control", ++[31] = "setfcap", ++[32] = "mac_override", ++[33] = "mac_admin", ++[34] = "syslog", ++}; +diff -urN linux-2.6.38/security/apparmor/rlim_names.h uksm-2.6.38-zhang/security/apparmor/rlim_names.h +--- linux-2.6.38/security/apparmor/rlim_names.h 1970-01-01 08:00:00.000000000 +0800 ++++ uksm-2.6.38-zhang/security/apparmor/rlim_names.h 2012-01-10 09:30:41.073012457 +0800 +@@ -0,0 +1,36 @@ ++static const char *rlim_names[] = { ++[0] = "cpu", ++[1] = "fsize", ++[2] = "data", ++[3] = "stack", ++[4] = "core", ++[5] = "rss", ++[6] = "nproc", ++[7] = "nofile", ++[8] = "memlock", ++[9] = "as", ++[10] = "locks", ++[11] = "sigpending", ++[12] = "msgqueue", ++[13] = "nice", ++[14] = "rtprio", ++[15] = "rttime", ++}; ++static const int rlim_map[] = { ++RLIMIT_CPU, ++RLIMIT_FSIZE, ++RLIMIT_DATA, ++RLIMIT_STACK, ++RLIMIT_CORE, ++RLIMIT_RSS, ++RLIMIT_NPROC, ++RLIMIT_NOFILE, ++RLIMIT_MEMLOCK, ++RLIMIT_AS, ++RLIMIT_LOCKS, ++RLIMIT_SIGPENDING, ++RLIMIT_MSGQUEUE, ++RLIMIT_NICE, ++RLIMIT_RTPRIO, ++RLIMIT_RTTIME, ++}; diff --git a/linux-next/PKGBUILD b/linux-next/PKGBUILD index c075a496a..5375d76db 100644 --- a/linux-next/PKGBUILD +++ b/linux-next/PKGBUILD @@ -143,6 +143,7 @@ package_linux-next() { fi # make room for external modules + rmdir "${pkgdir}/lib/modules/extramodules-*" &> /dev/null #remove the old one if it exists mkdir "${pkgdir}/lib/modules/extramodules-${_kernver}" ln -s "../extramodules-${_kernver}" "${pkgdir}/lib/modules/${_kernver}/extramodules" echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_kernver}/version" diff --git a/linux-zen/PKGBUILD b/linux-zen/PKGBUILD index 985c201ff..c4754660a 100644 --- a/linux-zen/PKGBUILD +++ b/linux-zen/PKGBUILD @@ -145,6 +145,7 @@ package_linux-zen() { fi # make room for external modules + rmdir "${pkgdir}/lib/modules/extramodules-*" &> /dev/null #remove the old one if it exists mkdir "${pkgdir}/lib/modules/extramodules-${_kernver}" ln -s "../extramodules-${_kernver}" "${pkgdir}/lib/modules/${_kernver}/extramodules" echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_kernver}/version" diff --git a/mikutter/PKGBUILD b/mikutter/PKGBUILD index 210984044..eb70e7a07 100644 --- a/mikutter/PKGBUILD +++ b/mikutter/PKGBUILD @@ -1,7 +1,7 @@ # vim:set ts=2 sw=2 et: # Maintainer: 2GMon pkgname=mikutter -pkgver=0.1.0.628 +pkgver=0.1.0.638 pkgrel=1 pkgdesc="a moest twitter client" arch=('i686' 'x86_64') @@ -27,5 +27,5 @@ package() { chmod a+x "$pkgdir/usr/bin/mikutter" } -md5sums=('43c127d5304c3487036004c6ff2eb3ff' +md5sums=('7737797a1f9e9a4a2d346cac7bb11a5b' '1baf334d49528b01bc8a244a27e141c5') diff --git a/neurolab/PKGBUILD b/neurolab/PKGBUILD index 97142481a..e327e7d04 100644 --- a/neurolab/PKGBUILD +++ b/neurolab/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: SpepS pkgname=neurolab -pkgver=1.2.0 +pkgver=1.2.2 pkgrel=1 pkgdesc="Neurocognitive Linguistics Lab is an approach to linguistics which uses relational networks to model what the brain actually does when it handles language." arch=(i686 x86_64) @@ -10,26 +10,31 @@ license=('BSD') depends=('qt') install="$pkgname.install" source=("https://bitbucket.org/kulibali/neurocogling/get/$pkgver.tar.bz2" - "$pkgname.svg::http://upload.wikimedia.org/wikipedia/commons/2/23/Brain_Surface_Gyri.SVG" - "$pkgname.desktop" - "$pkgname.patch") -md5sums=('7199d54846657abe2f09c8276b989e84' - '17493f4c891a607a8da1360c7ffc7c3d' + "$pkgname.png::http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Brain_Surface_Gyri.SVG/64px-Brain_Surface_Gyri.SVG.png" + "$pkgname.desktop" "$pkgname.patch") +md5sums=('43304a81589c4b1f4d3777aa148b90de' + '069237839c0b9371293127257e99c698' '8057430307dc932460a525ef1d606824' '3873e82be3d48a7808590627a7673880') build() { - cd `find $srcdir -maxdepth 1 -mindepth 1 -type d`/src + cd "$srcdir/kulibali-"*/src - # patches in order to compile on x86_64 - patch -Np3 -i $srcdir/$pkgname.patch + # build fixes + sed -i "s/\(reinterpret_cast.*IdType\)\(.*\);/(\*\1 \*\2);/" \ + `grep -rl "reinterpret_cast.*IdType" .` + sed -i "/IdType/s/\(reinterpret_cast.*<\)\(NeuroItem\)/\1const \2/" \ + neurogui/subnetwork/subnetworkitem.cpp + + # add missing glu header + sed -i "44a#include " griditems/gridviewer.h qmake neurolab_all.pro make } package() { - cd `find $srcdir -maxdepth 1 -mindepth 1 -type d`/src + cd "$srcdir/kulibali-"*/src # bin install -Dm755 release/$pkgname "$pkgdir/usr/bin/$pkgname" @@ -43,13 +48,13 @@ package() { # desktop and pixmaps install -Dm644 "$srcdir/$pkgname.desktop" \ - "$pkgdir/usr/share/applications/$pkgname.desktop" - install -Dm644 "$srcdir/$pkgname.svg" \ - "$pkgdir/usr/share/pixmaps/$pkgname.svg" + "$pkgdir/usr/share/applications/$pkgname.desktop" + install -Dm644 "$srcdir/$pkgname.png" \ + "$pkgdir/usr/share/pixmaps/$pkgname.png" # license install -Dm644 ../LICENSE.txt \ - "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } # vim:set ts=2 sw=2 et: diff --git a/openbve/PKGBUILD b/openbve/PKGBUILD index 505ca295b..366d7205e 100644 --- a/openbve/PKGBUILD +++ b/openbve/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: György Balló pkgname=openbve -pkgver=1.2.14.0 +pkgver=1.4.0.0 pkgrel=1 pkgdesc="Free-as-in-freedom train simulator placed in the public domain" arch=('any') @@ -11,8 +11,8 @@ source=(http://trainsimframework.org/common/openbve_stable_source.zip http://trainsimframework.org/common/openbve_stable.zip openbve.sh openbve.desktop) -md5sums=('b16db0292a5989a8a3b5f34bedc1d73b' - '6ab8c651d9e388a532b77a14d4a570e8' +md5sums=('d306c160bd58373be7926e5585463e97' + '4e8f47832f5b341ca08c52ffe094c88b' 'fec92946f773f56588a71de310847ce0' 'acb0dd3ea602910181b8cdb8375c794e') diff --git a/parted-git/PKGBUILD b/parted-git/PKGBUILD index 66182e3eb..86c9ef784 100644 --- a/parted-git/PKGBUILD +++ b/parted-git/PKGBUILD @@ -6,22 +6,26 @@ _pkgname="parted" pkgname="${_pkgname}-git" -pkgver=20111114 +pkgver=20120110 pkgrel=1 pkgdesc="A program for creating, destroying, resizing, checking and copying partitions" arch=('i686' 'x86_64') license=('GPL3') url="http://www.gnu.org/software/parted/parted.html" -makedepends=('git' 'rsync' 'gperf' 'bc') + +makedepends=('git' 'rsync' 'gperf' 'bc' 'libtool') checkdepends=('valgrind' 'perl-digest-crc') depends=('device-mapper' 'util-linux' 'gettext' 'e2fsprogs' 'ncurses' 'readline') optdepends=('reiserfsprogs: for reiserfs partitions') + conflicts=("${_pkgname}") provides=("${_pkgname}") options=(!libtool) source=() md5sums=() +install="${pkgname}.install" + _gitroot="git://git.savannah.gnu.org/parted.git" _gitname="${_pkgname}" _gitbranch="master" @@ -32,8 +36,7 @@ _update_git() { msg "Connecting to GIT server...." - if [ -d "${srcdir}/${_gitname}/" ] - then + if [[ -d "${srcdir}/${_gitname}/" ]]; then cd "${srcdir}/${_gitname}/" git reset --hard @@ -64,25 +67,34 @@ build() { cd "${srcdir}/${_gitname}_build/" + install -d "${srcdir}/${_gitname}_build/build-aux/" || true + install -D -m0755 "/usr/share/libtool/config/ltmain.sh" "${srcdir}/${_gitname}_build/build-aux/ltmain.sh" + + sed 's|include/parted/parted.h|include/parted/parted.in.h|g' -i "${srcdir}/${_gitname}_build/configure.ac" || true + echo + ./bootstrap echo - mkdir -p "${srcdir}/${_gitname}_build/BUILD" - cd "${srcdir}/${_gitname}_build/BUILD" - - CFLAGS="" ../configure --host="${CARCH}-unknown-linux-gnu" \ - --prefix="/usr" \ - --bindir="/usr/bin" \ - --sbindir="/usr/bin" \ - --libexecdir="/usr/lib" \ - --with-readline \ - --disable-silent-rules \ - --enable-mtrace \ - --enable-device-mapper \ - --enable-dynamic-loading \ - --enable-nls \ - --enable-debug \ - --enable-pc98 + # mkdir -p "${srcdir}/${_gitname}_build/BUILD" + # cd "${srcdir}/${_gitname}_build/BUILD" + cd "${srcdir}/${_gitname}_build/" + + # CFLAGS="" ../configure \# + CFLAGS="" ./configure \ + --host="${CARCH}-unknown-linux-gnu" \ + --prefix="/usr" \ + --bindir="/usr/bin" \ + --sbindir="/usr/bin" \ + --libexecdir="/usr/lib" \ + --with-readline \ + --disable-silent-rules \ + --enable-mtrace \ + --enable-device-mapper \ + --enable-dynamic-loading \ + --enable-nls \ + --enable-debug \ + --enable-pc98 echo make clean || true @@ -95,7 +107,8 @@ build() { check() { - cd "${srcdir}/${_gitname}_build/BUILD" + # cd "${srcdir}/${_gitname}_build/BUILD" + cd "${srcdir}/${_gitname}_build/" ## Normal test-suite for 512 byte sectors make check @@ -109,7 +122,8 @@ check() { package() { - cd "${srcdir}/${_gitname}_build/BUILD" + # cd "${srcdir}/${_gitname}_build/BUILD" + cd "${srcdir}/${_gitname}_build/" make DESTDIR="${pkgdir}/" install echo diff --git a/parted-git/parted-git.install b/parted-git/parted-git.install new file mode 100644 index 000000000..d52f95859 --- /dev/null +++ b/parted-git/parted-git.install @@ -0,0 +1,29 @@ +infodir="usr/share/info" +filelist=('parted.info') + +post_install() { + + if [[ -x "/usr/bin/install-info" ]]; then + for file in ${filelist[@]}; do + install-info "${infodir}/${file}.gz" "${infodir}/dir" 2> /dev/null + done + fi + +} + +post_upgrade() { + + post_install + +} + +pre_remove() { + + if [[ -x "/usr/bin/install-info" ]]; then + for file in ${filelist[@]}; do + install-info --delete "${infodir}/${file}" "${infodir}/dir" 2> /dev/null + done + fi + +} + diff --git a/perl-mojolicious/PKGBUILD b/perl-mojolicious/PKGBUILD index d27da168f..269d9010c 100644 --- a/perl-mojolicious/PKGBUILD +++ b/perl-mojolicious/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Christian Sturm pkgname=perl-mojolicious -pkgver=2.41 +pkgver=2.43 pkgrel=1 pkgdesc="next generation web framework for perl" arch=(any) @@ -9,8 +9,8 @@ license=('GPL' 'PerlArtistic') depends=('perl>=5.12.0') options=(!emptydirs) install= -source=(http://cpan.metacpan.org/authors/id/T/TE/TEMPIRE/Mojolicious-$pkgver.tar.gz) -md5sums=('73e20ed77a6f065cc97a9afff0fda4ae') +source=(http://cpan.metacpan.org/authors/id/S/SR/SRI/Mojolicious-$pkgver.tar.gz) +md5sums=('6bd64518b0530485ee566cd1a5e728ff') build() { cd "$srcdir/Mojolicious-$pkgver" diff --git a/python-pyssh/PKGBUILD b/python-pyssh/PKGBUILD index 8de676911..219cea604 100644 --- a/python-pyssh/PKGBUILD +++ b/python-pyssh/PKGBUILD @@ -1,16 +1,18 @@ +# Maintainer: kiooeht # Contributor: wulax + pkgname=python-pyssh pkgver=0.3 -pkgrel=1 +pkgrel=2 pkgdesc="PySSH is a Python module for programmatically controlling ssh and scp" -arch=('i686' 'x86_64') +arch=('any') url="http://pyssh.sourceforge.net/" -depends=('python') +depends=('python2') license=('GPL') source=(http://downloads.sourceforge.net/sourceforge/pyssh/0.3/pyssh-source.tar.gz) md5sums=('ae3a9ffa9545310e14bb013e9ee399c0') build() { cd $srcdir/pyssh - python setup.py install --prefix=$pkgdir/usr + python2 setup.py install --prefix=$pkgdir/usr } diff --git a/qupzilla/PKGBUILD b/qupzilla/PKGBUILD index d2719cc5a..048beaf56 100644 --- a/qupzilla/PKGBUILD +++ b/qupzilla/PKGBUILD @@ -3,7 +3,7 @@ _name=QupZilla pkgname=qupzilla pkgver=1.1.5 -pkgrel=1 +pkgrel=2 pkgdesc="Cross-platform QtWebKit browser" arch=(i686 x86_64) url="http://www.qupzilla.com/" @@ -15,6 +15,10 @@ md5sums=('72c3a6782f47ec1aaec1c9393ba47b49') build() { cd "$srcdir/"*-$_name-* + + # enable webgl + export USE_WEBGL="true" + qmake QUPZILLA_PREFIX=/usr/ make } diff --git a/scribus-rc/PKGBUILD b/scribus-rc/PKGBUILD deleted file mode 100644 index 3cfe1106a..000000000 --- a/scribus-rc/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# Contributor: Prurigro -# Maintainer: Prurigro - -pkgname=scribus-rc -_pkgname=scribus -pkgver=1.4.0.rc6 -pkgrel=1 -pkgdesc="A desktop publishing program - 1.4.0 Release Candidate Tarball Version" -arch=('i686' 'x86_64') -license=('GPL') -url="http://www.scribus.net" -install=${pkgname}.install - -depends=('libcups' 'lcms' 'qt' 'ghostscript' 'libart-lgpl' 'python2' 'libxml2' 'cairo' 'desktop-file-utils' 'freetype2' 'libtiff' 'libjpeg' 'pixman' 'ghostscript' 'fontconfig' 'openssl' 'python-imaging' 'tk') -makedepends=('cmake' 'gcc' 'make' 'pkg-config') - -replaces=('old-scribus' 'scribus' 'scribus-stable' 'scribus-ng' 'scribus-svn') -provides=('scribus') - -source=(http://downloads.sourceforge.net/project/scribus/scribus-devel/"$pkgver"/"$_pkgname"-"$pkgver".tar.bz2 - "$_pkgname".desktop) - -md5sums=('8b3b1da78b1f4ac05f2ebee247724d64' - 'ad86251889b0a7aa145f61cfd86cc932') - -build() { - install -d "$srcdir"/"$_pkgname"-"$pkgver"/builddir || return 1 - pushd "$srcdir"/"$_pkgname"-"$pkgver"/builddir || return 1 - cmake ../ -DCMAKE_INSTALL_PREFIX:PATH=/opt/scribus/ -DWANT_SYSTEM_CAIRO=1 || return 1 - - make || return 1 - make DESTDIR="$pkgdir" install || return 1 - - install -D -m644 "$startdir"/"$_pkgname".desktop "$pkgdir"/usr/share/applications/"$_pkgname".desktop || return 1 - popd || return 1 -} diff --git a/scribus-rc/scribus-rc.install b/scribus-rc/scribus-rc.install deleted file mode 100644 index 349c308f4..000000000 --- a/scribus-rc/scribus-rc.install +++ /dev/null @@ -1,24 +0,0 @@ -# this is the scrollkeeper handling sample file - -post_install() { - echo "update desktop mime database..." - update-desktop-database -q -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - /bin/true -} - -post_remove() { - echo "update desktop mime database..." - update-desktop-database -q -} - -op=$1 -shift - -$op $* diff --git a/scribus-rc/scribus.desktop b/scribus-rc/scribus.desktop deleted file mode 100644 index 06ca573e9..000000000 --- a/scribus-rc/scribus.desktop +++ /dev/null @@ -1,62 +0,0 @@ -[Desktop Entry] -Version=1.0 -Encoding=UTF-8 -Name=Scribus -Comment=Graphic Page Layout and Publication -Name[ar]=سكريبس -Name[fa]=اسکریباس -Name[lo]=ສະຄຣີບັດສ໌ -Name[ta]=ஸ்கிரிபஸ் -GenericName=Page Layout (Development) -GenericName[af]=Werkskerm Publisering -GenericName[bg]=Издателска програма -GenericName[bs]=Stono izdavaštvo (DTP) -GenericName[ca]=Publicació d'escriptori -GenericName[cs]=Publikační systém (DTP) -GenericName[cy]=Cyhoeddi Penbwrdd -GenericName[da]=Dtp -GenericName[eo]=DTP-programo -GenericName[es]=Publicación de escritorio -GenericName[et]=Küljendusrakendus -GenericName[fa]=نشر میزکار -GenericName[fi]=Julkaisuohjelma -GenericName[fr]=Publication assistée par ordinateur (PAO) -GenericName[he]=הוצאה לאור שולחנית -GenericName[hr]=Stolno izdavaštvo -GenericName[hu]=Kiadványszerkesztés -GenericName[it]=Pubblicazioni -GenericName[ja]=デスクトップパブリッシング -GenericName[lo]=ເດດທອບພັລບບີດຊິງ -GenericName[lt]=Darbastalio leidykla -GenericName[nb]=Datatrykkeprogram -GenericName[nn]=Datatrykk -GenericName[nso]=Kwalakwatso ya Desktop -GenericName[pl]=Program do składu tekstu -GenericName[pt]=Publicação no Ecrã -GenericName[pt_BR]=Publicação do Ambiente de Trabalho -GenericName[ru]=Настольное издательство -GenericName[sl]=Namizno založništvo -GenericName[sr]=Стоно издаваштво -GenericName[ss]=Kushicelela ku desktop -GenericName[sv]=Desktop Publishing -GenericName[th]=เดสก์ทอปพับลิชชิง -GenericName[tr]=Masaüstü Yayıncılık -GenericName[uk]=Видавнича система -GenericName[uz]=Кичик нашриёт -GenericName[ven]=U andadza Desikithopo -GenericName[xh]=Upapasho lwe Desktop -GenericName[zh_CN]=桌面出版 -GenericName[zh_TW]=桌面出版 -GenericName[zu]=Ukushicilelwa kwe-Desktop -TryExec=/opt/scribus/bin/scribus -Exec=/opt/scribus/bin/scribus %f -MimeType=application/vnd.scribus -Terminal=false -Icon=/opt/scribus/share/scribus/icons/scribus.png -Type=Application -X-StandardInstall=false -Categories=Applications;Office;Graphics;Publishing;Qt; -StartupWMClass=scribus -X-KDE-SubstituteUID=false -X-KDE-Username= -DocPath=scribus diff --git a/thunderbird-beta-bin-it/PKGBUILD b/thunderbird-beta-bin-it/PKGBUILD index 117cf7294..75d4e09e8 100644 --- a/thunderbird-beta-bin-it/PKGBUILD +++ b/thunderbird-beta-bin-it/PKGBUILD @@ -3,8 +3,8 @@ pkgname=thunderbird-beta-bin-it _pkgreal=thunderbird-beta-bin -pkgver=10.0b1 -pkgrel=3 +pkgver=10.0b2 +pkgrel=1 pkgdesc="Standalone Mail/News reader - Ultima beta disponibile in lingua italiana (file binari)." arch=('i686' 'x86_64') license=('MPL' 'GPL' 'LGPL') diff --git a/ttf-ms-fonts/PKGBUILD b/ttf-ms-fonts/PKGBUILD index 69b79af4d..898feb909 100644 --- a/ttf-ms-fonts/PKGBUILD +++ b/ttf-ms-fonts/PKGBUILD @@ -34,9 +34,9 @@ md5sums=('cbdc2fdd7d2ed0832795e86a8b9ee19a' package() { install -dm755 ${pkgdir}/usr/share/fonts/TTF - for font in ${srcdir}/*.exe + for font in ${srcdir}/*32.exe do - cabextract --lowercase --directory=${pkgdir}/usr/share/fonts/TTF/ ${font} -F '*.ttf' + cabextract -L -F '*.ttf' -d ${pkgdir}/usr/share/fonts/TTF/ ${font} done install -Dm644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE } diff --git a/vkplayer/PKGBUILD b/vkplayer/PKGBUILD dissimilarity index 86% index e5a9624e8..23426f2e8 100644 --- a/vkplayer/PKGBUILD +++ b/vkplayer/PKGBUILD @@ -1,77 +1,29 @@ -pkgname=vkplayer -pkgver=0.08 -pkgrel=1 -epoch= -pkgdesc="VKPlayer Search music, load MyAudio and Recommendations playlists, save stream while" -arch=(any) -url="http://forum.ubuntu.ru/index.php?topic=168217" -license=('unknown') -groups=() -depends=('qt' 'gstreamer0.10-ffmpeg' 'gstreamer0.10-ugly' 'gstreamer0.10-ugly-plugins') -makedepends=('phonon') -checkdepends=() -optdepends=() -provides=() -conflicts=() -replaces=() -backup=() -options=() -install= -changelog= -source=($pkgname-$pkgver.tar.gz) -noextract=() -md5sums=('9d602c081703b5f887474fb6fd7f7327') #generate with 'makepkg -g' - -build() { - cd "$srcdir/$pkgname-$pkgver" - qmake - make -} - -check() { - cd "$srcdir/$pkgname-$pkgver" - make -k check -} - -package() { - cd "$srcdir/$pkgname-$pkgver" - make install - mkdir ../../pkg/usr - mkdir ../../pkg/usr/bin - mkdir ../../pkg/usr/share - mkdir ../../pkg/usr/share/applications - mkdir ../../pkg/usr/share/icons - mkdir ../../pkg/usr/share/icons/gnome/ - mkdir ../../pkg/usr/share/icons/gnome/scalable/ - mkdir ../../pkg/usr/share/icons/gnome/16x16/ - mkdir ../../pkg/usr/share/icons/gnome/22x22/ - mkdir ../../pkg/usr/share/icons/gnome/24x24/ - mkdir ../../pkg/usr/share/icons/gnome/32x32/ - mkdir ../../pkg/usr/share/icons/gnome/48x48/ - mkdir ../../pkg/usr/share/icons/gnome/64x64/ - mkdir ../../pkg/usr/share/icons/gnome/96x96/ - mkdir ../../pkg/usr/share/icons/gnome/128x128/ - mkdir ../../pkg/usr/share/icons/gnome/scalable/apps/ - mkdir ../../pkg/usr/share/icons/gnome/16x16/apps/ - mkdir ../../pkg/usr/share/icons/gnome/22x22/apps/ - mkdir ../../pkg/usr/share/icons/gnome/24x24/apps/ - mkdir ../../pkg/usr/share/icons/gnome/32x32/apps/ - mkdir ../../pkg/usr/share/icons/gnome/48x48/apps/ - mkdir ../../pkg/usr/share/icons/gnome/64x64/apps/ - mkdir ../../pkg/usr/share/icons/gnome/96x96/apps/ - mkdir ../../pkg/usr/share/icons/gnome/128x128/apps/ - - mv vkplayer ../../pkg/usr/bin - mv vkplayer.desktop ../../pkg/usr/share/applications/vkplayer.desktop - mv data/16x16/vkplayer.png ../../pkg/usr/share/icons/gnome/16x16/apps/ - mv data/22x22/vkplayer.png ../../pkg/usr/share/icons/gnome/22x22/apps/ - mv data/24x24/vkplayer.png ../../pkg/usr/share/icons/gnome/24x24/apps/ - mv data/32x32/vkplayer.png ../../pkg/usr/share/icons/gnome/32x32/apps/ - mv data/48x48/vkplayer.png ../../pkg/usr/share/icons/gnome/48x48/apps/ - mv data/64x64/vkplayer.png ../../pkg/usr/share/icons/gnome/64x64/apps/ - mv data/96x96/vkplayer.png ../../pkg/usr/share/icons/gnome/96x96/apps/ - mv data/128x128/vkplayer.png ../../pkg/usr/share/icons/gnome/128x128/apps/ - mv data/scalable/vkplayer.svg ../../pkg/usr/share/icons/gnome/scalable/apps/ -} - -# vim:set ts=2 sw=2 et: +pkgname=vkplayer +pkgver=0.08.15 +pkgrel=1 +pkgdesc="VKPlayer Search music, load MyAudio and Recommendations playlists, save stream while" +arch=(any) +url="http://forum.ubuntu.ru/index.php?topic=168217" +license=('unknown') +depends=('qt' 'gstreamer0.10-ffmpeg' 'gstreamer0.10-ugly' 'gstreamer0.10-ugly-plugins' 'gstreamer0.10-good-plugins') +makedepends=('phonon') +source=("https://launchpad.net/~yuberion/+archive/vkget/+files/vkplayer_0.08-15.tar.gz" "make.patch") +md5sums=('0fd37c1d15def8a2497e1072130fc247' + '2b9044fc10ff51869d5119712ee04519') #generate with 'makepkg -g' + +build() { + cd "$srcdir/$pkgname/src" + qmake + patch Makefile -i ../../../make.patch + make +} + +check() { + cd "$srcdir/$pkgname/src" + make -k check +} + +package() { + cd "$srcdir/$pkgname/src" + make INSTALL_ROOT="${pkgdir}" install +} \ No newline at end of file diff --git a/vkplayer/PKGBUILD~ b/vkplayer/PKGBUILD~ deleted file mode 100644 index fbcf0d983..000000000 --- a/vkplayer/PKGBUILD~ +++ /dev/null @@ -1,77 +0,0 @@ -pkgname=vkplayer -pkgver=0.08 -pkgrel=2 -epoch= -pkgdesc="VKPlayer Search music, load MyAudio and Recommendations playlists, save stream while" -arch=(any) -url="http://forum.ubuntu.ru/index.php?topic=168217" -license=('unknown') -groups=() -depends=('qt' 'gstreamer0.10-ffmpeg' 'gstreamer0.10-ugly' 'gstreamer0.10-ugly-plugins') -makedepends=('phonon') -checkdepends=() -optdepends=() -provides=() -conflicts=() -replaces=() -backup=() -options=() -install= -changelog= -source=($pkgname-$pkgver.tar.gz) -noextract=() -md5sums=('9d602c081703b5f887474fb6fd7f7327') #generate with 'makepkg -g' - -build() { - cd "$srcdir/$pkgname-$pkgver" - qmake - make -} - -check() { - cd "$srcdir/$pkgname-$pkgver" - make -k check -} - -package() { - cd "$srcdir/$pkgname-$pkgver" - make install - mkdir ../../pkg/usr - mkdir ../../pkg/usr/bin - mkdir ../../pkg/usr/share - mkdir ../../pkg/usr/share/applications - mkdir ../../pkg/usr/share/icons - mkdir ../../pkg/usr/share/icons/gnome/ - mkdir ../../pkg/usr/share/icons/gnome/scalable/ - mkdir ../../pkg/usr/share/icons/gnome/16x16/ - mkdir ../../pkg/usr/share/icons/gnome/22x22/ - mkdir ../../pkg/usr/share/icons/gnome/24x24/ - mkdir ../../pkg/usr/share/icons/gnome/32x32/ - mkdir ../../pkg/usr/share/icons/gnome/48x48/ - mkdir ../../pkg/usr/share/icons/gnome/64x64/ - mkdir ../../pkg/usr/share/icons/gnome/96x96/ - mkdir ../../pkg/usr/share/icons/gnome/128x128/ - mkdir ../../pkg/usr/share/icons/gnome/scalable/apps/ - mkdir ../../pkg/usr/share/icons/gnome/16x16/apps/ - mkdir ../../pkg/usr/share/icons/gnome/22x22/apps/ - mkdir ../../pkg/usr/share/icons/gnome/24x24/apps/ - mkdir ../../pkg/usr/share/icons/gnome/32x32/apps/ - mkdir ../../pkg/usr/share/icons/gnome/48x48/apps/ - mkdir ../../pkg/usr/share/icons/gnome/64x64/apps/ - mkdir ../../pkg/usr/share/icons/gnome/96x96/apps/ - mkdir ../../pkg/usr/share/icons/gnome/128x128/apps/ - - mv vkplayer ../../pkg/usr/bin - mv vkplayer.desktop ../../pkg/usr/share/applications/vkplayer.desktop - mv data/16x16/vkplayer.png ../../pkg/usr/share/icons/gnome/16x16/apps/ - mv data/22x22/vkplayer.png ../../pkg/usr/share/icons/gnome/22x22/apps/ - mv data/24x24/vkplayer.png ../../pkg/usr/share/icons/gnome/24x24/apps/ - mv data/32x32/vkplayer.png ../../pkg/usr/share/icons/gnome/32x32/apps/ - mv data/48x48/vkplayer.png ../../pkg/usr/share/icons/gnome/48x48/apps/ - mv data/64x64/vkplayer.png ../../pkg/usr/share/icons/gnome/64x64/apps/ - mv data/96x96/vkplayer.png ../../pkg/usr/share/icons/gnome/96x96/apps/ - mv data/128x128/vkplayer.png ../../pkg/usr/share/icons/gnome/128x128/apps/ - mv data/scalable/vkplayer.svg ../../pkg/usr/share/icons/gnome/scalable/apps/ -} - -# vim:set ts=2 sw=2 et: diff --git a/vkplayer/make.patch b/vkplayer/make.patch new file mode 100644 index 000000000..1bba19e31 --- /dev/null +++ b/vkplayer/make.patch @@ -0,0 +1,8 @@ +226c226 +< lrelease-qt4 -silent translations/vkplayer_ru.ts -qm translations/vkplayer_ru.qm +--- +> lrelease -silent translations/vkplayer_ru.ts -qm translations/vkplayer_ru.qm +229c229 +< lrelease-qt4 -silent translations/vkplayer_uk.ts -qm translations/vkplayer_uk.qm +--- +> lrelease -silent translations/vkplayer_uk.ts -qm translations/vkplayer_uk.qm diff --git a/vkplayer/vkplayer-0.08.tar.gz b/vkplayer/vkplayer-0.08.tar.gz deleted file mode 100644 index d6f5b815b097007e98bdb4f726d8e5eae429abc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 150722 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 -- 2.11.4.GIT