#!/bin/sh ### Rozhuk Ivan 2020-2021 ### clean_ports.sh ### AUTO_FORCE_PORTS_LIST='accessibility/at-spi2-atk accessibility/at-spi2-core accessibility/atk accessibility/atkmm accessibility/speech-dispatcher archivers/arj archivers/brotli archivers/gcab archivers/gtar archivers/kf5-karchive archivers/libarchive archivers/liblz4 archivers/lzip archivers/lzo2 archivers/lzop archivers/p5-Archive-Zip archivers/p7zip archivers/p7zip-codec-rar archivers/quazip archivers/rar archivers/snappy archivers/unrar archivers/unzip archivers/zip archivers/zopfli archivers/zstd audio/alsa-lib audio/alsa-plugins audio/faac audio/faad audio/flac audio/fluidsynth audio/gsm audio/lame audio/libao audio/libcanberra audio/libcanberra-gtk3 audio/libcddb audio/libmad audio/libmodplug audio/libmysofa audio/libogg audio/libsamplerate audio/libsndfile audio/libvorbis audio/mpg123 audio/openal-soft audio/opencore-amr audio/opus audio/opusfile audio/sdl2_mixer audio/sndio audio/speex audio/speexdsp audio/taglib audio/wavpack converters/fribidi converters/libiconv converters/p5-Convert-BinHex converters/p5-Text-Unidecode converters/py-webencodings converters/ytnef databases/db5 databases/mariadb104-client databases/py-sqlite3________________ databases/qt5-sql databases/sqlite3 databases/tdb databases/unixODBC deskutils/xfce4-tumbler devel/abseil devel/appstream-glib devel/apr1 devel/argp-standalone devel/autoconf devel/autoconf-wrapper devel/autoconf213 devel/automake devel/automake-wrapper devel/binutils devel/bison devel/boost-jam devel/boost-libs devel/check devel/cmake devel/cppunit devel/cunit devel/dbus devel/dbus-glib devel/dconf devel/desktop-file-utils devel/dmake devel/dotconf devel/double-conversion devel/evdev-proto devel/evemu devel/flatbuffers devel/fstrcmp devel/gconf2 devel/geany-plugins-l10n devel/gettext-runtime devel/gettext-tools devel/gflags devel/glade devel/glib20 devel/glibmm devel/glog devel/gmake devel/gobject-introspection devel/gperf devel/gperf31 devel/gsettings-desktop-schemas devel/gsoap devel/gumbo devel/hwloc2 devel/icu devel/jansson devel/json-c devel/json-glib devel/jsoncpp devel/kf5-kauth devel/kf5-kbookmarks devel/kf5-kconfig devel/kf5-kcoreaddons devel/kf5-kcrash devel/kf5-kdbusaddons devel/kf5-kdoctools devel/kf5-ki18n devel/kf5-kio devel/kf5-kitemmodels devel/kf5-knotifications devel/kf5-kservice devel/kf5-solid devel/libaravis devel/libburn devel/libconfig devel/libcrossguid devel/libdbusmenu devel/libdbusmenu-qt devel/libedit devel/libepoll-shim devel/libevdev devel/libevent devel/libffi devel/libfmt devel/libgee devel/libgit2-glib devel/libglade2 devel/libgsf devel/libgtop devel/libgudev devel/libIDL devel/libinotify devel/libisofs devel/liblangtag devel/libltdl devel/libmtdev devel/libnotify devel/liborcus devel/libpeas devel/libpci devel/libpciaccess devel/libpthread-stubs devel/libsigc++20 devel/libsigsegv devel/libsoup devel/libtextstyle devel/libtool devel/libublio devel/libudev-devd devel/libunistring devel/libunwind devel/libuv devel/llvm10 devel/llvm11 devel/llvm12 devel/llvm13 devel/llvm14 devel/llvm70 devel/llvm80 devel/llvm90 devel/m4 devel/mdds devel/meson devel/nasm devel/ncurses devel/ninja devel/npth devel/nspr devel/ode devel/ORBit2 devel/orc devel/p5-ExtUtils-Depends devel/p5-ExtUtils-PkgConfig devel/p5-Filter devel/p5-Glib devel/p5-Locale-gettext devel/p5-Locale-libintl devel/p5-Parse-Yapp devel/p5-TimeDate devel/patch devel/pcre devel/pcre2 devel/pkgconf devel/protobuf devel/py-babel devel/py-dateutil devel/py-enum34 devel/py-evdev devel/py-funcsigs devel/py-gobject3 devel/py-Jinja2 devel/py-lxml devel/py-ply devel/py-pytz devel/py-pyudev devel/py-setuptools devel/py-six devel/py-xdg devel/pygobject3-common devel/qt4-moc devel/qt4-qmake devel/qt4-rcc devel/qt4-uic devel/qt5-buildtools devel/qt5-concurrent devel/qt5-core devel/qt5-dbus devel/qt5-linguisttools devel/qt5-qmake devel/qt5-script devel/qt5-testlib devel/qt5-uitools devel/rapidjson devel/re2 devel/readline devel/rust-cbindgen devel/sdl12 devel/sdl20 devel/spdlog devel/swig devel/swig30 devel/swig40 devel/talloc devel/tevent devel/ucpp devel/valgrind devel/woff2 devel/xdg-utils devel/xorg-macros devel/xxhash devel/yajl devel/yaml-cpp03 devel/yasm dns/c-ares dns/libidn dns/libidn2 dns/libpsl dns/mdnsd dns/public_suffix_list ftp/curl graphics/aalib graphics/argyllcms graphics/cairo graphics/cairomm graphics/colord graphics/djvulibre graphics/exiv2 graphics/freeglut graphics/gd graphics/gdk-pixbuf2 graphics/gexiv2 graphics/giflib graphics/glew graphics/graphene graphics/graphite2 graphics/graphviz graphics/gstreamer1-plugins-gdkpixbuf graphics/gstreamer1-plugins-gl graphics/gtk-update-icon-cache graphics/ilmbase graphics/ImageMagick7 graphics/jasper graphics/jbig2dec graphics/jbigkit graphics/jpeg-turbo graphics/lcms graphics/lcms2 graphics/lensfun graphics/leptonica graphics/libcdr01 graphics/libdrm graphics/libepoxy graphics/libetonyek01 graphics/libexif graphics/libfreehand graphics/libgltf graphics/libGLU graphics/libgxps graphics/libheif graphics/libiptcdata graphics/libjpeg-turbo graphics/libmypaint graphics/libnsgif graphics/libraw graphics/librsvg2 graphics/libwpg03 graphics/libzmf graphics/mesa-dri graphics/mesa-gallium-va____________________ graphics/mesa-gallium-vdpau_________________ graphics/mesa-libs graphics/opencollada graphics/opencolorio graphics/opencv-core graphics/openexr graphics/openjpeg graphics/p5-Cairo graphics/png graphics/poppler graphics/poppler-data graphics/poppler-glib graphics/poppler-qt5 graphics/py-cairo graphics/qr-code-generator graphics/qt5-opengl graphics/qt5-svg graphics/sane-backends graphics/tesseract graphics/tesseract-data graphics/tiff graphics/vigra graphics/vulkan-headers graphics/wayland graphics/webp java/bootstrap-openjdk8 java/java-zoneinfo java/javavmwrapper java/openjdk8 lang/gcc10 lang/gcc11 lang/gcc12 lang/gcc13 lang/gcc14 lang/gcc9 lang/lua51 lang/lua52 lang/lua53 lang/lua54 lang/lua55 lang/lua56 lang/p5-Switch lang/perl5.32 lang/perl5.33 lang/perl5.34 lang/python27 lang/python35 lang/python36 lang/python37 lang/python38 lang/python39 lang/ruby24 lang/ruby26 lang/ruby27 lang/ruby28 lang/ruby29 lang/rust lang/spidermonkey78 lang/tcl86 lang/vala mail/claws-mail-address_keeper mail/claws-mail-archive mail/claws-mail-litehtml_viewer mail/claws-mail-mailmbox mail/claws-mail-notification mail/claws-mail-tnef_parse mail/libetpan mail/p5-Mail-Tools mail/p5-MIME-Tools math/coinmp math/eigen3 math/fftw3 math/fftw3-float math/glm math/gmp math/gsl math/lp_solve math/mpc math/mpfr math/openblas math/superlu misc/box2d misc/e2fsprogs-libuuid misc/help2man misc/hicolor-icon-theme misc/iso-codes misc/mime-support misc/pciids misc/qtchooser misc/shared-mime-info misc/shc misc/usbids multimedia/aom multimedia/dav1d multimedia/ffmpeg multimedia/ffmpegthumbnailer multimedia/gstreamer1 multimedia/gstreamer1-libav multimedia/gstreamer1-plugins multimedia/gstreamer1-plugins-bad multimedia/gstreamer1-plugins-core multimedia/gstreamer1-plugins-good multimedia/libaacs multimedia/libass multimedia/libbdplus multimedia/libbluray multimedia/libde265 multimedia/libdvdcss multimedia/libdvdnav multimedia/libdvdread multimedia/libmtp multimedia/librtmp multimedia/libtheora multimedia/libv4l multimedia/libva multimedia/libva-utils_______________ multimedia/libvdpau multimedia/libvpx multimedia/libx264 multimedia/openh264 multimedia/peek multimedia/phonon multimedia/qt5-multimedia multimedia/rtmpdump multimedia/svt-av1 multimedia/svt-hevc multimedia/svt-vp9 multimedia/v4l_compat multimedia/vid.stab multimedia/x265 multimedia/xvid net/glib-networking net/libcmis net/libilbc net/libpcap net/libproxy net/openldap24-client net/p5-URI net/py-urllib3 net/qt5-network net/vde2 print/a2ps print/freetype2 print/ghostscript9-agpl-base print/harfbuzz print/harfbuzz-icu print/indexinfo print/libmspub01 print/libpagemaker print/libpaper print/libspectre print/psutils print/qpdf print/qt5-printsupport print/texinfo science/hdf5 science/szip security/ca_root_nss security/cyrus-sasl2 security/d0_blind_id security/gcr security/gnupg________________ security/gnutls security/gpgme security/gpgme-cpp security/gpgme-qt5 security/libassuan security/libgcrypt security/libgpg-error security/libksba security/libressl security/libsecret security/libtasn1 security/nettle security/nss security/p11-kit security/pinentry security/pinentry-tty security/rhash security/xmlsec1 shells/bash shells/bash-completion sysutils/cdrdao sysutils/consolekit2 sysutils/coreutils sysutils/cmocka sysutils/dtc sysutils/flock sysutils/garcon sysutils/kf5-kwallet sysutils/libcdio sysutils/libcdio-paranoia sysutils/libsunacl sysutils/open sysutils/polkit sysutils/polkit-qt sysutils/upower textproc/asciidoc textproc/aspell textproc/clucene textproc/diffutils textproc/docbook textproc/docbook-sgml textproc/docbook-xml textproc/docbook-xsl textproc/enchant textproc/enchant2 textproc/expat2 textproc/flex textproc/groff textproc/gsed textproc/gspell textproc/gtk-doc textproc/gtkspell3 textproc/html2text textproc/hunspell textproc/hyphen textproc/intltool textproc/iso8879 textproc/itstool textproc/jade textproc/kf5-kcodecs textproc/kf5-sonnet textproc/libabw textproc/libcroco textproc/libe-book textproc/libepubgen textproc/libexttextcat textproc/libgepub textproc/libmwaw03 textproc/libnumbertext textproc/libodfgen01 textproc/libqxp textproc/librevenge textproc/libsass textproc/libstaroffice textproc/libvisio01 textproc/libwpd010 textproc/libwps textproc/libxml++26 textproc/libxml2 textproc/libxslt textproc/libyaml textproc/minixmlto textproc/mythes textproc/p5-Unicode-EastAsianWidth textproc/p5-XML-NamespaceSupport textproc/p5-XML-Parser textproc/p5-XML-SAX textproc/p5-XML-SAX-Base textproc/py-docutils textproc/py-libxml2 textproc/py-mako textproc/py-MarkupSafe textproc/qt5-xml textproc/qt5-xmlpatterns textproc/raptor2 textproc/rasqal textproc/redland textproc/sassc textproc/sdocbook-xml textproc/tinyxml textproc/uchardet textproc/utf8proc textproc/xmlcatmgr textproc/xmlcharent www/libnghttp2 www/node www/py-beaker www/py-html5lib www/serf www/webkit2-gtk3 www/youtube_dl x11-drivers/xf86-input-evdev x11-drivers/xf86-input-joystick x11-drivers/xf86-input-keyboard x11-drivers/xf86-input-libinput x11-drivers/xf86-input-mouse x11-drivers/xf86-input-synaptics x11-drivers/xf86-input-wacom x11-drivers/xf86-video-amdgpu x11-drivers/xf86-video-ati x11-drivers/xf86-video-intel x11-drivers/xf86-video-scfb x11-drivers/xf86-video-vesa x11-fonts/crosextrafonts-caladea-ttf x11-fonts/crosextrafonts-carlito-ttf x11-fonts/dejavu x11-fonts/encodings x11-fonts/font-adobe-100dpi x11-fonts/font-adobe-75dpi x11-fonts/font-adobe-utopia-100dpi x11-fonts/font-adobe-utopia-75dpi x11-fonts/font-adobe-utopia-type1 x11-fonts/font-alias x11-fonts/font-arabic-misc x11-fonts/font-bh-100dpi x11-fonts/font-bh-75dpi x11-fonts/font-bh-lucidatypewriter-100dpi x11-fonts/font-bh-lucidatypewriter-75dpi x11-fonts/font-bh-ttf x11-fonts/font-bh-type1 x11-fonts/font-bitstream-100dpi x11-fonts/font-bitstream-75dpi x11-fonts/font-bitstream-type1 x11-fonts/font-cronyx-cyrillic x11-fonts/font-cursor-misc x11-fonts/font-daewoo-misc x11-fonts/font-dec-misc x11-fonts/font-ibm-type1 x11-fonts/font-isas-misc x11-fonts/font-jis-misc x11-fonts/font-micro-misc x11-fonts/font-misc-cyrillic x11-fonts/font-misc-ethiopic x11-fonts/font-misc-meltho x11-fonts/font-misc-misc x11-fonts/font-mutt-misc x11-fonts/font-schumacher-misc x11-fonts/font-screen-cyrillic x11-fonts/font-sony-misc x11-fonts/font-sun-misc x11-fonts/font-util x11-fonts/font-winitzki-cyrillic x11-fonts/font-xfree86-type1 x11-fonts/fontconfig x11-fonts/gentium-basic x11-fonts/liberation-fonts-ttf x11-fonts/libfontenc x11-fonts/libFS x11-fonts/libXfont x11-fonts/libXfont2 x11-fonts/libXft x11-fonts/linuxlibertine-g x11-fonts/mkfontscale x11-fonts/noto-basic x11-fonts/twemoji-color-font-ttf x11-fonts/xorg-fonts x11-fonts/xorg-fonts-100dpi x11-fonts/xorg-fonts-75dpi x11-fonts/xorg-fonts-cyrillic x11-fonts/xorg-fonts-miscbitmaps x11-fonts/xorg-fonts-truetype x11-fonts/xorg-fonts-type1 x11-themes/claws-mail-themes x11-themes/gtk-murrine-engine x11-themes/kf5-breeze-icons x11-themes/kf5-kiconthemes x11-themes/xcursor-themes x11-toolkits/fltk x11-toolkits/gtk20 x11-toolkits/gtk30 x11-toolkits/gtkglext x11-toolkits/gtkmm30 x11-toolkits/gtksourceview3 x11-toolkits/gtksourceview4 x11-toolkits/kf5-attica x11-toolkits/kf5-kcompletion x11-toolkits/kf5-kconfigwidgets x11-toolkits/kf5-kguiaddons x11-toolkits/kf5-kitemviews x11-toolkits/kf5-kjobwidgets x11-toolkits/kf5-ktextwidgets x11-toolkits/kf5-kwidgetsaddons x11-toolkits/kf5-kxmlgui x11-toolkits/libhandy x11-toolkits/libwnck3 x11-toolkits/libXaw x11-toolkits/libXmu x11-toolkits/libXt x11-toolkits/p5-Gtk2 x11-toolkits/p5-Pango x11-toolkits/pango x11-toolkits/pangomm x11-toolkits/pangox-compat x11-toolkits/qt5-declarative x11-toolkits/qt5-gui x11-toolkits/qt5-uiplugin x11-toolkits/qt5-widgets x11-toolkits/scintilla x11-toolkits/tk86 x11-toolkits/vte3 x11-toolkits/wxgtk31 x11/babl x11/bigreqsproto x11/dri3proto x11/iceauth x11/keybinder x11/kf5-kglobalaccel x11/kf5-kwindowsystem x11/libdmx x11/libexo x11/libfm x11/libfm-extra x11/libICE x11/libinput x11/libSM x11/libX11 x11/libXau x11/libxcb x11/libXcomposite x11/libXcursor x11/libXdamage x11/libXdmcp x11/libXext x11/libxfce4menu x11/libxfce4util x11/libXfixes x11/libXi x11/libXinerama x11/libxkbcommon x11/libxkbfile x11/libxklavier x11/libXpm x11/libXpresent x11/libXrandr x11/libXrender x11/libXres x11/libXScrnSaver x11/libxshmfence x11/libXtst x11/libXv x11/libXvMC x11/libXxf86dga x11/libXxf86vm x11/menu-cache x11/pixman x11/presentproto x11/qt5-x11extras x11/resourceproto x11/setxkbmap x11/startup-notification x11/xauth x11/xbitmaps x11/xcb-proto x11/xcb-util x11/xcb-util-image x11/xcb-util-keysyms x11/xcb-util-renderutil x11/xcb-util-wm x11/xcmiscproto x11/xdpyinfo x11/xdriinfo x11/xf86driproto x11/xfce4-conf x11/xkbcomp x11/xkeyboard-config x11/xorg-libraries x11/xorgproto x11/xprop x11/xrandr x11/xrefresh x11/xset x11/xtrans x11/xwininfo' #AUTO_FORCE_PORTS_LIST_LINE=`echo "${AUTO_FORCE_PORTS_LIST}" | tr '\n' ' '` EXCEPTION_LIST="/boot/modules/dvb-.*.fw /boot/modules/linker.hints /usr/local/include/php/ext/php_config.h /usr/local/include/qt5/QtCore/qconfig-modules.h /usr/local/etc/.* /usr/local/git/.* /usr/local/lib/.nvidia/.* /usr/local/lib/compat /usr/local/lib/ConsoleKit/scripts/.* /usr/local/lib/gdk-pixbuf-.*/loaders.cache /usr/local/lib/gio/modules/giomodule.cache /usr/local/lib/gtk-.*/immodules.cache /usr/local/lib/php/phabricator/conf/ .*/man/mandoc.db .*python.*/site-packages/easy-install.pth /usr/local/lib/xorg/modules/extensions/libglx.so /usr/local/lib32/.nvidia/.* /usr/local/lib32/libnvidia.* /usr/local/libexec/cups/.* /usr/local/man/whatis /usr/local/openssl/.* /usr/local/sbin/automount /usr/local/sbin/on_lid.sh /usr/local/sbin/sound_control /usr/local/share/applications/mimeinfo.cache usr/local/share/cups/.* /usr/local/share/fonts/.* /usr/local/share/glib-2.0/schemas/gschemas.compiled /usr/local/share/icons.* /usr/local/share/info/dir /usr/local/share/mime/.* /usr/local/share/sgml/catalog.* /usr/local/share/ssdpd/www/upnpdata/.* /usr/local/share/xml/catalog.* /usr/local/www/.*" # Get a list of all files installed by all packages. _PKGS_FILES_LIST=`mktemp -q /tmp/XXXXXXXX` if [ ${?} -ne 0 ]; then echo "${0}: Can't create temp file, exiting..." exit 1 fi pkg info --list-files -a | grep '/' | sed -e 's|.||' | sort -u > "${_PKGS_FILES_LIST}" # Collect data. _DIR_FILES_LIST=`mktemp -q /tmp/XXXXXXXX` for _DIR2CLEAN in '/boot/modules' '/usr/local'; do [ ! -r ${_DIR2CLEAN} ] && continue # Get a list of all files. find -x "${_DIR2CLEAN}" -type f 2>/dev/null | sort -u > "${_DIR_FILES_LIST}" _FILES_RAW_DIFF=`diff -u "${_PKGS_FILES_LIST}" "${_DIR_FILES_LIST}" | grep "+${_DIR2CLEAN}" | sed -e 's|^+||'` _FILES_FILTERED=`echo "${_FILES_FILTERED}";echo "${_FILES_RAW_DIFF}" | grep -Ev -- "${EXCEPTION_LIST}"` _FILES_EXCEPTION=`echo "${_FILES_EXCEPTION}";echo "${_FILES_RAW_DIFF}" | grep -E -- "${EXCEPTION_LIST}"` # Broken symlinks. _BROKEN_SYMLINKS_RAW=`find -x -L "${_DIR2CLEAN}" -type l 2>/dev/null` _BROKEN_SYMLINKS_FILTERED=`echo "${_BROKEN_SYMLINKS_FILTERED}";echo "${_BROKEN_SYMLINKS_RAW}" | grep -Ev -- "${EXCEPTION_LIST}"` _BROKEN_SYMLINKS_EXCEPTION=`echo "${_BROKEN_SYMLINKS_EXCEPTION}";echo "${_BROKEN_SYMLINKS_RAW}" | grep -E -- "${EXCEPTION_LIST}"` # Empty folders. _EMPTY_DIRS_RAW=`find -x "${_DIR2CLEAN}" -type d -empty 2>/dev/null` _EMPTY_DIRS_FILTERED=`echo "${_EMPTY_DIRS_FILTERED}";echo "${_EMPTY_DIRS_RAW}" | grep -Ev -- "${EXCEPTION_LIST}"` _EMPTY_DIRS_EXCEPTION=`echo "${_EMPTY_DIRS_EXCEPTION}";echo "${_EMPTY_DIRS_RAW}" | grep -E -- "${EXCEPTION_LIST}"` done rm -f "${_PKGS_FILES_LIST}" "${_DIR_FILES_LIST}" _AUTO_FORCE_PORTS_LIST=`pkg query -e '%a =0' %o | grep -x -- "${AUTO_FORCE_PORTS_LIST}"` # Show elements to autoremove. if [ -n "${_FILES_FILTERED}" ]; then echo 'Files for auto remove:' echo "${_FILES_FILTERED}" echo '==========================================================' echo '' fi if [ -n "${_BROKEN_SYMLINKS_FILTERED}" ]; then echo 'Broken symlinks for auto remove:' echo "${_BROKEN_SYMLINKS_FILTERED}" echo '==========================================================' echo '' fi if [ -n "${_AUTO_FORCE_PORTS_LIST}" ]; then echo 'Ports to set as autoinstalled:' echo "${_AUTO_FORCE_PORTS_LIST}" echo '==========================================================' echo '' fi # Show elements for manual deletion. if [ "${1}" == '-m' ]; then if [ -n "${_FILES_EXCEPTION}" ]; then echo 'Files for manual remove:' echo "${_FILES_EXCEPTION}" echo '==========================================================' echo '' fi if [ -n "${_EMPTY_DIRS_FILTERED}" ]; then echo 'Empty dirs for auto remove:' echo "${_EMPTY_DIRS_FILTERED}" echo '==========================================================' echo '' fi if [ -n "${_EMPTY_DIRS_EXCEPTION}" ]; then echo 'Empty dirs for manual remove:' echo "${_EMPTY_DIRS_EXCEPTION}" echo '==========================================================' echo '' fi if [ -n "${_BROKEN_SYMLINKS_EXCEPTION}" ]; then echo 'Broken symlinks for manual remove:' echo "${_BROKEN_SYMLINKS_EXCEPTION}" echo '==========================================================' echo '' fi fi # Remove elements if -y is set. if [ "${1}" == '-y' ]; then rm -f ${_FILES_FILTERED} rm -f ${_BROKEN_SYMLINKS_FILTERED} #portmaster --check-port-dbdir -y # Set as autoinstalled. for _AUTO_FORCE_PORT_NAME in ${_AUTO_FORCE_PORTS_LIST}; do pkg set -A1 -y "${_AUTO_FORCE_PORT_NAME}" > /dev/null 2>&1 done else #portmaster --check-port-dbdir -n fi exit 0