[Bug 2047943] Review Request: hpn-ssh - performance and functionality enhancements for OpenSSH

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=2047943



--- Comment #5 from Chris Rapier <rapier@xxxxxxx> ---
(In reply to Jerry James from comment #4)
> https://bugzilla.redhat.com/show_bug.cgi?id=2047943
>
> Jerry James <loganjerry@xxxxxxxxx> changed:
>
>             What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                   CC|                            |loganjerry@xxxxxxxxx
>
>
>
> --- Comment #4 from Jerry James <loganjerry@xxxxxxxxx> ---
> Welcome to Fedora, Chris. Here is my review of this package.
>
> Package Review
> ==============
>
> Legend:
> [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
>
> Issues:
> =======
> I realize that you inherited many of these issues from the Fedora openssh
> spec file, but I'm reporting them anyway as a conscientious reviewer.

Which is a good thing

> First the automatically generated issues:
>
> - systemd_post is invoked in %post, systemd_preun in %preun, and
>    systemd_postun in %postun for Systemd service files.
>    Note: Systemd service file(s) in hpnssh-server
>    See: https://docs.fedoraproject.org/en-US/packaging-
>    guidelines/Scriptlets/#_scriptlets
> - systemd_user_post is invoked in %post and systemd_user_preun in %preun
>    for Systemd user units service files.
>    Note: Systemd user unit service file(s) in hpnssh-clients
>    See: https://docs.fedoraproject.org/en-US/packaging-
>    guidelines/Scriptlets/#_user_units
>
> And now my comments:
>
> - There is already a package named pam_ssh_agent_auth.  You cannot reuse this
>    name.  Either rename it or, if it does not need to be different from the
>    openssh version, suppress it.  If you rename the package, we also have to be
>    sure the two packages can be installed in parallel.

Ugh. Okay, I'll look into that. My guess is that it needs to be renamed as I
need to patch the pam_ssh_agent_auth to build against pthreads. I'll verify to
see if that's actually true or a hold over from an earlier build attempt.
Stupidly I forgot to make notes about that when I did that back in 2020.

> - There is already a directory named /usr/libexec/openssh, owned by the openssh
>    package.  Is it write to add the hpnssh files there, or should it use
>    /usr/libexec/hpnssh?

Actually, it makes sense to rename that. The only think in the the sftp-server
and I've already renamed that. I can move the install location and update the
path.

> - Dependencies between the main package and subpackages should include %{?_isa}
>    when the packages are both archful.  In the clients subpackage, for example,
>    the dependency on the main package should look like this:
>
>    Requires: %{name}%{?_isa} = %{version}-%{release}
>
>    See:
>   https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_base_package

Okay, I was following the openssh package on that. I'll review the
documentation and update to match best paractices.

> - Are Source0 and Source1 downloadable from somewhere?  If so, please change
>    both of those to full URLs.

Not at this time but I think I can swing that through work.

> - Since the main package has License: BSD, there is no point repeating that in
>    the pam_ssh_agent_auth subpackage.

Again, taken from the openssh package. I can remove that.

> - Speaking of the license, there are other licenses besides BSD at play here:
>    Beerware: md5crypt.{c,h}
>    Public domain: rijndael.{c,h}
>    ISC: addr.{c,h}, addrmatch.c, auth-options.{c,h}, bitmatp.{c,h}, etc.
>

Yeah, the source code is a mishmash of a bunch of difference licenses and I
can't normalize them on to a single license. Is that a problem?

> - There is a macro for doing GPG verification.  The first line in %prep should
>    be:
>
>    %{gpgverify} --keyring='%{SOURCE3}' --signature='%{SOURCE1}'
> --data='%{SOURCE0}'

I'll get that resovled. More cruft from the openssh package. Which probably
doesn't surprise you.

> https://docs.fedoraproject.org/en-US/packaging-guidelines/#_verifying_signatures
>
> - The openssh spec file has switched from gtk2 to gtk3.  Should that change
>    be made to hpnssh as well?

Yup. When I started this they were still using gtk2 and I didn't check if that
had changed in newer versions of openssh.

> - The comment on line 468 of the spec file is a bit puzzling.  RPM does handle
>    nested %if statements.

More from the openssh package. I can resolve that if you think it is important.

> - The first line of %install should be removed.  See the 3rd bullet here:
>    https://docs.fedoraproject.org/en-US/packaging-guidelines/#_tags_and_sections
>
> - Nearly all of the %attr directives in the %files are unnecessary.  See
>    https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_permissions
>
> - The mechanisms used to create users and groups have changed.  See
>    https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/
>
> - The most recent changelog entry has an incorrect version number.  Instead of
>    8.8p1-2, it should be 8.8p1_hpn16v1-2.
>
> - See the rpmlint output below for a few other minor issues.


And again, the perils of building on someone else's work when you aren't
entirely sure of what you are doing. I think I can resolve these issues.

I'll also work on cleaning up as much as I can in the lint output.



> ===== MUST items =====
>
> C/C++:
> [x]: Package does not contain kernel modules.
> [x]: Package contains no static executables.
> [x]: Development (unversioned) .so files in -devel subpackage, if present.
>       Note: Unversioned so-files in private %_libdir subdirectory (see
>       attachment). Verify they are not in ld path.
> [x]: If your application is a C or C++ application you must list a
>       BuildRequires against gcc, gcc-c++ or clang.
> [x]: Header files in -devel subpackage, if present.
> [x]: Package does not contain any libtool archives (.la)
> [x]: Rpath absent or only used for internal libs.
>
> Generic:
> [x]: Package is licensed with an open-source compatible license and meets
>       other legal requirements as defined in the legal section of Packaging
>       Guidelines.
> [!]: License field in the package spec file matches the actual license.
>       Note: Checking patched sources after %prep for licenses. Licenses
>       found: "Unknown or generated", "ISC License", "BSD 2-Clause License",
>       "ISC License BSD 2-Clause License", "GNU General Public License v3.0
>       or later", "X11 License [generated file]", "*No copyright* Beerware
>       License", "*No copyright* Public domain", "BSD 3-Clause License BSD
>       2-Clause License", "BSD 3-Clause License", "BSD 4-Clause License",
>       "BSD 2-clause NetBSD License BSD 2-Clause License", "ISC License BSD
>       3-Clause License", "ISC License BSD 2-clause NetBSD License BSD
>       2-Clause License", "SSLeay", "MIT License", "OpenSSL License", "GNU
>       General Public License v2.0 or later [generated file]", "FSF Unlimited
>       License [generated file]", "BSD 2-Clause with views sentence",
>       "Historical Permission Notice and Disclaimer - sell variant [generated
>       file]", "curl License", "BSD 2-Clause with views sentence GNU General
>       Public License". 577 files have unknown license. Detailed output of
>       licensecheck in /home/jamesjer/2/review-hpnssh/licensecheck.txt
> [x]: License file installed when any subpackage combination is installed.
> [x]: Package must own all directories that it creates.
>       Note: Directories without known owners: /usr/lib/systemd/user,
>       /usr/lib/systemd, /usr/lib64/security, /etc/profile.d, /etc/pam.d
> [!]: Package does not own files or directories owned by other packages.
>       Note: Dirs in package are owned also by: /usr/libexec/openssh(openssh,
>       x11-ssh-askpass)
> [x]: %build honors applicable compiler flags or justifies otherwise.
> [x]: Package contains no bundled libraries without FPC exception.
> [x]: Changelog in prescribed format.
> [!]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
>       beginning of %install.
>       Note: rm -rf %{buildroot} present but not required
> [x]: Sources contain only permissible code or content.
> [-]: Package contains desktop file if it is a GUI application.
> [-]: Development files must be in a -devel package
> [x]: Package uses nothing in %doc for runtime.
> [x]: Package consistently uses macros (instead of hard-coded directory
>       names).
> [x]: Package is named according to the Package Naming Guidelines.
> [!]: Package does not generate any conflict.
> [x]: Package obeys FHS, except libexecdir and /usr/target.
> [-]: If the package is a rename of another package, proper Obsoletes and
>       Provides are present.
> [x]: Requires correct, justified where necessary.
> [x]: Spec file is legible and written in American English.
> [x]: Package contains systemd file(s) if in need.
> [x]: Useful -debuginfo package or justification otherwise.
> [x]: Package is not known to require an ExcludeArch tag.
> [x]: Large documentation must go in a -doc subpackage. Large could be size
>       (~1MB) or number of files.
>       Note: Documentation size is 143360 bytes in 19 files.
> [x]: Package complies to the Packaging Guidelines
> [x]: Package successfully compiles and builds into binary rpms on at least
>       one supported primary architecture.
> [x]: Package installs properly.
> [x]: Rpmlint is run on all rpms the build produces.
>       Note: There are rpmlint messages (see attachment).
> [x]: If (and only if) the source package includes the text of the
>       license(s) in its own file, then that file, containing the text of the
>       license(s) for the package is included in %license.
> [x]: Package requires other packages for directories it uses.
> [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
> [x]: Macros in Summary, %description expandable at SRPM build time.
> [x]: Dist tag is present.
>       Note: Multiple Release: tags found
> [x]: Package does not contain duplicates in %files.
> [x]: Permissions on files are set properly.
> [x]: Package must not depend on deprecated() packages.
> [x]: Package use %makeinstall only when make install DESTDIR=... doesn't
>       work.
> [x]: Package is named using only allowed ASCII characters.
> [x]: Package does not use a name that already exists.
> [x]: Package is not relocatable.
> [x]: Sources used to build the package match the upstream source, as
>       provided in the spec URL.
> [x]: Spec file name must match the spec package %{name}, in the format
>       %{name}.spec.
> [x]: File names are valid UTF-8.
> [x]: Packages must not store files under /srv, /opt or /usr/local
>
> ===== SHOULD items =====
>
> Generic:
> [!]: Uses parallel make %{?_smp_mflags} macro.
> [-]: If the source package does not include license text(s) as a separate
>       file from upstream, the packager SHOULD query upstream to include it.
> [x]: Final provides and requires are sane (see attachments).
> [!]: Fully versioned dependency in subpackages if applicable.
>       Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in hpnssh-
>       clients , hpnssh-server , hpnssh-keycat , hpnssh-askpass ,
>       pam_ssh_agent_auth
> [?]: Package functions as described.
> [x]: Latest version is packaged.
> [x]: Package does not include license text files separate from upstream.
> [x]: Patches link to upstream bugs/comments/lists or are otherwise
>       justified.
> [x]: Scriptlets must be sane, if used.
> [!]: SourceX tarball generation or download is documented.
>       Note: Package contains tarball without URL, check comments
> [x]: Sources are verified with gpgverify first in %prep if upstream
>       publishes signatures.
>       Note: gpgverify is not used.
> [-]: Description and summary sections in the package spec file contains
>       translations for supported Non-English languages, if available.
> [x]: Package should compile and build into binary rpms on all supported
>       architectures.
> [x]: %check is present and all tests pass.
> [x]: Packages should try to preserve timestamps of original installed
>       files.
> [x]: Reviewer should test that the package builds in mock.
> [x]: Buildroot is not present
> [x]: Package has no %clean section with rm -rf %{buildroot} (or
>       $RPM_BUILD_ROOT)
> [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
> [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
> [x]: Sources can be downloaded from URI in Source: tag
> [x]: SourceX is a working URL.
> [x]: Spec use %global instead of %define unless justified.
>
> ===== EXTRA items =====
>
> Generic:
> [x]: Rpmlint is run on debuginfo package(s).
>       Note: There are rpmlint messages (see attachment).
> [x]: Rpmlint is run on all installed packages.
>       Note: There are rpmlint messages (see attachment).
> [x]: Large data in /usr/share should live in a noarch subpackage if package
>       is arched.
> [x]: Package should not use obsolete m4 macros
> [x]: Spec file according to URL is the same as in SRPM.
>
>
> Rpmlint
> -------
> ================================================ rpmlint session starts
> ================================================
> rpmlint: 2.2.0
> configuration:
>      /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
>      /etc/xdg/rpmlint/fedora.toml
>      /etc/xdg/rpmlint/licenses.toml
>      /etc/xdg/rpmlint/scoring.toml
>      /etc/xdg/rpmlint/users-groups.toml
>      /etc/xdg/rpmlint/warn-on-functions.toml
> checks: 32, packages: 7
>
> hpnssh.x86_64: E: setgid-binary /usr/libexec/openssh/hpnssh-keysign ssh_keys
> 2555
> pam_ssh_agent_auth.x86_64: E: pam-unauthorized-module pam_ssh_agent_auth.so
> hpnssh.x86_64: W: non-standard-gid /usr/libexec/openssh/hpnssh-keysign ssh_keys
> hpnssh.x86_64: E: non-standard-executable-perm
> /usr/libexec/openssh/hpnssh-keysign 2555
> hpnssh.x86_64: E: non-standard-executable-perm
> /usr/libexec/openssh/hpnssh-keysign 2555
> hpnssh-server.x86_64: E: non-standard-dir-perm /usr/share/empty.hpnsshd 711
> hpnssh-server.x86_64: E: non-readable /etc/hpnssh/sshd_config 600
> hpnssh-server.x86_64: E: non-readable /etc/hpnssh/sshd_config.d/50-redhat.conf
> 600
> hpnssh-server.x86_64: E: non-readable /etc/sysconfig/hpnsshd 640
> hpnssh-askpass.x86_64: W: non-conffile-in-etc
> /etc/profile.d/gnome-hpnssh-askpass.csh
> hpnssh-askpass.x86_64: W: non-conffile-in-etc
> /etc/profile.d/gnome-hpnssh-askpass.sh
> hpnssh-askpass.x86_64: W: no-documentation
> hpnssh.spec:584: W: mixed-use-of-spaces-and-tabs (spaces: line 584, tab: line
> 416)
> hpnssh.spec: W: invalid-url Source1: hpnssh-8.8p1_hpn16v1.tar.gz.asc
> hpnssh.spec: W: invalid-url Source0: hpnssh-8.8p1_hpn16v1.tar.gz
> hpnssh.x86_64: W: incoherent-version-in-changelog 8.8p1-2
> ['8.8p1_hpn16v1-2.fc36', '8.8p1_hpn16v1-2']
> hpnssh-server.x86_64: W: dangerous-command-in-%post rm
> hpnssh-server.x86_64: W: binary-or-shlib-calls-gethostbyname /usr/sbin/hpnsshd
> ================ 7 packages and 0 specfiles checked; 8 errors, 10 warnings, 8
> badness; has taken 19.3 s ================
>
>
> Rpmlint (installed packages)
> ----------------------------
> ================================================ rpmlint session starts
> ================================================
> rpmlint: 2.2.0
> configuration:
>      /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
>      /etc/xdg/rpmlint/fedora.toml
>      /etc/xdg/rpmlint/licenses.toml
>      /etc/xdg/rpmlint/scoring.toml
>      /etc/xdg/rpmlint/users-groups.toml
>      /etc/xdg/rpmlint/warn-on-functions.toml
> checks: 32, packages: 6
>
> hpnssh.x86_64: E: setgid-binary /usr/libexec/openssh/hpnssh-keysign ssh_keys
> 2555
> pam_ssh_agent_auth.x86_64: E: pam-unauthorized-module pam_ssh_agent_auth.so
> hpnssh.x86_64: W: non-standard-gid /usr/libexec/openssh/hpnssh-keysign ssh_keys
> hpnssh.x86_64: E: non-standard-executable-perm
> /usr/libexec/openssh/hpnssh-keysign 2555
> hpnssh.x86_64: E: non-standard-executable-perm
> /usr/libexec/openssh/hpnssh-keysign 2555
> hpnssh-server.x86_64: E: non-standard-dir-perm /usr/share/empty.hpnsshd 711
> hpnssh-server.x86_64: E: non-readable /etc/hpnssh/sshd_config 600
> hpnssh-server.x86_64: E: non-readable /etc/hpnssh/sshd_config.d/50-redhat.conf
> 600
> hpnssh-server.x86_64: E: non-readable /etc/sysconfig/hpnsshd 640
> hpnssh-askpass.x86_64: W: non-conffile-in-etc
> /etc/profile.d/gnome-hpnssh-askpass.csh
> hpnssh-askpass.x86_64: W: non-conffile-in-etc
> /etc/profile.d/gnome-hpnssh-askpass.sh
> hpnssh-askpass.x86_64: W: no-documentation
> hpnssh.x86_64: W: incoherent-version-in-changelog 8.8p1-2
> ['8.8p1_hpn16v1-2.fc36', '8.8p1_hpn16v1-2']
> hpnssh-server.x86_64: W: dangerous-command-in-%post rm
> hpnssh-server.x86_64: W: binary-or-shlib-calls-gethostbyname /usr/sbin/hpnsshd
> ================= 6 packages and 0 specfiles checked; 8 errors, 7 warnings, 8
> badness; has taken 0.8 s =================
>
>
> Unversioned so-files
> --------------------
> pam_ssh_agent_auth: /usr/lib64/security/pam_ssh_agent_auth.so
>
> Source checksums
> ----------------
> https://github.com/jbeverly/pam_ssh_agent_auth/archive/pam_ssh_agent_auth-0.10.4.tar.gz
> :
>    CHECKSUM(SHA256) this package     :
> 9d440de6627940c09eadc342cc7d8bc9823654fd1a2be11c4f5820dd073054e0
>    CHECKSUM(SHA256) upstream package :
> 9d440de6627940c09eadc342cc7d8bc9823654fd1a2be11c4f5820dd073054e0
>
>
> Requires
> --------
> hpnssh (rpmlib, GLIBC filtered):
>      /bin/sh
>      /sbin/nologin
>      audit-libs
>      config(hpnssh)
>      libc.so.6()(64bit)
>      libcrypto.so.3()(64bit)
>      libcrypto.so.3(OPENSSL_3.0.0)(64bit)
>      libselinux
>      libselinux.so.1()(64bit)
>      libselinux.so.1(LIBSELINUX_1.0)(64bit)
>      libz.so.1()(64bit)
>      rtld(GNU_HASH)
>
> hpnssh-clients (rpmlib, GLIBC filtered):
>      /bin/sh
>      /usr/bin/sh
>      config(hpnssh-clients)
>      crypto-policies
>      hpnssh
>      libc.so.6()(64bit)
>      libcrypto.so.3()(64bit)
>      libcrypto.so.3(OPENSSL_3.0.0)(64bit)
>      libedit.so.0()(64bit)
>      libfido2.so.1()(64bit)
>      libgcc_s.so.1()(64bit)
>      libgcc_s.so.1(GCC_3.0)(64bit)
>      libgcc_s.so.1(GCC_3.3.1)(64bit)
>      libgssapi_krb5.so.2()(64bit)
>      libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)
>      libselinux.so.1()(64bit)
>      libselinux.so.1(LIBSELINUX_1.0)(64bit)
>      libz.so.1()(64bit)
>      rtld(GNU_HASH)
>
> hpnssh-server (rpmlib, GLIBC filtered):
>      /bin/sh
>      /usr/bin/bash
>      /usr/sbin/useradd
>      config(hpnssh-server)
>      crypto-policies
>      hpnssh
>      libaudit.so.1()(64bit)
>      libc.so.6()(64bit)
>      libcom_err.so.2()(64bit)
>      libcrypt.so.2()(64bit)
>      libcrypt.so.2(XCRYPT_2.0)(64bit)
>      libcrypto.so.3()(64bit)
>      libcrypto.so.3(OPENSSL_3.0.0)(64bit)
>      libgcc_s.so.1()(64bit)
>      libgcc_s.so.1(GCC_3.0)(64bit)
>      libgcc_s.so.1(GCC_3.3.1)(64bit)
>      libgssapi_krb5.so.2()(64bit)
>      libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)
>      libkrb5.so.3()(64bit)
>      libkrb5.so.3(krb5_3_MIT)(64bit)
>      libpam.so.0()(64bit)
>      libpam.so.0(LIBPAM_1.0)(64bit)
>      libselinux.so.1()(64bit)
>      libselinux.so.1(LIBSELINUX_1.0)(64bit)
>      libsystemd.so.0()(64bit)
>      libsystemd.so.0(LIBSYSTEMD_209)(64bit)
>      libz.so.1()(64bit)
>      pam
>      rtld(GNU_HASH)
>      systemd
>
> hpnssh-keycat (rpmlib, GLIBC filtered):
>      config(hpnssh-keycat)
>      hpnssh
>      libc.so.6()(64bit)
>      libpam.so.0()(64bit)
>      libpam.so.0(LIBPAM_1.0)(64bit)
>      rtld(GNU_HASH)
>
> hpnssh-askpass (rpmlib, GLIBC filtered):
>      hpnssh
>      libX11.so.6()(64bit)
>      libc.so.6()(64bit)
>      libgdk-x11-2.0.so.0()(64bit)
>      libglib-2.0.so.0()(64bit)
>      libgobject-2.0.so.0()(64bit)
>      libgtk-x11-2.0.so.0()(64bit)
>      rtld(GNU_HASH)
>
> pam_ssh_agent_auth (rpmlib, GLIBC filtered):
>      libc.so.6()(64bit)
>      libcrypto.so.3()(64bit)
>      libcrypto.so.3(OPENSSL_3.0.0)(64bit)
>      libpam.so.0()(64bit)
>      libpam.so.0(LIBPAM_1.0)(64bit)
>      rtld(GNU_HASH)
>
> hpnssh-debuginfo (rpmlib, GLIBC filtered):
>
> hpnssh-debugsource (rpmlib, GLIBC filtered):
>
>
>
> Provides
> --------
> hpnssh:
>      config(hpnssh)
>      hpnssh
>      hpnssh(x86-64)
>
> hpnssh-clients:
>      config(hpnssh-clients)
>      hpnssh-clients
>      hpnssh-clients(x86-64)
>
> hpnssh-server:
>      config(hpnssh-server)
>      hpnssh-server
>      hpnssh-server(x86-64)
>
> hpnssh-keycat:
>      config(hpnssh-keycat)
>      hpnssh-keycat
>      hpnssh-keycat(x86-64)
>
> hpnssh-askpass:
>      hpnssh-askpass
>      hpnssh-askpass(x86-64)
>
> pam_ssh_agent_auth:
>      pam_ssh_agent_auth
>      pam_ssh_agent_auth(x86-64)
>
> hpnssh-debuginfo:
>      debuginfo(build-id)
>      hpnssh-debuginfo
>      hpnssh-debuginfo(x86-64)
>
> hpnssh-debugsource:
>      hpnssh-debugsource
>      hpnssh-debugsource(x86-64)
>
>
>
> Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
> Command line :/usr/bin/fedora-review -n hpnssh -m fedora-36-x86_64
> Buildroot used: fedora-36-x86_64
> Active plugins: C/C++, Generic, Shell-api
> Disabled plugins: Python, Ruby, Perl, R, Java, SugarActivity, Ocaml, PHP,
> fonts, Haskell
> Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
>


-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
https://bugzilla.redhat.com/show_bug.cgi?id=2047943
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/package-review@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux