diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-12-22 11:03:29 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-12-22 11:03:29 -0300 |
commit | d13f9136f9f442d90a3b2dfe7f9841f8a1e13ff2 (patch) | |
tree | 1e0ea0099c172d02ed65a3d251df83bb5dc96d5b | |
parent | 8a263949cc384afcb12fc79f8b1b089ec458148d (diff) |
localepurge
-rw-r--r-- | pcr/localepurge/PKGBUILD | 43 | ||||
-rw-r--r-- | pcr/localepurge/locale.nopurge | 56 | ||||
-rw-r--r-- | pcr/localepurge/localepurge.8.patch | 142 | ||||
-rw-r--r-- | pcr/localepurge/localepurge.config.patch | 147 | ||||
-rw-r--r-- | pcr/localepurge/localepurge.patch | 206 |
5 files changed, 594 insertions, 0 deletions
diff --git a/pcr/localepurge/PKGBUILD b/pcr/localepurge/PKGBUILD new file mode 100644 index 000000000..be13e0aeb --- /dev/null +++ b/pcr/localepurge/PKGBUILD @@ -0,0 +1,43 @@ +# Maintainer: Hyacinthe Cartiaux <hyacinthe.cartiaux @ free.fr> +# Contributor: Francesco Groccia <frgroccia gmail.com> +# Contributor: Dincer Celik <dincer@bornovali.com> + +pkgname=localepurge +pkgver=0.7.3.4 +pkgrel=1 +pkgdesc="Script to remove disk space wasted for unneeded localizations." +arch=('any') +url="http://packages.debian.org/source/sid/localepurge" +license=('GPL') +backup=('etc/locale.nopurge') +source=("http://ftp.de.debian.org/debian/pool/main/l/localepurge/${pkgname}_${pkgver}.tar.xz" + "${pkgname}.patch" + "${pkgname}.8.patch" + "${pkgname}.config.patch" + "locale.nopurge") + +prepare() +{ + patch -uN ${srcdir}/${pkgname}/usr/sbin/localepurge < ${srcdir}/localepurge.patch + patch -uN ${srcdir}/${pkgname}/debian/localepurge.8 < ${srcdir}/localepurge.8.patch + patch -uN ${srcdir}/${pkgname}/debian/localepurge.config < ${srcdir}/localepurge.config.patch +} + +package() +{ + install -D -m755 ${srcdir}/${pkgname}/usr/sbin/localepurge ${pkgdir}/usr/bin/localepurge + install -D -m644 ${srcdir}/${pkgname}/debian/localepurge.8 ${pkgdir}/usr/share/man/man8/localepurge.8 + install -D -m755 ${srcdir}/${pkgname}/debian/localepurge.config ${pkgdir}/usr/bin/localepurge-config + install -D -m644 locale.nopurge ${pkgdir}/etc/locale.nopurge + if [ ! -e /var/cache/localepurge/localelist ]; then + find /usr/share/locale -maxdepth 1 -type d -name "*" -printf "%f\n" | grep "^[a-z]" | cut -d" " -f1 | sort -u > ${srcdir}/localelist + else + cp /var/cache/localepurge/localelist ${srcdir}/localelist + fi + install -D -m644 ${srcdir}/localelist ${pkgdir}/var/cache/localepurge/localelist +} +sha256sums=('18d933181bf455ce386b91794a6e8dc9026bd89dde29ca6fbcde34d3030e2060' + 'b8704eec22d0e84ada9a524277322f9892c11f3f4b84ec0dd4f50f0ca2dc7474' + '82bd40594ef0646465eed6e525368e87694322513c0d3280879fcfc5c40cb6a7' + 'b27e69a87f81ecb01ecd9fd92c174ed3c4406200eedc50ba6ebabce91e3851e8' + 'b9c28be93fa47d4f0315972159e501d9eef28bbab7ffe6e8e7c4a13c359f35e8') diff --git a/pcr/localepurge/locale.nopurge b/pcr/localepurge/locale.nopurge new file mode 100644 index 000000000..66968232d --- /dev/null +++ b/pcr/localepurge/locale.nopurge @@ -0,0 +1,56 @@ +#################################################### +# This is the configuration file for localepurge(8). +#################################################### +# Comment this to enable localepurge. +# NO COMMENT IT IF YOU ARE NOT SURE WHAT ARE YOU DOING +# THIS APP DO NOT ASK FOR CONFIRMATION + +NEEDSCONFIGFIRST + +#################################################### +# Uncommenting this string enables removal of localized +# man pages based on the configuration information for +# locale files defined below: + +MANDELETE + +#################################################### +# Uncommenting this string causes localepurge to simply delete +# locales which have newly appeared on the system without +# bothering you about it: + +#DONTBOTHERNEWLOCALE + +##################################################### +# Commenting out this string enables faster but less +# accurate calculation of freed disk space: + +#QUICKNDIRTYCALC + +#################################################### +# Uncommenting this string enables display of freed disk +# space if localepurge has purged any superfluous data: + +SHOWFREEDSPACE + +##################################################### +# Commenting out this string disables verbose output: + +#VERBOSE + +##################################################### +# You like Colors? + +#NOCOLOR + +##################################################### +# You can use the -v -d -nc options in command line. + +##################################################### +# Following locales won't be deleted from this system +# for example: +en +en_GB +en_GB.UTF-8 +en_US +en_US.UTF-8 diff --git a/pcr/localepurge/localepurge.8.patch b/pcr/localepurge/localepurge.8.patch new file mode 100644 index 000000000..793b6184b --- /dev/null +++ b/pcr/localepurge/localepurge.8.patch @@ -0,0 +1,142 @@ +--- ../localepurge-orig/debian/localepurge.8 2013-09-20 12:52:48.000000000 +0200 ++++ localepurge.8 2013-09-21 12:48:33.864666265 +0200 +@@ -1,4 +1,4 @@ +-.TH LOCALEPURGE 8 ++.TH LOCALEPURGE 8 "2013-09-21" "GNU/Linux" "" + .SH NAME + localepurge \- reclaim disk space removing unneeded localizations + .SH SYNOPSIS +@@ -7,15 +7,8 @@ + .SH "DESCRIPTION" + .BR localepurge + is a small script to recover disk space wasted for unneeded locale +-files and localized man pages. It will be automagically invoked by +-.BR dpkg +-upon completion of any +-.BR apt +-installation run. You have to define the locale +-directory names you want to keep from removal after each +-.BR apt +-installation run +-in the ++files and localized man pages. You have to define the locale ++directory names you want to keep from removal in the + .BR /etc/locale.nopurge + configuration file. Unless + .BR localepurge +@@ -35,10 +28,17 @@ + .BR \-\ /usr/share/omf + .br + The localization files you actually need and which you want to be preserved on your system can be +-easily configured by running the following command: ++easily configured by editing the following file: + .br +-.BR dpkg-reconfigure\ localepurge ++.BR /etc/locale.nopurge + .br ++New locales discovered on your system will be listed in ++.I /var/cache/localepurge/localelist\-new ++and should be added to ++.I /var/cache/localepurge/localelist ++by the ++.BR /usr/bin/localepurge-config ++script. + .SH OPTIONS + The configurable options consist of toggling verbose output, reporting a + summary of freed space, and deletion of localized manual pages in +@@ -68,10 +68,10 @@ + .BR not + .BR integrated + .BR with +-.BR Debian's ++.BR "Arch Linux's" + .BR package + .BR management +-.BR system ++.BR system + and therefore is not meant for the faint of heart. Responsibility for its + usage and possible breakage of your system therefore lies in the sysadmin's + (your) hands. +@@ -85,60 +85,12 @@ + All locale directories containing a subdirectory named LC_MESSAGES + which are either commented out or not even listed at all in + .BR /etc/locale.nopurge +-will be irreversibly deleted. The only way to +-reinstall any lost locales is a complete reinstallation of all the +-Debian packages containing them. See +-.BR /usr/share/doc/localepurge/reinstall_debs.sh +-for a recipe. +-Alternatively you can reconfigure +-it with +-.BR dpkg-reconfigure(8) +-to prevent locale files from being purged during subsequent runs of apt. +-.br +-.SH SOLVING PROBLEMS caused by localepurge +-This program does interfere with the Debian package management and does +-provoke strange, but usually harmless, behaviour of programs related +-with +-.BR apt/dpkg +-like +-.BR dpkg-repack(1), +-.BR debsums(1), +-.BR reportbug(1), +-etc. +-If you need to have any package in its full integrity so that e.g. the +-formerly mentioned programs work as designed by its author and as +-expected by you, simply deinstall +-.BR localepurge +-temporarily without purging its configuration and reinstall the packages +-you need in their fully integral state. When you are done with what you +-needed the integral packages for simply reinstall +-.BR localepurge +-again. +- ++will be irreversibly deleted. The only way to reinstall any lost ++locales is a complete reinstallation of all the Arch Linux packages ++containing them. For more information, see "Reinstalling all installed packages" ++at http://wiki.archlinux.org/index.php/Pacman_Tips. + .SH FILES + .BR /etc/locale.nopurge +-.SH SEE ALSO +-Administrators of systems with short disk space should have a look +-at both the +-.BR deborphan +-and +-.BR debfoster +-packages. Especially +-.BR debfoster +-can work wonders for your scarce disk space! +- +-.br +-.BR deborphan(1) +-.br +-.BR debfoster(8) +-.br +-.BR dpkg-reconfigure(8) +-.br +-.BR debconf(8) +-.br +-.BR /usr/share/doc/localepurge/README.debian +-.br +-.BR /usr/share/doc/localepurge/reinstall_debs.sh + .SH AUTHOR + .BR localepurge + and its accompanying manual page was written for the +@@ -150,3 +102,17 @@ + Debian's great package management system will make + .BR localepurge + fully obsolete. ++.SH NOTE ++This manual page and the Debian localepurge script have been modified ++for Arch Linux system by Francesco Groccia <frgroccia gmail.com>. ++Some Debian\-specific information has been removed. ++.br ++In particular, the following files have been revised from the ++localepurge source code (Debian "sid" distribution): ++.HP ++ ++.I ../debian/localepurge.8 ++ ++.I ../debian/localepurge.config ++ ++.I ../usr/sbin/localepurge diff --git a/pcr/localepurge/localepurge.config.patch b/pcr/localepurge/localepurge.config.patch new file mode 100644 index 000000000..83f021853 --- /dev/null +++ b/pcr/localepurge/localepurge.config.patch @@ -0,0 +1,147 @@ +--- localepurge.conf.orig 2014-02-04 18:17:32.554174127 +0100 ++++ localepurge.conf 2014-02-04 18:21:08.911092875 +0100 +@@ -2,26 +2,11 @@ + + set -e + +-. /usr/share/debconf/confmodule +- + # first get all possible locales and create a full list of locale values: + +-CONFIG_FILE="/etc/locale.nopurge" + TEMPFILE="$(mktemp --suffix ".locales")" + LOCALELIST=/var/cache/localepurge/localelist + +-conf_has_key() { +- local key="$1" +- +- if [ -f "$CONFIG_FILE" ] && fgrep --quiet --line-regexp \ +- "$key" "$CONFIG_FILE"; then +- echo "true" +- else +- echo "false" +- fi +-} +- +- + # for the purpose of presenting a ready made preselection at the very first + # configuration, include already configured locales from locales package: + +@@ -46,9 +31,7 @@ + + # include locales supported by the locales package: + +-if [ -f /usr/share/i18n/SUPPORTED ]; then +- grep ^[a-z] /usr/share/i18n/SUPPORTED | cut -d' ' -f1 | sort -u >> "$TEMPFILE" +-fi ++find /usr/share/locale -maxdepth 1 -type d -name "*" -printf "%f\n" | grep "^[a-z]" | cut -d" " -f1 | sort -u >> "$TEMPFILE" + + # include locales from our previous localelist if it already exists: + +@@ -59,8 +42,7 @@ + # include locales from newly added locales: + NEWLOCALELIST="$LOCALELIST"-new + +-if [ -f "$NEWLOCALELIST" ] && \ +- [ $(ps w -p "$PPID" | grep -c dpkg-reconfigure) = "1" ]; then ++if [ -f "$NEWLOCALELIST" ]; then + cat "$NEWLOCALELIST" >> "$TEMPFILE" + rm -f "$NEWLOCALELIST" + fi +@@ -79,96 +61,9 @@ + else + mv "$LOCALELIST" "$LOCALELIST"-old + sort -u "$TEMPFILE" > "$LOCALELIST" +-fi +- +-# finally sort and create full list of all collected locale names +- +-LOCALES=$(sort -u "$TEMPFILE" | tr '\n' ' ' \ +- | sed 's/\ /,\ /g' | sed 's/,\ $//g') +- +-if [ -f "$CONFIG_FILE" ] ; then +- # Update the debconf database +- PRESELECT="$(grep --extended-regexp '^[[:lower:]][[:lower:]]' \ +- "$CONFIG_FILE" | tr '\n' ' ' | sed 's/\ /,\ /g' | \ +- sed 's/,\ $//g')" +- db_set localepurge/nopurge "$PRESELECT" +- +- db_set localepurge/use-dpkg-feature "$(conf_has_key USE_DPKG)" +- db_set localepurge/mandelete "$(conf_has_key MANDELETE)" +- db_set localepurge/dontbothernew "$(conf_has_key DONTBOTHERNEWLOCALE)" +- db_set localepurge/showfreedspace "$(conf_has_key SHOWFREEDSPACE)" +- db_set localepurge/quickndirtycalc "$(conf_has_key QUICKNDIRTYCALC)" +- db_set localepurge/verbose "$(conf_has_key VERBOSE)" +- +-else +- +- # sort and create preselection values from "$LOCALEGEN" +- +- PRESELECT=$(sort -u "$LOCALEGEN" | tr '\n' ' ' \ +- | sed 's/\ /,\ /g' | sed 's/,\ $//g') + fi + + # deleting temporary files not needed anymore: + + rm -f "$TEMPFILE" "$LOCALEGEN" + +-############################################################# +-# now that all locale data is in place let debconf take over: +- +-db_subst localepurge/nopurge locales "$LOCALES" +- +-# uncomment for debugging: +-#echo "$LOCALES" > /tmp/locales.list +- +-db_get localepurge/nopurge +-if [ "$RET" = "" ] && [ "$RET" != "PURGE_ALL" ] \ +- || [ "$RET" = "NEEDSCONFIGFIRST" ]; then +- db_set localepurge/nopurge "$PRESELECT" +- db_fset localepurge/nopurge seen false +- # uncomment for debugging: +- #echo "$PRESELECT" > /tmp/preselect.list +-fi +- +-db_input high localepurge/nopurge || true +-db_go +- +-db_get localepurge/nopurge +-if [ "$RET" = "" ] || [ "$RET" = "PURGE_ALL" ]; then +- db_input high localepurge/none_selected || true +- db_go +- +- db_get localepurge/none_selected +- if [ "$RET" = "false" ]; then +- db_input high localepurge/remove_no || true +- db_go +- fi +-fi +- +-db_input high localepurge/use-dpkg-feature || true +-db_go +-if [ "$RET" = "" -o "$RET" = "true" ] ; then +- USE_DPKG=yes +-else +- USE_DPKG=no +-fi +- +-db_input medium localepurge/mandelete || true +-db_go +- +-if [ "$USE_DPKG" = "xno" ] ; then +- # Features incompatible with the dpkg approach. +- db_input medium localepurge/dontbothernew || true +- db_go +- +- db_input low localepurge/showfreedspace || true +- db_go +- +- db_get localepurge/showfreedspace +- if [ "$RET" = "true" ]; then +- db_input low localepurge/quickndirtycalc || true +- db_go +- fi +- +- db_input low localepurge/verbose || true +- db_go +-fi diff --git a/pcr/localepurge/localepurge.patch b/pcr/localepurge/localepurge.patch new file mode 100644 index 000000000..c0174d5bf --- /dev/null +++ b/pcr/localepurge/localepurge.patch @@ -0,0 +1,206 @@ +--- ../localepurge-orig/usr/sbin/localepurge 2013-06-15 18:46:01.000000000 +0200 ++++ localepurge 2013-09-21 12:04:38.155721151 +0200 +@@ -1,6 +1,6 @@ + #! /bin/bash + +-# Deleting all locale files and localized man pages installed ++# Deleting all locale files and localized man pages installed + # on system which are *not* listed in /etc/locale.nopurge + + set -e +@@ -12,48 +12,35 @@ + fi + + if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then +- echo "" +- echo "Verbose output is triggered with option '-v' or '-verbose'." +- echo "Debugging output is triggered with option '-d' or '-debug'." +- echo "To reconfigure it, run 'dpkg-reconfigure localepurge'." +- echo "Documentation is either available via 'man localepurge'" +- echo "or by reading the docs in /usr/share/doc/localepurge." +- echo "" +- if [ -f $NOPURGECONF ] && fgrep --quiet --line-regexp USE_DPKG $NOPURGECONF ; then +- echo "NB: localepurge has been configured to use dpkg. Therefore," +- echo "this script will not do anything." +- fi +- exit 0 ++ echo "" ++ echo "Verbose output is triggered with option '-v' or '-verbose'." ++ echo "Debugging output is triggered with option '-d' or '-debug'." ++ echo "To reconfigure it, edit /etc/locale.nopurge file." ++ echo "Documentation is available via 'man 8 localepurge'." ++ echo "" ++ exit 0 + fi + +- + # Do nothing and report why if no valid configuration file exists: + +-if [ ! -f $NOPURGECONF ] +- then +- echo " No $NOPURGECONF file present, exiting ..." ++if [ ! -f $NOPURGECONF ]; then ++ echo " No $NOPURGECONF file present, exiting ..." ++ exit 0 ++else ++ if fgrep --quiet --line-regexp NEEDSCONFIGFIRST $NOPURGECONF ; then ++ echo ++ echo " You have to configure \"localepurge\" by editing" ++ echo ++ echo " /etc/locale.nopurge file" ++ echo ++ echo " to make $0 actually start to function." ++ echo ++ echo " Nothing to be done, exiting ..." ++ echo + exit 0 +- else +- if fgrep --quiet --line-regexp USE_DPKG $NOPURGECONF +- then +- # Do nothing, dpkg does all the work for us. +- exit 0 +- elif fgrep --quiet --line-regexp NEEDSCONFIGFIRST $NOPURGECONF +- then +- echo +- echo " You have to configure \"localepurge\" with the command" +- echo +- echo " dpkg-reconfigure localepurge" +- echo +- echo " to make $0 actually start to function." +- echo +- echo " Nothing to be done, exiting ..." +- echo +- exit 0 +- fi ++ fi + fi + +- + ################################################################ + ## Initialise variables + +@@ -85,7 +72,6 @@ + VERBOSE=1 + fi + +- + ################################################################ + ## Manage the list of locales + +@@ -97,57 +83,57 @@ + + ((VERBOSE)) && echo "localepurge: checking for existence of $LOCALECACHEDIR..." + if [ ! -d $LOCALECACHEDIR ]; then +- mkdir -m 644 -p $LOCALECACHEDIR ++ mkdir -m 644 -p $LOCALECACHEDIR + fi + + ((VERBOSE)) && echo "localepurge: checking for existence of $LOCALELIST..." + if [ ! -f $LOCALELIST ]; then +- touch $LOCALELIST && chmod 664 $LOCALELIST ++ touch $LOCALELIST && chmod 664 $LOCALELIST + fi + + ((VERBOSE)) && echo "localepurge: checking system for new locale ..." + + for NEWLOCALE in $(cd /usr/share/locale; ls .) +-do +- if [ -d /usr/share/locale/$NEWLOCALE/LC_MESSAGES ]; then +- if [ ! "$(grep -cx $NEWLOCALE $LOCALELIST)" = "1" ]; then +- echo "$NEWLOCALE" >> "$NEWLOCALELIST" ++do ++ if [ -d /usr/share/locale/$NEWLOCALE/LC_MESSAGES ]; then ++ if [ ! "$(grep -cx $NEWLOCALE $LOCALELIST)" = "1" ]; then ++ echo "$NEWLOCALE" >> "$NEWLOCALELIST" ++ fi + fi +- fi + done + + for NEWLOCALE in $(ls --ignore="man[1-9]*" /usr/share/man) +-do +- if [ -d /usr/share/man/$NEWLOCALE/man1 ] || [ -d /usr/share/man/$NEWLOCALE/man8 ]; then +- if [ ! "$(grep -cx $NEWLOCALE $LOCALELIST)" = "1" ]; then +- echo "$NEWLOCALE" >> "$NEWLOCALELIST" ++do ++ if [ -d /usr/share/man/$NEWLOCALE/man1 ] || [ -d /usr/share/man/$NEWLOCALE/man8 ]; then ++ if [ ! "$(grep -cx $NEWLOCALE $LOCALELIST)" = "1" ]; then ++ echo "$NEWLOCALE" >> "$NEWLOCALELIST" ++ fi + fi +- fi + done + + if [ -f $NEWLOCALELIST ]; then +- if ((DONTBOTHERNEWLOCALE)); then +- mv "$NEWLOCALELIST" "$NEWLOCALELIST".temp +- sort -u "$NEWLOCALELIST".temp "$LOCALELIST"> "$NEWLOCALELIST" +- mv "$NEWLOCALELIST" "$LOCALELIST" +- rm "$NEWLOCALELIST".temp +- else +- mv "$NEWLOCALELIST" "$NEWLOCALELIST".temp +- sort -u "$NEWLOCALELIST".temp > "$NEWLOCALELIST" +- rm "$NEWLOCALELIST".temp +- fi ++ if ((DONTBOTHERNEWLOCALE)); then ++ mv "$NEWLOCALELIST" "$NEWLOCALELIST".temp ++ sort -u "$NEWLOCALELIST".temp "$LOCALELIST"> "$NEWLOCALELIST" ++ mv "$NEWLOCALELIST" "$LOCALELIST" ++ rm "$NEWLOCALELIST".temp ++ else ++ mv "$NEWLOCALELIST" "$NEWLOCALELIST".temp ++ sort -u "$NEWLOCALELIST".temp > "$NEWLOCALELIST" ++ rm "$NEWLOCALELIST".temp ++ fi + fi + + if [ -f "$NEWLOCALELIST" ] && [ $DONTBOTHERNEWLOCALE != yes ]; then + echo "Some new locales have appeared on your system:" + echo +- tr '\n' ' ' < "$NEWLOCALELIST" ++ tr '\n' ' ' < "$NEWLOCALELIST" + echo + echo + echo "They will not be touched until you reconfigure localepurge" + echo "with the following command:" + echo +- echo " dpkg-reconfigure localepurge" ++ echo " /usr/bin/localepurge-config" + echo + fi + +@@ -157,7 +143,7 @@ + ## all locales and create a pattern matching superfluous locales. + nopurge=$( + set -o noglob; # Disable path expansion and use 'echo' +- # below to change newlines into spaces ++ # below to change newlines into spaces + echo $(grep --invert-match --extended-regexp '^[ \t]*(#|$)' $NOPURGECONF) + ) + nopurgepat='@(C|'"${nopurge// /|}"')' +@@ -172,7 +158,7 @@ + ) + + ################################################################ +-## Define utility functions ++## Define utility functions + + # Function for disk space calculation + # Usage: get_used_space <dirname> +@@ -202,7 +188,7 @@ + local flag + ((VERBOSE)) && flag=-v + for file; do +- if [ -f "$file" ] || [ -h "$file" ]; then ++ if [ -f "$file" ] || [ -h "$file" ]; then + echo "$file" + fi + done | xargs rm $flag +@@ -241,7 +227,6 @@ + fi + } + +- + ################################################################ + ## Now, get the job done + |