diff options
| author | B. Watson <urchlay@slackware.uk> | 2026-08-16 02:37:26 -0400 |
|---|---|---|
| committer | B. Watson <urchlay@slackware.uk> | 2026-08-16 02:37:26 -0400 |
| commit | ba52187bc33b34fc8fe37673639a0729243dfe1b (patch) | |
| tree | 42a192b5f9f9567ea71e8ec5ebdd73dca10b69f3 | |
| parent | 697cf8c1f665eb96daff0270c6b1f0136c71da88 (diff) | |
| download | sbo-maintainer-tools-ba52187bc33b34fc8fe37673639a0729243dfe1b.tar.gz | |
sbolint: check package names against core Slackware package names.
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | pkglist.txt | 1590 | ||||
| -rwxr-xr-x | sbolint | 136 |
3 files changed, 1728 insertions, 1 deletions
@@ -22,12 +22,15 @@ all: install: man install -d -m0755 \ $(DESTDIR)$(TESTDIR) \ + $(DESTDIR)$(SHAREDIR)/$(PROJ) \ $(DESTDIR)$(BINDIR) \ $(DESTDIR)$(MAN1DIR) \ $(DESTDIR)$(DOCDIR) install -m0755 $(SCRIPTS) $(DESTDIR)$(BINDIR)/ sed -i 's,@PREFIX@,$(PREFIX),' $(DESTDIR)$(BINDIR)/sbopkglint + sed -i 's,@PREFIX@,$(PREFIX),' $(DESTDIR)$(BINDIR)/sbolint install -m0644 sbopkglint.d/* $(DESTDIR)$(TESTDIR)/ + install -m0644 pkglist.txt $(DESTDIR)$(SHAREDIR)/$(PROJ) install -m0644 $(DOCS) $(DESTDIR)$(DOCDIR)/ gzip -9c < sbolint.1 > $(DESTDIR)$(MAN1DIR)/sbolint.1.gz gzip -9c < sbopkglint.1 > $(DESTDIR)$(MAN1DIR)/sbopkglint.1.gz diff --git a/pkglist.txt b/pkglist.txt new file mode 100644 index 0000000..550e654 --- /dev/null +++ b/pkglist.txt @@ -0,0 +1,1590 @@ +Cython +GConf +Greybird +LibRaw +M2Crypto +MPlayer +Mako +ModemManager +NetworkManager +NetworkManager-openvpn +OpenCC +PyQt5 +QScintilla +QtAV +SDL2 +SDL2_gfx +SDL2_image +SDL2_mixer +SDL2_net +SDL2_ttf +a2ps +a52dec +aaa_base +aaa_glibc-solibs +aaa_libraries +aaa_terminfo +aalib +accountsservice +acct +acl +acpid +adwaita-icon-theme +akonadi +akonadi-calendar +akonadi-calendar-tools +akonadi-contacts +akonadi-import-wizard +akonadi-mime +akonadi-notes +akonadi-search +akonadiconsole +akregator +alkimia +alpine +alsa-lib +alsa-oss +alsa-plugins +alsa-utils +amp +analitza +anthy +appres +apr +apr-util +argon2 +ark +artikulate +aspell +aspell-en +at +at-spi2-atk +at-spi2-core +atk +atkmm +attica +attr +audacious +audacious-plugins +audiocd-kio +audiofile +autoconf +autoconf-archive +autofs +automake +babl +baloo +baloo-widgets +bash +bc +bdftopcf +beforelight +biff+comsat +bin +bind +binutils +bison +bitmap +blackbox +blinken +bluedevil +blueman +bluez +bluez-firmware +bluez-qt +bomber +boost +bootp +bovo +bpe +breeze +breeze-grub +breeze-gtk +breeze-icons +bridge-utils +brotli +bsd-finger +bsd-games +btrfs-progs +bzip2 +c-ares +ca-certificates +cairo +cairomm +calendarsupport +calligra +calligraplan +cantor +ccache +cdparanoia +cdrdao +cdrtools +cervisia +cfitsio +check +chmlib +cifs-utils +cldr-emoji-annotation +clisp +clucene +cmake +compiz +conntrack-tools +coreutils +cpio +cpufrequtils +cracklib +crda +cryfs +cryptopp +cryptsetup +cscope +cups +cups-filters +curl +cvs +cyrus-sasl +daemon +dash +db48 +dbus +dbus-glib +dbus-python +dc3dd +dconf +dconf-editor +dcron +ddd +ddrescue +dehydrated +dejavu-fonts-ttf +desktop-file-utils +dev86 +devs +dhcp +dhcpcd +dialog +diffstat +diffutils +digikam +distcc +djvulibre +dmapi +dmidecode +dnsmasq +dolphin +dolphin-plugins +dosfstools +dotconf +dovecot +doxygen +dragon +drkonqi +dvd+rw-tools +dvdauthor +e2fsprogs +easytag +ebook-tools +ebtables +ed +editorconfig-core-c +editres +efibootmgr +efivar +egl-wayland +eglexternalplatform +eigen3 +electricsheep +elementary-xfce +elfutils +elilo +elisa +elm +elogind +elvis +emacs +emacspeak +enchant +encodings +enscript +epic5 +esound +espeak-ng +etc +ethtool +eudev +eventviews +exfatprogs +exiv2 +exo +expat +expect +extra-cmake-modules +f2fs-tools +falkon +farstream +fcitx +fcitx-anthy +fcitx-configtool +fcitx-hangul +fcitx-kkc +fcitx-libpinyin +fcitx-m17n +fcitx-qt5 +fcitx-sayura +fcitx-table-extra +fcitx-table-other +fcitx-unikey +fetchmail +ffmpeg +ffmpegthumbnailer +ffmpegthumbs +fftw +fig2dev +file +filelight +findutils +flac +flex +floppy +fluidsynth +fluxbox +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontconfig +fonttosfnt +frameworkintegration +freecell-solver +freeglut +freerdp +freetype +frei0r-plugins +fribidi +fslsfonts +fstobdf +fuse +fuse3 +fvwm +gamin +garcon +gawk +gc +gcc +gcc-brig +gcc-g++ +gcc-gdc +gcc-gfortran +gcc-gnat +gcc-go +gcc-objc +gccmakedep +gcr +gd +gdb +gdbm +gdk-pixbuf2 +gdk-pixbuf2-xlib +geeqie +gegl +genpower +getmail +gettext +gettext-tools +gexiv2 +gftp +ghostscript +ghostscript-fonts-std +giflib +gimp +git +gjs +gkrellm +glade +glew +glib +glib-networking +glib2 +glibc +glibc-i18n +glibc-profile +glibc-zoneinfo +glibmm +glu +gmime +gmm +gmp +gnome-keyring +gnome-themes-extra +gnu-efi +gnuchess +gnucobol +gnupg +gnupg2 +gnuplot +gnutls +gobject-introspection +gpa +gparted +gperf +gpgme +gphoto2 +gpm +gptfdisk +granatier +grantlee +grantlee-editor +grantleetheme +graphene +graphite2 +grep +groff +grub +gsettings-desktop-schemas +gsl +gst-plugins-bad-free +gst-plugins-base +gst-plugins-good +gst-plugins-libav +gstreamer +gtk+ +gtk+2 +gtk+3 +gtk4 +gtkmm2 +gtkmm3 +gtksourceview3 +gtkspell +gucharmap +guile +gutenprint +gv +gvfs +gwenview +gyp +gzip +hack-fonts-ttf +harfbuzz +haveged +hdparm +help2man +hexchat +hfsutils +hicolor-icon-theme +hostname +hplip +htdig +htop +httpd +hunspell +hwdata +hyphen +ibus +ibus-anthy +ibus-hangul +ibus-kkc +ibus-libpinyin +ibus-m17n +ibus-table +ibus-unikey +iceauth +icecream +icmpinfo +ico +icon-naming-utils +icu4c +id3lib +iftop +igt-gpu-tools +imagemagick +imake +incidenceeditor +indent +inetd +infozip +inih +inotify-tools +intel-vaapi-driver +intltool +inxi +iproute2 +ipset +iptables +iptraf-ng +iputils +ipw2100-fw +ipw2200-fw +irssi +isl +iso-codes +ispell +itinerary +itstool +iw +jansson +jasper +jed +jemalloc +jfsutils +jmtpfs +joe +jove +json-c +json-glib +judy +juk +k3b +kactivities +kactivities-stats +kactivitymanagerd +kaddressbook +kalarm +kalarmcal +kalgebra +kalzium +kamera +kamoso +kanagram +kapidox +kapman +kapptemplate +karchive +kate +katomic +kauth +kbackup +kbd +kblackbox +kblocks +kbookmarks +kbounce +kbreakout +kbruch +kcachegrind +kcalc +kcalendarcore +kcalutils +kcharselect +kcm-fcitx +kcmutils +kcodecs +kcolorchooser +kcompletion +kconfig +kconfigwidgets +kcontacts +kcoreaddons +kcrash +kcron +kdav +kdbusaddons +kde-cli-tools +kde-dev-scripts +kde-dev-utils +kde-gtk-config +kdebugsettings +kdeclarative +kdeconnect-kde +kdecoration +kded +kdeedu-data +kdegraphics-mobipocket +kdegraphics-thumbnailers +kdelibs4support +kdenetwork-filesharing +kdenlive +kdepim-addons +kdepim-runtime +kdeplasma-addons +kdesdk-kioslaves +kdesdk-thumbnailers +kdesignerplugin +kdesu +kdev-php +kdev-python +kdevelop +kdevelop-pg-qt +kdewebkit +kdf +kdiagram +kdialog +kdiamond +kdnssd +kdoctools +kdsoap +keditbookmarks +kemoticons +kernel-firmware +kernel-generic +kernel-headers +kernel-huge +kernel-modules +kernel-source +keybinder3 +keyutils +kfilemetadata +kfind +kfloppy +kfourinline +kgamma5 +kgeography +kget +kglobalaccel +kgoldrunner +kgpg +kguiaddons +khangman +khelpcenter +kholidays +khotkeys +khtml +ki18n +kiconthemes +kid3 +kidentitymanagement +kidletime +kig +kigo +kile +killbots +kimageformats +kimagemapeditor +kimap +kinfocenter +kinit +kio +kio-extras +kio-gdrive +kipi-plugins +kirigami-gallery +kirigami2 +kiriki +kitemmodels +kitemviews +kiten +kitinerary +kjobwidgets +kjots +kjs +kjsembed +kjumpingcube +kldap +kleopatra +klickety +klines +kmag +kmahjongg +kmail +kmail-account-wizard +kmailtransport +kmbox +kmediaplayer +kmenuedit +kmime +kmines +kmix +kmod +kmousetool +kmouth +kmplot +kmymoney +knavalbattle +knetwalk +knewstuff +knights +knotes +knotifications +knotifyconfig +kolf +kollision +kolourpaint +kompare +konqueror +konquest +konsole +kontact +kontactinterface +kontrast +konversation +kopeninghours +kopete +korganizer +kosmindoormap +kpackage +kparts +kpat +kpeople +kpeoplevcard +kpimtextedit +kpkpass +kplotting +kpmcore +kpty +kpublictransport +kqtquickcharts +kquickcharts +krb5 +krdc +krename +kreversi +krfb +krita +kross +kross-interpreters +kruler +krunner +krusader +kscreen +kscreenlocker +kservice +ksh93 +kshisen +ksirk +ksmtp +ksnakeduel +kspaceduel +ksquares +ksshaskpass +kstars +ksudoku +ksystemlog +ksystemstats +kteatime +ktexteditor +ktextwidgets +ktimer +ktimetracker +ktnef +ktorrent +ktouch +kturtle +kubrick +kunitconversion +kwallet +kwallet-pam +kwalletmanager +kwave +kwayland +kwayland-integration +kwayland-server +kwidgetsaddons +kwin +kwindowsystem +kwordquiz +kwrited +kxmlgui +kxmlrpcclient +lame +latte-dock +layer-shell-qt +lbzip2 +lcms +lcms2 +lensfun +less +lftp +lhasa +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXaw3dXft +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont2 +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libaio +libao +libappindicator +libarchive +libassuan +libasyncns +libatasmart +libblockdev +libbluray +libburn +libbytesize +libcaca +libcanberra +libcap +libcap-ng +libcddb +libcdio +libcdio-paranoia +libcgroup +libclc +libcue +libdbusmenu +libdbusmenu-qt +libdiscid +libdmtx +libdmx +libdrm +libdvdnav +libdvdread +libedit +libepoxy +liberation-fonts-ttf +libevdev +libevent +libexif +libfakekey +libffi +libfontenc +libgcrypt +libgee +libglade +libglvnd +libgnome-keyring +libgnt +libgpg-error +libgphoto2 +libgpod +libgravatar +libgsf +libgtop +libgudev +libhangul +libical +libid3tag +libidl +libidn +libidn2 +libieee1284 +libimobiledevice +libimobiledevice-glue +libindicator +libinput +libiodbc +libjpeg-turbo +libkarma +libkcddb +libkcompactdisc +libkdcraw +libkdegames +libkdepim +libkeduvocdocument +libkexiv2 +libkgapi +libkipi +libkkc +libkkc-data +libkleo +libkmahjongg +libkomparediff2 +libksane +libksba +libkscreen +libksieve +libksysguard +libktorrent +libmad +libmbim +libmcrypt +libmilter +libmng +libmnl +libmpc +libmtp +libmypaint +libndp +libnetfilter_acct +libnetfilter_conntrack +libnetfilter_cthelper +libnetfilter_cttimeout +libnetfilter_log +libnetfilter_queue +libnfnetlink +libnftnl +libnice +libnih +libnjb +libnl +libnl3 +libnma +libnotify +libnsl +libnss_nis +libodfgen +libogg +liboggz +liboil +libopusenc +libpcap +libpciaccess +libpinyin +libplist +libpng +libproxy +libpsl +libpthread-stubs +libpwquality +libqalculate +libqmi +libraw1394 +librevenge +librsvg +libsamplerate +libsass +libseccomp +libsecret +libsigc++ +libsigc++3 +libsigsegv +libsndfile +libsodium +libsoup +libspectre +libssh +libssh2 +libtasn1 +libtheora +libtiff +libtirpc +libtool +libunistring +libunwind +liburing +libusb +libusb-compat +libusbmuxd +libuv +libva +libva-utils +libvdpau +libvisio +libvisual +libvisual-plugins +libvncserver +libvorbis +libvpx +libwacom +libwebp +libwmf +libwnck +libwnck3 +libwpd +libwpg +libx86 +libxcb +libxfce4ui +libxfce4util +libxkbcommon +libxkbfile +libxklavier +libxml2 +libxshmfence +libxslt +libyaml +libzip +lilo +links +linux-faqs +linux-howtos +linuxdoc-tools +listres +llvm +lm_sensors +lmdb +lndir +logrotate +lokalize +loudmouth +lrzip +lskat +lsof +lsscsi +luit +lvm2 +lxc +lynx +lz4 +lzip +lzlib +lzo +m17n-lib +m4 +madplay +mailcommon +mailimporter +make +makedepend +man-db +man-pages +marble +mariadb +marisa +markdownpart +mbox-importer +mc +mcabber +mcelog +mdadm +media-player-info +mercurial +mesa +meson +messagelib +metamail +mhash +milou +minicom +minuet +mkcomposecache +mkfontscale +mkinitrd +mlocate +mlt +mm +mobile-broadband-provider-info +moc +modemmanager-qt +most +motif +mousepad +mozilla-firefox +mozilla-nss +mozilla-thunderbird +mozjs78 +mpfr +mpg123 +mt-st +mtdev +mtr +mtx +mutt +mypaint-brushes +nano +nasm +nc +ncftp +ncompress +ncurses +ndctl +neofetch +neon +net-snmp +net-tools +netatalk +netdate +nethack +netkit-bootparamd +netkit-ftp +netkit-ntalk +netkit-routed +netkit-rsh +netkit-rusers +netkit-rwall +netkit-rwho +netkit-timed +netpbm +netpipes +nettle +netwatch +network-manager-applet +network-scripts +networkmanager-qt +netwrite +newspost +newt +nfacct +nfs-utils +nftables +nghttp2 +ninja +nmap +nn +normalize +noto-cjk-fonts-ttf +noto-fonts-ttf +npth +nss-pam-ldapd +ntfs-3g +ntp +nvi +nvme-cli +obexftp +ocl-icd +oclock +okteta +okular +oniguruma +openal-soft +opencl-headers +opencv +openexr +openjpeg +openldap +openobex +openresolv +openssh +openssl +openssl-solibs +openvpn +oprofile +opus +opus-tools +opusfile +orc +os-prober +oxygen +oxygen-fonts +oxygen-gtk2 +oxygen-icons5 +p11-kit +p2c +palapeli +pam +pam-krb5 +pamixer +pan +pango +pangomm +parallel +parley +parted +partitionmanager +patch +patchelf +pavucontrol +pcaudiolib +pciutils +pcmciautils +pcre +pcre2 +perl +phonon +phonon-backend-gstreamer +php +picmi +pidentd +pidgin +pilot-link +pim-data-exporter +pim-sieve-editor +pimcommon +pinentry +pipewire +pixman +pkg-config +pkgtools +plasma-browser-integration +plasma-desktop +plasma-disks +plasma-firewall +plasma-framework +plasma-integration +plasma-nm +plasma-pa +plasma-sdk +plasma-systemmonitor +plasma-vault +plasma-wayland-protocols +plasma-workspace +plasma-workspace-wallpapers +plzip +pmake +poke +polkit +polkit-gnome +polkit-kde-agent-1 +polkit-qt-1 +popa3d +poppler +poppler-data +popt +postfix +powerdevil +powertop +poxml +ppp +print-manager +prison +procmail +procps-ng +proftpd +pssh +pulseaudio +pulseaudio-qt +purpose +pycairo +pycups +pycurl +pygobject +pygobject3 +pygtk +pyparsing +python-Jinja2 +python-MarkupSafe +python-PyYAML +python-appdirs +python-certifi +python-cffi +python-chardet +python-charset-normalizer +python-distro +python-dnspython +python-docutils +python-doxypypy +python-doxyqml +python-future +python-idna +python-markdown +python-notify2 +python-packaging +python-pbr +python-pillow +python-pip +python-ply +python-pycparser +python-pygments +python-pysol_cards +python-random2 +python-requests +python-sane +python-setuptools +python-setuptools_scm +python-six +python-tomli +python-urllib3 +python2 +python2-module-collection +python3 +pyxdg +qca +qpdf +qqc2-breeze-style +qqc2-desktop-style +qrencode +qt5 +qt5-webkit +qtkeychain +quazip +quota +radeontool +rcs +rdesktop +rdist +re2c +readline +reiserfsprogs +rendercheck +rgb +rinutils +rocs +rp-pppoe +rpcbind +rpcsvc-proto +rpm +rpm2tgz +rsync +rttr +ruby +rubygem-asciidoctor +rust +rxvt-unicode +rzip +s-nail +samba +sane +sassc +sazanami-fonts-ttf +sbc +sc +sc-im +scons +screen +sddm +sddm-kcm +sdl +sdparm +seamonkey +sed +seejpeg +serf +sessreg +setxkbmap +seyon +sg3_utils +shadow +shared-desktop-ontologies +shared-mime-info +sharutils +showfont +sinhala_lklug-font-ttf +sip +skanlite +skkdic +slackpkg +slacktrack +slang +slang1 +slrn +smartmontools +smproxy +snownews +socat +solid +soma +sonnet +sound-theme-freedesktop +sox +spectacle +speech-dispatcher +speex +speexdsp +spirv-llvm-translator +splitvt +sqlite +squashfs-tools +sshfs +ssr +startup-notification +step +strace +stunnel +subversion +sudo +svgalib +svgpart +sweeper +swig +syndication +syntax-highlighting +sysfsutils +sysklogd +syslinux +sysstat +system-config-printer +systemsettings +sysvinit +sysvinit-functions +sysvinit-scripts +t1lib +taglib +taglib-extras +talloc +tango-icon-theme +tango-icon-theme-extras +tar +tcl +tclx +tcp_wrappers +tcpdump +tcsh +tdb +telnet +terminus-font +tevent +texinfo +texlive +tftp-hpa +threadweaver +thunar +thunar-volman +tibmachuni-font-ttf +tidy-html5 +time +tin +tix +tk +tmux +traceroute +transset +tree +ttf-indic-fonts +ttf-tlwg +tumbler +twm +udisks +udisks2 +ulogd +umbrello +unarj +undervolt +upower +urw-core35-fonts-otf +usb_modeswitch +usbmuxd +usbutils +utempter +utf8proc +util-linux +util-macros +uucp +v4l-utils +vala +vbetool +vid.stab +viewres +vim +vim-gvim +vlan +volume_key +vorbis-tools +vsftpd +vte +vulkan-sdk +wacomtablet +wavpack +wayland +wayland-protocols +wget +wget2 +which +whois +windowmaker +wireguard-tools +wireless_tools +woff2 +wpa_supplicant +wqy-zenhei-font-ttf +x11-skel +x11-ssh-askpass +x11perf +x3270 +xaos +xapian-core +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xdg-desktop-portal +xdg-desktop-portal-kde +xdg-user-dirs +xdg-utils +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xeyes +xf86-input-acecad +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-libinput +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-openchrome +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vboxvideo +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86dga +xfce4-appfinder +xfce4-clipman-plugin +xfce4-dev-tools +xfce4-notifyd +xfce4-panel +xfce4-panel-profiles +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-screensaver +xfce4-screenshooter +xfce4-session +xfce4-settings +xfce4-systemload-plugin +xfce4-taskmanager +xfce4-terminal +xfce4-weather-plugin +xfce4-whiskermenu-plugin +xfconf +xfd +xfdesktop +xfig +xfontsel +xfs +xfsdump +xfsinfo +xfsprogs +xfwm4 +xgames +xgamma +xgc +xhost +xine-lib +xine-ui +xinit +xinput +xisxwayland +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlockmore +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmms +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-server-xwayland +xorg-sgml-doctools +xorgproto +xorriso +xpaint +xpdf +xpr +xprop +xpyb +xrandr +xrdb +xrefresh +xsane +xscope +xscreensaver +xset +xsetroot +xsm +xsnow +xstdcmap +xterm +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud +xxHash +xz +yakuake +yasm +yptools +ytalk +zanshin +zd1211-firmware +zeroconf-ioslave +zerofree +zlib +zoo +zsh +zstd @@ -11,7 +11,7 @@ sbolint - check SlackBuild directories or tarballs for common errors. =head1 SYNOPSIS -B<sbolint> [--help | --man | --version ] | [-a] [-q] [-u] [-e] [-n] [-r] [-c] [-m] [build [build ...]] +B<sbolint> [--help | --man | --version ] | [-a] [-q] [-u] [-e] [-n] [-r] [-c] [-m] [-U] [build [build ...]] =head1 DESCRIPTION @@ -102,6 +102,12 @@ auto-detect. Don't use color, even if standard output is a terminal. +=item B<-U>, B<--update-package-list> + +Update the list of Slackware packages. Requires network access. The package list +normally lives in B<PREFIX>/share/sbo-maintainer-tools/pkglist.txt (where +B<PREFIX> is set when you run B<make install>, and defaults to I</usr/local/>). + =item B<--version> Show version number and exit. @@ -362,6 +368,7 @@ B<sbopkglint>(1), B<sbodl>, B<sbofixinfo>(1), B<sbopkg>(8), B<sboinstall>(1) # These perl modules ship with Slackware's perl package. use POSIX qw/getcwd/; use Getopt::Long qw/:config gnu_getopt no_require_order/; +use Cwd qw/abs_path/; @boilerplate = ( qr/#\s*REMOVE THIS ENTIRE BLOCK OF TEXT/, @@ -419,6 +426,7 @@ GetOptions( "man" => sub { exec("pod2man --stderr -s1 -csbo-maintainer-tools -r$VERSION $0"); }, "color|colour|c" => sub { $color_output = 1; }, "mono|no-color|no-colour|m" => sub { $color_output = 0; }, + "U|update-package-list" => sub { exit &update_package_list; }, ) or die_usage("Error in command line options"); $color_output = -t STDOUT unless defined $color_output; @@ -772,6 +780,7 @@ sub run_checks { if(script_exists()) { my @checks = ( + \&check_package_list, \&check_readme, \&check_slackdesc, \&check_info, @@ -2078,3 +2087,128 @@ sub check_images { im_check_img($_); } } + +# 20260816 bkw: all these *_package_list() functions are here to +# support the "$prgnam is a core Slackware package" check. The +# package list (pkglist.txt) can be in the script directory or +# share/ under the PREFIX. +sub find_package_list { + (my $cur) = (abs_path($0) =~ m,^(.*)/,); + my @check = ( $cur, '@PREFIX@/share/sbo-maintainer-tools' ); + + for(@check) { + my $path = "$_/pkglist.txt"; + return $path if -e $path; + } + + return undef; +} + +# only gets called once per run (even when linting multiple builds) +sub load_package_list { + my $file = find_package_list(); + if(not defined $file) { + warn "$SELF: no pkglist.txt, not checking package name (try -U)\n"; + return; + } + + ## warn "loading packages from $file\n"; + open my $fh, "<", $file or die "$SELF: $file: $!"; + while(<$fh>) { + chomp; + $pkglist{$_}++; + } + close $fh; + + ## warn "pkglist.txt loaded, " . (keys %pkglist) . " packages\n"; +} + +sub check_package_list { + if(!$pkglist_tried) { + load_package_list; + $pkglist_tried++; + } + + return unless %pkglist; + + if($pkglist{$buildname}) { + log_error("$buildname is a core Slackware package!"); + } +} + +# 20260816 bkw: find the right PACKAGES.TXT for this Slackware release. +# PACKAGES_TXT will override the URL, in case someone's doing something nonstandard. +sub get_package_list_url { + my $url = $ENV{PACKAGES_TXT}; + return $url if $url; + + my $bits = ""; + my $stable = 0; + my $slackver; + my $is_slackware = 0; + my $arch; + + # 20260816 bkw: I got a question. Why the hell doesn't /etc/os-release define + # an ARCH= key? I have to look at the "pretty name" to get the arch... + open my $f, "</etc/os-release" or die "$SELF: /etc/os-release: $!\n"; + while(<$f>) { + chomp; + $is_slackware++ if /^NAME=Slackware$/; + $arch = $1 if /^PRETTY_NAME.*\s+(\S+)"/; + $stable = 1 if /^VERSION_CODENAME=stable/; + $slackver = $1 if /^VERSION_ID=(.*)$/; + } + close $f; + + if($arch eq 'x86_64') { + $bits = 64; + } elsif($arch =~ /^i\d86/) { + $bits = ""; + } else { + die "$SELF: -U only works for i?86 or x86_64, not '$arch'\n"; + } + + die "$SELF: can't update package list for non-Slackware OS\n" unless $is_slackware; + die "$SELF: can't update package list for -current\n" unless $stable; + die "$SELF: can't tell what version of Slackware this is\n" unless defined $slackver; + + $url = "https://slackware.uk/slackware/slackware$bits-$slackver/PACKAGES.TXT"; + return $url; +} + +# 20260816 bkw: note: don't use die() here, use warn() followed by exit(1). +sub update_package_list { + my $url = get_package_list_url(); + my $file = find_package_list(); + + if(not defined $file) { + warn "$SELF: can't find pkglist.txt, create it manually (with touch)\n"; + exit 1; + } + + warn "$SELF: updating $file from $url\n"; + + my $count = 0; + open my $pl, ">", $file or die "$SELF: $file: $!\n"; + open my $curl, "-|", "curl", "-sS", $url or do { + warn "$SELF: curl: $!\n"; + exit 1; + }; + while(<$curl>) { + chomp; + next unless /^PACKAGE DESCRIPTION/; + my $p = <$curl>; + $p =~ s/:.*//; + print $pl $p; + $count++; + } + close $curl; + close $pl; + + warn "$SELF: $count package names written to $file\n"; + if($count < 1000) { + warn "$SELF: $count doesn't seem like enough packages for a Slackware release, does it?\n"; + exit 1; + } + exit 0; +} |
