From 8144539a4c19c40b06509c4383a72a2ed4a90530 Mon Sep 17 00:00:00 2001 From: Owen W. Taylor Date: Mar 26 2019 15:21:46 +0000 Subject: Comment that the master branch is unused and remove old files --- diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f719f66..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -out/* -tools/__pycache__ -flatpak-runtime.new.yaml -reports/*.json -reports/runtime.html diff --git a/Makefile b/Makefile deleted file mode 100644 index 211ccd1..0000000 --- a/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -PACKAGE_LISTS = \ - out/freedesktop-Platform.packages \ - out/freedesktop-Sdk.packages \ - out/gnome-Platform.packages \ - out/gnome-Sdk.packages - -PROFILE_FILES = \ - out/runtime.profile \ - out/runtime-base.profile \ - out/sdk.profile \ - out/sdk-base.profile - -FILE_LISTS = \ - $(patsubst %.packages,%.files,$(PACKAGE_LISTS)) - -all: - @echo "Targets:" - @echo " report: Generates HTML reports in reports/, and a candidate flatpak-runtime.new.yaml" - @echo " update: Generates the above files, then copies flatpak-runtime.new.yaml to flatpak-runtime.yaml" - -report: reports/applications.json reports/application-packages.json reports/runtime.html flatpak-runtime.new.yaml - -update: report - cp flatpak-runtime.new.yaml flatpak-runtime.yaml - -reports/runtime.html $(PROFILE_FILES): $(PACKAGE_LISTS) package-notes.txt tools/generate-runtime-report.py runtime-template.html - ./tools/generate-runtime-report.py - -$(FILE_LISTS): tools/generate-files.sh tools/list-files.py - ./tools/generate-files.sh $@ - -$(PACKAGE_LISTS): tools/resolve-files.py $(FILE_LISTS) - for f in $(patsubst %.packages,%.files,$(PACKAGE_LISTS)) ; do \ - ./tools/resolve-files.py $$f || exit 1; \ - done - -out/fedora-appstream.xml.gz: tools/download-fedora-appstream.sh - ./tools/download-fedora-appstream.sh - -out/flathub-appstream.xml.gz: tools/download-flathub-appstream.sh - ./tools/download-flathub-appstream.sh - -out/ratings.json: tools/download-reviews.sh - ./tools/download-reviews.sh - -reports/applications.json reports/application-packages.json: tools/generate-app-reports.py out/fedora-appstream.xml.gz out/flathub-appstream.xml.gz out/ratings.json - ./tools/generate-app-reports.py - -flatpak-runtime.new.yaml: $(PROFILE_FILES) flatpak-runtime.in.yaml tools/generate-modulemd.py - ./tools/generate-modulemd.py - -clean: - rm -f out/* report.html flatpak-runtime.new.yaml - -.PHONY: all clean report update diff --git a/README.md b/README.md index f6c7283..a2c5894 100644 --- a/README.md +++ b/README.md @@ -2,59 +2,7 @@ This git repository holds the modulemd file and associated container files for the Fedora Flatpak runtimes. It also holds scripts and data files used to maintain and update the Fedora Flatpak runtimes. -Updating -======== - -*Prequisites*: you need to have the following "upstream" runtimes installed: - -* `org.freedesktop.Platform/x86_64/1.6` -* `org.freedesktop.Sdk/x86_64/1.6` -* `org.gnome.platform/x86_64/3.26` -* `org.gnome.Sdk/x86_64/3.26` - -You also need `python3-jinja2` and possibly a few other Python -packages installed. - -And finally, you'll need to have [fedmod](https://pagure.io/modularity/fedmod) installed. -You should run `fedmod fetch-metadata` initially and whenever you want to download -a fresh set of metadata from Fedora. `fedmod` never updates metadata on its own. - -*How it works*: The files in the upstream runtimes are the primary source for the contents -of the corresponding Fedora runtimes. When you type `make update`, the -steps are as follows: - - * List the contents of selected directories of the upstream runtime - (`tools/list-files.py`) - * Exclude and rename files, and otherwise tweak the contents of the - resulting lists, and find the Fedora packages that contain the - corresponding packages. (`tools/resolve-files.py`) - * Find all dependencies of the resolved packages using `fedmod resolve-deps`, - correlate it all together, figure out the install profiles for each runtime, - and create `report/runtime.html`. (`tools/generate-runtime-report.py`) - * Create a `flatpak-runtime.new.yaml` using the profiles. (`tools/generate-modulemd.py`) - * Finds data about applications packaged in Fedora and Flathub - (`tools/download-fedora-appstream.sh`, `tools/download-flathub-appstream.sh`, - `tools/download-reviews.py`) - * Finds out how those applications would build using the *current* build of the - runtime (not the one that we're creating here) , and generates more reports - in `reports/`. (`tools/generate-app-reports.py`). (Improvement would be to use - the candidate next build - requires us to pass the runtime data to fedmod rather - than have fedmod download it from the Fedora PDC.) - * Copy `flatpak-runtime.new.yaml` to `flatpak-runtime.yaml` - -*Report generation*: if you type `make report` instead then all the above happens -except the last step. - -Tweaking the result -=================== -The main way to tweak the result is to edit and extend the data embedded in -`tools/resolve-files.py`. Make sure you add comments explaining why you are -excluding files, and feed back exclusions to the upstream runtime maintainers -as appropriate. - -Package notes -============= -To aid in keeping track of the status of all the packages in -`report.html`, notes and "flags" are read from package-notes.txt. The -notes are added to `report.html` and the flags affect formatting. The -top of that file has a comment describing the simple format. +**The master branch is unused** - even if Fedora 31 (say) is still rawhide, +and a f31 branch hasn't been created for packages, +a flatpak-runtime module for Fedora 31 still needs to be built from a f31 branch, +to get the right stream name. diff --git a/data/f26-flatpak-runtime.packages b/data/f26-flatpak-runtime.packages deleted file mode 100644 index 538ff24..0000000 --- a/data/f26-flatpak-runtime.packages +++ /dev/null @@ -1,204 +0,0 @@ -abattis-cantarell-fonts -acl -adwaita-cursor-theme -adwaita-gtk2-theme -adwaita-icon-theme -at-spi2-atk -at-spi2-core -atk -audit-libs -avahi-libs -basesystem -bash -bzip2-libs -ca-certificates -cairo -cairo-gobject -chkconfig -colord-libs -coreutils -coreutils-common -cracklib -crypto-policies -cryptsetup-libs -cups-libs -dbus -dbus-libs -device-mapper -device-mapper-libs -elfutils-default-yama-scope -elfutils-libelf -elfutils-libs -emacs-filesystem -enchant -expat -fedora-modular-release -fedora-modular-repos -filesystem -flatpak-runtime-config -fontconfig -fontpackages-filesystem -freetype -gawk -gdbm -gdk-pixbuf2 -gdk-pixbuf2-modules -glib-networking -glib2 -glibc -glibc-all-langpacks -glibc-common -gmp -gnome-desktop3 -gnome-themes-standard -gnutls -gobject-introspection -graphite2 -grep -gsettings-desktop-schemas -gtk-update-icon-cache -gtk2 -gtk3 -gvfs-client -gzip -harfbuzz -hicolor-icon-theme -hunspell -hunspell-en-GB -hunspell-en-US -hwdata -info -iptables-libs -jasper-libs -jbigkit-libs -json-glib -keyutils-libs -kmod-libs -krb5-libs -lcms2 -libX11 -libX11-common -libXau -libXcomposite -libXcursor -libXdamage -libXext -libXfixes -libXft -libXi -libXinerama -libXrandr -libXrender -libXtst -libXxf86vm -libacl -libappstream-glib -libarchive -libattr -libblkid -libcap -libcap-ng -libcom_err -libcroco -libcrypt -libdatrie -libdb -libdrm -libepoxy -libfdisk -libffi -libgcab1 -libgcc -libgcrypt -libglvnd -libglvnd-egl -libglvnd-glx -libgpg-error -libgusb -libidn -libidn2 -libjpeg-turbo -libmodman -libmount -libnotify -libpcap -libpciaccess -libpng -libproxy -libpwquality -librsvg2 -libseccomp -libselinux -libsemanage -libsepol -libsigsegv -libsmartcols -libsoup -libstdc++ -libstemmer -libtasn1 -libthai -libtiff -libunistring -libusbx -libutempter -libuuid -libverto -libwayland-client -libwayland-cursor -libwayland-server -libxcb -libxkbcommon -libxml2 -libxshmfence -lz4-libs -lzo -mesa-libEGL -mesa-libGL -mesa-libgbm -mesa-libglapi -mesa-libwayland-egl -mpfr -ncurses -ncurses-base -ncurses-libs -nettle -openssl-libs -p11-kit -p11-kit-trust -pam -pango -pcre -pixman -popt -python3 -python3-appdirs -python3-cairo -python3-gobject -python3-gobject-base -python3-libs -python3-packaging -python3-pip -python3-pyparsing -python3-setuptools -python3-six -qrencode-libs -readline -rest -sed -setup -shadow-utils -shared-mime-info -sqlite-libs -system-python -system-python-libs -systemd -systemd-libs -systemd-pam -tzdata -ustr -util-linux -xkeyboard-config -xz-libs -zenity -zlib diff --git a/data/f27-live.packages b/data/f27-live.packages deleted file mode 100644 index 0d2f5ef..0000000 --- a/data/f27-live.packages +++ /dev/null @@ -1,1561 +0,0 @@ -aajohan-comfortaa-fonts -abattis-cantarell-fonts -abrt -abrt-addon-ccpp -abrt-addon-coredump-helper -abrt-addon-kerneloops -abrt-addon-pstoreoops -abrt-addon-vmcore -abrt-addon-xorg -abrt-cli -abrt-dbus -abrt-desktop -abrt-gui -abrt-gui-libs -abrt-java-connector -abrt-libs -abrt-plugin-bodhi -abrt-retrace-client -abrt-tui -accountsservice -accountsservice-libs -acl -adcli -adobe-source-han-sans-cn-fonts -adobe-source-han-sans-tw-fonts -adobe-source-han-serif-cn-fonts -adobe-source-han-serif-tw-fonts -adwaita-cursor-theme -adwaita-gtk2-theme -adwaita-icon-theme -adwaita-qt4 -adwaita-qt5 -alsa-lib -alsa-plugins-pulseaudio -alsa-ucm -alsa-utils -anaconda -anaconda-core -anaconda-gui -anaconda-tui -anaconda-user-help -anaconda-widgets -appstream-data -apr -apr-util -argyllcms -atk -atkmm -atmel-firmware -at-spi2-atk -at-spi2-core -attr -audit -audit-libs -audit-libs-python3 -augeas-libs -authconfig -autocorr-en -avahi -avahi-glib -avahi-libs -b43-fwcutter -b43-openfwwf -baobab -basesystem -bash -bash-completion -bc -bcache-tools -bind99-libs -bind99-license -bind-libs -bind-libs-lite -bind-license -bind-utils -blivet-gui-runtime -bluez -bluez-cups -bluez-libs -bluez-obexd -boost-date-time -boost-filesystem -boost-iostreams -boost-system -brasero-libs -bridge-utils -brlapi -brltty -btrfs-progs -bubblewrap -bzip2 -bzip2-libs -ca-certificates -cairo -cairo-gobject -cairomm -c-ares -caribou -caribou-gtk2-module -caribou-gtk3-module -cdparanoia-libs -celt051 -checkpolicy -cheese -cheese-libs -chkconfig -chrony -cifs-utils -cldr-emoji-annotation -clucene-contribs-lib -clucene-core -clutter -clutter-gst2 -clutter-gst3 -clutter-gtk -cogl -colord -colord-gtk -colord-libs -color-filesystem -compat-openssl10 -comps-extras -control-center -control-center-filesystem -copy-jdk-configs -coreutils -coreutils-common -corosync -corosynclib -cpio -cracklib -cracklib-dicts -crda -createrepo_c -createrepo_c-libs -cronie -cronie-anacron -crontabs -crypto-policies -cryptsetup -cryptsetup-libs -cups -cups-client -cups-filesystem -cups-filters -cups-filters-libs -cups-libs -cups-pk-helper -curl -cyrus-sasl -cyrus-sasl-gssapi -cyrus-sasl-lib -cyrus-sasl-plain -dbus -dbus-glib -dbus-libs -dbusmenu-qt -dbus-x11 -dbxtool -dconf -dejavu-fonts-common -dejavu-sans-fonts -dejavu-sans-mono-fonts -dejavu-serif-fonts -deltarpm -desktop-backgrounds-gnome -desktop-file-utils -device-mapper -device-mapper-event -device-mapper-event-libs -device-mapper-libs -device-mapper-multipath -device-mapper-multipath-libs -device-mapper-persistent-data -dhcp-client -dhcp-common -dhcp-libs -diffutils -djvulibre-libs -dleyna-connector-dbus -dleyna-core -dleyna-server -dmidecode -dmraid -dmraid-events -dnf -dnf-conf -dnf-plugins-core -dnf-yum -dnsmasq -dos2unix -dosfstools -dotconf -dracut -dracut-config-rescue -dracut-live -dracut-network -drpm -e2fsprogs -e2fsprogs-libs -ebtables -edk2-ovmf -efibootmgr -efivar -efivar-libs -elfutils -elfutils-default-yama-scope -elfutils-libelf -elfutils-libs -emacs-filesystem -enca -enchant -eog -epiphany-runtime -espeak -ethtool -evince -evince-djvu -evince-libs -evince-nautilus -evolution -evolution-data-server -evolution-data-server-langpacks -evolution-ews -evolution-ews-langpacks -evolution-help -evolution-langpacks -exempi -exiv2 -exiv2-libs -expat -f27-backgrounds-base -f27-backgrounds-gnome -fcoe-utils -fedora-bookmarks -fedora-logos -fedora-logos-httpd -fedora-productimg-workstation -fedora-release -fedora-release-workstation -fedora-repos -fedora-repos-rawhide -fedora-user-agent-chrome -fedora-workstation-backgrounds -file -file-libs -file-roller -file-roller-nautilus -filesystem -findutils -fipscheck -fipscheck-lib -firefox -firewalld -firewalld-filesystem -flac-libs -flatpak -flatpak-libs -folks -fontconfig -fontpackages-filesystem -foomatic -foomatic-db -foomatic-db-filesystem -foomatic-db-ppds -fpaste -fprintd -fprintd-pam -freetype -frei0r-plugins -fros -fros-gnome -fuse -fuse-common -fuse-libs -fwupd -fwupdate-efi -fwupdate-libs -fwupd-labels -gavl -gawk -gc -GConf2 -gcr -gd -gdb-headless -gdbm -gdisk -gdk-pixbuf2 -gdk-pixbuf2-modules -gdm -gdouros-symbola-fonts -gedit -genisoimage -geoclue2 -geoclue2-libs -geocode-glib -GeoIP -GeoIP-GeoLite-data -gettext -gettext-libs -gfbgraph -ghostscript -ghostscript-core -ghostscript-fonts -ghostscript-x11 -giflib -git -git-core -git-core-doc -gjs -glade-libs -glib2 -glibc -glibc-all-langpacks -glibc-common -glibc-langpack-en -glibmm24 -glib-networking -glusterfs -glusterfs-api -glusterfs-cli -glusterfs-client-xlators -glusterfs-fuse -glusterfs-libs -glx-utils -gmime30 -gmp -gnome-abrt -gnome-autoar -gnome-backgrounds -gnome-bluetooth -gnome-bluetooth-libs -gnome-boxes -gnome-calculator -gnome-calendar -gnome-characters -gnome-classic-session -gnome-clocks -gnome-color-manager -gnome-contacts -gnome-desktop3 -gnome-disk-utility -gnome-documents -gnome-documents-libs -gnome-font-viewer -gnome-getting-started-docs -gnome-initial-setup -gnome-keyring -gnome-keyring-pam -gnome-logs -gnome-maps -gnome-menus -gnome-online-accounts -gnome-online-miners -gnome-screenshot -gnome-session -gnome-session-wayland-session -gnome-session-xsession -gnome-settings-daemon -gnome-shell -gnome-shell-extension-alternate-tab -gnome-shell-extension-apps-menu -gnome-shell-extension-background-logo -gnome-shell-extension-common -gnome-shell-extension-launch-new-instance -gnome-shell-extension-places-menu -gnome-shell-extension-window-list -gnome-software -gnome-system-monitor -gnome-terminal -gnome-terminal-nautilus -gnome-themes-standard -gnome-todo -gnome-user-docs -gnome-user-share -gnome-video-effects -gnome-weather -gnu-free-fonts-common -gnu-free-mono-fonts -gnu-free-sans-fonts -gnu-free-serif-fonts -gnupg -gnupg2 -gnupg2-smime -gnutls -gobject-introspection -gom -google-android-emoji-fonts -google-crosextra-caladea-fonts -google-crosextra-carlito-fonts -google-noto-emoji-fonts -google-noto-fonts-common -google-noto-sans-lisu-fonts -google-noto-sans-mandaic-fonts -google-noto-sans-meetei-mayek-fonts -google-noto-sans-sinhala-fonts -google-noto-sans-tagalog-fonts -google-noto-sans-tai-tham-fonts -google-noto-sans-tai-viet-fonts -gperftools-libs -gpgme -gpgmepp -gpg-pubkey -graphite2 -grep -grilo -grilo-plugins -groff-base -grub2-common -grub2-efi-ia32 -grub2-efi-ia32-cdboot -grub2-efi-x64 -grub2-efi-x64-cdboot -grub2-pc -grub2-pc-modules -grub2-tools -grub2-tools-efi -grub2-tools-extra -grub2-tools-minimal -grubby -gsettings-desktop-schemas -gsm -gsound -gspell -gssdp -gssproxy -gstreamer1 -gstreamer1-plugins-bad-free -gstreamer1-plugins-bad-free-gtk -gstreamer1-plugins-base -gstreamer1-plugins-good -gstreamer1-plugins-ugly-free -gtk2 -gtk3 -gtkmm24 -gtkmm30 -gtksourceview3 -gtkspell3 -gtk-update-icon-cache -gtk-vnc2 -guile -gupnp -gupnp-av -gupnp-dlna -gutenprint -gutenprint-cups -gutenprint-libs -gvfs -gvfs-afc -gvfs-afp -gvfs-archive -gvfs-client -gvfs-fuse -gvfs-goa -gvfs-gphoto2 -gvfs-mtp -gvfs-smb -gvnc -gzip -hardlink -harfbuzz -harfbuzz-icu -hfsplus-tools -hicolor-icon-theme -highlight -hostname -hplip -hplip-common -hplip-libs -httpd -httpd-filesystem -httpd-tools -http-parser -hunspell -hunspell-en -hunspell-en-GB -hunspell-en-US -hwdata -hyperv-daemons -hyperv-daemons-license -hypervfcopyd -hypervkvpd -hypervvssd -hyphen -hyphen-en -ibus -ibus-gtk2 -ibus-gtk3 -ibus-hangul -ibus-kkc -ibus-libpinyin -ibus-libs -ibus-libzhuyin -ibus-m17n -ibus-qt -ibus-rawcode -ibus-setup -ibus-typing-booster -ibus-wayland -iio-sensor-proxy -info -initscripts -ipcalc -iproute -iproute-tc -ipset -ipset-libs -iptables -iptables-libs -iptstate -iputils -ipw2100-firmware -ipw2200-firmware -ipxe-roms-qemu -iscsi-initiator-utils -iscsi-initiator-utils-iscsiuio -isns-utils-libs -iso-codes -isomd5sum -iw -iwl1000-firmware -iwl100-firmware -iwl105-firmware -iwl135-firmware -iwl2000-firmware -iwl2030-firmware -iwl3160-firmware -iwl3945-firmware -iwl4965-firmware -iwl5000-firmware -iwl5150-firmware -iwl6000-firmware -iwl6000g2a-firmware -iwl6000g2b-firmware -iwl6050-firmware -iwl7260-firmware -jansson -jasper-libs -java-1.8.0-openjdk-headless -javapackages-tools -jbigkit-libs -jimtcl -jomolhari-fonts -js-jquery -json-c -json-glib -julietaula-montserrat-fonts -jwhois -kbd -kbd-legacy -kbd-misc -kernel -kernel-core -kernel-modules -kernel-modules-extra -kexec-tools -kexec-tools-anaconda-addon -keybinder3 -keyutils -keyutils-libs -khmeros-base-fonts -khmeros-fonts-common -kmod -kmod-libs -kpartx -krb5-libs -kyotocabinet-libs -lame-libs -langpacks-en -langtable -langtable-data -langtable-python3 -lcms2 -less -liba52 -libabw -libacl -libaio -libao -libappstream-glib -libarchive -libassuan -libasyncns -libatasmart -libatomic_ops -libattr -libavc1394 -libbabeltrace -libbasicobjects -libblkid -libblockdev -libblockdev-btrfs -libblockdev-crypto -libblockdev-dm -libblockdev-fs -libblockdev-kbd -libblockdev-loop -libblockdev-lvm -libblockdev-mdraid -libblockdev-mpath -libblockdev-part -libblockdev-plugins-all -libblockdev-swap -libblockdev-utils -libbluray -libbytesize -libcacard -libcanberra -libcanberra-gtk2 -libcanberra-gtk3 -libcap -libcap-ng -libcdio -libcdio-paranoia -libcdr -libcgroup -libchamplain -libchamplain-gtk -libcmis -libcollection -libcom_err -libcomps -libconfig -libcroco -libcrypt-nss -libcryptui -libcue -libcurl -libdaemon -libdatrie -libdb -libdb-utils -libdfu -libdhash -libdmapsharing -libdmx -libdnet -libdnf -libdrm -libdv -libdvdnav -libdvdread -libe-book -libedit -libeot -libepoxy -liberation-fonts-common -liberation-mono-fonts -liberation-sans-fonts -liberation-serif-fonts -libertas-usb8388-firmware -libetonyek -libev -libevdev -libevent -libexif -libexttextcat -libfdisk -libfdt -libffi -libfontenc -libfprint -libfreehand -libgcab1 -libgcc -libgcrypt -libgdata -libgdither -libgee -libgepub -libgexiv2 -libgltf -libglvnd -libglvnd-egl -libglvnd-gles -libglvnd-glx -libgnomekbd -libgnome-keyring -libgomp -libgovirt -libgpg-error -libgphoto2 -libgpod -libgrss -libgsf -libgtop2 -libgudev -libgusb -libgweather -libgxps -libhangul -libibverbs -libical -libICE -libicu -libidn -libidn2 -libiec61883 -libieee1284 -libimagequant -libimobiledevice -libini_config -libinput -libipa_hbac -libipt -libiptcdata -libiscsi -libjpeg-turbo -libkadm5 -libkkc -libkkc-common -libkkc-data -libksba -liblangtag -liblangtag-data -libldb -liblouis -libmbim -libmbim-utils -libmcpp -libmediaart -libmetalink -libmng -libmnl -libmodman -libmount -libmpc -libmpcdec -libmspack -libmspub -libmtp -libmusicbrainz5 -libmwaw -libmx -libndp -libnetfilter_conntrack -libnfnetlink -libnfs -libnfsidmap -libnghttp2 -libnl3 -libnl3-cli -libnma -libnm-gtk -libnotify -liboauth -libodfgen -libogg -liborcus -libosinfo -libpagemaker -libpath_utils -libpcap -libpciaccess -libpeas -libpeas-gtk -libpeas-loader-python3 -libphodav -libpinyin -libpinyin-data -libpipeline -libpkgconf -libplist -libpng -libproxy -libproxy-mozjs -libpskc -libpsl -libpwquality -libqb -libqmi -libqmi-utils -libquvi -libquvi-scripts -librados2 -LibRaw -libraw1394 -librbd1 -librdmacm -libref_array -libreoffice-calc -libreoffice-core -libreoffice-data -libreoffice-draw -libreoffice-emailmerge -libreoffice-filters -libreoffice-graphicfilter -libreoffice-gtk2 -libreoffice-gtk3 -libreoffice-help-en -libreoffice-impress -libreofficekit -libreoffice-langpack-en -libreoffice-math -libreoffice-opensymbol-fonts -libreoffice-pdfimport -libreoffice-pyuno -libreoffice-ure -libreoffice-ure-common -libreoffice-writer -libreoffice-x11 -libreoffice-xsltfilter -librepo -libreport -libreport-anaconda -libreport-cli -libreport-fedora -libreport-filesystem -libreport-gtk -libreport-plugin-bugzilla -libreport-plugin-kerneloops -libreport-plugin-logger -libreport-plugin-reportuploader -libreport-plugin-systemd-journal -libreport-plugin-ureport -libreport-python3 -libreport-web -librevenge -librsvg2 -libsamplerate -libsane-hpaio -libseccomp -libsecret -libselinux -libselinux-python3 -libselinux-utils -libsemanage -libsemanage-python3 -libsepol -libshout -libsigc++20 -libsigsegv -libSM -libsmartcols -libsmbclient -libsmbios -libsndfile -libsolv -libsoup -libspectre -libsrtp -libss -libssh -libssh2 -libsss_autofs -libsss_certmap -libsss_idmap -libsss_nss_idmap -libsss_sudo -libstaroffice -libstdc++ -libstemmer -libsysfs -libtalloc -libtar -libtasn1 -libtdb -libteam -libtevent -libthai -libtheora -libtiff -libtimezonemap -libtirpc -libtool-ltdl -libudisks2 -libunistring -libunwind -libusal -libusb -libusbmuxd -libusbx -libuser -libutempter -libuuid -libv4l -libvdpau -libverto -libverto-libev -libvirt-daemon -libvirt-daemon-config-network -libvirt-daemon-driver-interface -libvirt-daemon-driver-network -libvirt-daemon-driver-nodedev -libvirt-daemon-driver-nwfilter -libvirt-daemon-driver-qemu -libvirt-daemon-driver-secret -libvirt-daemon-driver-storage -libvirt-daemon-driver-storage-core -libvirt-daemon-driver-storage-disk -libvirt-daemon-driver-storage-gluster -libvirt-daemon-driver-storage-iscsi -libvirt-daemon-driver-storage-logical -libvirt-daemon-driver-storage-mpath -libvirt-daemon-driver-storage-rbd -libvirt-daemon-driver-storage-scsi -libvirt-daemon-driver-storage-sheepdog -libvirt-daemon-driver-storage-zfs -libvirt-daemon-kvm -libvirt-gconfig -libvirt-glib -libvirt-gobject -libvirt-libs -libvisio -libvisual -libvorbis -libvpx -libwacom -libwacom-data -libwayland-client -libwayland-cursor -libwayland-server -libwbclient -libwebp -libwnck3 -libwpd -libwpg -libwps -libwsman1 -libwvstreams -libX11 -libX11-common -libX11-xcb -libXau -libxcb -libXcomposite -libXcursor -libXdamage -libXdmcp -libXext -libXfixes -libXfont -libXfont2 -libXft -libXi -libXinerama -libxkbcommon -libxkbcommon-x11 -libxkbfile -libxklavier -libxml2 -libXmu -libXpm -libXrandr -libXrender -libXres -libxshmfence -libxslt -libXt -libXtst -libXv -libXvMC -libXxf86dga -libXxf86misc -libXxf86vm -libzapojit -libzhuyin -libzmf -linux-atm-libs -linux-firmware -lksctp-tools -lldpad -llvm-libs -Lmod -lockdev -logrotate -lohit-assamese-fonts -lohit-bengali-fonts -lohit-devanagari-fonts -lohit-gujarati-fonts -lohit-gurmukhi-fonts -lohit-kannada-fonts -lohit-odia-fonts -lohit-tamil-fonts -lohit-telugu-fonts -lpsolve -lrzsz -lsof -lttng-ust -lua -lua-expat -lua-filesystem -lua-json -lua-libs -lua-lpeg -lua-posix -lua-socket -lua-term -lvm2 -lvm2-libs -lxpolkit -lz4 -lz4-libs -lzo -lzop -m17n-db -m17n-lib -mactel-boot -mailcap -make -man-db -man-pages -marisa -mcelog -mcpp -mdadm -media-player-info -memtest86+ -mesa-dri-drivers -mesa-filesystem -mesa-libEGL -mesa-libgbm -mesa-libGL -mesa-libglapi -mesa-libwayland-egl -mesa-libxatracker -microcode_ctl -mlocate -mobile-broadband-provider-info -mod_dnssd -ModemManager -ModemManager-glib -mod_http2 -mokutil -mousetweaks -mozilla-filesystem -mozjs17 -mozjs38 -mozjs52 -mpage -mpfr -mpg123-libs -mtdev -mtools -mtr -mutter -mythes -mythes-en -nautilus -nautilus-extensions -nautilus-sendto -naver-nanum-fonts-common -naver-nanum-gothic-fonts -ncurses -ncurses-base -ncurses-libs -neon -netcf-libs -net-snmp-libs -nettle -net-tools -NetworkManager -NetworkManager-adsl -NetworkManager-bluetooth -NetworkManager-config-connectivity-fedora -NetworkManager-glib -NetworkManager-libnm -NetworkManager-openconnect -NetworkManager-openconnect-gnome -NetworkManager-openvpn -NetworkManager-openvpn-gnome -NetworkManager-pptp -NetworkManager-pptp-gnome -NetworkManager-ssh -NetworkManager-ssh-gnome -NetworkManager-team -NetworkManager-vpnc -NetworkManager-vpnc-gnome -NetworkManager-wifi -NetworkManager-wwan -newt -nfs-utils -nmap-ncat -nm-connection-editor -npth -nspr -nss -nss-mdns -nss-pem -nss-softokn -nss-softokn-freebl -nss-sysinit -nss-tools -nss-util -ntfs-3g -ntfsprogs -numactl-libs -numad -opencc -openCOLLADA -openconnect -openjpeg2 -openldap -openssh -openssh-clients -openssh-server -openssl -openssl-libs -open-vm-tools -open-vm-tools-desktop -openvpn -opus -orc -orca -osinfo-db -osinfo-db-tools -os-prober -ostree -ostree-libs -p11-kit -p11-kit-trust -PackageKit -PackageKit-command-not-found -PackageKit-glib -PackageKit-gstreamer-plugin -PackageKit-gtk3-module -pakchois -paktype-naskh-basic-fonts -pam -pam_krb5 -pango -pangomm -paps -paps-libs -paratype-pt-sans-fonts -parted -passwd -passwdqc -passwdqc-lib -pciutils -pciutils-libs -pcre -pcre2 -pcre2-utf16 -pcsc-lite-libs -perl-Carp -perl-constant -perl-Data-Dumper -perl-Encode -perl-Errno -perl-Error -perl-Exporter -perl-File-Path -perl-File-Temp -perl-Getopt-Long -perl-Git -perl-HTTP-Tiny -perl-interpreter -perl-IO -perl-IO-Socket-IP -perl-IO-Socket-SSL -perl-libnet -perl-libs -perl-macros -perl-MIME-Base64 -perl-Mozilla-CA -perl-Net-SSLeay -perl-parent -perl-PathTools -perl-Pod-Escapes -perl-podlators -perl-Pod-Perldoc -perl-Pod-Simple -perl-Pod-Usage -perl-Scalar-List-Utils -perl-Socket -perl-Storable -perl-Term-ANSIColor -perl-Term-Cap -perl-TermReadKey -perl-Text-ParseWords -perl-Text-Tabs+Wrap -perl-threads -perl-threads-shared -perl-Time-Local -perl-Unicode-Normalize -perl-URI -pigz -pinentry -pinentry-gnome3 -pinentry-gtk -pinfo -pipewire -pipewire-libs -pixman -pkcs11-helper -pkgconf -pkgconf-m4 -pkgconf-pkg-config -plymouth -plymouth-core-libs -plymouth-graphics-libs -plymouth-plugin-label -plymouth-plugin-two-step -plymouth-scripts -plymouth-system-theme -plymouth-theme-charge -policycoreutils -policycoreutils-python3 -policycoreutils-python-utils -polkit -polkit-libs -polkit-pkla-compat -poppler -poppler-data -poppler-glib -poppler-utils -popt -ppp -pptp -procps-ng -psacct -psmisc -publicsuffix-list-dafsa -pulseaudio -pulseaudio-gdm-hooks -pulseaudio-libs -pulseaudio-libs-glib2 -pulseaudio-module-bluetooth -pulseaudio-module-x11 -pulseaudio-utils -python2 -python2-libs -python2-pip -python2-setuptools -python2-talloc -python3 -python3-abrt -python3-abrt-addon -python3-asn1crypto -python3-augeas -python3-beaker -python3-bind -python3-blivet -python3-blockdev -python3-brlapi -python3-bytesize -python3-cairo -python3-caribou -python3-cffi -python3-chardet -python3-coverage -python3-cryptography -python3-cups -python3-dbus -python3-decorator -python3-dmidecode -python3-dnf -python3-dnf-plugins-core -python3-enchant -python3-firewall -python3-gobject -python3-gobject-base -python3-gpg -python3-hawkey -python3-humanize -python3-idna -python3-iniparse -python3-inotify -python3-IPy -python3-iscsi-initiator-utils -python3-kickstart -python3-libcomps -python3-librepo -python3-libs -python3-libxml2 -python3-louis -python3-mako -python3-markupsafe -python3-meh -python3-meh-gui -python3-ntplib -python3-olefile -python3-ordered-set -python3-pid -python3-pillow -python3-pip -python3-ply -python3-pwquality -python3-pyatspi -python3-pycparser -python3-pycurl -python3-pydbus -python3-pyOpenSSL -python3-pyparted -python3-pysocks -python3-pytz -python3-pyudev -python3-pyxdg -python3-requests -python3-requests-file -python3-requests-ftp -python3-rpm -python3-setuptools -python3-simpleline -python3-six -python3-slip -python3-slip-dbus -python3-speechd -python3-sssdconfig -python3-systemd -python3-urllib3 -python3-wrapt -python-systemd-doc -qemu-block-curl -qemu-block-dmg -qemu-block-gluster -qemu-block-iscsi -qemu-block-nfs -qemu-block-rbd -qemu-block-ssh -qemu-common -qemu-guest-agent -qemu-img -qemu-kvm -qemu-system-x86 -qemu-system-x86-core -qgnomeplatform -qpdf-libs -qrencode-libs -qt -qt5-qtbase -qt5-qtbase-common -qt5-qtbase-gui -qt5-qtdeclarative -qt5-qtxmlpatterns -qt-common -qt-settings -qt-x11 -quota -quota-nls -radvd -raptor2 -rasqal -rdist -rdma-core -readline -realmd -redhat-menus -redland -rest -rhythmbox -rng-tools -rootfiles -rpcbind -rpm -rpm-build-libs -rpm-libs -rpm-plugin-selinux -rpm-plugin-systemd-inhibit -rp-pppoe -rsync -rtkit -rygel -samba-client -samba-client-libs -samba-common -samba-common-libs -samba-dc-libs -samba-libs -sane-backends -sane-backends-drivers-cameras -sane-backends-drivers-scanners -sane-backends-libs -satyr -sbc -scl-utils -SDL2 -seabios-bin -seavgabios-bin -sed -selinux-policy -selinux-policy-targeted -setools-python3 -setroubleshoot -setroubleshoot-plugins -setroubleshoot-server -setup -setuptool -sg3_utils-libs -sgabios-bin -sgpio -shadow-utils -shared-mime-info -sheepdog -shim-ia32 -shim-x64 -shotwell -sil-abyssinica-fonts -sil-mingzat-fonts -sil-nuosu-fonts -sil-padauk-fonts -simple-scan -skkdic -slang -smc-fonts-common -smc-meera-fonts -snappy -sni-qt -sos -sound-theme-freedesktop -soundtouch -soxr -speech-dispatcher -speech-dispatcher-espeak -speex -speexdsp -spice-glib -spice-gtk3 -spice-server -spice-vdagent -sqlite-libs -sshpass -sssd -sssd-ad -sssd-client -sssd-common -sssd-common-pac -sssd-ipa -sssd-kcm -sssd-krb5 -sssd-krb5-common -sssd-ldap -sssd-nfs-idmap -sssd-proxy -startup-notification -stix-fonts -stoken-libs -sudo -sushi -switcheroo-control -symlinks -syslinux -syslinux-extlinux -syslinux-extlinux-nonlinux -syslinux-nonlinux -system-config-printer-libs -system-config-printer-udev -systemd -systemd-bootchart -systemd-container -systemd-libs -systemd-pam -systemd-udev -tabish-eeyek-fonts -taglib -tar -tcl -tcpdump -tcp_wrappers -tcp_wrappers-libs -teamd -telepathy-filesystem -telepathy-glib -telepathy-logger -telnet -thai-scalable-fonts-common -thai-scalable-waree-fonts -tigervnc-license -tigervnc-server-minimal -time -timedatex -totem -totem-nautilus -totem-pl-parser -traceroute -tracker -tracker-miners -tree -trousers -trousers-lib -tzdata -tzdata-java -udisks2 -unicode-ucd -unique -unoconv -unzip -upower -urw-fonts -usb_modeswitch -usb_modeswitch-data -usbmuxd -usbredir -usbutils -usermode -userspace-rcu -util-linux -vconfig -vim-minimal -vino -virglrenderer -vlgothic-fonts -volume_key-libs -vpnc -vpnc-script -vte291 -vte-profile -wavpack -web-assets-filesystem -webkitgtk4 -webkitgtk4-jsc -webkitgtk4-plugin-process-gtk2 -webrtc-audio-processing -wget -which -wireless-tools -words -wpa_supplicant -wvdial -xcb-util -xcb-util-image -xcb-util-keysyms -xcb-util-renderutil -xcb-util-wm -xdg-desktop-portal -xdg-desktop-portal-gtk -xdg-user-dirs -xdg-user-dirs-gtk -xdg-utils -xen-libs -xen-licenses -xfsprogs -xkeyboard-config -xml-common -xmlrpc-c -xmlrpc-c-client -xmlsec1 -xmlsec1-openssl -xorg-x11-drv-ati -xorg-x11-drv-evdev -xorg-x11-drv-fbdev -xorg-x11-drv-intel -xorg-x11-drv-libinput -xorg-x11-drv-nouveau -xorg-x11-drv-openchrome -xorg-x11-drv-qxl -xorg-x11-drv-vesa -xorg-x11-drv-vmware -xorg-x11-drv-wacom -xorg-x11-font-utils -xorg-x11-server-common -xorg-x11-server-utils -xorg-x11-server-Xorg -xorg-x11-server-Xwayland -xorg-x11-utils -xorg-x11-xauth -xorg-x11-xinit -xorg-x11-xkb-utils -xz -xz-libs -yajl -yelp -yelp-libs -yelp-xsl -zd1211-firmware -zenity -zfs-fuse -zip -zlib diff --git a/flatpak-runtime.in.yaml b/flatpak-runtime.in.yaml deleted file mode 100644 index 8d67abe..0000000 --- a/flatpak-runtime.in.yaml +++ /dev/null @@ -1,40 +0,0 @@ -document: modulemd -version: 1 -data: - summary: 'Flatpak Runtime' - description: >- - This module defines two runtimes for Flatpaks, the 'runtime' profile that - most Flatpaks in Fedora use, and a smaller 'runtime-base' profile that is - intended to be more minimal and (slightly) more API stable. There are also - corresponding sdk and sdk-base profiles that are used to build SDKs that - applications can be built against with flatpak-builder. - license: - module: [ MIT ] - dependencies: - buildrequires: - platform: f28 - requires: - platform: f28 - profiles: - runtime: - rpms: [] - runtime-base: - rpms: [] - sdk: - rpms: [] - sdk-base: - rpms: [] - buildroot: - rpms: [flatpak-rpm-macros, flatpak-runtime-config] - api: - rpms: - - flatpak-rpm-macros - - flatpak-runtime-config - components: - rpms: - flatpak-rpm-macros: - rationale: Set up build root for flatpak RPMS - ref: master - flatpak-runtime-config: - rationale: Runtime configuration files - ref: master diff --git a/flatpak-runtime.yaml b/flatpak-runtime.yaml deleted file mode 100644 index c60c109..0000000 --- a/flatpak-runtime.yaml +++ /dev/null @@ -1,2825 +0,0 @@ -document: modulemd -version: 1 -data: - summary: Flatpak Runtime - description: This module defines two runtimes for Flatpaks, the 'runtime' profile - that most Flatpaks in Fedora use, and a smaller 'runtime-base' profile that is - intended to be more minimal and (slightly) more API stable. There are also corresponding - sdk and sdk-base profiles that are used to build SDKs that applications can be - built against with flatpak-builder. - license: - module: - - MIT - dependencies: - buildrequires: - platform: f28 - requires: - platform: f28 - profiles: - runtime: - rpms: - - abattis-cantarell-fonts - - acl - - libacl - - adwaita-cursor-theme - - adwaita-icon-theme - - alsa-lib - - libargon2 - - aspell - - at-spi2-atk - - at-spi2-core - - atk - - attr - - libattr - - audit-libs - - avahi-glib - - avahi-libs - - basesystem - - bash - - brotli - - bzip2 - - bzip2-libs - - ca-certificates - - cairo - - cairo-gobject - - cdparanoia-libs - - chkconfig - - clutter - - clutter-gst3 - - clutter-gtk - - cogl - - colord-libs - - compat-libicu57 - - compat-openssl10 - - compat-readline6 - - coreutils - - coreutils-common - - cpio - - cracklib - - crypto-policies - - cryptsetup-libs - - cups-libs - - curl - - libcurl - - cyrus-sasl-lib - - dbus - - dbus-libs - - dbus-x11 - - dbus-glib - - dconf - - dejavu-fonts-common - - dejavu-sans-fonts - - dejavu-sans-mono-fonts - - dejavu-serif-fonts - - desktop-file-utils - - libcom_err - - libss - - elfutils - - elfutils-default-yama-scope - - elfutils-libelf - - elfutils-libs - - emacs-filesystem - - enchant - - eosrei-emojione-fonts - - expat - - fedora-release - - fedora-gpg-keys - - fedora-repos - - fedora-repos-rawhide - - file - - file-libs - - filesystem - - findutils - - flac-libs - - fontconfig - - fontpackages-filesystem - - freetype - - gawk - - gc - - libgcab1 - - libatomic - - libgcc - - libgfortran - - libgomp - - libquadmath - - libstdc++ - - gcr - - gdbm - - gdk-pixbuf2 - - gdk-pixbuf2-modules - - geoclue2 - - geoclue2-libs - - giflib - - gjs - - glib-networking - - glib2 - - glibc - - glibc-common - - glibc-minimal-langpack - - libnsl - - gmp - - adwaita-gtk2-theme - - gnome-themes-standard - - gnu-free-fonts-common - - gnu-free-mono-fonts - - gnu-free-sans-fonts - - gnu-free-serif-fonts - - gnupg - - gnupg2 - - gnupg2-smime - - gnutls - - gobject-introspection - - google-crosextra-caladea-fonts - - google-crosextra-carlito-fonts - - gpgme - - graphite2 - - grep - - gsettings-desktop-schemas - - gsm - - gstreamer1 - - gstreamer1-plugins-bad-free - - gstreamer1-plugins-base - - gtk2 - - gtk2-engines - - gtk-update-icon-cache - - gtk3 - - guile - - gvfs-client - - gzip - - harfbuzz - - harfbuzz-icu - - hicolor-icon-theme - - hostname - - hunspell - - hunspell-en-US - - hwdata - - hyphen - - ibus-libs - - libicu - - initscripts - - ipcalc - - iproute - - iptables-libs - - iputils - - iso-codes - - jasper-libs - - jbigkit-libs - - json-c - - json-glib - - keyutils-libs - - kmod - - kmod-libs - - krb5-libs - - krb5-server - - krb5-workstation - - libkadm5 - - lcms2 - - lcms2-utils - - less - - libICE - - libSM - - libX11 - - libX11-common - - libX11-xcb - - libXScrnSaver - - libXau - - libXcomposite - - libXcursor - - libXdamage - - libXdmcp - - libXext - - libXfixes - - libXft - - libXi - - libXinerama - - libXmu - - libXpm - - libXrandr - - libXrender - - libXt - - libXtst - - libXv - - libXxf86misc - - libXxf86vm - - libappstream-glib - - libarchive - - libassuan - - libasyncns - - libatomic_ops - - libcanberra - - libcanberra-gtk2 - - libcanberra-gtk3 - - libcap - - libcap-ng - - libcroco - - libdatrie - - libdb - - libdrm - - libdvdnav - - libdvdread - - libedit - - libepoxy - - liberation-fonts-common - - liberation-mono-fonts - - liberation-sans-fonts - - liberation-serif-fonts - - libev - - libevdev - - libexif - - libffi - - libgcrypt - - libglvnd - - libglvnd-egl - - libglvnd-gles - - libglvnd-glx - - libglvnd-opengl - - libgpg-error - - libgudev - - libgusb - - libidn - - libidn2 - - libimobiledevice - - libinput - - libjpeg-turbo - - turbojpeg - - libksba - - libmetalink - - libmnl - - libmodman - - libmpc - - libmpcdec - - libnotify - - libnsl2 - - libogg - - libpcap - - libpciaccess - - libplist - - libpng - - libproxy - - python2-libproxy - - python3-libproxy - - libpsl - - libpwquality - - librsvg2 - - librsvg2-tools - - libsamplerate - - libseccomp - - libsecret - - libselinux - - libsemanage - - libsepol - - libsigsegv - - libsndfile - - libsoup - - libsrtp - - libssh - - libstemmer - - libtasn1 - - libtdb - - libthai - - libtheora - - libtiff - - libtirpc - - libtool-ltdl - - libunistring - - libusb - - libusbmuxd - - libusbx - - libutempter - - libvdpau - - libverto - - libverto-libev - - libvisual - - libvorbis - - libwacom - - libwacom-data - - libwebp - - libxcb - - libxcrypt - - libxkbcommon - - libxkbcommon-x11 - - libxml2 - - python2-libxml2 - - libxshmfence - - libxslt - - llvm-libs - - llvm5.0-libs - - logrotate - - device-mapper - - device-mapper-libs - - lz4-libs - - ModemManager-glib - - make - - libmcpp - - mcpp - - mesa-libEGL - - mesa-libGL - - mesa-libgbm - - mesa-libglapi - - mesa-libwayland-egl - - mesa-vulkan-drivers - - mlocate - - mozjs52 - - mpfr - - mpg123-libs - - mtdev - - mythes - - ncompress - - ncurses - - ncurses-base - - ncurses-compat-libs - - ncurses-libs - - nettle - - libnghttp2 - - npth - - nspr - - nss - - nss-sysinit - - nss-tools - - nss-pem - - nss-softokn - - nss-softokn-freebl - - nss-util - - openal-soft - - openldap - - openssl - - openssl-libs - - opus - - orc - - p11-kit - - p11-kit-trust - - pam - - pango - - pcre - - pcre-cpp - - pcre2 - - pcre2-utf16 - - pcre2-utf32 - - pinentry - - pixman - - libpkgconf - - pkgconf - - pkgconf-m4 - - pkgconf-pkg-config - - popt - - procps-ng - - publicsuffix-list-dafsa - - pulseaudio-libs - - pulseaudio-libs-glib2 - - pulseaudio-utils - - python3-cairo - - python3-gobject - - python3-gobject-base - - python3-gstreamer1 - - python2-pip - - python3-pip - - python2-setuptools - - python3-setuptools - - python2 - - python2-libs - - python3 - - python3-libs - - qrencode-libs - - readline - - rest - - rpcgen - - SDL2 - - SDL2_image - - SDL2_mixer - - SDL2_net - - SDL2_ttf - - sed - - setup - - xml-common - - shadow-utils - - shared-mime-info - - sound-theme-freedesktop - - soundtouch - - speex - - speexdsp - - sqlite-libs - - systemd - - systemd-libs - - systemd-pam - - systemd-udev - - tar - - info - - tzdata - - unzip - - upower - - libblkid - - libfdisk - - libmount - - libsmartcols - - libuuid - - util-linux - - vte-profile - - vte291 - - vulkan - - vulkan-filesystem - - libwayland-client - - libwayland-cursor - - libwayland-server - - webkit2gtk3 - - webkit2gtk3-jsc - - which - - woff2 - - words - - xcb-util - - xcb-util-cursor - - xcb-util-image - - xcb-util-keysyms - - xcb-util-renderutil - - xcb-util-wm - - xdg-user-dirs - - xdg-utils - - xkeyboard-config - - xorg-x11-server-utils - - xorg-x11-xauth - - xorg-x11-xinit - - xz - - xz-libs - - xz-lzma-compat - - yelp - - yelp-libs - - yelp-xsl - - zenity - - zip - - zlib - runtime-base: - rpms: - - acl - - libacl - - adwaita-cursor-theme - - adwaita-icon-theme - - alsa-lib - - libargon2 - - aspell - - at-spi2-atk - - at-spi2-core - - atk - - attr - - libattr - - audit-libs - - avahi-glib - - avahi-libs - - basesystem - - bash - - bzip2 - - bzip2-libs - - ca-certificates - - cairo - - cairo-gobject - - cdparanoia-libs - - chkconfig - - colord-libs - - compat-libicu57 - - compat-openssl10 - - compat-readline6 - - coreutils - - coreutils-common - - cpio - - cracklib - - crypto-policies - - cryptsetup-libs - - cups-libs - - curl - - libcurl - - cyrus-sasl-lib - - dbus - - dbus-libs - - dbus-x11 - - dconf - - dejavu-fonts-common - - dejavu-sans-fonts - - dejavu-sans-mono-fonts - - dejavu-serif-fonts - - desktop-file-utils - - libcom_err - - libss - - elfutils - - elfutils-default-yama-scope - - elfutils-libelf - - elfutils-libs - - emacs-filesystem - - eosrei-emojione-fonts - - expat - - fedora-release - - fedora-gpg-keys - - fedora-repos - - fedora-repos-rawhide - - file - - file-libs - - filesystem - - findutils - - flac-libs - - fontconfig - - fontpackages-filesystem - - freetype - - gawk - - gc - - libgcab1 - - libatomic - - libgcc - - libgfortran - - libgomp - - libquadmath - - libstdc++ - - gdbm - - gdk-pixbuf2 - - gdk-pixbuf2-modules - - geoclue2 - - geoclue2-libs - - giflib - - glib-networking - - glib2 - - glibc - - glibc-common - - glibc-minimal-langpack - - libnsl - - gmp - - gnu-free-fonts-common - - gnu-free-mono-fonts - - gnu-free-sans-fonts - - gnu-free-serif-fonts - - gnupg - - gnupg2 - - gnupg2-smime - - gnutls - - gobject-introspection - - google-crosextra-caladea-fonts - - google-crosextra-carlito-fonts - - gpgme - - graphite2 - - grep - - gsettings-desktop-schemas - - gsm - - gstreamer1 - - gstreamer1-plugins-bad-free - - gstreamer1-plugins-base - - gtk-update-icon-cache - - gtk3 - - guile - - gzip - - harfbuzz - - harfbuzz-icu - - hicolor-icon-theme - - hunspell - - hunspell-en-US - - hwdata - - hyphen - - ibus-libs - - libicu - - iptables-libs - - iso-codes - - jasper-libs - - jbigkit-libs - - json-c - - json-glib - - keyutils-libs - - kmod-libs - - krb5-libs - - krb5-server - - krb5-workstation - - libkadm5 - - lcms2 - - lcms2-utils - - less - - libICE - - libSM - - libX11 - - libX11-common - - libX11-xcb - - libXScrnSaver - - libXau - - libXcomposite - - libXcursor - - libXdamage - - libXdmcp - - libXext - - libXfixes - - libXft - - libXi - - libXinerama - - libXmu - - libXpm - - libXrandr - - libXrender - - libXt - - libXtst - - libXv - - libXxf86misc - - libXxf86vm - - libappstream-glib - - libarchive - - libassuan - - libasyncns - - libatomic_ops - - libcap - - libcap-ng - - libcroco - - libdatrie - - libdb - - libdrm - - libdvdnav - - libdvdread - - libedit - - libepoxy - - liberation-fonts-common - - liberation-mono-fonts - - liberation-sans-fonts - - liberation-serif-fonts - - libev - - libexif - - libffi - - libgcrypt - - libglvnd - - libglvnd-egl - - libglvnd-gles - - libglvnd-glx - - libglvnd-opengl - - libgpg-error - - libgudev - - libgusb - - libidn - - libidn2 - - libjpeg-turbo - - turbojpeg - - libksba - - libmetalink - - libmodman - - libmpc - - libmpcdec - - libnotify - - libnsl2 - - libogg - - libpcap - - libpciaccess - - libpng - - libproxy - - python2-libproxy - - python3-libproxy - - libpsl - - libpwquality - - librsvg2 - - librsvg2-tools - - libsamplerate - - libseccomp - - libsecret - - libselinux - - libsemanage - - libsepol - - libsigsegv - - libsndfile - - libsoup - - libsrtp - - libssh - - libstemmer - - libtasn1 - - libthai - - libtheora - - libtiff - - libtirpc - - libtool-ltdl - - libunistring - - libusb - - libusbx - - libutempter - - libvdpau - - libverto - - libverto-libev - - libvisual - - libvorbis - - libwebp - - libxcb - - libxcrypt - - libxkbcommon - - libxkbcommon-x11 - - libxml2 - - python2-libxml2 - - libxshmfence - - libxslt - - llvm-libs - - llvm5.0-libs - - logrotate - - device-mapper - - device-mapper-libs - - lz4-libs - - ModemManager-glib - - make - - libmcpp - - mcpp - - mesa-libEGL - - mesa-libGL - - mesa-libgbm - - mesa-libglapi - - mesa-libwayland-egl - - mesa-vulkan-drivers - - mlocate - - mpfr - - mpg123-libs - - mythes - - ncompress - - ncurses - - ncurses-base - - ncurses-compat-libs - - ncurses-libs - - nettle - - libnghttp2 - - npth - - nspr - - nss - - nss-sysinit - - nss-tools - - nss-pem - - nss-softokn - - nss-softokn-freebl - - nss-util - - openal-soft - - openldap - - openssl - - openssl-libs - - opus - - orc - - p11-kit - - p11-kit-trust - - pam - - pango - - pcre - - pcre-cpp - - pcre2 - - pcre2-utf16 - - pcre2-utf32 - - pinentry - - pixman - - libpkgconf - - pkgconf - - pkgconf-m4 - - pkgconf-pkg-config - - popt - - procps-ng - - publicsuffix-list-dafsa - - pulseaudio-libs - - pulseaudio-libs-glib2 - - pulseaudio-utils - - python2-pip - - python3-pip - - python2-setuptools - - python3-setuptools - - python2 - - python2-libs - - python3 - - python3-libs - - qrencode-libs - - readline - - rest - - rpcgen - - SDL2 - - SDL2_image - - SDL2_mixer - - SDL2_net - - SDL2_ttf - - sed - - setup - - xml-common - - shadow-utils - - shared-mime-info - - soundtouch - - speex - - speexdsp - - sqlite-libs - - systemd - - systemd-libs - - systemd-pam - - tar - - info - - tzdata - - unzip - - libblkid - - libfdisk - - libmount - - libsmartcols - - libuuid - - util-linux - - vulkan - - vulkan-filesystem - - libwayland-client - - libwayland-cursor - - libwayland-server - - which - - words - - xcb-util - - xcb-util-cursor - - xcb-util-image - - xcb-util-keysyms - - xcb-util-renderutil - - xcb-util-wm - - xdg-user-dirs - - xdg-utils - - xkeyboard-config - - xorg-x11-server-utils - - xorg-x11-xauth - - xorg-x11-xinit - - xz - - xz-libs - - xz-lzma-compat - - zenity - - zip - - zlib - sdk: - rpms: - - abattis-cantarell-fonts - - acl - - libacl - - libacl-devel - - adwaita-cursor-theme - - adwaita-icon-theme - - adwaita-icon-theme-devel - - alsa-lib - - alsa-lib-devel - - annobin - - libargon2 - - aspell - - aspell-devel - - at-spi2-atk - - at-spi2-atk-devel - - at-spi2-core - - at-spi2-core-devel - - atk - - atk-devel - - attr - - libattr - - libattr-devel - - audit-libs - - autoconf - - autoconf-archive - - autogen-libopts - - automake - - avahi-glib - - avahi-libs - - libbabeltrace - - basesystem - - bash - - bash-completion - - bc - - binutils - - bison - - boost-regex - - brotli - - byacc - - bzip2 - - bzip2-devel - - bzip2-libs - - ca-certificates - - cairo - - cairo-devel - - cairo-gobject - - cairo-gobject-devel - - cairo-tools - - ccache - - cdparanoia-libs - - check - - check-devel - - chkconfig - - chrpath - - clang - - clang-analyzer - - clang-devel - - clang-libs - - clang-tools-extra - - git-clang-format - - clutter - - clutter-devel - - clutter-gst3 - - clutter-gst3-devel - - clutter-gtk - - clutter-gtk-devel - - cmake - - cmake-data - - cmake-filesystem - - cmake-rpm-macros - - cogl - - cogl-devel - - colord-libs - - compat-libicu57 - - compat-openssl10 - - compat-readline6 - - coreutils - - coreutils-common - - cpio - - cracklib - - cracklib-devel - - crypto-policies - - cryptopp - - cryptsetup-libs - - ctags - - cups-devel - - cups-libs - - curl - - libcurl - - libcurl-devel - - cvs - - cvsps - - cyrus-sasl - - cyrus-sasl-devel - - cyrus-sasl-lib - - dbus - - dbus-devel - - dbus-libs - - dbus-x11 - - dbus-glib - - dbus-glib-devel - - dconf - - dconf-devel - - dejavu-fonts-common - - dejavu-sans-fonts - - dejavu-sans-mono-fonts - - dejavu-serif-fonts - - desktop-file-utils - - diffutils - - docbook-dtds - - docbook-style-dsssl - - docbook-style-xsl - - docbook-utils - - dwz - - e2fsprogs - - e2fsprogs-devel - - e2fsprogs-libs - - libcom_err - - libcom_err-devel - - libss - - libss-devel - - elfutils - - elfutils-default-yama-scope - - elfutils-devel - - elfutils-libelf - - elfutils-libelf-devel - - elfutils-libs - - elinks - - emacs-filesystem - - enchant - - enchant-devel - - eosrei-emojione-fonts - - expat - - expat-devel - - fedora-release - - fedora-gpg-keys - - fedora-repos - - fedora-repos-rawhide - - file - - file-libs - - filesystem - - findutils - - fipscheck - - fipscheck-lib - - flac - - flac-devel - - flac-libs - - flex - - fontconfig - - fontconfig-devel - - fontpackages-filesystem - - fpc-srpm-macros - - freetype - - freetype-devel - - fuse-libs - - gawk - - gc - - libgcab1 - - libgcab1-devel - - cpp - - gcc - - gcc-c++ - - libatomic - - libgcc - - libgfortran - - libgomp - - libquadmath - - libstdc++ - - libstdc++-devel - - gcr - - gcr-devel - - gdb - - gdb-headless - - gdbm - - gdbm-devel - - gdk-pixbuf2 - - gdk-pixbuf2-devel - - gdk-pixbuf2-modules - - geoclue2 - - geoclue2-devel - - geoclue2-libs - - gettext - - gettext-common-devel - - gettext-devel - - gettext-libs - - ghc-srpm-macros - - giflib - - giflib-devel - - git - - git-core - - git-core-doc - - git-cvs - - perl-Git - - gjs - - gjs-devel - - glib-networking - - glib2 - - glib2-devel - - glibc - - glibc-common - - glibc-devel - - glibc-headers - - glibc-minimal-langpack - - libnsl - - nss_db - - nss_hesiod - - gmp - - gmp-c++ - - gmp-devel - - gnat-srpm-macros - - gnome-common - - adwaita-gtk2-theme - - gnome-themes-standard - - gnu-free-fonts-common - - gnu-free-mono-fonts - - gnu-free-sans-fonts - - gnu-free-serif-fonts - - gnupg - - gnupg2 - - gnupg2-smime - - gnutls - - gnutls-c++ - - gnutls-dane - - gnutls-devel - - gnutls-utils - - go-srpm-macros - - gobject-introspection - - gobject-introspection-devel - - google-crosextra-caladea-fonts - - google-crosextra-carlito-fonts - - gperf - - gpgme - - gpgme-devel - - gpm-libs - - graphite2 - - graphite2-devel - - grep - - groff - - groff-base - - groff-perl - - gsettings-desktop-schemas - - gsettings-desktop-schemas-devel - - gsm - - gstreamer1 - - gstreamer1-devel - - gstreamer1-plugins-bad-free - - gstreamer1-plugins-bad-free-devel - - gstreamer1-plugins-base - - gstreamer1-plugins-base-devel - - gtk-doc - - gtk2 - - gtk2-devel - - gtk2-engines - - gtk2-engines-devel - - gtk-update-icon-cache - - gtk3 - - gtk3-devel - - guile - - gvfs-client - - gvfs-devel - - gzip - - harfbuzz - - harfbuzz-devel - - harfbuzz-icu - - hicolor-icon-theme - - hostname - - hunspell - - hunspell-devel - - hunspell-en-US - - hwdata - - hyphen - - hyphen-devel - - ibus - - ibus-devel - - ibus-gtk2 - - ibus-gtk3 - - ibus-libs - - ibus-setup - - ibus-wayland - - icu - - libicu - - libicu-devel - - initscripts - - intltool - - ipcalc - - iproute - - iptables-libs - - iputils - - isl - - iso-codes - - iso-codes-devel - - itstool - - jasper-libs - - jbigkit-libs - - json-c - - json-c-devel - - json-glib - - json-glib-devel - - jsoncpp - - kernel-headers - - perf - - keyutils-libs - - keyutils-libs-devel - - kmod - - kmod-libs - - krb5-devel - - krb5-libs - - krb5-server - - krb5-workstation - - libkadm5 - - lcms2 - - lcms2-devel - - lcms2-utils - - less - - libICE - - libICE-devel - - libSM - - libSM-devel - - libX11 - - libX11-common - - libX11-devel - - libX11-xcb - - libXScrnSaver - - libXScrnSaver-devel - - libXau - - libXau-devel - - libXaw - - libXcomposite - - libXcomposite-devel - - libXcursor - - libXcursor-devel - - libXdamage - - libXdamage-devel - - libXdmcp - - libXdmcp-devel - - libXext - - libXext-devel - - libXfixes - - libXfixes-devel - - libXft - - libXft-devel - - libXi - - libXi-devel - - libXinerama - - libXinerama-devel - - libXmu - - libXpm - - libXpm-devel - - libXrandr - - libXrandr-devel - - libXrender - - libXrender-devel - - libXt - - libXt-devel - - libXtst - - libXtst-devel - - libXv - - libXv-devel - - libXxf86misc - - libXxf86vm - - libXxf86vm-devel - - libappstream-glib - - libappstream-glib-builder - - libappstream-glib-builder-devel - - libappstream-glib-devel - - libarchive - - libarchive-devel - - libassuan - - libassuan-devel - - libasyncns - - libatomic_ops - - libatomic_ops-devel - - libcanberra - - libcanberra-devel - - libcanberra-gtk2 - - libcanberra-gtk3 - - libcap - - libcap-devel - - libcap-ng - - libcroco - - libcroco-devel - - libdatrie - - libdatrie-devel - - libdb - - libdb-cxx - - libdb-cxx-devel - - libdb-devel - - libdb-utils - - libdrm - - libdrm-devel - - libdvdnav - - libdvdread - - libedit - - libedit-devel - - libepoxy - - libepoxy-devel - - liberation-fonts-common - - liberation-mono-fonts - - liberation-sans-fonts - - liberation-serif-fonts - - libev - - libevdev - - libevent - - libexif - - libexif-devel - - libffi - - libffi-devel - - libgcrypt - - libgcrypt-devel - - libglvnd - - libglvnd-core-devel - - libglvnd-devel - - libglvnd-egl - - libglvnd-gles - - libglvnd-glx - - libglvnd-opengl - - libgpg-error - - libgpg-error-devel - - libgudev - - libgusb - - libidn - - libidn-devel - - libidn2 - - libimobiledevice - - libinput - - libinput-devel - - libipt - - libjpeg-turbo - - libjpeg-turbo-devel - - turbojpeg - - turbojpeg-devel - - libksba - - libmetalink - - libmnl - - libmodman - - libmpc - - libmpc-devel - - libmpcdec - - libnotify - - libnotify-devel - - libnsl2 - - libogg - - libogg-devel - - libpaper - - libpcap - - libpciaccess - - libpciaccess-devel - - libpipeline - - libplist - - libpng - - libpng-devel - - libproxy - - libproxy-devel - - python2-libproxy - - python3-libproxy - - libpsl - - libpwquality - - librsvg2 - - librsvg2-devel - - librsvg2-tools - - libsamplerate - - libsamplerate-devel - - libseccomp - - libseccomp-devel - - libsecret - - libsecret-devel - - libselinux - - libselinux-devel - - libsemanage - - libsepol - - libsepol-devel - - libsigsegv - - libsndfile - - libsndfile-devel - - libsoup - - libsoup-devel - - libsrtp - - libssh - - libstemmer - - libtasn1 - - libtasn1-devel - - libtasn1-tools - - libtdb - - libthai - - libthai-devel - - libtheora - - libtheora-devel - - libtiff - - libtiff-devel - - libtirpc - - libtool - - libtool-ltdl - - libtool-ltdl-devel - - libunistring - - libunwind - - libusb - - libusbmuxd - - libusbx - - libutempter - - libuv - - libva - - libva-devel - - libva-utils - - libvdpau - - libvdpau-devel - - libverto - - libverto-devel - - libverto-libev - - libvisual - - libvorbis - - libvorbis-devel - - libvpx - - libvpx-devel - - libwacom - - libwacom-data - - libwebp - - libwebp-devel - - libxcb - - libxcb-devel - - libxcrypt - - libxcrypt-devel - - libxkbcommon - - libxkbcommon-devel - - libxkbcommon-x11 - - libxkbcommon-x11-devel - - libxkbfile - - libxml2 - - libxml2-devel - - python2-libxml2 - - libxshmfence - - libxshmfence-devel - - libxslt - - libxslt-devel - - libyaml - - llvm - - llvm-devel - - llvm-libs - - llvm5.0-libs - - logrotate - - lua-libs - - device-mapper - - device-mapper-libs - - lz4-libs - - ModemManager-glib - - m4 - - make - - mallard-rng - - man-db - - man2html-core - - libmcpp - - mcpp - - mesa-filesystem - - mesa-libEGL - - mesa-libEGL-devel - - mesa-libGL - - mesa-libGL-devel - - mesa-libGLES - - mesa-libGLES-devel - - mesa-libgbm - - mesa-libgbm-devel - - mesa-libglapi - - mesa-libwayland-egl - - mesa-libwayland-egl-devel - - mesa-vulkan-devel - - mesa-vulkan-drivers - - meson - - mlocate - - mozjs52 - - mozjs52-devel - - mpfr - - mpfr-devel - - mpg123-devel - - mpg123-libs - - mtdev - - mythes - - mythes-devel - - nasm - - ncompress - - ncurses - - ncurses-base - - ncurses-c++-libs - - ncurses-compat-libs - - ncurses-devel - - ncurses-libs - - nettle - - nettle-devel - - libnghttp2 - - nim-srpm-macros - - ninja-build - - npth - - nspr - - nspr-devel - - nss - - nss-devel - - nss-pkcs11-devel - - nss-sysinit - - nss-tools - - nss-pem - - nss-softokn - - nss-softokn-devel - - nss-softokn-freebl - - nss-softokn-freebl-devel - - nss-util - - nss-util-devel - - numactl-libs - - ocaml-srpm-macros - - oniguruma - - openal-soft - - openal-soft-devel - - openblas-srpm-macros - - openjade - - openjpeg2 - - openldap - - opensp - - openssh - - openssh-clients - - openssl - - openssl-devel - - openssl-libs - - opus - - opus-devel - - orc - - orc-compiler - - orc-devel - - p11-kit - - p11-kit-devel - - p11-kit-trust - - pam - - pam-devel - - pango - - pango-devel - - patch - - pcre - - pcre-cpp - - pcre-devel - - pcre-utf16 - - pcre-utf32 - - pcre2 - - pcre2-devel - - pcre2-utf16 - - pcre2-utf32 - - perl-Errno - - perl-IO - - perl-IO-Zlib - - perl-Locale-Maketext-Simple - - perl-Math-Complex - - perl-Net-Ping - - perl-Pod-Html - - perl-SelfLoader - - perl-devel - - perl-interpreter - - perl-libnetcfg - - perl-libs - - perl-macros - - perl-open - - perl-utils - - perl-Algorithm-Diff - - perl-Archive-Tar - - perl-Archive-Zip - - perl-CPAN - - perl-CPAN-Meta - - perl-CPAN-Meta-Requirements - - perl-CPAN-Meta-YAML - - perl-Carp - - perl-Compress-Bzip2 - - perl-Compress-Raw-Bzip2 - - perl-Compress-Raw-Zlib - - perl-DBD-SQLite - - perl-DBI - - perl-Data-Dumper - - perl-Data-OptList - - perl-Data-Section - - perl-Devel-Size - - perl-Digest - - perl-Digest-MD5 - - perl-Digest-SHA - - perl-Encode - - perl-Encode-devel - - perl-encoding - - perl-Error - - perl-Exporter - - perl-ExtUtils-CBuilder - - perl-ExtUtils-Install - - perl-ExtUtils-Command - - perl-ExtUtils-MM-Utils - - perl-ExtUtils-MakeMaker - - perl-ExtUtils-Manifest - - perl-ExtUtils-ParseXS - - perl-File-HomeDir - - perl-File-Path - - perl-File-Temp - - perl-File-Which - - perl-Filter - - perl-Getopt-Long - - perl-HTTP-Tiny - - perl-IO-Compress - - perl-IO-Socket-IP - - perl-IPC-Cmd - - perl-JSON-PP - - perl-Locale-Maketext - - perl-MIME-Base64 - - perl-MRO-Compat - - perl-Math-BigInt - - perl-Module-Build - - perl-Module-CoreList - - perl-Module-CoreList-tools - - perl-Module-Load - - perl-Module-Load-Conditional - - perl-Module-Metadata - - perl-Package-Generator - - perl-Params-Check - - perl-Params-Util - - perl-PathTools - - perl-Perl-OSType - - perl-Pod-Checker - - perl-Pod-Escapes - - perl-Pod-Parser - - perl-Pod-Perldoc - - perl-Pod-Simple - - perl-Pod-Usage - - perl-SGMLSpm - - perl-Scalar-List-Utils - - perl-Socket - - perl-Software-License - - perl-Storable - - perl-Sub-Exporter - - perl-Sub-Install - - perl-Term-ANSIColor - - perl-Term-Cap - - perl-TermReadKey - - perl-Test-Harness - - perl-Text-Diff - - perl-Text-Glob - - perl-Text-ParseWords - - perl-Text-Tabs+Wrap - - perl-Text-Template - - perl-Text-Unidecode - - perl-Thread-Queue - - perl-Time-HiRes - - perl-Time-Local - - perl-URI - - perl-Unicode-EastAsianWidth - - perl-Unicode-Normalize - - perl-XML-Parser - - perl-XML-XPath - - perl-constant - - perl-inc-latest - - perl-libintl-perl - - perl-libnet - - perl-local-lib - - perl-parent - - perl-podlators - - perl-srpm-macros - - perl-threads - - perl-threads-shared - - perl-version - - pinentry - - pixman - - pixman-devel - - libpkgconf - - pkgconf - - pkgconf-m4 - - pkgconf-pkg-config - - poppler - - poppler-data - - popt - - popt-devel - - procps-ng - - publicsuffix-list-dafsa - - pulseaudio-libs - - pulseaudio-libs-devel - - pulseaudio-libs-glib2 - - pulseaudio-utils - - python2-pyOpenSSL - - python2-cairo - - python3-cairo - - python3-cairo-devel - - pycryptopp - - pygobject3-devel - - python2-gobject - - python2-gobject-base - - python3-gobject - - python3-gobject-base - - python3-pyparsing - - python2-asn1crypto - - python2-beaker - - python2-cffi - - python2-cryptography - - python2-enum34 - - python3-gstreamer1 - - python2-idna - - python2-ipaddress - - python2-mako - - python2-markupsafe - - python2-paste - - python2-pip - - python3-pip - - python2-ply - - python2-pycparser - - python3-rpm-generators - - python-rpm-macros - - python-srpm-macros - - python2-rpm-macros - - python3-rpm-macros - - python2-setuptools - - python3-setuptools - - python2-six - - python2-tempita - - python2-xpyb - - python2 - - python2-devel - - python2-libs - - python3 - - python3-devel - - python3-libs - - qrencode-libs - - qt5-srpm-macros - - readline - - readline-devel - - redhat-rpm-config - - rest - - rhash - - rpcgen - - rpcsvc-proto-devel - - rpm - - rpm-libs - - rpm-plugin-selinux - - ruby - - ruby-irb - - ruby-libs - - rubygem-io-console - - rubygem-openssl - - rubygem-psych - - rubygem-rdoc - - rubygems - - rubygem-json - - rubygem-rake - - rubypick - - rust-srpm-macros - - SDL2 - - SDL2-devel - - SDL2_image - - SDL2_image-devel - - SDL2_mixer - - SDL2_mixer-devel - - SDL2_net - - SDL2_net-devel - - SDL2_ttf - - SDL2_ttf-devel - - sed - - setup - - sgml-common - - xml-common - - shadow-utils - - shared-mime-info - - slang - - slang-slsh - - sound-theme-freedesktop - - soundtouch - - source-highlight - - speex - - speex-devel - - speexdsp - - speexdsp-devel - - sqlite - - sqlite-devel - - sqlite-libs - - strace - - subunit - - subunit-devel - - systemd - - systemd-devel - - systemd-libs - - systemd-pam - - systemd-udev - - systemtap-sdt-devel - - tar - - teckit - - info - - texinfo - - texinfo-tex - - texlive-amsfonts - - texlive-base - - texlive-bibtex - - texlive-bibtex-bin - - texlive-cm - - texlive-collection-basic - - texlive-dvipdfmx - - texlive-dvipdfmx-bin - - texlive-dvipdfmx-def - - texlive-dvips - - texlive-dvips-bin - - texlive-enctex - - texlive-epsf - - texlive-etex - - texlive-etex-pkg - - texlive-glyphlist - - texlive-graphics-def - - texlive-gsftopk - - texlive-gsftopk-bin - - texlive-hyph-utf8 - - texlive-hyphen-base - - texlive-ifluatex - - texlive-ifxetex - - texlive-knuth-lib - - texlive-knuth-local - - texlive-kpathsea - - texlive-kpathsea-bin - - texlive-kpathsea-doc - - texlive-latex-fonts - - texlive-lib - - texlive-lua-alt-getopt - - texlive-luatex - - texlive-luatex-bin - - texlive-makeindex - - texlive-makeindex-bin - - texlive-metafont - - texlive-metafont-bin - - texlive-mflogo - - texlive-mfware - - texlive-mfware-bin - - texlive-pdftex - - texlive-pdftex-bin - - texlive-pdftex-def - - texlive-pdftex-doc - - texlive-plain - - texlive-tetex - - texlive-tetex-bin - - texlive-tex - - texlive-tex-bin - - texlive-tex-ini-files - - texlive-texconfig - - texlive-texconfig-bin - - texlive-texlive-common-doc - - texlive-texlive-docindex - - texlive-texlive-en - - texlive-texlive-msg-translations - - texlive-texlive-scripts - - texlive-texlive-scripts-bin - - texlive-texlive.infra - - texlive-texlive.infra-bin - - texlive-unicode-data - - texlive-updmap-map - - texlive-xdvi - - texlive-xdvi-bin - - texlive-xetex - - texlive-xetex-bin - - texlive-xetex-def - - texlive-xetexconfig - - tzdata - - unbound-libs - - unzip - - upower - - libblkid - - libblkid-devel - - libfdisk - - libfdisk-devel - - libmount - - libmount-devel - - libsmartcols - - libsmartcols-devel - - libuuid - - libuuid-devel - - util-linux - - vala - - valgrind - - valgrind-devel - - valgrind-tools-devel - - vim-filesystem - - vim-minimal - - vte-profile - - vte291 - - vte291-devel - - vulkan - - vulkan-devel - - vulkan-filesystem - - libwayland-client - - libwayland-cursor - - libwayland-server - - wayland-devel - - wayland-protocols-devel - - webkit2gtk3 - - webkit2gtk3-devel - - webkit2gtk3-jsc - - webkit2gtk3-jsc-devel - - which - - woff2 - - words - - xcb-proto - - xcb-util - - xcb-util-devel - - xcb-util-cursor - - xcb-util-cursor-devel - - xcb-util-image - - xcb-util-image-devel - - xcb-util-keysyms - - xcb-util-keysyms-devel - - xcb-util-renderutil - - xcb-util-renderutil-devel - - xcb-util-wm - - xcb-util-wm-devel - - xdg-user-dirs - - xdg-utils - - xkeyboard-config - - xkeyboard-config-devel - - xorg-x11-proto-devel - - xorg-x11-server-utils - - xorg-x11-util-macros - - xorg-x11-xauth - - xorg-x11-xinit - - xorg-x11-xkb-utils - - xorg-x11-xtrans-devel - - xz - - xz-devel - - xz-libs - - xz-lzma-compat - - yasm - - yelp - - yelp-devel - - yelp-libs - - yelp-tools - - yelp-xsl - - yelp-xsl-devel - - zenity - - zip - - zlib - - zlib-devel - - libzstd - - zziplib - sdk-base: - rpms: - - acl - - libacl - - libacl-devel - - adwaita-cursor-theme - - adwaita-icon-theme - - alsa-lib - - alsa-lib-devel - - annobin - - libargon2 - - aspell - - aspell-devel - - at-spi2-atk - - at-spi2-atk-devel - - at-spi2-core - - at-spi2-core-devel - - atk - - atk-devel - - attr - - libattr - - libattr-devel - - audit-libs - - autoconf - - autogen-libopts - - automake - - avahi-glib - - avahi-libs - - libbabeltrace - - basesystem - - bash - - bash-completion - - bc - - binutils - - bison - - boost-regex - - byacc - - bzip2 - - bzip2-devel - - bzip2-libs - - ca-certificates - - cairo - - cairo-devel - - cairo-gobject - - cairo-gobject-devel - - cairo-tools - - ccache - - cdparanoia-libs - - check - - check-devel - - chkconfig - - chrpath - - clang - - clang-analyzer - - clang-devel - - clang-libs - - clang-tools-extra - - git-clang-format - - cmake - - cmake-data - - cmake-filesystem - - cmake-rpm-macros - - colord-libs - - compat-libicu57 - - compat-openssl10 - - compat-readline6 - - coreutils - - coreutils-common - - cpio - - cracklib - - cracklib-devel - - crypto-policies - - cryptopp - - cryptsetup-libs - - ctags - - cups-devel - - cups-libs - - curl - - libcurl - - libcurl-devel - - cvs - - cvsps - - cyrus-sasl - - cyrus-sasl-devel - - cyrus-sasl-lib - - dbus - - dbus-devel - - dbus-libs - - dbus-x11 - - dconf - - dconf-devel - - dejavu-fonts-common - - dejavu-sans-fonts - - dejavu-sans-mono-fonts - - dejavu-serif-fonts - - desktop-file-utils - - diffutils - - docbook-dtds - - docbook-style-dsssl - - docbook-style-xsl - - docbook-utils - - dwz - - e2fsprogs - - e2fsprogs-devel - - e2fsprogs-libs - - libcom_err - - libcom_err-devel - - libss - - libss-devel - - elfutils - - elfutils-default-yama-scope - - elfutils-devel - - elfutils-libelf - - elfutils-libelf-devel - - elfutils-libs - - elinks - - emacs-filesystem - - eosrei-emojione-fonts - - expat - - expat-devel - - fedora-release - - fedora-gpg-keys - - fedora-repos - - fedora-repos-rawhide - - file - - file-libs - - filesystem - - findutils - - fipscheck - - fipscheck-lib - - flac - - flac-devel - - flac-libs - - flex - - fontconfig - - fontconfig-devel - - fontpackages-filesystem - - fpc-srpm-macros - - freetype - - freetype-devel - - fuse-libs - - gawk - - gc - - libgcab1 - - libgcab1-devel - - cpp - - gcc - - gcc-c++ - - libatomic - - libgcc - - libgfortran - - libgomp - - libquadmath - - libstdc++ - - libstdc++-devel - - gdb - - gdb-headless - - gdbm - - gdbm-devel - - gdk-pixbuf2 - - gdk-pixbuf2-devel - - gdk-pixbuf2-modules - - geoclue2 - - geoclue2-devel - - geoclue2-libs - - gettext - - gettext-common-devel - - gettext-devel - - gettext-libs - - ghc-srpm-macros - - giflib - - giflib-devel - - git - - git-core - - git-core-doc - - git-cvs - - perl-Git - - glib-networking - - glib2 - - glib2-devel - - glibc - - glibc-common - - glibc-devel - - glibc-headers - - glibc-minimal-langpack - - libnsl - - nss_db - - nss_hesiod - - gmp - - gmp-c++ - - gmp-devel - - gnat-srpm-macros - - gnu-free-fonts-common - - gnu-free-mono-fonts - - gnu-free-sans-fonts - - gnu-free-serif-fonts - - gnupg - - gnupg2 - - gnupg2-smime - - gnutls - - gnutls-c++ - - gnutls-dane - - gnutls-devel - - gnutls-utils - - go-srpm-macros - - gobject-introspection - - gobject-introspection-devel - - google-crosextra-caladea-fonts - - google-crosextra-carlito-fonts - - gperf - - gpgme - - gpgme-devel - - gpm-libs - - graphite2 - - graphite2-devel - - grep - - groff - - groff-base - - groff-perl - - gsettings-desktop-schemas - - gsm - - gstreamer1 - - gstreamer1-devel - - gstreamer1-plugins-bad-free - - gstreamer1-plugins-bad-free-devel - - gstreamer1-plugins-base - - gstreamer1-plugins-base-devel - - gtk-doc - - gtk2 - - gtk-update-icon-cache - - gtk3 - - gtk3-devel - - guile - - gzip - - harfbuzz - - harfbuzz-devel - - harfbuzz-icu - - hicolor-icon-theme - - hunspell - - hunspell-devel - - hunspell-en-US - - hwdata - - hyphen - - hyphen-devel - - ibus - - ibus-devel - - ibus-gtk2 - - ibus-gtk3 - - ibus-libs - - ibus-setup - - ibus-wayland - - icu - - libicu - - libicu-devel - - intltool - - iptables-libs - - isl - - iso-codes - - iso-codes-devel - - itstool - - jasper-libs - - jbigkit-libs - - json-c - - json-c-devel - - json-glib - - json-glib-devel - - jsoncpp - - kernel-headers - - perf - - keyutils-libs - - keyutils-libs-devel - - kmod-libs - - krb5-devel - - krb5-libs - - krb5-server - - krb5-workstation - - libkadm5 - - lcms2 - - lcms2-devel - - lcms2-utils - - less - - libICE - - libICE-devel - - libSM - - libSM-devel - - libX11 - - libX11-common - - libX11-devel - - libX11-xcb - - libXScrnSaver - - libXScrnSaver-devel - - libXau - - libXau-devel - - libXaw - - libXcomposite - - libXcomposite-devel - - libXcursor - - libXcursor-devel - - libXdamage - - libXdamage-devel - - libXdmcp - - libXdmcp-devel - - libXext - - libXext-devel - - libXfixes - - libXfixes-devel - - libXft - - libXft-devel - - libXi - - libXi-devel - - libXinerama - - libXinerama-devel - - libXmu - - libXpm - - libXpm-devel - - libXrandr - - libXrandr-devel - - libXrender - - libXrender-devel - - libXt - - libXt-devel - - libXtst - - libXtst-devel - - libXv - - libXv-devel - - libXxf86misc - - libXxf86vm - - libXxf86vm-devel - - libappstream-glib - - libappstream-glib-builder - - libappstream-glib-builder-devel - - libappstream-glib-devel - - libarchive - - libarchive-devel - - libassuan - - libassuan-devel - - libasyncns - - libatomic_ops - - libatomic_ops-devel - - libcap - - libcap-devel - - libcap-ng - - libcroco - - libcroco-devel - - libdatrie - - libdatrie-devel - - libdb - - libdb-cxx - - libdb-cxx-devel - - libdb-devel - - libdb-utils - - libdrm - - libdrm-devel - - libdvdnav - - libdvdread - - libedit - - libedit-devel - - libepoxy - - libepoxy-devel - - liberation-fonts-common - - liberation-mono-fonts - - liberation-sans-fonts - - liberation-serif-fonts - - libev - - libevent - - libexif - - libexif-devel - - libffi - - libffi-devel - - libgcrypt - - libgcrypt-devel - - libglvnd - - libglvnd-core-devel - - libglvnd-devel - - libglvnd-egl - - libglvnd-gles - - libglvnd-glx - - libglvnd-opengl - - libgpg-error - - libgpg-error-devel - - libgudev - - libgusb - - libidn - - libidn-devel - - libidn2 - - libipt - - libjpeg-turbo - - libjpeg-turbo-devel - - turbojpeg - - turbojpeg-devel - - libksba - - libmetalink - - libmodman - - libmpc - - libmpc-devel - - libmpcdec - - libnotify - - libnsl2 - - libogg - - libogg-devel - - libpaper - - libpcap - - libpciaccess - - libpciaccess-devel - - libpipeline - - libpng - - libpng-devel - - libproxy - - libproxy-devel - - python2-libproxy - - python3-libproxy - - libpsl - - libpwquality - - librsvg2 - - librsvg2-devel - - librsvg2-tools - - libsamplerate - - libsamplerate-devel - - libseccomp - - libseccomp-devel - - libsecret - - libselinux - - libselinux-devel - - libsemanage - - libsepol - - libsepol-devel - - libsigsegv - - libsndfile - - libsndfile-devel - - libsoup - - libsoup-devel - - libsrtp - - libssh - - libstemmer - - libtasn1 - - libtasn1-devel - - libtasn1-tools - - libthai - - libthai-devel - - libtheora - - libtheora-devel - - libtiff - - libtiff-devel - - libtirpc - - libtool - - libtool-ltdl - - libtool-ltdl-devel - - libunistring - - libunwind - - libusb - - libusbx - - libutempter - - libuv - - libva - - libva-devel - - libva-utils - - libvdpau - - libvdpau-devel - - libverto - - libverto-devel - - libverto-libev - - libvisual - - libvorbis - - libvorbis-devel - - libvpx - - libvpx-devel - - libwebp - - libwebp-devel - - libxcb - - libxcb-devel - - libxcrypt - - libxcrypt-devel - - libxkbcommon - - libxkbcommon-devel - - libxkbcommon-x11 - - libxkbcommon-x11-devel - - libxkbfile - - libxml2 - - libxml2-devel - - python2-libxml2 - - libxshmfence - - libxshmfence-devel - - libxslt - - libxslt-devel - - libyaml - - llvm - - llvm-devel - - llvm-libs - - llvm5.0-libs - - logrotate - - lua-libs - - device-mapper - - device-mapper-libs - - lz4-libs - - ModemManager-glib - - m4 - - make - - man-db - - man2html-core - - libmcpp - - mcpp - - mesa-filesystem - - mesa-libEGL - - mesa-libEGL-devel - - mesa-libGL - - mesa-libGL-devel - - mesa-libGLES - - mesa-libGLES-devel - - mesa-libgbm - - mesa-libgbm-devel - - mesa-libglapi - - mesa-libwayland-egl - - mesa-libwayland-egl-devel - - mesa-vulkan-devel - - mesa-vulkan-drivers - - meson - - mlocate - - mpfr - - mpfr-devel - - mpg123-devel - - mpg123-libs - - mythes - - mythes-devel - - nasm - - ncompress - - ncurses - - ncurses-base - - ncurses-c++-libs - - ncurses-compat-libs - - ncurses-devel - - ncurses-libs - - nettle - - nettle-devel - - libnghttp2 - - nim-srpm-macros - - ninja-build - - npth - - nspr - - nspr-devel - - nss - - nss-devel - - nss-pkcs11-devel - - nss-sysinit - - nss-tools - - nss-pem - - nss-softokn - - nss-softokn-devel - - nss-softokn-freebl - - nss-softokn-freebl-devel - - nss-util - - nss-util-devel - - numactl-libs - - ocaml-srpm-macros - - oniguruma - - openal-soft - - openal-soft-devel - - openblas-srpm-macros - - openjade - - openjpeg2 - - openldap - - opensp - - openssh - - openssh-clients - - openssl - - openssl-devel - - openssl-libs - - opus - - orc - - orc-compiler - - orc-devel - - p11-kit - - p11-kit-devel - - p11-kit-trust - - pam - - pam-devel - - pango - - pango-devel - - patch - - pcre - - pcre-cpp - - pcre-devel - - pcre-utf16 - - pcre-utf32 - - pcre2 - - pcre2-devel - - pcre2-utf16 - - pcre2-utf32 - - perl-Errno - - perl-IO - - perl-IO-Zlib - - perl-Locale-Maketext-Simple - - perl-Math-Complex - - perl-Net-Ping - - perl-Pod-Html - - perl-SelfLoader - - perl-devel - - perl-interpreter - - perl-libnetcfg - - perl-libs - - perl-macros - - perl-open - - perl-utils - - perl-Algorithm-Diff - - perl-Archive-Tar - - perl-Archive-Zip - - perl-CPAN - - perl-CPAN-Meta - - perl-CPAN-Meta-Requirements - - perl-CPAN-Meta-YAML - - perl-Carp - - perl-Compress-Bzip2 - - perl-Compress-Raw-Bzip2 - - perl-Compress-Raw-Zlib - - perl-DBD-SQLite - - perl-DBI - - perl-Data-Dumper - - perl-Data-OptList - - perl-Data-Section - - perl-Devel-Size - - perl-Digest - - perl-Digest-MD5 - - perl-Digest-SHA - - perl-Encode - - perl-Encode-devel - - perl-encoding - - perl-Error - - perl-Exporter - - perl-ExtUtils-CBuilder - - perl-ExtUtils-Install - - perl-ExtUtils-Command - - perl-ExtUtils-MM-Utils - - perl-ExtUtils-MakeMaker - - perl-ExtUtils-Manifest - - perl-ExtUtils-ParseXS - - perl-File-HomeDir - - perl-File-Path - - perl-File-Temp - - perl-File-Which - - perl-Filter - - perl-Getopt-Long - - perl-HTTP-Tiny - - perl-IO-Compress - - perl-IO-Socket-IP - - perl-IPC-Cmd - - perl-JSON-PP - - perl-Locale-Maketext - - perl-MIME-Base64 - - perl-MRO-Compat - - perl-Math-BigInt - - perl-Module-Build - - perl-Module-CoreList - - perl-Module-CoreList-tools - - perl-Module-Load - - perl-Module-Load-Conditional - - perl-Module-Metadata - - perl-Package-Generator - - perl-Params-Check - - perl-Params-Util - - perl-PathTools - - perl-Perl-OSType - - perl-Pod-Checker - - perl-Pod-Escapes - - perl-Pod-Parser - - perl-Pod-Perldoc - - perl-Pod-Simple - - perl-Pod-Usage - - perl-SGMLSpm - - perl-Scalar-List-Utils - - perl-Socket - - perl-Software-License - - perl-Storable - - perl-Sub-Exporter - - perl-Sub-Install - - perl-Term-ANSIColor - - perl-Term-Cap - - perl-TermReadKey - - perl-Test-Harness - - perl-Text-Diff - - perl-Text-Glob - - perl-Text-ParseWords - - perl-Text-Tabs+Wrap - - perl-Text-Template - - perl-Text-Unidecode - - perl-Thread-Queue - - perl-Time-HiRes - - perl-Time-Local - - perl-URI - - perl-Unicode-EastAsianWidth - - perl-Unicode-Normalize - - perl-XML-Parser - - perl-XML-XPath - - perl-constant - - perl-inc-latest - - perl-libintl-perl - - perl-libnet - - perl-local-lib - - perl-parent - - perl-podlators - - perl-srpm-macros - - perl-threads - - perl-threads-shared - - perl-version - - pinentry - - pixman - - pixman-devel - - libpkgconf - - pkgconf - - pkgconf-m4 - - pkgconf-pkg-config - - poppler - - poppler-data - - popt - - popt-devel - - procps-ng - - publicsuffix-list-dafsa - - pulseaudio-libs - - pulseaudio-libs-devel - - pulseaudio-libs-glib2 - - pulseaudio-utils - - python2-pyOpenSSL - - python3-cairo - - pycryptopp - - python3-gobject - - python3-gobject-base - - python3-pyparsing - - python2-asn1crypto - - python2-beaker - - python2-cffi - - python2-cryptography - - python2-enum34 - - python2-idna - - python2-ipaddress - - python2-mako - - python2-markupsafe - - python2-paste - - python2-pip - - python3-pip - - python2-ply - - python2-pycparser - - python3-rpm-generators - - python-rpm-macros - - python-srpm-macros - - python2-rpm-macros - - python3-rpm-macros - - python2-setuptools - - python3-setuptools - - python2-six - - python2-tempita - - python2 - - python2-devel - - python2-libs - - python3 - - python3-devel - - python3-libs - - qrencode-libs - - qt5-srpm-macros - - readline - - readline-devel - - redhat-rpm-config - - rest - - rhash - - rpcgen - - rpcsvc-proto-devel - - rpm - - rpm-libs - - rpm-plugin-selinux - - ruby - - ruby-irb - - ruby-libs - - rubygem-io-console - - rubygem-openssl - - rubygem-psych - - rubygem-rdoc - - rubygems - - rubygem-json - - rubygem-rake - - rubypick - - rust-srpm-macros - - SDL2 - - SDL2-devel - - SDL2_image - - SDL2_image-devel - - SDL2_mixer - - SDL2_mixer-devel - - SDL2_net - - SDL2_net-devel - - SDL2_ttf - - SDL2_ttf-devel - - sed - - setup - - sgml-common - - xml-common - - shadow-utils - - shared-mime-info - - slang - - slang-slsh - - soundtouch - - source-highlight - - speex - - speex-devel - - speexdsp - - speexdsp-devel - - sqlite - - sqlite-devel - - sqlite-libs - - strace - - subunit - - subunit-devel - - systemd - - systemd-libs - - systemd-pam - - systemtap-sdt-devel - - tar - - teckit - - info - - texinfo - - texinfo-tex - - texlive-amsfonts - - texlive-base - - texlive-bibtex - - texlive-bibtex-bin - - texlive-cm - - texlive-collection-basic - - texlive-dvipdfmx - - texlive-dvipdfmx-bin - - texlive-dvipdfmx-def - - texlive-dvips - - texlive-dvips-bin - - texlive-enctex - - texlive-epsf - - texlive-etex - - texlive-etex-pkg - - texlive-glyphlist - - texlive-graphics-def - - texlive-gsftopk - - texlive-gsftopk-bin - - texlive-hyph-utf8 - - texlive-hyphen-base - - texlive-ifluatex - - texlive-ifxetex - - texlive-knuth-lib - - texlive-knuth-local - - texlive-kpathsea - - texlive-kpathsea-bin - - texlive-kpathsea-doc - - texlive-latex-fonts - - texlive-lib - - texlive-lua-alt-getopt - - texlive-luatex - - texlive-luatex-bin - - texlive-makeindex - - texlive-makeindex-bin - - texlive-metafont - - texlive-metafont-bin - - texlive-mflogo - - texlive-mfware - - texlive-mfware-bin - - texlive-pdftex - - texlive-pdftex-bin - - texlive-pdftex-def - - texlive-pdftex-doc - - texlive-plain - - texlive-tetex - - texlive-tetex-bin - - texlive-tex - - texlive-tex-bin - - texlive-tex-ini-files - - texlive-texconfig - - texlive-texconfig-bin - - texlive-texlive-common-doc - - texlive-texlive-docindex - - texlive-texlive-en - - texlive-texlive-msg-translations - - texlive-texlive-scripts - - texlive-texlive-scripts-bin - - texlive-texlive.infra - - texlive-texlive.infra-bin - - texlive-unicode-data - - texlive-updmap-map - - texlive-xdvi - - texlive-xdvi-bin - - texlive-xetex - - texlive-xetex-bin - - texlive-xetex-def - - texlive-xetexconfig - - tzdata - - unbound-libs - - unzip - - libblkid - - libblkid-devel - - libfdisk - - libfdisk-devel - - libmount - - libmount-devel - - libsmartcols - - libsmartcols-devel - - libuuid - - libuuid-devel - - util-linux - - vala - - valgrind - - valgrind-devel - - valgrind-tools-devel - - vim-filesystem - - vim-minimal - - vulkan - - vulkan-devel - - vulkan-filesystem - - libwayland-client - - libwayland-cursor - - libwayland-server - - wayland-devel - - wayland-protocols-devel - - which - - words - - xcb-proto - - xcb-util - - xcb-util-devel - - xcb-util-cursor - - xcb-util-cursor-devel - - xcb-util-image - - xcb-util-image-devel - - xcb-util-keysyms - - xcb-util-keysyms-devel - - xcb-util-renderutil - - xcb-util-renderutil-devel - - xcb-util-wm - - xcb-util-wm-devel - - xdg-user-dirs - - xdg-utils - - xkeyboard-config - - xkeyboard-config-devel - - xorg-x11-proto-devel - - xorg-x11-server-utils - - xorg-x11-util-macros - - xorg-x11-xauth - - xorg-x11-xinit - - xorg-x11-xkb-utils - - xorg-x11-xtrans-devel - - xz - - xz-devel - - xz-libs - - xz-lzma-compat - - yasm - - zenity - - zip - - zlib - - zlib-devel - - libzstd - - zziplib - buildroot: - rpms: - - flatpak-rpm-macros - - flatpak-runtime-config - api: - rpms: - - flatpak-rpm-macros - - flatpak-runtime-config - components: - rpms: - flatpak-rpm-macros: - rationale: Set up build root for flatpak RPMS - ref: master - flatpak-runtime-config: - rationale: Runtime configuration files - ref: master diff --git a/flatpak.json b/flatpak.json deleted file mode 100644 index 77da978..0000000 --- a/flatpak.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtime": "org.fedoraproject.Platform", - "runtime-version": "28", - "sdk": "org.fedoraproject.Sdk", - "cleanup-commands": [ "touch -d @0 /usr/share/fonts", - "touch -d @0 /usr/share/fonts/*", - "fc-cache -fs" - ] -} diff --git a/package-notes.txt b/package-notes.txt deleted file mode 100644 index 4079e4e..0000000 --- a/package-notes.txt +++ /dev/null @@ -1,152 +0,0 @@ -# Each line is one of: -# BINARY-PACKAGE-NAME -# BINARY-PACKAGE-NAME: FREE FORM NOTES -# BINARY-PACKAGE-NAME: FLAG: FREE FORM NOTES -# Where flag is one of -# EB: Extra package to include in base runtime -# EB_SDK: Extra package to include in base sdk -# E: Extra package to include in runtime -# E_SDK: Extra package to include in sdk -# F: flag this package as a problem -# F?: flag this package as questionable -# FD: flag that this package is only being pulled in as a dependency of a problem package -# W: "waive" any problems with this package - it's not a problem -# -ModemManager-glib: FD: geoclue -adwaita-cursor-theme: W: part of runtime, but not bin/libs -adwaita-icon-theme: W: part of runtime, but not bin/libs -audit-libs: Fedora builds things this way -avahi-glib: FD: geoclue -avahi-libs: from geoclue, but also by cups-libs(built that way?) -ca-certificates -cdparanoia-libs: pulled in via gstreamer1-plugins-base -chkconfig: -colord-libs: -compat-openssl10: -coreutils-common: W: no bins/libs -crypto-policies: W: data files -cryptsetup-libs: FD: systemd -dbus: F?: Should we exclude binaries and break lib dependencies? -dbus-x11: F: dbus-launch should be excluded -dejavu-fonts-common: W: data files -desktop-file-utils: xdg-utils -device-mapper: FD: systemd -device-mapper-libs: FD: systemd -elfutils-default-yama-scope: provides default-yama-scope required by elfutils in Fedora -emacs-filesystem: required by desktop-file-utils, libidn -fedora-gpg-keys -fedora-release -fedora-repos -fedora-repos-rawhide -filesystem: W: data files -fontpackages-filesystem: W: data files -gc: FD: make -gdk-pixbuf2-modules: W: no bins/libs -geoclue2: F: required by geoclue-libs, but doesn't make sense non-system -glib-networking: W: no bins/libs -glibc-minimal-langpack -gnu-free-fonts-common: W: data files -gsettings-desktop-schemas: W: data files -gsm -guile: make -hicolor-icon-theme: W: data files -hunspell-en-US -hwdata -info: F: pulled in by gzip -iptables-libs: FD: systemd -iso-codes: W: data-files -jasper-libs -jbigkit-libs -json-c: FD: systemd -krb5-server: F: should exclude binaries -krb5-workstation: F: should exclude binaries -keyutils-libs: -kmod-libs: FD: systemd -libX11-common: W: data files -libXmu: FD: dbus-x11 -libXxf86misc: FD: dbus-x11 -libargon2: FD: systemd -libasyncns -libatomic_ops: FD: make -libcap-ng: W: libaudit dependency -libdb -libdvdnav -libdvdread -libedit -liberation-fonts-common: W: data files -libev: FD: krb5-server -libfdisk -libgfortran: EB: some libraries want, don't want to recompile gcc -libkadm5: F: should exclude libs -libgudev -libgusb -libicu -libidn2: W: fedora thing, lots of things use -libmcpp: FD: dbus-x11 -libmetalink -libmodman -libmpcdec -libnghttp2 -libnotify -libnsl2 -libpcap: FD: systemd -libpsl -libpwquality: FD: util-linux -libsecret -libselinux: W: fedora -libsemanage: FD: pulled in via shadow-utils -libsepol: W: fedora -libsigsegv -libsmartcols: FD: util-linux -libsrtp -libss: FD: krb5-workstation, krb5-server -libssh -libstemmer -libtirpc -libunistring: W: via libidn2 -libusb -libusbx -libutempter: FD: util-linux -libverto-libev: FD: krb5-server -libvisual -llvm5.0-libs: W: mesa -logrotate: FD: krb5-server -lz4-libs: W: libarchive -make: F: dependency of compat-openssl10 -mcpp: FD: dbus-x11 -mlocate: F: this makes no sense - nobody ever is going to run updatedb -ncurses-base -ncurses-libs -nss-pem: W: fedora dependency of nss -nss-sysinit -openldap -openssl-libs -opus -pam: FD: systemd, util-linux -pkgconf-pkg-config: EB: hard to build, xorg-x11-font-utils wants -publicsuffix-list-dafsa -python2-libs -python2-pip -python2-setuptools -python3-libs -python3-pip -python3-setuptools -qrencode-libs: FD: systemd -readline -rest -setup: FD: shadow-utils -shadow-utils: ???? -shared-mime-info: W: data flies -soundtouch -systemd: F: libdrm dependency on systemd pulls in a big stack -systemd-libs -systemd-pam -tzdata: W: data -util-linux: F?: Are getopt, kill, uuidgen worth all the deps -vulkan-filesystem: W: data -words: FD: krb5-server -xkeyboard-config: W: data -xml-common: W: common -xorg-x11-server-utils: FD: dbus-x11 -xorg-x11-xauth: FD: dbus-x11 -xorg-x11-xinit: FD: dbus-x11 diff --git a/reports/applications.html b/reports/applications.html deleted file mode 100644 index a6dcaf0..0000000 --- a/reports/applications.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -
NamePackageFlathub?# ReviewsReview Avg# Extra
-
-
X
- - - - -
- In Fedora, not in Flathub
- In Flathub, not in Fedora
- Not in Flathub or Fedora
-
Click on rows for details. Click on headers to sort.
-
- - diff --git a/reports/extra-package-app.html b/reports/extra-package-app.html deleted file mode 100644 index c7fdc1b..0000000 --- a/reports/extra-package-app.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
Package# Top# All
-
-

-

- -
-
-
X
-
- Shows number of applications using each package. Click on application counts for details. Click on headers to sort. -
-
- - diff --git a/reports/jslib/jquery-3.3.1.min.js b/reports/jslib/jquery-3.3.1.min.js deleted file mode 100644 index 4d9b3a2..0000000 --- a/reports/jslib/jquery-3.3.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" - - - - - - - - - - - - - - -
Package# Top# All
-
-

-

-
    -
    -
    -
    X
    -
    - Shows number of applications using each package. Click on application counts for details. Click on headers to sort. -
    -
    - - diff --git a/runtime-template.html b/runtime-template.html deleted file mode 100644 index 0447eed..0000000 --- a/runtime-template.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - -
    -
    X
    - - - - - - - - - - - - - - - -
    FD/P - org.freedesktop.Platform - {%if unmatched.freedesktop_platform > 0%} - ({{unmatched.freedesktop_platform}} unmatched) - {%endif%} -
    GN/P - org.gnome.Platform - {%if unmatched.gnome_platform > 0%} - ({{unmatched.gnome_platform}} unmatched) - {%endif%} -
    FD/S - org.freedesktop.Sdk
    GN/S - org.gnome.Sdk
    LIVE - F27 live image
    RF26 - F26 org.fedora.Platform
    - Build in desktop-runtime module
    - Build in flatpak-runtime module
    - Root package, only included because of files in runtime
    - Included because of files in runtime, also depended upon
    - Included because of dependencies
    - Listed as an extra package in package-notes.txt
    -
    Mouse over shaded squares for details.
    -
    - - - {% for letter in letters %} - - - - - - - - - - - - - {% for spackage in letter.packages %} - - - - - - - - - - - {% for package in spackage.packages %} - - - - - - - - - - - {% endfor %} - {% endfor %} - {% endfor %} - - - diff --git a/sources b/sources deleted file mode 100644 index e69de29..0000000 --- a/sources +++ /dev/null diff --git a/tools/download-fedora-appstream.sh b/tools/download-fedora-appstream.sh deleted file mode 100755 index e7129ec..0000000 --- a/tools/download-fedora-appstream.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -set -e - -nvr=$(koji list-tagged --quiet --inherit --latest f28-build appstream-data|awk '{print $1}') -path=$(koji buildinfo appstream-data-28-2.fc28 | grep noarch.rpm) -url=$(echo $path | sed s@/mnt/koji/packages/@https://kojipkgs.fedoraproject.org/packages/@) - -rpm=out/$(basename $path) - -[ -e $rpm ] || curl $url > $rpm - -tmpdir=$(mktemp -d) -cleanup() { - rm -rf $tmpdir -} -trap cleanup EXIT - -tmpxmldir=$tmpdir/usr/share/app-info/xmls/ -mkdir -p $tmpxmldir -rpm2cpio $rpm | ( cd $tmpdir && cpio -iv './usr/share/app-info/xmls/fedora.xml.gz' ) -cp $tmpxmldir/fedora.xml.gz out/fedora-appstream.xml.gz - diff --git a/tools/download-flathub-appstream.sh b/tools/download-flathub-appstream.sh deleted file mode 100755 index 5177b52..0000000 --- a/tools/download-flathub-appstream.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/sh - -set -e - -tmpdir=$(TMPDIR=/var/tmp mktemp -d) -cleanup() { - rm -rf $tmpdir -} -trap cleanup EXIT - -OSTREE="ostree --repo=$tmpdir/repo" - -$OSTREE init --mode=bare-user -$OSTREE remote add --no-gpg-verify flathub https://flathub.org/repo -$OSTREE pull flathub appstream/x86_64 -$OSTREE checkout --user-mode flathub/appstream/x86_64 $tmpdir/checkout - -cp $tmpdir/checkout/appstream.xml.gz out/flathub-appstream.xml.gz - - - - - diff --git a/tools/download-reviews.sh b/tools/download-reviews.sh deleted file mode 100755 index c0a1e49..0000000 --- a/tools/download-reviews.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/bash - -curl https://odrs.gnome.org/1.0/reviews/api/ratings > out/ratings.json diff --git a/tools/generate-app-reports.py b/tools/generate-app-reports.py deleted file mode 100755 index 6e7f29d..0000000 --- a/tools/generate-app-reports.py +++ /dev/null @@ -1,354 +0,0 @@ -#!/usr/bin/python3 - -import gi -gi.require_version('AppStreamGlib', '1.0') -from gi.repository import AppStreamGlib as AS -from gi.repository import Gio -import json -import locale -import os -import re -import subprocess -import sys - -import util - -id_mappings = { - 'amarok.desktop': 'org.kde.amarok.desktop', - 'android-studio.desktop': 'com.google.AndroidStudio.desktop', - 'apper.desktop': 'org.kde.apper.desktop', - 'arduino-arduinoide.desktop': 'arduino.desktop', - 'astromenace.desktop': 'com.viewizard.AstroMenace.desktop', - 'atom.desktop': 'io.atom.Atom.desktop', - 'BlockOutII.desktop': 'net.blockout.BlockOutII.desktop', - 'btanks.desktop': 'net.sourceforge.btanks.desktop', - 'deja-dup.desktop': 'org.gnome.DejaDup.desktop', - 'digikam.desktop': 'org.kde.digikam.desktop', - 'discord.desktop': 'com.discordapp.Discord.desktop', - 'evolution.desktop': 'org.gnome.Evolution.desktop', - 'feedreader.desktop': 'org.gnome.FeedReader.desktop', - 'flowblade.desktop': 'io.github.jliljebl.Flowblade.desktop', - 'geary.desktop': 'org.gnome.Geary.desktop', - 'geogebra.desktop': 'org.geogebra.GeoGebra.desktop', - 'gnome-calculator.desktop': 'org.gnome.Calculator.desktop', - 'gnome-music.desktop': 'org.gnome.Music.desktop', - 'gthumb.desktop': 'org.gnome.gThumb.desktop', - 'lollypop.desktop': 'org.gnome.Lollypop.desktop', - 'k3b.desktop': 'org.kde.k3b.desktop', - 'kmines.desktop': 'org.kde.kmines.desktop', - 'krita.desktop': 'org.kde.krita.desktop', - 'lshw.desktop': 'lshw-gui.desktop', - 'lshw-gtk.desktop': 'lshw-gui.desktop', - 'megaglest.desktop': 'org.megaglest.MegaGlest.desktop', - 'minetest.desktop': 'net.minetest.Minetest.desktop', - 'minitube.desktop': 'org.tordini.flavio.Minitube.desktop', - 'okular.desktop': 'org.kde.okular.desktop', - 'openmw.desktop': 'org.openmw.OpenMW.desktop', - 'parole.desktop': 'org.xfce.Parole.desktop', - 'pingus.desktop': 'org.seul.pingus.desktop', - 'qtcreator.desktop': 'org.qt-project.qtcreator.desktop', - 'qupzilla.desktop': 'org.qupzilla.QupZilla.desktop', - 'nextcloud.desktop': 'org.nextcloud.Nextcloud.desktop', - 'quasselclient.desktop': 'org.quassel_irc.QuasselClient.desktop', - 'qBittorrent.desktop': 'qbittorrent.desktop', - 'siril.desktop': 'org.free-astro.siril.desktop', - 'slack.desktop': 'com.slack.Slack.desktop', - 'skype.desktop': 'com.skype.Client.desktop', - 'sound-juicer.desktop': 'org.gnome.SoundJuicer.desktop', - 'spotify.desktop': 'com.spotify.Client.desktop', - 'steam.desktop': 'com.valvesoftware.Steam.desktop', - 'smb4k.desktop': 'org.kde.smb4k.desktop', - 'supertux2.desktop': 'org.supertuxproject.SuperTux.desktop', - 'telegramdesktop.desktop': 'org.telegram.desktop.desktop', - 'telegram-desktop.desktop': 'org.telegram.desktop.desktop', - 'thunderbird.desktop': 'mozilla-thunderbird.desktop', - 'tremulous.desktop': 'com.grangerhub.Tremulous.desktop', - 'viber.desktop': 'com.viber.Viber.desktop', - 'visual-studio-code.desktop': 'com.visualstudio.code.desktop', - 'vlc.desktop': 'org.videolan.VLC.desktop', - 'wxmaxima.desktop': 'wxMaxima.desktop', - 'Zoom.desktop': 'us.zoom.Zoom.desktop', -} - -for k, v in { k: v for k, v in id_mappings.items() }.items(): - id_mappings[v] = k - - -def make_desktop_map(repo_info): - desktop_map = {} - - def cb(package_info, f): - if f.startswith("/usr/share/applications/"): - desktop_id = os.path.basename(f) - old = desktop_map.get(desktop_id) - if old is None or util.package_cmp(package_info, old) < 0: - desktop_map[desktop_id] = package_info - - - util.foreach_file(repo_info, cb) - - for k in desktop_map: - desktop_map[k] = desktop_map[k][0] - - return desktop_map - -def get_desktop_map(): - return util.get_repo_cacheable('desktop-map', make_desktop_map) - -util.set_log_name(os.path.basename(sys.argv[0])) - -desktop_map = get_desktop_map() - -class Application: - def __init__(self): - self.name = None - self.description = None - self.homepage = None - self.package = None - self.extra_packages = None - self.flathub = None - self.fedora_id = None - self.flathub_id = None - self.odrs_id = None - self.star_total = None - self.stars = [None, None, None, None, None, None] - - @property - def canon_id(self): - if self.flathub_id is not None: - return self.flathub_id - elif self.fedora_id is not None: - return self.fedora_id - else: - return self.odrs_id - - @property - def display_name(self): - if self.name is not None: - return self.name - else: - if self.odrs_id.endswith('.desktop'): - return self.odrs_id[0:-8] - else: - return self.odrs_id - -def iterate_apps(store): - for app in store.get_apps(): - try: - is_desktop = app.get_id_kind() == AS.IdKind.DESKTOP - except ValueError: - is_desktop = False - if is_desktop: - yield app - -id_to_application = {} -name_to_application = {} -homepage_to_application = {} - -fedora_store = AS.Store() -fedora_store.from_file(Gio.File.new_for_path('out/fedora-appstream.xml.gz'), "", None) -for app in iterate_apps(fedora_store): - a = Application() - a.fedora_id = app.get_id() - a.name = app.get_name() - a.description = app.get_description() - a.homepage = app.get_url_item(AS.UrlKind.HOMEPAGE) - a.package = app.get_pkgnames()[0] - - id_to_application[a.fedora_id] = a - name_to_application[a.name] = a - homepage_to_application[a.homepage] = a - - -flathub_store = AS.Store() -flathub_store.from_file(Gio.File.new_for_path('out/flathub-appstream.xml.gz'), "", None) -for app in iterate_apps(flathub_store): - flathub_id = app.get_id() - name = app.get_name() - description = app.get_description() - homepage = app.get_url_item(AS.UrlKind.HOMEPAGE) - - id_app = id_to_application.get(flathub_id, None) - if id_app is not None: - id_app.flathub_id = flathub_id - continue - - other_id = id_mappings.get(flathub_id, None) - if other_id is not None: - other_id_app = id_to_application.get(other_id, None) - if other_id_app is not None: - other_id_app.flathub_id = flathub_id - id_to_application[flathub_id] = other_id_app - continue - - name_app = name_to_application.get(name, None) - homepage_app = homepage_to_application.get(homepage, None) - - if name_app is not None and homepage_app is not None: - assert name_app is homepage_app - if name_app is not None: - a = name_app - elif homepage_app is not None: - a = homepage_app - else: - a = Application() - a.name = name - a.description = description - a.homepage = homepage - - a.flathub_id = flathub_id - id_to_application[a.flathub_id] = a - -with open('out/ratings.json') as f: - ratings = json.load(f) - -for k, v in ratings.items(): - a = id_to_application.get(k, None) - if not a: - other_id = id_mappings.get(k, None) - if other_id is not None: - a = id_to_application.get(other_id, None) - if a: - id_to_application[k] = a - else: - a = Application() - if a.package is None: - package = desktop_map.get(k) - if package: - a.package = package - a.odrs_id = k - id_to_application[a.odrs_id] = a - for x in range(0, 6): - old = a.stars[x] - if old is None: - old = 0 - a.stars[x] = old + v['star' + str(x)] - old = a.star_total - if old is None: - old = 0 - a.star_total = old + v['total'] - -locale.setlocale(locale.LC_ALL, '') - -fedora_appstream = 0 -no_appstream = 0 -flathub = 0 -review_only = 0 - -output = [] - -apps = set(id_to_application.values()) - -packaged_apps = {a for a in apps if a.package is not None} -top_packaged_apps = sorted(packaged_apps, key=lambda a: -(a.star_total or 0))[0:100] - -info_json = subprocess.check_output(['fedmod', 'flatpak-report'] + [a.package for a in packaged_apps]) -info = json.loads(info_json) -for a in packaged_apps: - a.extra_packages = info['flatpaks'][a.package]['extra'] - -runtime_packages = {} -extra_packages = {} -for p, i in info['packages'].items(): - if i['runtime']: - runtime_packages[p] = { 'all': i['used_by']} - else: - extra_packages[p] = { 'all': i['used_by']} - -top_info_json = subprocess.check_output(['fedmod', 'flatpak-report'] + [a.package for a in top_packaged_apps]) -top_info = json.loads(top_info_json) - -for p, i in top_info['packages'].items(): - if i['runtime']: - runtime_packages[p]['top'] = i['used_by'] - else: - extra_packages[p]['top'] = i['used_by'] - -def dict_to_list(packages): - result = [] - for p, i in packages.items(): - x = { - 'package': p, - 'all': sorted(i['all']), - 'all_count': len(i['all']), - } - if 'top' in i: - x['top'] = sorted(i['top']) - x['top_count'] = len(i['top']) - result.append(x) - result.sort(key=lambda i: -i['all_count']) - - return result - -with open('reports/application-packages.json', 'w') as f: - json.dump({ - 'runtime': dict_to_list(runtime_packages), - 'extra': dict_to_list(extra_packages), - }, f) - -def sanitize_piece(m): - if m.group(1) is not None: - return m.group(1) - elif m.group(2) is not None: - return '<' - elif m.group(3) is not None: - return '>' - -def sanitize_description(description): - # This is specifically for a buggy appstream for GNOME Screenshot - description = re.sub(r'

    .*

    ', '', description) - # Main part of the sanitization - quote all <>& - description = re.sub(r'(

    |

    |
      |
    |
  • |
  • |[^<>]+)|(<)|(>)', sanitize_piece, description) - return description - -for a in sorted(apps, key=lambda a: (locale.strxfrm(a.display_name), a.canon_id)): - if a.fedora_id is not None: - fedora_appstream += 1 - elif a.package is not None: - no_appstream += 1 - elif a.flathub_id is not None: - flathub += 1 - else: - review_only += 1 - - output_item = { - 'name': a.display_name, - } - - if a.package is not None: - output_item['package'] = a.package - - if a.description is not None: - output_item['description'] = sanitize_description(a.description) - - if a.flathub_id is not None: - output_item['flathub'] = a.flathub_id - - if a.fedora_id is not None: - output_item['fedora'] = a.fedora_id - - if a.odrs_id is not None: - output_item['odrs'] = a.odrs_id - - if a.extra_packages is not None: - output_item['extra_packages'] = a.extra_packages - - if a.star_total is not None: - output_item['star_avg'] = sum((i * a.stars[i]) for i in range(0, 6))/sum((a.stars[i]) for i in range(0, 6)) - output_item['star_total'] = a.star_total - output_item['stars'] = a.stars - - output.append(output_item) -# print(a.display_name, a.package, a.flathub_id, a.fedora_id, a.odrs_id, a.homepage, a.star_total) - -with open('reports/applications.json', 'w') as f: - json.dump({ - 'applications': output, - 'summary': [ - ['In Fedora appstream', fedora_appstream], - ['In Fedora, not in appstream', no_appstream], - ['In Flathub, not in Fedora', flathub], - ['ODRS review, not in Flathub or Flathub', review_only], - ['Total', fedora_appstream + no_appstream + flathub + review_only], - ] - }, f, indent=4) diff --git a/tools/generate-files.sh b/tools/generate-files.sh deleted file mode 100755 index 24be4e3..0000000 --- a/tools/generate-files.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -out=$1 -base=$(basename $out) - -case $base in - freedesktop-*) - ns=org.freedesktop - version=1.6 - ;; - gnome-*) - ns=org.gnome - version=3.26 - ;; - *) - echo 1>&2 "Can't identify runtime for $base" - exit 1 - ;; -esac - -case $base in - *-Platform.files) - sdk= - type=Platform - ;; - *-Sdk.files) - sdk=--sdk - type=Sdk - ;; - *) - echo 1>&2 "Can't identify type for $base" - exit 1 - ;; -esac - -runtime="$ns.$type/x86_64/$version" - -echo "$base: listing files in $runtime" - -flatpak run --file-forwarding --command=/usr/bin/python3 $runtime @@ tools/list-files.py @@ $sdk > $out diff --git a/tools/generate-modulemd.py b/tools/generate-modulemd.py deleted file mode 100755 index eed400b..0000000 --- a/tools/generate-modulemd.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python3 -import sys -from yaml_utils import ordered_load, ordered_dump - -with open('flatpak-runtime.in.yaml') as f: - modulemd = ordered_load(f) - -def set_profile(profile_name, list_file): - with open(list_file) as f: - packages = [l.strip() for l in f] - print("{}: {} packages".format(profile_name, len(packages)), file=sys.stderr) - modulemd['data']['profiles'][profile_name]['rpms'] = packages - -set_profile('runtime', 'out/runtime.profile') -set_profile('runtime-base', 'out/runtime-base.profile') -set_profile('sdk', 'out/sdk.profile') -set_profile('sdk-base', 'out/sdk-base.profile') - -with open('flatpak-runtime.new.yaml', 'w') as f: - ordered_dump(modulemd, stream=f, default_flow_style=False, encoding="utf-8") diff --git a/tools/generate-runtime-report.py b/tools/generate-runtime-report.py deleted file mode 100755 index d4e2929..0000000 --- a/tools/generate-runtime-report.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/python3 - -from jinja2 import Environment, FileSystemLoader, select_autoescape -import json -import locale -import os -import re -import subprocess -import sys - -def start(msg): - print("{}: \033[90m{} ... \033[39m".format(os.path.basename(sys.argv[0]), msg), file=sys.stderr, end="") - sys.stderr.flush() - -def done(): - print("\033[90mdone\033[39m", file=sys.stderr) - -def warn(msg): - print("{}: \033[31m{}\033[39m".format(os.path.basename(sys.argv[0]), msg), file=sys.stderr) - -def fedmod_output(args): - return subprocess.check_output(['fedmod'] + args, encoding='utf-8') - -_nvr_to_name_re = re.compile('^(.*)-[^-]*-[^-]*') -def nvr_to_name(nvr): - return _nvr_to_name_re.match(nvr).group(1) - -class Package(object): - def __init__(self, name): - self.name = name - self.freedesktop_platform = 0 - self.freedesktop_platform_files = None - self.freedesktop_platform_required_by = None - self.gnome_platform = 0 - self.gnome_platform_files = None - self.gnome_platform_required_by = None - self.freedesktop_sdk = 0 - self.freedesktop_sdk_files = None - self.freedesktop_sdk_required_by = None - self.gnome_sdk = 0 - self.gnome_sdk_files = None - self.gnome_sdk_required_by = None - self.live = 0 - self.rf26 = 0 - self.source_package = None - self.flag = None - self._note = None - - @property - def runtimes(self): - return self.freedesktop_platform or self.gnome_platform or self.freedesktop_sdk or self.gnome_sdk - - @property - def klass(self): - if self.flag == 'F': - return "flagged" - elif self.flag == 'F?': - return "questionable" - elif self.flag == 'FD': - return "flagged-dep" - elif self.flag == 'W': - return "waived" - elif self.flag is not None and self.flag.startswith('E'): - return "extra" - elif self.gnome_platform and not self.live: - return "questionable" - - @property - def modules(self): - return package_to_module.get(self.name, "") - - @property - def note(self): - if self._note: - return self._note - elif self.gnome_platform and not self.live: - return "platform package not on Live image" - else: - return "" - - def why(self, which): - files = getattr(self, which + '_files') - if files is None: - files_str = '' - elif len(files) <= 3: - files_str= 'Files: ' + ' '.join(files) - else: - files_str = 'Files: ' + ' '.join(files[:3]) + ' ...' - - required_by = getattr(self, which + '_required_by') - if required_by is None: - required_by_str = '' - else: - required_by_str = '\n'.join('{} ({})'.format(req, provider) for req, provider in required_by) - - if files_str and required_by_str: - return files_str + '\n' + required_by_str - elif files_str: - return files_str - elif required_by_str: - return required_by_str - else: - return '' - - @property - def freedesktop_platform_why(self): - return self.why('freedesktop_platform') - - @property - def freedesktop_sdk_why(self): - return self.why('freedesktop_sdk') - - @property - def gnome_platform_why(self): - return self.why('gnome_platform') - - @property - def gnome_sdk_why(self): - return self.why('gnome_sdk') - - def inclusion(self, which): - level = getattr(self, which) - if level == 0: - return 'absent' - elif level == 1: - return 'dep' - else: - required_by = getattr(self, which + '_required_by', False) - if required_by is False: - return 'present' - elif required_by is not None and len(required_by) > 0: - return 'files' - elif self.flag is not None and self.flag.startswith('E'): - return 'extra' - else: - return 'root' - - @property - def freedesktop_platform_inclusion(self): - return self.inclusion('freedesktop_platform') - - @property - def freedesktop_sdk_inclusion(self): - return self.inclusion('freedesktop_sdk') - - @property - def gnome_platform_inclusion(self): - return self.inclusion('gnome_platform') - - @property - def gnome_sdk_inclusion(self): - return self.inclusion('gnome_sdk') - - @property - def live_inclusion(self): - return self.inclusion('live') - - @property - def rf26_inclusion(self): - return self.inclusion('rf26') - -class SourcePackage(object): - def __init__(self, name): - self.name = name - self.packages = [] - - @property - def modules(self): - old_modules = self.packages[0].modules - klass = self.klass - if klass == "build-platform": - new_module = "desktop-runtime" - elif klass == "build-sdk": - new_module = "flatpak-runtime" - else: - new_module = None - - if old_modules and new_module: - return old_modules + " ⇒ " + new_module - elif old_modules: - return old_modules - else: - return new_module - - @property - def sdk_only(self): - return sdk_only - - @property - def klass(self): - if self.packages[0].modules in ("", "installer"): - sdk_only = True - for package in self.packages: - if package.freedesktop_platform or package.gnome_platform: - sdk_only = False - if sdk_only: - return "build-sdk" - else: - return "build-platform" - else: - return "" - -class Letter(object): - def __init__(self, letter): - self.letter = letter - self.packages = [] - -# -# Get information about packages -# - -packages = dict() -def add_package(name, which, level, only_if_exists=False, source_package=None): - pkg = packages.get(name, None) - if pkg is None: - if only_if_exists: - return - pkg = Package(name) - packages[name] = pkg - if getattr(pkg, which) < level: - setattr(pkg, which, level) - if source_package is not None: - pkg.source_package = source_package - -def add_packages(source, which, resolve_deps=False, only_if_exists=False): - if isinstance(source, str): - start("Adding packages from {}".format(source)) - with open(source) as f: - pkgs = set(line.strip() for line in f) - else: - pkgs = source - - if resolve_deps: - resolved_packages = json.loads(fedmod_output(['resolve-deps', '--json'] + list(pkgs))) - for package in resolved_packages: - name = nvr_to_name(package['rpm']) - srpm_name = nvr_to_name(package['srpm']) - add_package(name, which, level=(2 if name in pkgs else 1), - source_package=srpm_name, only_if_exists=only_if_exists) - - for package in resolved_packages: - for req, providers in package['requires'].items(): - provider = nvr_to_name(providers[0]) - provider_package = packages.get(provider, None) - if provider_package is None: # filtered out of the resolve-deps output - e.g., fedora-release - continue - required_by = getattr(provider_package, which + '_required_by') - if required_by is None: - required_by = [] - setattr(provider_package, which + '_required_by', required_by) - required_by.append((nvr_to_name(package['rpm']), req)) - else: - for package in pkgs: - add_package(package, which, level=2, only_if_exists=only_if_exists) - - if isinstance(source, str): - done() - -def add_package_files(filename, which): - with open(filename) as f: - for line in f: - f, p = line.strip().split() - f = f[:-1] # strip trailing : - pkg = packages[p] - old = getattr(pkg, which + '_files') - if old is not None: - old.append(f) - else: - setattr(pkg, which + '_files', [f]) - -def read_package_notes(): - comment_re = re.compile(r'\s*#.*') - flag_re = re.compile(r'[A-Z_?]+$') - package_re = re.compile(r'\S+') - - with open("package-notes.txt") as f: - for line in f: - line = comment_re.sub('', line) - line = line.strip() - if line == '': - continue - parts = line.split(":", 2) - name = parts[0].strip() - if not re.match(package_re, name): - warn("Can't parse package note: {}".format(line)) - continue - if len(parts) == 1: - flag = note = None - elif len(parts) == 2: - x = parts[1].strip() - if flag_re.match(x): - flag = x - note = None - else: - note = x - flag = None - elif len(parts) == 3: - x = parts[1].strip() - if flag_re.match(x): - flag = x - note = parts[2].strip() - else: - flag = None - note = parts[1] + ':' + parts[2] - - yield name, note, flag - -add_packages('out/freedesktop-Platform.packages', 'freedesktop_platform', resolve_deps=True) -add_packages('out/freedesktop-Sdk.packages', 'freedesktop_sdk', resolve_deps=True) -add_packages('out/gnome-Platform.packages', 'gnome_platform', resolve_deps=True) -add_packages('out/gnome-Sdk.packages', 'gnome_sdk', resolve_deps=True) -add_packages('data/f27-live.packages', 'live', only_if_exists=True) -add_packages('data/f26-flatpak-runtime.packages', 'rf26', only_if_exists=True) - -add_package_files('out/freedesktop-Platform.matched', 'freedesktop_platform') -add_package_files('out/freedesktop-Sdk.matched', 'freedesktop_sdk') -add_package_files('out/gnome-Platform.matched', 'gnome_platform') -add_package_files('out/gnome-Sdk.matched', 'gnome_sdk') - -# Add extra packages -extra_base = [] -extra_base_sdk = [] -extra = [] -extra_sdk = [] - -for name, note, flag in read_package_notes(): - if flag == 'EB': - extra_base.append(name) - extra_base_sdk.append(name) - extra.append(name) - extra_sdk.append(name) - elif flag == 'EB_SDK': - extra_base_sdk.append(name) - extra_sdk.append(name) - elif flag == 'E': - extra.append(name) - extra_sdk.append(name) - elif flag == 'E_SDK': - extra_sdk.append(name) - -add_packages(extra_base, 'freedesktop_platform', resolve_deps=True) -add_packages(extra_base_sdk, 'freedesktop_sdk', resolve_deps=True) -add_packages(extra, 'gnome_platform', resolve_deps=True) -add_packages(extra_sdk, 'gnome_sdk', resolve_deps=True) - -source_packages = {} -for package in packages.values(): - source_package = source_packages.get(package.source_package, None) - if source_package is None: - source_package = SourcePackage(package.source_package) - source_packages[source_package.name] = source_package - source_package.packages.append(package) - -letters_map = dict() -for k, v in source_packages.items(): - v.packages.sort(key=lambda p: locale.strxfrm(p.name)) - l = v.name[0].upper() - letter = letters_map.get(l, None) - if letter is None: - letter = Letter(l) - letters_map[l] = letter - letter.packages.append(v) - -letters = [] -for k in sorted(letters_map.keys()): - letter = letters_map[k] - letter.packages.sort(key=lambda p: locale.strxfrm(p.name)) - letters.append(letter) - -start("Loading package to module map") -package_to_module = dict() - -output = fedmod_output(['list-rpms', '--list-modules']) -for l in output.split('\n'): - fields = l.strip().split() - if len(fields) != 2: - continue - package_to_module[fields[0]] = fields[1][1:-1] -done() - -# Add package notes to packages -for name, note, flag in read_package_notes(): - pkg = packages.get(name, None) - if pkg is None: - warn("Package note for missing package: {}".format(name)) - continue - - if flag is not None: - pkg.flag = flag - if note is not None: - pkg._note = note - -# -# Get summary information for unmatched files -# - -def count_lines(fname): - with open(fname) as f: - return len(list(f)) - -unmatched_counts = { - 'freedesktop_platform': count_lines('out/freedesktop-Platform.unmatched'), - 'gnome_platform': count_lines('out/gnome-Platform.unmatched'), - 'freedesktop_sdk': count_lines('out/freedesktop-Sdk.unmatched'), - 'gnome_sdk': count_lines('out/gnome-Sdk.unmatched'), -} - -# -# Generate the profiles -# -def generate_profile(outfile, which): - with open(outfile, 'w') as f: - for letter in letters: - for src in letter.packages: - for pkg in src.packages: - if getattr(pkg, which) != 0: - print(pkg.name, file=f) - -generate_profile('out/runtime-base.profile', 'freedesktop_platform') -generate_profile('out/sdk-base.profile', 'freedesktop_sdk') -generate_profile('out/runtime.profile', 'gnome_platform') -generate_profile('out/sdk.profile', 'gnome_sdk') - -# -# Generate the report -# - -env = Environment( - loader=FileSystemLoader('.'), - autoescape=select_autoescape(['html', 'xml']), - trim_blocks=True, - lstrip_blocks=True -) - -template = env.get_template('runtime-template.html') - -with open('reports/runtime.html', 'w') as f: - f.write(template.render(letters=letters, unmatched=unmatched_counts, package_to_module=package_to_module)) diff --git a/tools/list-files.py b/tools/list-files.py deleted file mode 100755 index b358fae..0000000 --- a/tools/list-files.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/python3 - -import os -import re -import sys - -sdk = len(sys.argv) > 1 and sys.argv[1] == '--sdk' - -def output_dir(d): - for f in sorted(os.listdir(d)): - full = os.path.join(d, f) - if not os.path.isdir(full): - print(os.path.join(d, f)) - -def output_dir_recurse(d): - for dirName, subdirs, files in os.walk(d): - for f in sorted(files): - print(os.path.join(dirName, f)) - -output_dir('/usr/bin') - -python_dirs = [] -for f in os.listdir('/usr/lib'): - full = os.path.join('/usr/lib', f) - if (re.match(r'^.*\.so\.\d+$', f) is not None or - re.match(r'^.*\.so$', f) is not None and not os.path.islink(full)): - print(full) - if (re.match('python[2-9]*', f)): - python_dirs.append(os.path.join(full, 'site-packages')) - -for d in python_dirs: - output_dir_recurse(d) - -output_dir_recurse('/usr/share/fonts') -output_dir_recurse('/usr/share/themes') - -if sdk: - output_dir_recurse('/usr/include') - output_dir('/usr/lib/pkgconfig') - output_dir('/usr/share/pkgconfig') - -# import pkgutil -# for f in pkgutil.iter_modules(): -# try: -# path = f[0].path -# if path.find('site-packages') < 0: -# continue -# except AttributeError: -# continue -# if not(f[1].startswith('_')): -# print(f, 'python3dist({})'.format(f[1])) - diff --git a/tools/resolve-files.py b/tools/resolve-files.py deleted file mode 100755 index 80a4fd1..0000000 --- a/tools/resolve-files.py +++ /dev/null @@ -1,409 +0,0 @@ -#!/usr/bin/python3 - -import os -import re -import sys - -import util -from util import start, done, warn - -ignore = set() -rename = dict() - -bin_ignore = [ - # A bunch of binaries built as part of nss. A few of these are - # in /usr/lib64/nss/unsupported-tools/ as part of nss-tools, the rest are not considered - # worth installing at all (test utilities, etc.) - 'addbuiltin', 'atob', 'baddbdir', 'bltest', 'btoa', 'certcgi', 'chktest', 'conflict', - 'crmftest', 'dbtest', 'derdump', 'dertimetest', 'digest', 'ecperf', 'encodeinttest', - 'fipstest', 'httpserv', 'listsuites', 'makepqg', 'mangle', 'multinit', 'nonspr10', - 'ocspclnt', 'ocspresp', 'oidcalc', 'p7content', 'p7env', 'p7sign', 'p7verify', - 'pk11gcmtest', 'pk11mode', 'pk1sign', 'pkix-errcodes', 'pp', 'pwdecrypt', 'remtest', - 'rsaperf', 'sdrtest', 'secmodtest', 'selfserv', 'shlibsign', 'signtool', 'strsclnt', - 'symkeyutil', 'tstclnt', 'vfychain', 'vfyserv', - - # Script added into nss by openembedded - 'signlibs.sh', - - # /usr/share/doc/aspell/aspell-import in Fedora - 'aspell-import', - - # Removed in perl-5.27 - 'c2ph', - - # Removed - https://lists.fedorahosted.org/archives/list/elfutils-devel@lists.fedorahosted.org/thread/22LIIMXI6EDGCOIO6QFSBUO2KHEXIGSJ/ - 'eu-ld', - - # compatibility perl script in zenity for something quite old, not packaged in fedora - 'gdialog', - - # An openembedded thing - # "Tool that installs the GNU config.guess / config.sub into a directory tree" - 'gnu-configize', - - # GPG test program (https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=tree;f=tests) - 'gpgscm', - - # An implementation of tar for cross-platform compatibility, disabled in gnupg2.spec - 'gpgtar', - - # Removed from gtk-doc - # https://git.gnome.org/browse/gtk-doc/commit/?id=46df4354abed5724697fd5e39630c5bbc6637cc4 - 'gtkdoc-mktmpl', - - # Versioned python-3.5 binaries - 'idle3.5', 'pydoc3.5', 'python3.5', 'python3.5-config', 'python3.5m', 'python3.5m-config', '2to3-3.5', - - # installed in openembedded with a coreutils suffix along with the more normal version - 'kill.coreutils', 'uptime.coreutils', - - # nettle utilities not currently packaged in fedora - # (https://src.fedoraproject.org/rpms/nettle/c/2ec204e2de17006b566c9ff7d90ec65ca1680ed5?branch=master) - 'nettle-hash', 'nettle-lfib-stream', 'nettle-pbkdf2', 'pkcs1-conv', 'sexp-conv', - - # Not built by default as of util-linux-2.29 - '/usr/bin/pg', - - # These are installed as -64 in Fedora, we just ignore them because they will be - # pulled in by the corresponding library - 'gdk-pixbuf-query-loaders', 'gtk-query-immodules-2.0', - 'gio-querymodules', 'gtk-query-immodules-3.0', - - # Removed in krb5-1.13 (https://web.mit.edu/kerberos/krb5-1.13/README-1.13.5.txt) - 'krb5-send-pr', - - # Removed in util-linux-2.30' - 'tailf', - - # OpenEmbedded uses Debian's ca-certificates, Fedora is different - 'update-ca-certificates', - - ######################################################################### - # In the freedesktop runtime for some reason, doesn't seem useful - 'bsdcat', - - # Same as 'openssl rehash', but as a perl script (openssl-perl) - 'c_rehash', - - # From pulseaudio, wrapper script to start a pulseaudio server as if it was ESD (pulseaudio-esound-compat) - 'esdcompat', - - # Just need the library (gcab) - 'gcab', - - # Probably not useful in the runtime or the SDK (gstreamer-plugins-base-tools) - 'gst-device-monitor-1.0', 'gst-discoverer-1.0', 'gst-play-1.0', - - # Python utilities (python2-tools) - 'idle', 'smtpd.py', - - # Python3 utilities (python3-tools) - 'idle3', '2to3', - - # A binary from cups, we just need the libraries (cups-libs) - 'ipptool', - - # Minimal profiler (glibc-utils) - 'pcprofiledump', - - # (pcre-tools) - 'pcre2grep', 'pcre2test', - - # Random test program from libproxy (libproxy-bin) - 'proxy', - - # Tools from libvpx (libvpx-utils) - 'vpxdec', 'vpxenc', -] -ignore.update('/usr/bin/' + x for x in bin_ignore) - -bin_rename = { - # lcms2 compiled with --program-suffix=2 in Fedora, even though there are no actual - # conflicts between lcms and lcms2 - jpegicc was renamed to jpgicc, etc. - 'jpgicc': 'jpgicc2', - 'linkicc': 'linkicc2', - 'psicc': 'psicc2', - 'tificc': 'tificc2', - 'transicc': 'transicc2', -} -rename.update({ '/usr/bin/' + k: '/usr/bin/' + v for k, v in bin_rename.items() }) - -lib_ignore = [ - # Symlink created in freedesktop.org flatpak runtime, not standard - 'libEGL_indirect.so.0', - - # Removed in gpgme-1.9.0 - 'libgpgme-pthread.so.11', - - # Not enabled in fedora (consider fixing) - 'libharfbuzz-gobject.so.0', - - # Part of glibc - 'libssp.so.0', -] -ignore.update('/usr/lib64/' + x for x in lib_ignore) - -fonts_ignore = { - # Added in 2.36 - 'dejavu/DejaVuMathTeXGyre.ttf', -} -ignore.update('/usr/share/fonts/' + x for x in fonts_ignore) - -lib_rename = { - # Newer in Fedora - 'libhunspell-1.3.so.0': 'libhunspell-1.5.so.0', - 'libwebp.so.6': 'libwebp.so.7', - 'libwebpmux.so.2': 'libwebpmux.so.3', - 'libpcre2-posix.so.1': 'libpcre2-posix.so.2', - 'libvpx.so.3': 'libvpx.so.4', - 'libkadm5clnt_mit.so.9': 'libkadm5clnt_mit.so.11', - 'libkadm5srv_mit.so.9': 'libkadm5srv_mit.so.11', - - # Newer in Flatpak runtime - 'libprocps.so.6': 'libprocps.so.4', # procps-3.10 vs. procps-3.12 - 'libgif.so.7': 'libgif.so.4', # giflib 4 vs giflib-5 - https://bugzilla.redhat.com/show_bug.cgi?id=822844 - - # Fedora arch-handling - 'ld-linux.so.2': 'ld-linux-x86-64.so.2', -} -rename.update({ '/usr/lib64/' + k: '/usr/lib64/' + v for k, v in lib_rename.items() }) - -include_ignore = { - # https://git.gnome.org/browse/at-spi2-core/commit/?id=1eb223bb48464d707290ef540581e9763b0ceee8 - 'at-spi-2.0/atspi/atspi-gmain.c', - - # Removed in 7.55 https://github.com/curl/curl/commit/73a2fcea0b4adea6ba342cd7ed1149782c214ae3 - 'curl/curlbuild-64.h', 'curl/curlbuild.h', 'curl/curlrules.h', - - # Not enabled on Fedora - 'harfbuzz/hb-gobject-enums.h', - 'harfbuzz/hb-gobject-structs.h', - 'harfbuzz/hb-gobject.h', - - # https://github.com/hunspell/hunspell/commit/99675e791d123cbe1be914b1a49dd83062134301 - 'hunspell/affentry.hxx', 'hunspell/affixmgr.hxx', 'hunspell/baseaffix.hxx', 'hunspell/dictmgr.hxx', - 'hunspell/filemgr.hxx','hunspell/hashmgr.hxx','hunspell/hunzip.hxx','hunspell/langnum.hxx', - 'hunspell/phonet.hxx','hunspell/replist.hxx','hunspell/suggestmgr.hxx', - - # Removed in openssl-1.1 - 'openssl/des_old.h', 'openssl/dso.h', 'openssl/krb5_asn.h', 'openssl/kssl.h', 'openssl/pqueue.h', - 'openssl/ssl23.h', 'openssl/ui_compat.h', -} -ignore.update('/usr/include/' + x for x in include_ignore) - -include_rename = { - 'assuan.h': 'libassuan2/assuan.h', - 'nss3/nssck.api': 'nss3/templates/nssck.api', -} -rename.update({ '/usr/include/' + k: '/usr/include/' + v for k, v in include_rename.items() }) - -nspr_include = [ - 'nspr.h', 'plarena.h', 'plarenas.h', 'plbase64.h', 'plerror.h', 'plgetopt.h', 'plhash.h', - 'plstr.h', 'pratom.h', 'prbit.h', 'prclist.h', 'prcmon.h', 'prcountr.h', 'prcpucfg.h', - 'prcvar.h', 'prdtoa.h', 'prenv.h', 'prerr.h', 'prerror.h', 'prinet.h', 'prinit.h', - 'prinrval.h', 'prio.h', 'pripcsem.h', 'private/pprio.h', 'private/pprthred.h', 'private/prpriv.h', - 'prlink.h', 'prlock.h', 'prlog.h', 'prlong.h', 'prmem.h', 'prmon.h', 'prmwait.h', 'prnetdb.h', - 'prolock.h', 'prpdce.h', 'prprf.h', 'prproces.h', 'prrng.h', 'prrwlock.h', 'prshm.h', 'prshma.h', - 'prsystem.h', 'prthread.h', 'prtime.h', 'prtpool.h', 'prtrace.h', 'prtypes.h', 'prvrsion.h', - 'prwin16.h', 'stropts.h', 'obsolete/pralarm.h', 'obsolete/probslet.h', 'obsolete/protypes.h', 'obsolete/prsem.h' -] -rename.update({ '/usr/include/' + x: '/usr/include/nspr4/' + x for x in nspr_include }) - -pc_ignore = { - # Not enabled on Fedora - 'harfbuzz-gobject.pc', - - # https://github.com/ostroproject/ostro-os/blob/master/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch - 'libassuan.pc', - - # http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch - 'gpg-error.pc', - - # http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-support/libgcrypt/files/0001-Add-and-use-pkg-config-for-libgcrypt-instead-of-conf.patch - 'libgcrypt.pc', -} -ignore.update('/usr/lib64/pkgconfig/' + x for x in pc_ignore) - -pc_rename = { - 'python-3.5.pc': 'python-3.6.pc', - 'python-3.5m.pc': 'python-3.6m.pc', -} -rename.update({ '/usr/lib64/pkgconfig/' + k: '/usr/lib64/pkgconfig/' + v for k, v in pc_rename.items() }) -rename.update({ '/usr/share/pkgconfig/' + k: '/usr/share/pkgconfig/' + v for k, v in pc_rename.items() }) - -ignore_patterns = [ - # Flatpak runtime has a versioned gawk-4.1.3 - r'/usr/bin/gawk-.*', - - # Architecture specific aliases for gcc, binutils, etc - r'^/usr/bin/x86_64-unknown-linux-.*', - - # From NSPR, intentionally not installed on Fedora - r'/usr/include/md/.*', - - # .install files litter the include directories of openembedded - r'.*/\.install$', - - # .pyc files shouldn't affect what is needed - r'.*\.pyc$', -] -ignore_compiled = [re.compile(x) for x in ignore_patterns] - -rename_patterns = [ - (r'^/usr/include/c\+\+/6.2.0/(.*)', r'/usr/include/c++/7/\1'), - (r'^/usr/include/c\+\+/7/x86_64-unknown-linux/(.*)', r'/usr/include/c++/7/x86_64-redhat-linux/\1'), - (r'^/usr/include/python3.5m/(.*)', r'/usr/include/python3.6m/\1'), - (r'^/usr/lib64/pkgconfig/(.*proto.pc)', r'/usr/share/pkgconfig/\1'), - (r'^/usr/lib/python3.5/(.*)', r'/usr/lib/python3.6/\1'), - (r'^/usr/lib64/python3.5/(.*)', r'/usr/lib64/python3.6/\1'), - (r'^/usr/share/fonts/liberation-fonts/(.*)', r'/usr/share/fonts/liberation/\1'), - (r'^/usr/share/fonts/cantarell/(.*)', r'/usr/share/fonts/abattis-cantarell/\1'), -] -rename_compiled = [(re.compile(a), b) for a, b in rename_patterns] - -global_package_ignore_patterns = [ - # The Fedora packages of fcitx pull in qt4. While would be nice to match the upstream - # runtime in including fcitx for full compatiblity when the host is using fcitx, - # it doesn't seem worth the increase in runtime size. - '^fcitx-.*$', -] -global_package_ignore_compiled = [re.compile(p) for p in global_package_ignore_patterns] - -platform_package_ignore_patterns = [ - "^.*-devel$", - "^libappstream-glib-builder$", # may not need in the sdk either - "^gtk-doc$", - "^icu$", # may not need in the sdk either - '^llvm$', - '^sqlite$', -] -platform_package_ignore_compiled = [re.compile(p) for p in platform_package_ignore_patterns] - - -# We need to look up a lot of file dependencies. dnf/libsolv is not fast at doing -# this (at least when we look up files one-by-one) so we create a hash table that -# maps from *all* files in the distribution to the "best" package that provides -# the file. To further speed this up, we pickle the result and store it, and only -# recreate it when the DNF metadata changes. We gzip the pickle to save space -# (70M instead of 700M), this slows things down by about 2 seconds. -# -def make_files_map(repo_info): - files_map = {} - - def cb(package_info, f): - old = files_map.get(f) - if old is None or util.package_cmp(package_info, old) < 0: - files_map[f] = package_info - - util.foreach_file(repo_info, cb) - - start("Finalizing files map") - for k in files_map: - files_map[k] = files_map[k][0] - done() - - return files_map - -def get_files_map(): - return util.get_repo_cacheable('files-map', make_files_map) - -if len(sys.argv) != 2: - print("Usage: resolve-files.py INFILE", file=sys.stderr) - sys.exit(1) - -inpath = sys.argv[1] -if not inpath.endswith('.files'): - print("INFILE must have .files suffix", file=sys.stderr) - sys.exit(1) - -util.set_log_name(inpath) - -base_path = inpath[:-len('.files')] -is_platform = "-Platform" in base_path -is_sdk = "-Sdk" in base_path - -start("Reading file list") - -to_resolve = [] -with open(inpath) as f: - for l in f: - r = l.rstrip() - if r.startswith('/usr/lib/'): - r = '/usr/lib64/' + r[len('/usr/lib/'):] - to_resolve.append(r) - -to_resolve.sort() - -done() - -files_map = get_files_map() -found_packages = set() - -start("Resolving files to packages") - -matched_file = open(base_path + '.matched', 'w') -unmatched_file = open(base_path + '.unmatched', 'w') -unmatched_count = 0 - -for r in to_resolve: - if r in ignore: - continue - - skip = False - for p in ignore_compiled: - if p.match(r) is not None: - skip = True - if skip: - continue - - if r in rename: - r = rename[r] - - for p, replacement in rename_compiled: - if p.match(r) is not None: - r = p.sub(replacement, r) - - if os.path.dirname(r) == '/usr/lib64': - search = [r, '/lib64/' + os.path.basename(r)] - elif r.startswith('/usr/lib64') and r.find('/site-packages/') > 0: - # Python packages can be either in /usr/lib64 or /usr/lib - search = [r, '/usr/lib/' + r[len('/usr/lib64/'):]] - elif r.startswith('/usr/bin/'): - search = [r, '/bin/' + os.path.basename(r), '/usr/sbin/' + os.path.basename(r), '/sbin/' + os.path.basename(r)] - else: - search = [r] - - if r.startswith('/usr/lib64/libLLVM'): - # freedesktop SDK builds "split" LLVM libraries - found_packages.add('llvm-libs') - continue - - for s in search: - providing = files_map.get(s, None) - if providing is not None: - break - - if providing is None: - print(r, file=unmatched_file) - unmatched_count += 1 - else: - if any(p.match(providing) is not None for p in global_package_ignore_compiled): - continue - - if is_platform and any(p.match(providing) is not None for p in platform_package_ignore_compiled): - continue - - found_packages.add(providing) - print("{}: {}".format(r, providing), file=matched_file) - -unmatched_file.close() -matched_file.close() - -with open(base_path + '.packages', 'w') as f: - for p in sorted(found_packages): - print(p, file=f) - -done() - -if unmatched_count > 0: - warn("{} unmatched files, see {}".format(unmatched_count, base_path + ".unmatched")) diff --git a/tools/util.py b/tools/util.py deleted file mode 100644 index 0062e7a..0000000 --- a/tools/util.py +++ /dev/null @@ -1,161 +0,0 @@ -import gzip -import hashlib -import pickle -import rpm -import os -import sys -import xml.etree.ElementTree as ET -import xml.sax - -XDG_CACHE_HOME = os.environ.get("XDG_CACHE_HOME") or os.path.expanduser("~/.cache") - -# This needs to be in sync with fedmod -REPOS = [ - "f28-packages" -] - -_log_name = None - -def set_log_name(name): - global _log_name - _log_name = name - -def warn(msg): - print("{}: \033[31m{}\033[39m".format(_log_name, msg), file=sys.stderr) - -def error(msg): - print("{}: \033[31m{}\033[39m".format(_log_name, msg), file=sys.stderr) - sys.exit(1) - -def start(msg): - print("{}: \033[90m{} ... \033[39m".format(_log_name, msg), file=sys.stderr, end="") - sys.stderr.flush() - -def done(): - print("\033[90mdone\033[39m", file=sys.stderr) - -def package_cmp(p1, p2): - n1, e1, v1, r1, a1 = p1 - n2, e2, v2, r2, a2 = p2 - - if a1 == 'i686' and a2 != 'i686': - return 1 - if a1 != 'i686' and a2 == 'i686': - return -1 - - if n1.startswith('compat-') and not n2.startswith('compat-'): - return 1 - elif n2.startswith('compat-') and not n1.startswith('compat-'): - return -1 - - if n1 < n2: - return -1 - elif n1 > n2: - return 1 - - if e1 is None: - e1 = '0' - if e2 is None: - e2 = '0' - - return - rpm.labelCompare((e1, v1, r1), (e2, v2, r2)) - -class FilesMapHandler(xml.sax.handler.ContentHandler): - def __init__(self, cb): - self.cb = cb - self.package_info = None - self.name = None - self.arch = None - self.epoch = None - self.version = None - self.release = None - self.file = None - self.package_info = None - - def startElement(self, name, attrs): - if name == 'package': - self.name = attrs['name'] - self.arch = attrs['arch'] - elif name == 'version': - if self.name is not None: - self.epoch = attrs['epoch'] - self.version = attrs['ver'] - self.release = attrs['rel'] - elif name == 'file': - self.file = '' - - def endElement(self, name): - if name == 'package': - self.package_info = None - elif name == 'file': - if self.package_info is None: - self.package_info = (self.name, self.epoch, self.version, self.release, self.arch) - self.cb(self.package_info, self.file) - self.file = None - - def characters(self, content): - if self.file is not None: - self.file += content - -def foreach_file(repo_info, cb): - for repo in REPOS: - start("Scanning files for {}".format(repo)) - repo_dir, repomd_contents = repo_info[repo] - root = ET.fromstring(repomd_contents) - - ns = {'repo': 'http://linux.duke.edu/metadata/repo'} - filelists_location = root.find("./repo:data[@type='filelists']/repo:location", ns).attrib['href'] - filelists_path = os.path.join(repo_dir, filelists_location) - if os.path.commonprefix([filelists_path, repo_dir]) != repo_dir: - done() - error("{}: filelists directory is outside of repository".format(repo_dir)) - - handler = FilesMapHandler(cb) - with gzip.open(filelists_path, 'rb') as f: - xml.sax.parse(f, handler) - - done() - -def get_repo_cacheable(name, generate): - hash_text = '' - repos_dir = os.path.join(XDG_CACHE_HOME, "fedmod/repos") - repo_info = {} - for repo in REPOS: - repo_dir = os.path.join(repos_dir, repo, 'x86_64') - repomd_path = os.path.join(repo_dir, 'repodata/repomd.xml') - try: - with open(repomd_path, 'rb') as f: - repomd_contents = f.read() - except (OSError, IOError): - print("Cannot read {}, try 'fedmod fetch-metadata'".format(repomd_path), file=sys.stderr) - sys.exit(1) - - repo_info[repo] = (repo_dir, repomd_contents) - hash_text += '{}|{}\n'.format(repo, hashlib.sha256(repomd_contents).hexdigest()) - - repo_hash = hashlib.sha256(hash_text.encode("UTF-8")).hexdigest() - - cache_path = os.path.join('out', name + ".gz") - - try: - with gzip.open(cache_path, 'rb') as f: - old_repo_hash = f.read(64).decode('utf-8') - if old_repo_hash == repo_hash: - start("Reading " + name) - data = pickle.load(f) - done() - - return data - except FileNotFoundError: - pass - - data = generate(repo_info) - - start("Writing " + name) - with gzip.open(cache_path, 'wb') as f: - f.write(repo_hash.encode('utf-8')) - pickle.dump(data, f) - done() - - return data - diff --git a/tools/yaml_utils.py b/tools/yaml_utils.py deleted file mode 100644 index 1272836..0000000 --- a/tools/yaml_utils.py +++ /dev/null @@ -1,25 +0,0 @@ -import yaml -# https://stackoverflow.com/questions/5121931/in-python-how-can-you-load-yaml-mappings-as-ordereddicts - -from collections import OrderedDict - -def ordered_load(stream, Loader=yaml.Loader, object_pairs_hook=OrderedDict): - class OrderedLoader(Loader): - pass - def construct_mapping(loader, node): - loader.flatten_mapping(node) - return object_pairs_hook(loader.construct_pairs(node)) - OrderedLoader.add_constructor( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - construct_mapping) - return yaml.load(stream, OrderedLoader) - -def ordered_dump(data, stream=None, Dumper=yaml.SafeDumper, **kwds): - class OrderedDumper(Dumper): - pass - def _dict_representer(dumper, data): - return dumper.represent_mapping( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - data.items()) - OrderedDumper.add_representer(OrderedDict, _dict_representer) - return yaml.dump(data, stream, OrderedDumper, **kwds)
    {{ letter.letter }}FD/PGN/PFD/SGN/SLIVERF26
    {{ spackage.name }}{{ spackage.modules }}
    {{ package.name }}{{ package.note }}