Arch KDE packages not compiled using -fpic ?

this week-end i gave prelink a shot. then i realized that actually most (if not all) kde apps could not be prelinked.
it looks like they're not compiled with -fpic option, and prelink cannot "link against non-pic libraries".
it's not that i absolutely want to prelink my whole system, it's just that i thought this -fpic option was a good thing so i'm surprised it's not used in arch kde packages.
any plans to enable -fpic for kde in the near future ?

brazzmonkey wrote:a few months ago, i had a gentoo box compiled with USE="pic" and didn't encounter any problems. but this use flag is not used by every ebuild.
i didn't know -fpic could slow things... and never noticed it.
I don't notice the slowdown on my Athlon64, but on my old (socket A) Sempron 2500+ and my even older (socket A) Duron 1.2GHz, you can really feel it.  Probably because the Athlon64 has enough grunt to cover the slowdown though

Similar Messages

  • Package Not Compiled?

    I am trying to INSERT into a table that is called LMR_TENANTS. When I try to INSERT via Oracle APEX I get the following error:
    >
    ORA-04063: package body "LILLEYMAN.CG$LMR_TENANTS" has errors ORA-06508: PL/SQL: could not find program unit being called: "LILLEYMAN.CG$LMR_TENANTS" ORA-06512: at "LILLEYMAN.CG$BIS_LMR_TENANTS", line 1 ORA-04088: error during execution of trigger 'LILLEYMAN.CG$BIS_LMR_TENANTS'
    I assume this is because the package it is referring to is not compiled properly.
    If I got to the actual package it is referring to, I see it has the following errors:
    >
    Line Position Text
    19 8 PLS-00201: identifier 'LMR_TENANTS' must be declared
    19 8 PL/SQL: Declaration ignored
    23 16 PLS-00320: the declaration of the type of this expression is incomplete or malformed
    22 1 PL/SQL: Declaration ignored
    51 16 PLS-00320: the declaration of the type of this expression is incomplete or malformed
    50 1 PL/SQL: Declaration ignored
    56 32 PLS-00201: identifier 'LMR_TENANTS' must be declared
    56 1 PL/SQL: Declaration ignored
    Here is a link to a pastebin of the package, since it is rather large. This is something that has been generated by Oracle APEX.
    I am unable to understand why I am getting this error at all.
    http://pastebin.com/m58df134a
    Any ideas as to what the problem may be? What I should try to do to fix it?
    Edited by: apexdev88 on 10-Aug-2009 03:33

    I figured out that apparrently LMR_TENANTS was not owned by the schema.
    Now I am getting the following error in relation to the package body:
    22 20 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    22 5 PL/SQL: Statement ignored
    27 20 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    27 20 PL/SQL: Statement ignored
    40 20 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    40 5 PL/SQL: Statement ignored
    45 5 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    45 5 PL/SQL: Statement ignored
    74 7 PLS-00201: identifier 'CG$ERRORS.PUSH' must be declared
    74 7 PL/SQL: Statement ignored
    76 7 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    76 7 PL/SQL: Statement ignored
    90 5 PLS-00201: identifier 'CG$ERRORS.PUSH' must be declared
    90 5 PL/SQL: Statement ignored
    92 5 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    92 5 PL/SQL: Statement ignored
    110 24 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    110 9 PL/SQL: Statement ignored
    117 24 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    117 9 PL/SQL: Statement ignored
    22 20 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    22 5 PL/SQL: Statement ignored
    27 20 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    27 20 PL/SQL: Statement ignored
    40 20 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    40 5 PL/SQL: Statement ignored
    45 5 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    45 5 PL/SQL: Statement ignored
    74 7 PLS-00201: identifier 'CG$ERRORS.PUSH' must be declared
    74 7 PL/SQL: Statement ignored
    76 7 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    76 7 PL/SQL: Statement ignored
    90 5 PLS-00201: identifier 'CG$ERRORS.PUSH' must be declared
    90 5 PL/SQL: Statement ignored
    92 5 PLS-00201: identifier 'CG$ERRORS.RAISE_FAILURE' must be declared
    92 5 PL/SQL: Statement ignored
    110 24 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    110 9 PL/SQL: Statement ignored
    117 24 PLS-00201: identifier 'CG$ERRORS.MSGGETTEXT' must be declared
    117 9 PL/SQL: Statement ignored

  • Most packages not compiling properly

    Hello Arch users!
    For some time now, I have been experiencing a weird issue. When trying to compile packages (mostly AUR packages),  I receive contradictory messages from the make command. Let me show you:
    checking if gcc accepts -dumpversion option... yes
    checking gcc version... 4.7.0
    checking if g++ accepts -dumpversion option... yes
    checking g++ version... 4.7.0
    configure: Excellent, the C, C++ and Fortran compilers are all GCC 4.7.0
    configure: GCC 4.0.0 is very buggy and can not build Sage.
    configure: Please use a gcc of at least 4.0.1.
    configure: error: Exiting due to the use of a version of GCC that is too buggy
    ERROR: You do not have all of the prerequisites needed
    to build Sage from source. See the errors above.
    make[1]: *** [installed/prereq-0.9] Error 1
    And I have GCC 4.7 installed. I use multilib. Tell me if you need anything else.

    Yes, I do have multilib-devel installed.
    I noticed that another symptom has arised: Maple 13 keeps complaining that it does not have kernel connection. Related?
    Most packages I try to build complain that either gcc, intltool or some dev package is out-of-date. This is really weird...

  • Why can't constants of a package not be use in view definition?

    Hi,
    maybe the answer is obvious, but I don't understand why this is not possible.
    We have a large numer of key tables which define an ID-number (PK, generated by sequence), a short and long description as well as a numeric ID (AK1, in most cases autogenerated by max+1), which is intended for usage in programs, when a certain row of a key must be selected in the business layer. We call this column the type-ID of the key. A type-ID cannot be changed once assigned. Rows cannot be deleted physical, only logical (i.e. set column ACTIVE to FALSE).
    We have a large numer of PL/SQL packages that use those type ID's. For every business object we define a globally available package that contains all necessary type ID's defined as constants, e.g.
    create or replace package GLOBTEST is
    CONST1 constant KEY_TABLE.TYPE_ID%type := 1;
    end;
    In all other packes we can use these constants (e.g. GLOBTEST.CONST1) instead of those "magic numbers". Now we have the situation that we must define quite a few views that must use those type IDs. But here we can't use these constants, e.g.
    create or replace view V_TEST as
    select GLOBTEST.CONST1 as CONST1 from DUAL;
    results in error. What would be the best way to avoid using "magic constants"? We already defined functions which do nothing more than returning the appropriate constant. However we have the feeling that this is not the best way.
    TIA,
    Stefan
    Message was edited by:
    stefanm

    Stefan,
    You could try creating OBJECT views. I believe you would be able to call the constants already defined in packages in these object views. In the object views you can create member functions in case you want to do some manipulation of these constants or other data.
    Shakti
    http://www.impact-sol.com
    Developers of Guggi Oracle - Tool for DBAs and Developers

  • Package not compiling

    I am trying to compile a package, it takes long time to compile how can I check the session that is blocking it ?

    user650888 wrote:
    I am trying to compile a package, it takes long time to compile how can I check the session that is blocking it ?It is probably you that is blocking it.
    If procedure does DML, package can not be changed while uncommitted DML exists.
    One way to clear the log jam is to terminate all sessions & then start a new session that compiles the code.

  • Slackware TGZ to Arch Linux Package Converter

    I have two programs that interest me (LilyPond and Battle for Wesnoth) that don't have Arch Linux packages and compiling them would involve hunting everywhere for obscure dependencies (LilyPond in particular) so I just downloaded the Slackware packages, inspected them and found that by unzipping them onto the root folder (as superuser) and running the install script (if there is one) I can get them to run with minimal fuss.
    Has the idea of making a Slackware to Arch package converter been brought up before? Is there any problems with this? (Slackware is i386-optimised if I remember correctly, but I think it's still worth it since there is more Slackware packages than Arch Linux ones out there.)

    i3839 wrote:Flames?? Where? You sure you didn't misread something?
    Probably.
    Here's what I read, admitting that it doesn't seem quite as bad the second time around...:
    Oh? All I was hearing is that Arch already has enough packages, and that the devs are overloaded and almost down.
    "you don't know which way is up, you contradict yourself while continuing to ignore the problems and aren't fixing anything".
    Also getting custom packages into Arch's official repository seems a bit hard currently, not to mention that it's totally unclear how to do that (drop it in incomming and wait a year? Lotto?).
    "The system isn't working and you haven't done anything to try to fix it. I haven't read or noticed any of the threads illustrating that this topic has been argued to death and isn't going unnoticed"
    Maintaining packages is the most work, and every distro maintains the same packages over and over again. Tell me why to not use good, working packages from another sane distro?
    "The other distros are better."
    (Personally, I don't care if anybody likes another distro better, but if so, use it instead, don't talk about it)
    Changing GCC often gives the same problem as updating to new major libraries. Simply leave the old GCC libs or make a seperate package for them. Currently it's rather impossible in Arch to install new packages with an outdated system, if that's solved then it's also easy to use Slackware packages.
    "The Arch philosophy of keeping packages stable but up to date is just plain wrong.  I don't bother to pacman -Syu before I mention problems."
    Of course if would be best if there was a nice, good binary package standard that works on all distros, so that the application makers can make and maintain the packages themselves, but that's utopia (paths are too often hardcoded for instance).
    "hey, I do have some good ideas".
    It isn't a matter of being able to do something or not, it's a matter of convenience. All programs should be relative easy to compile from source, but that doesn't mean that everyone should compile all programs themselves.
    "There aren't enough Arch binaries to go around"
    OR:
    "ABS sucks"
    OR:
    "Hold my hand, I can't compile."
    OR:
    "I use Arch cause I don't like Gentoo". :-D 
    Yeah, some of that is a little (or quite, or even very) harsh, you can blame it on me rather than taking it to heart.
    As for the slackware packages issue, I'm personally not writing a script to convert them; I've never used slackware in my life. The idea has merit, but I get tired of people discussing pros and cons and not doing anything. I think that's because I'm about as bad as anyone on that front, possibly worse.
    Dusty

  • Package body greater than 2160 bytes does not compile in Object Browser

    Hi there,
    I initially created a package in Apex 2.1.0.0.39 using the Object Browser and it compiled OK. The message in the box above the source code says "PL/SQL code successfully compiled (17:51:08)". I then added more code and eventually when I clicked the "Compile" button" the message to say successfull compilation or any error message was not displayed. The box above the source code remains blank. After much trial and error I found that by adding just one more letter to the end of a comment that it would not compile, but by removing the letter then it would compile most of the time. I downloaded the package and found that the size of the download .PLB file was 2160 bytes. Editing the PLB file using a text editor to increase the size and executing it in SQL*PLUS does work.
    Is this a fundamental limit on the size of packages that can be compiled using the Object Browser, or is there an Apex configuration parameter that can be modified to allow larger packages? If this is a limit then why isn't an informational message displayed? Or is this in fact an installation issue or an issues with Apex Object Browser?
    Further information:
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    PL/SQL Release 10.2.0.1.0 - Production
    CORE 10.2.0.1.0 Production
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    I installed this version back at the beginning of the year for training purposes and have not made any conifiguration changes that I am aware of, or installed any further upgrades/software since.
    All help gratefully received by this "definitely a nubie".
    Regards.
    John.

    John,
    If you are using, as you said, Application Express version 2.1.0.0.39, be aware that this is a very old (and not a supported) version. If you have trouble with the latest version (currently 3.2), feel free to report them here.
    Scott

  • Why not? kdemod + arch kde, same for arch live +chakra

    Sorry for bug you people, but now that the waters are calm, i wanna ask a simple cuestion, why 2 proyects for the same task, arch kde and kdemod, same for arch live and chakra.
    as user of both i think if all join the efforts, arch could be even better and erase the problems  spesific for kde  or kdemod, i now... linux is choice, and diferent aproachs(now are very close i think). but, ARCH Linux is one of the finnest distros and unified it, could make ready for be a popular wide users target distro.
    linux is choice, but community is common efforts for a greater resoults.

    drelyn86 wrote:Maybe the Chakra project should use Arch KDE rather than KDEmod. Then they could spend less time splitting packages, and more time fixing that god-awful Shaman application. I understand their liveCD is still in Alpha testing.
    Agree! Altho arch should have used kdemod as its kde in the first place

  • SQL*Developer 3EA1 - Not Compiling package Body

    Don't know if this is best place to post this, if not tell me where.
    In some packages i'm getting: Error: ORA-06550: linha 1, coluna 64:PLS-00172: literal de cadeia de caracteres demasiado extenso; Sorry about the portuguese error message but it's cpopy paste from compiler log.
    The strange about this is that the package is compiling with no errors on Version 2.1.1.64 and also on others editors. In both packages i had this was after formatting the code.
    So far is the only bug i got, keep on the good work.
    António Cunha

    Just tried from pl/sql node. The package body does not compile from there either. The issue seems to be the size of the package. The package size is 35,000 characters and spaces. I can remove any combination of source lines to get it down to 32,000 characters and spaces and it will compile.
    Edited by: dagtech on Oct 21, 2010 9:34 AM

  • Simple Java class using SQLJ not compiling.

    Hello all, I have a simple Java class that is using SQLJ. It will not compile though. I am not sure what I should set for classpath. Any ideas? This is what I have so far.
    set PATH=C:\jdk1.2.2\bin;c:\oracle\ora81\jdbc\bin;
    set CLASSPATH="C:\oracle\ora81\jdbc\lib\classes12.zip;C:\oracle\ora81\sqlj\lib\runtime12.zip;C:\oracle\ora81\sqlj\lib\translator.zip;C:\jdk1.2.2\lib\*.*"
    then
    javac SQLJTester.java
    Here is my .java file ---
    import java.io.*;
    import java.sql.*;
    import sqlj.runtime.*;
    import sqlj.runtime.ref.*;
    public class SQLJTester {
    public static void update() throws Exception {
    java.sql.Timestamp timeNow;
    #sql {
    BEGIN
    :timeNow := sysdate;
    END
    public static void main (String[] args) {
    try {
    SQLJTester.update();
    System.out.println ("Updated successfully");
    catch (Exception e) {
    System.out.println ("Caught an exception.");
    Thanks ahead for your time,
    Justin

    When sqlj files are compiled and translted to java file with them the file with extension .ser is also generated. browsers do not recognise this .ser files they only understand .class files which the download using <codebase> instead of class path. so thats why you r not able to use sqlj in servlet. try to customize the profile. Now can some one inform how to use sqlj from eclipse. does it support?. i need to downoad sqlj.exe for that. if anyone has idea from where i can download sqlj.exe pls inform me at [email protected]

  • How do I migrate from KDEMOD back to Arch's KDE package?

    I've been a fan of KDEMOD for a long time, now that they are phasing it out, I'm kinda stuck in the limbo and would like to move to Arch's KDE package, is there a seamless way that you guys can recommend while keeping my KDE configurations?
    Thanks!

    I would back up your ~/.kde4
    cp -vR ~/.kde4 ~./kde4bak
    In theory you should be able to comment out the kdemod repos in pacman.conf and then run
    pacman -Syyuu
    to refresh the databases and downgrade from kdemod.
    You should then be able to install KDE from [extra] or [kde-unstable] if the latter is enabled
    You might also want to get a list of installed KDEmod packages to know what KDE packages to get

  • [svn:fx-trunk] 8417: Remove themes from the package that are not compiling cleanly

    Revision: 8417
    Author:   [email protected]
    Date:     2009-07-07 04:50:21 -0700 (Tue, 07 Jul 2009)
    Log Message:
    Remove themes from the package that are not compiling cleanly
    bug: https://bugs.adobe.com/jira/browse/SDK-21144
    qa: yes
    doc:
    checkintests: pass
    Ticket Links:
        http://bugs.adobe.com/jira/browse/SDK-21144
    Modified Paths:
        flex/sdk/trunk/build.xml

  • KDE packages should be split

    I am a Gentoo user. In portage kde packages are splited out. For example:
    I can install "ksnapshot" or "kpdf" without pulling whole kdegraphics package with a lot of other tools for graphics. In Arch Linux i have to install whole kdegraphics package to get for example kpdf. It also will install kooka, kuickshow, kolourpaint and lots of other programs that I don't need. So it would be nice if I could install separate KDE programs without complete sets.

    Thought I'd look into helping out, some day soon, by splitting out KDE packages -- or at least look into what amount of work it might be (before jumping in, blind).  My first step was to write to Dan Armak, former Gentoo KDE maintanier.  Since he sent such an informative reply, I wanted to post it here as a way to 1) preserve it (or back it up); and 2) to share.
    Here's my inquiry:
    Dan,
    Am interested in splitting the current "monolithic" packages for the
    distro Arch Linux.  I saw your e-mail address on the Gentoo wiki and
    wanted to ask: Do you have any, say, shell scripts that help you do
    this for Gentoo?  If so, would you be willing to share them?  Could
    you share any other tips on how to do this task?
    Thanks,
    Here's Dan's informative reply:
    Hello,
    First off, I quit Gentoo development a few months ago. danarmak@OBSCURED1
    will stop receiving mail sometime soon, so please mail me at
    danarmak@OBSCURED2 and fix the link in that wiki if you can.
    About splitting packages: I don't have any scripts that'd help you (what we
    have is ebuild-specific), but the info we've gathered while creating the
    split KDE ebuilds will probably be useful.
    When splitting the ebuilds, we first had to list the split packages mapped to
    each monolithic package. Some of the toplevel dirs in the monolithic tarball
    are upstream-deprecated, some split packages include more than one top-level
    dir, etc.
    Then we had to map out the inter-dependencies between split packages. This
    include many build-time deps that are not actually runtime deps, because
    upstream apparently isn't used to the idea of selectively compiling only one
    app; distros which aren't source-based like Gentoo compile everything and
    then just package in pieces.
    And finally we had to check which of the deps (and reverse deps) the
    monolithic kdepim package had belonged to which derived split ebuild.
    I've never used Arch Linux; will you need to take per-split-package compile
    time deps into account? If you do, this will probably be the most tricky
    part. Some apps rely on libraries being built in-tree, and not just present
    in $DESTDIR. So to build e.g. kmail, you need to take some 9 libraries from
    kdepim, which are installed by other packages, and copy or symlink the
    installed .so and .la files back into you build tree. Similar things happen
    with other buildtime-generated stuff.
    Luckily you can gather all this info from the Gentoo ebuilds (viewcvs:
    http://sources.gentoo.org/viewcvs.py/gentoo-x86/).
    eclass/kde-functions.eclass defines the KDE_DERIVATION_MAP variable. This maps
    split packages to monolithic ones, so you can see what all there is. Then you
    can look at the ebuilds for each split package.
    The global variables starting with KM (for kde-meta-) in each ebuild are
    instructions to the split ebuild build system. There's a brief explanation of
    what they do in eclass/kde-meta.eclass (comment block starting with "Set the
    following variables"). So looking at e.g. the kmail ebuild
    (kde-base/kmail/kmail-3.5.4.ebuild) you'll see:
    DEPEND=, RDEPEND=: normal build- and run-time dependencies.
    KMCOPYLIB: as described above, these libs are copied from the live system to
    the build tree.
    KMEXTRACTONLY: these extra dirs are extracted (from the kdepim tarball) but
    are not compiled. The kmail compilation accesses non-installed headers there
    or whatever.
    KMCOMPILEONLY: this dir is extracted and compiled, but not installed. Probably
    builds e.g. a static library included by kmail.
    KMEXTRA: stuff that's built and installed - basically pieces of kmail outside
    the main kdepim/kmail directory.
    HTH. Feel free to ask for more info. You can also ask the remaining Gentoo KDE
    packagers at kde@OBSCURED3.
    Dan Armak
    Also want to add: No, I don't have a clue what I'm getting myself into.  Never stopped me before. 8)
    EDIT: Obscured e-mail addresses to thwart the spam-bots.

  • Debtap - A script to convert .deb packages to Arch Linux packages

    I wrote this script in my free time to help people who, for any reason, want to convert a .deb to an Arch Linux package. It works in a similar way with alien (which converts .deb packages to .rpm packages and vice versa), but, unlike alien, it is focused on accuracy of conversion, trying to translate Debian/Ubuntu packages names to the correct Arch Linux packages names and store them in the dependencies fields of the .PKGINFO metadata in the final package. In other words, it won't only create an Arch package with the data of the original .deb package, but also it will try to create a valid and as accurate as possible .PKGINFO metadata file in the converted package. It uses pkgfile and pacman utilities to achieve this accuracy. The final package can be installed like any local Arch Linux package. Debtap is now available on AUR!
    FAQ
    Q: What "debtap" stands for?
    A: DEB To Arch (Linux) Package
    Q: Isn't better to download an official package or write a PKGBUILD in case I need to compile a package or convert a .deb package to an Arch Linux package?
    A: Sure it is, and I truely encourage you to do so. Debtap was written to create packages that either cannot be compiled (closed source packages) or cannot be built from AUR for various reasons (error during compiling or unavailable files), as a quick 'n' dirty solution and an extra option for creating Arch Linux packages for Arch Linux users.
    Q: So debtap will help me only in case I need to convert specific .deb packages to Arch Linux packages?
    A: No. In case you need to write a new PKGBUILD for a package that already exists in the Debian/Ubuntu distributions, by converting its .deb package to Arch package with debtap, thanks to the packages names translator function inside the script, it can help you determine which dependencies are needed for the package you write the PKGBUILD for and complete the necessary fields.
    Q: What are the minimum requirements to run this script?
    A: You need to have installed these dependencies: bash, binutils (provides ar utility for extracting .deb package), pkgfile, and fakeroot. You must run at least once (preferably recently) "debtap -u" to create/update pkgfile and debtap database (you do this with root privileges).
    Q: Debtap needs a lot of time to convert a package. So, why this is happening?
    A: Like I said, debtap is focused on accuracy. It won't just unpack a .deb package and then repackage its data to an Arch Linux package, ignoring metadata. Depending on the speed of your processor and the package itself, conversion can take from a few seconds to several minutes.
    Q: During conversion I get several warning messages, why?
    A: Debtap cannot be 100% accurate for several reasons,  the main reason for this is the complexity of packages names. If you want to check the freshly generated .PKGINFO and .INSTALL (this is optional file) metadata files or even fix the untranslated packages names inside .PKGINFO, debtap offers you the option to edit these files before compressing the final package.
    Q: How do I use debtap?
    A: The syntax is quite simple actually: debtap [option] package_filename
    For example: debtap world-of-goo-demo_1.0_i386.deb
    Any recommendations or questions for debtap are welcomed!
    Last edited by helix (2015-05-21 22:54:17)

    Hi helix. I've had trouble trying to use your script with ubuntu software from The Open University
    debtap OpenUniversity-ubuntu-0.1.3.20130104.deb
    ==> Extracting package data...
    ==> Fixing possible directories structure differencies...
    ==> Generating .PKGINFO file...
    debtap OpenUniversity-ubuntu-0.1.3.20130104.deb
    ==> Extracting package data...
    ==> Fixing possible directories structure differencies...
    ==> Generating .PKGINFO file...
    :: Enter Packager name:
    NewPepper2013
    :: Enter package license (you can enter multiple licenses comma seperated):
    closed
    :: If you want to edit .PKGINFO file, press (1) For vi (2) For nano (3) For a cu                                                                                                    stom editor or any other key to continue:
    ==> Generating .MTREE file...
    ==> Creating final package...
    xz: unrecognized option '--1-any.pkg.tar'
    xz: Try `xz --help' for more information.
    mv: cannot stat ‘*.xz’: No such file or directory
    ==> Removing leftover files...
    ==> Package successfully created!
    The software is called NewPepper 2013 but i've not been able to find it online except on the ou website.

  • Nfs4-utils-1.1.2 does not compile against heimdal-1.2.1

    Hi,
    ive changed (for testing purpose only of course) the gssapi_krb5.h from heimdal against: /opt/mit-krb5/include/gssapi/gssapi_krb5.h. nfs4-utils compile fine after this.
    so one solution would be to change heimdal to provide kerberos and do the same with mit-krb5 from aur which would offer the user a choice and allow the usage of nfs4.
    the heimdal mailing list seems to be dead anyway.
    but for this solution to work some packages need to change their deps, for example on my system:
    pacman -R heimdal
    checking dependencies...
    error: failed to prepare transaction (could not satisfy dependencies)
    :: evolution-data-server: requires heimdal>=1.2
    :: gnome-vfs: requires heimdal>=1.2
    :: gtk2: requires heimdal>=1.2
    :: imagemagick: requires heimdal>=1.2.1
    :: libcups: requires heimdal>=1.2
    :: neon: requires heimdal>=1.2.1
    :: openssh: requires heimdal>=1.2-1
    :: pam-krb5: requires heimdal>=1.2
    :: smbclient: requires heimdal>=1.2-1
    any other ideas?

    Hi metalfan,
         i'm using a nfs4-utils ver. 1.1.4 build and modified by me and i'd like to share my solution to this problem in the hope that you can find it useful. About the impossibility to build nfs-utils (and the needed package 'librpcsecgss') against heimdal it's because the implemetation of gssapi in libgssglue conflicts with heimdal.
    In gentoo Bryan Jacobs has produced a patch to nfs-utils/librpcsecgss that allow these packages to compile against heimdal without the gssapi intermediate library 'libgssglue' (in this way all that is needed for gssapi is provided by heimdal).
    The nfs4-utils and librpcsecgss packages in AUR are orphans and I don't know how to load my librpcsecgss.tar.gz and nfs4-utils.tar.gz in order to share them so, following in this post, I attached all the code and any reference I have about this problem but if you want I can send to you my tar.gz arch packages.
    Sorry for the long post...
    bye
    All you have to do is first build and install the package 'librpcsecgss' with dep on 'heimdal' instead of 'libgssglue' applying the patch that you can find in http://bugs.gentoo.org/show_bug.cgi?id=231395
    patch: librpcsecgss-0.18-heimdal.patch
    diff -NaurwB librpcsecgss-0.18.orig/configure.in librpcsecgss-0.18/configure.in
    --- librpcsecgss-0.18.orig/configure.in 2008-04-09 00:05:40.000000000 +0200
    +++ librpcsecgss-0.18/configure.in 2008-06-12 19:05:51.000000000 +0200
    @@ -12,10 +12,15 @@
    AC_PROG_RANLIB
    # Checks for libraries.
    -PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1], [],
    +PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1],
    + [echo GSSGLUE found; GSSAPI_IMPLEMENTATION=libgssglue],
    + [PKG_CHECK_MODULES([GSSGLUE], [heimdal-gssapi],
    + [echo HEIMDAL found; GSSAPI_IMPLEMENTATION=heimdal-gssapi],
    [AC_MSG_ERROR([Unable to locate information required to use libgssglue.
    If you have pkgconfig installed, you might try setting environment
    - variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig])])
    + variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig])])])
    +
    +AC_SUBST([GSSAPI_IMPLEMENTATION])
    # Checks for header files.
    AC_HEADER_STDC
    diff -NaurwB librpcsecgss-0.18.orig/librpcsecgss.pc.in librpcsecgss-0.18/librpcsecgss.pc.in
    --- librpcsecgss-0.18.orig/librpcsecgss.pc.in 2007-09-06 17:39:04.000000000 +0200
    +++ librpcsecgss-0.18/librpcsecgss.pc.in 2008-06-12 19:06:40.000000000 +0200
    @@ -5,7 +5,7 @@
    Name: librpcsecgss
    Description: Library that implements rpcsec_gss interface.
    -Requires: libgssglue
    +Requires: @GSSAPI_IMPLEMENTATION@
    Version: @PACKAGE_VERSION@
    Libs: -L@libdir@ -lrpcsecgss
    Cflags: -I@includedir@/rpcsecgss
    The PKGBUILD I used is:
    # $Id: PKGBUILD,v 1.43 2007/09/23 07:37:00 tom Exp $
    # Maintainer: Andrew Krawchyk <[email protected]>
    # Contributor: Marco Lima <[email protected]>
    pkgname=librpcsecgss
    pkgver=0.18
    pkgrel=2
    pkgdesc="Library for RPCSECGSS support"
    arch=('i686' 'x86_64')
    url="http://www.citi.umich.edu/projects/nfsv4/linux/"
    license=('GPL')
    depends=('glibc' 'tcp_wrappers' 'libevent>=1.3d' 'heimdal>=1.2-1')
    source=("http://www.citi.umich.edu/projects/nfsv4/linux/$pkgname/$pkgname-$pkgver.tar.gz"
    "librpcsecgss-0.18-heimdal.patch")
    md5sums=('f2c4a69c5a32f62b762a569b8d962156'
    '0cfe088551d5776f5bc08c1741a34346')
    build() {
    cd "$srcdir/$pkgname-$pkgver"
    # Patch from gentoo for heimdal compatibility Bug #231395
    # http://bugs.gentoo.org/show_bug.cgi?id=231395
    patch -Np1 -i ../librpcsecgss-0.18-heimdal.patch || return 1
    rm -f config.guess config.sub ltmain.sh
    autoreconf -i
    GSSAPI_CFLAGS='-I/usr/include/gssapi' \
    ./configure \
    --prefix=/usr \
    --sysconfdir=/etc \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info
    make || return 1
    make DESTDIR="$pkgdir/" install || return 1
    Then you need to build the package 'nfs4-utils' with dep only on 'librpcsecgss' (remove 'libgssglue'... as said the gssapi is provided by heimdal); to build the package you need the patches that you can find in http://bugs.gentoo.org/show_bug.cgi?id=231396
    patch: nfs-utils-1.1.2-kerberos-ac.patch
    diff -NaurwB nfs-utils-1.1.2.orig/aclocal/kerberos5.m4 nfs-utils-1.1.2/aclocal/kerberos5.m4
    --- nfs-utils-1.1.2.orig/aclocal/kerberos5.m4 2008-03-14 16:46:29.000000000 +0100
    +++ nfs-utils-1.1.2/aclocal/kerberos5.m4 2008-06-12 17:13:51.000000000 +0200
    @@ -1,112 +1,48 @@
    -dnl Checks for Kerberos
    -dnl NOTE: while we intend to do generic gss-api, currently we
    -dnl have a requirement to get an initial Kerberos machine
    -dnl credential. Thus, the requirement for Kerberos.
    -dnl The Kerberos gssapi library will be dynamically loaded?
    AC_DEFUN([AC_KERBEROS_V5],[
    + K5CONFIG="krb5-config"
    AC_MSG_CHECKING(for Kerberos v5)
    - AC_ARG_WITH(krb5,
    - [AC_HELP_STRING([--with-krb5=DIR], [use Kerberos v5 installation in DIR])],
    + AC_ARG_WITH(krb5-config,
    + [AC_HELP_STRING([--with-krb5-config=PATH], [Full Path to krb5-config.])],
    [ case "$withval" in
    yes|no)
    - krb5_with=""
    + K5CONFIG="krb5-config"
    - krb5_with="$withval"
    + K5CONFIG="$withval"
    esac ]
    - for dir in $krb5_with /usr /usr/kerberos /usr/local /usr/local/krb5 \
    - /usr/krb5 /usr/heimdal /usr/local/heimdal /usr/athena ; do
    - dnl This ugly hack brought on by the split installation of
    - dnl MIT Kerberos on Fedora Core 1
    - K5CONFIG=""
    - if test -f $dir/bin/krb5-config; then
    - K5CONFIG=$dir/bin/krb5-config
    - elif test -f "/usr/kerberos/bin/krb5-config"; then
    - K5CONFIG="/usr/kerberos/bin/krb5-config"
    - elif test -f "/usr/lib/mit/bin/krb5-config"; then
    - K5CONFIG="/usr/lib/mit/bin/krb5-config"
    - fi
    if test "$K5CONFIG" != ""; then
    KRBCFLAGS=`$K5CONFIG --cflags`
    KRBLIBS=`$K5CONFIG --libs gssapi`
    - K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(4),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'`
    - AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number])
    - if test -f $dir/include/gssapi/gssapi_krb5.h -a \
    - \( -f $dir/lib/libgssapi_krb5.a -o \
    - -f $dir/lib64/libgssapi_krb5.a -o \
    - -f $dir/lib64/libgssapi_krb5.so -o \
    - -f $dir/lib/libgssapi_krb5.so \) ; then
    + if $K5CONFIG --version | grep -q -e heimdal; then
    + K5VERS=`$K5CONFIG --version | head -n 1 | cut -f2 -d ' ' | tr -d '.'`
    + AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries])
    + gssapi_lib=gssapi
    + KRBIMPL="heimdal"
    + elif $K5CONFIG --version | grep -q -e mit; then
    + K5VERS=`$K5CONFIG --version | head -n 1 | cut -f4 -d ' ' | tr -d '.'`
    AC_DEFINE(HAVE_KRB5, 1, [Define this if you have MIT Kerberos libraries])
    - KRBDIR="$dir"
    - dnl If we are using MIT K5 1.3.1 and before, we *MUST* use the
    - dnl private function (gss_krb5_ccache_name) to get correct
    - dnl behavior of changing the ccache used by gssapi.
    - dnl Starting in 1.3.2, we *DO NOT* want to use
    - dnl gss_krb5_ccache_name, instead we want to set KRB5CCNAME
    - dnl to get gssapi to use a different ccache
    if test $K5VERS -le 131; then
    AC_DEFINE(USE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the private function, gss_krb5_cache_name, must be used to tell the Kerberos library which credentials cache to use. Otherwise, this is done by setting the KRB5CCNAME environment variable])
    fi
    gssapi_lib=gssapi_krb5
    - break
    - dnl The following ugly hack brought on by the split installation
    - dnl of Heimdal Kerberos on SuSe
    - elif test \( -f $dir/include/heim_err.h -o\
    - -f $dir/include/heimdal/heim_err.h \) -a \
    - -f $dir/lib/libroken.a; then
    - AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries])
    - KRBDIR="$dir"
    - gssapi_lib=gssapi
    - break
    - fi
    - fi
    - done
    - dnl We didn't find a usable Kerberos environment
    - if test "x$KRBDIR" = "x"; then
    - if test "x$krb5_with" = "x"; then
    - AC_MSG_ERROR(Kerberos v5 with GSS support not found: consider --disable-gss or --with-krb5=)
    + KRBIMPL="mit-krb5"
    else
    - AC_MSG_ERROR(Kerberos v5 with GSS support not found at $krb5_with)
    - fi
    + AC_MSG_ERROR(Unknown Kerberos 5 Implementation. Is neither heimdal or mit-krb5.)
    + KRBIMPL="unknown"
    fi
    - AC_MSG_RESULT($KRBDIR)
    - dnl Check if -rpath=$(KRBDIR)/lib is needed
    - echo "The current KRBDIR is $KRBDIR"
    - if test "$KRBDIR/lib" = "/lib" -o "$KRBDIR/lib" = "/usr/lib" \
    - -o "$KRBDIR/lib" = "//lib" -o "$KRBDIR/lib" = "/usr//lib" ; then
    - KRBLDFLAGS="";
    - elif /sbin/ldconfig -p | grep > /dev/null "=> $KRBDIR/lib/"; then
    - KRBLDFLAGS="";
    - else
    - KRBLDFLAGS="-Wl,-rpath=$KRBDIR/lib"
    + AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number])
    fi
    + AC_MSG_RESULT($KRBIMPL)
    - dnl Now check for functions within gssapi library
    - AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context,
    - AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIBS)
    - AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes,
    - AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS)
    - AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name,
    - AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS)
    - dnl Check for newer error message facility
    - AC_CHECK_LIB($gssapi_lib, krb5_get_error_message,
    - AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE, 1, [Define this if the function krb5_get_error_message is available]), ,$KRBLIBS)
    + AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context, AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIBS)
    + AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes, AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS)
    + AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name, AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS)
    + AC_CHECK_LIB($gssapi_lib, krb5_get_error_message, AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE, 1, [Define this if the function krb5_get_error_message is available]), ,$KRBLIBS)
    + AC_CHECK_LIB($gssapi_lib, krb5_get_init_creds_opt_set_addressless, AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_SET_ADDRESSLESS, 1, [Define this if the function krb5_get_init_creds_opt_set_addressless is available]), ,$KRBLIBS)
    - dnl Check for function to specify addressless tickets
    - AC_CHECK_LIB($gssapi_lib, krb5_get_init_creds_opt_set_addressless,
    - AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_SET_ADDRESSLESS, 1, [Define this if the function krb5_get_init_creds_opt_set_addressless is available]), ,$KRBLIBS)
    - dnl If they specified a directory and it didn't work, give them a warning
    - if test "x$krb5_with" != "x" -a "$krb5_with" != "$KRBDIR"; then
    - AC_MSG_WARN(Using $KRBDIR instead of requested value of $krb5_with for Kerberos!)
    - fi
    - AC_SUBST([KRBDIR])
    AC_SUBST([KRBLIBS])
    AC_SUBST([KRBCFLAGS])
    AC_SUBST([KRBLDFLAGS])
    patch: nfs-utils-1.1.2-no_libgssapi.patch
    Index: nfs-utils-1.1.0/utils/gssd/context_lucid.c
    ===================================================================
    --- nfs-utils-1.1.0.orig/utils/gssd/context_lucid.c
    +++ nfs-utils-1.1.0/utils/gssd/context_lucid.c
    @@ -48,8 +48,10 @@
    #include <krb5.h>
    #include <gssapi/gssapi.h>
    #ifndef OM_uint64
    +#ifndef GSSAPI_GSSAPI_H_
    typedef uint64_t OM_uint64;
    #endif
    +#endif
    #include <gssapi/gssapi_krb5.h>
    static int
    @@ -171,10 +173,10 @@ serialize_krb5_ctx(gss_ctx_id_t ctx, gss
    int retcode = 0;
    printerr(2, "DEBUG: serialize_krb5_ctx: lucid version!\n");
    - maj_stat = gss_export_lucid_sec_context(&min_stat, &ctx,
    + maj_stat = gss_krb5_export_lucid_sec_context(&min_stat, &ctx,
    1, &return_ctx);
    if (maj_stat != GSS_S_COMPLETE) {
    - pgsserr("gss_export_lucid_sec_context",
    + pgsserr("gss_krb5_export_lucid_sec_context",
    maj_stat, min_stat, &krb5oid);
    goto out_err;
    @@ -198,9 +200,9 @@ serialize_krb5_ctx(gss_ctx_id_t ctx, gss
    else
    retcode = prepare_krb5_rfc_cfx_buffer(lctx, buf);
    - maj_stat = gss_free_lucid_sec_context(&min_stat, ctx, return_ctx);
    + maj_stat = gss_krb5_free_lucid_sec_context(&min_stat, ctx);
    if (maj_stat != GSS_S_COMPLETE) {
    - pgsserr("gss_export_lucid_sec_context",
    + pgsserr("gss_krb5_export_lucid_sec_context",
    maj_stat, min_stat, &krb5oid);
    printerr(0, "WARN: failed to free lucid sec context\n");
    Index: nfs-utils-1.1.0/utils/gssd/krb5_util.c
    ===================================================================
    --- nfs-utils-1.1.0.orig/utils/gssd/krb5_util.c
    +++ nfs-utils-1.1.0/utils/gssd/krb5_util.c
    @@ -294,10 +294,10 @@ limit_krb5_enctypes(struct rpc_gss_sec *
    return -1;
    - maj_stat = gss_set_allowable_enctypes(&min_stat, credh, &krb5oid,
    + maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, credh,
    num_enctypes, &enctypes);
    if (maj_stat != GSS_S_COMPLETE) {
    - pgsserr("gss_set_allowable_enctypes",
    + pgsserr("gss_krb5_set_allowable_enctypes",
    maj_stat, min_stat, &krb5oid);
    gss_release_cred(&min_stat, &credh);
    return -1;
    patch: nfs-utils-1.1.2-pkgconfig_ac.patch
    --- configure.ac 2008-03-14 15:46:29.000000000 +0000
    +++ configure.ac 2008-05-03 10:30:21.000000000 +0000
    @@ -185,7 +185,7 @@
    [AC_MSG_ERROR([Unable to locate information required to use librpcsecgss. If you have pkgconfig installed, you might try setting environment variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig])
    - PKG_CHECK_MODULES(GSSGLUE, libgssglue >= 0.1)
    + PKG_CHECK_MODULES(GSSGLUE, libgssglue >= 0.1, , [PKG_CHECK_MODULES(GSSGLUE, heimdal-gssapi)])
    fi
    fi
    @@ -228,9 +228,9 @@
    dnl This is not done until here because we need to have KRBLIBS set
    dnl ("librpcsecgss=1" is so that it doesn't get added to LIBS)
    - AC_CHECK_LIB(rpcsecgss, authgss_create_default, [librpcsecgss=1], AC_MSG_ERROR([librpcsecgss needed for nfsv4 support]), -lgssglue -ldl)
    + AC_CHECK_LIB(rpcsecgss, authgss_create_default, [librpcsecgss=1], AC_MSG_ERROR([librpcsecgss needed for nfsv4 support]), $GSSGLUE_CFLAGS)
    AC_CHECK_LIB(rpcsecgss, authgss_set_debug_level,
    - AC_DEFINE(HAVE_AUTHGSS_SET_DEBUG_LEVEL, 1, [Define this if the rpcsec_gss library has the function authgss_set_debug_level]),, -lgssglue -ldl)
    + AC_DEFINE(HAVE_AUTHGSS_SET_DEBUG_LEVEL, 1, [Define this if the rpcsec_gss library has the function authgss_set_debug_level]),, $GSSGLUE_CFLAGS)
    fi
    patch: nfs-utils-1.1.4-heimdal_functions.patch
    diff -Naur nfs-utils-1.1.4/utils/gssd/krb5_util.c nfs-utils-1.1.4-r1/utils/gssd/krb5_util.c
    --- utils/gssd/krb5_util.c 2008-10-17 14:20:09.000000000 +0000
    +++ utils/gssd/krb5_util.c 2008-11-22 13:52:42.000000000 +0000
    @@ -927,9 +927,37 @@
    krb5_error_code ret;
    krb5_creds creds;
    - krb5_cc_cursor cur;
    int found = 0;
    +#ifdef HAVE_HEIMDAL
    + krb5_creds pattern;
    + krb5_realm *client_realm;
    +
    + krb5_cc_clear_mcred(&pattern);
    +
    + client_realm = krb5_princ_realm (context, principal);
    +
    + ret = krb5_make_principal (context, &pattern.server,
    + *client_realm, KRB5_TGS_NAME, *client_realm,
    + NULL);
    + if (ret)
    + krb5_err (context, 1, ret, "krb5_make_principal");
    + pattern.client = principal;
    +
    + ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds);
    + krb5_free_principal (context, pattern.server);
    + if (ret) {
    + if (ret == KRB5_CC_END)
    + return 1;
    + krb5_err (context, 1, ret, "krb5_cc_retrieve_cred");
    + }
    +
    + found = creds.times.endtime > time(NULL);
    +
    + krb5_free_cred_contents (context, &creds);
    +#else
    + krb5_cc_cursor cur;
    +
    ret = krb5_cc_start_seq_get(context, ccache, &cur);
    if (ret)
    return 0;
    @@ -949,6 +977,7 @@
    krb5_free_cred_contents(context, &creds);
    krb5_cc_end_seq_get(context, ccache, &cur);
    +#endif
    return found;
    @@ -995,6 +1024,9 @@
    krb5_free_principal(context, principal);
    err_princ:
    +#ifdef HAVE_HEIMDAL
    +#define KRB5_TC_OPENCLOSE 0x00000001
    +#endif
    krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE);
    krb5_cc_close(context, ccache);
    err_cache:
    The PKGBUILD I used is the follow. As you can see I changed the rc.d scripts to have only two scripts to do the job (client side and server side) to start the nfsd and related/needed daemons and take care to load and mount modules and filesystems needed but you can watch only at the use of the patch and reconfiguration before the configure/make step and use for the rest of the package the usual arch scripts.
    # Maintainer: abelstr <[email protected]>
    # Contributor: Marco Lima <[email protected]>
    pkgname=nfs4-utils
    _realname=nfs-utils
    pkgver=1.1.4
    pkgrel=3
    pkgdesc="Support programs for Network File Systems"
    arch=('i686' 'x86_64')
    url="http://nfs.sourceforge.net"
    license=('GPL')
    depends=('glibc' 'tcp_wrappers' 'e2fsprogs' 'portmap' 'nfsidmap' 'librpcsecgss')
    replaces=('nfs-utils')
    provides=('nfs-utils')
    backup=(etc/{exports,gssapi_mech.conf,idmapd.conf} etc/conf.d/{nfs-common.conf,nfs-server.conf})
    install="$_realname.install"
    options=('docs')
    source=("http://garr.dl.sourceforge.net/sourceforge/nfs/$_realname-$pkgver.tar.bz2"
    nfs-common
    nfs-common.conf
    nfs-server
    nfs-server.conf
    exports
    start-statd.patch
    idmapd.conf
    gssapi_mech.conf
    nfs-utils-1.1.2-kerberos-ac.patch
    nfs-utils-1.1.2-no_libgssapi.patch
    nfs-utils-1.1.2-pkgconfig_ac.patch
    nfs-utils-1.1.4-heimdal_functions.patch)
    md5sums=('3ed5b9cb73fd1c9b358c7bfa7a6ae150'
    '3fa8ad66f434e8277e7a82c7c699ce46'
    'a05e6e91307af37e7bd612b356bd0b6a'
    '1852b84523c74e02831b60dcc5739f7a'
    '1c6c755fcfef4e5e19ee7414d3020269'
    'ff585faf410a62c4333a027c50b56bae'
    '11f6c229108c223dc5fe849d11aecaf3'
    '64eaa20ea49e324e5a72858f104a61eb'
    '234b9cca75a33af98eda3f1683756879'
    'f3be115d392d9f9bb0f056e8d4341a14'
    'de30683636eda26421e58937a784b123'
    'd07c449358eeb254850975add54bcff2'
    '959a81d86da677d42e76b597656171a2')
    build() {
    cd "$srcdir/$_realname-$pkgver"
    # Patches from gentoo for heimdal compatibility Bug 231396
    # http://bugs.gentoo.org/show_bug.cgi?id=231396
    patch -Np1 -i ../nfs-utils-1.1.2-kerberos-ac.patch || return 1
    patch -Np0 -i ../nfs-utils-1.1.2-pkgconfig_ac.patch || return 1
    patch -Np1 -i ../nfs-utils-1.1.2-no_libgssapi.patch || return 1
    patch -Np0 -i ../nfs-utils-1.1.4-heimdal_functions.patch || return 1
    rm -f config.guess config.sub ltmain.sh
    autoreconf -i
    export GSSAPI_CFLAGS='-I/usr/include/gssapi'
    export GSSAPI_LIBS='-lgssapi -ldl'
    patch -Np0 -i ../start-statd.patch || return 1
    ./configure \
    --prefix=/usr \
    --sysconfdir=/etc \
    --with-statedir=/var/lib/nfs \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info \
    --enable-nfsv3 \
    --enable-nfsv4 \
    --enable-gss \
    --with-tcp-wrappers || return 1
    make || return 1
    make DESTDIR="$pkgdir/" install || return 1
    # NFS & NFSv4 init scripts
    install -D -m 755 ../nfs-common "$pkgdir/"etc/rc.d/nfs-common
    install -D -m 755 ../nfs-server "$pkgdir/"etc/rc.d/nfs-server
    # Configuration
    install -D -m 644 ../exports "$pkgdir/"etc/exports
    install -D -m 644 ../idmapd.conf "$pkgdir/"etc/idmapd.conf
    install -D -m 644 ../gssapi_mech.conf "$pkgdir/"etc/gssapi_mech.conf
    install -D -m 644 ../nfs-common.conf "$pkgdir/"etc/conf.d/nfs-common.conf
    install -D -m 644 ../nfs-server.conf "$pkgdir/"etc/conf.d/nfs-server.conf
    # directories
    mkdir "$pkgdir/"var/lib/nfs/rpc_pipefs
    mkdir "$pkgdir/"var/lib/nfs/v4recovery
    # copy docs
    install -m 755 -d "$pkgdir/"usr/share/doc/$pkgname || return 1
    install -m 644 -t "$pkgdir/"usr/share/doc/$pkgname AUTHORS ChangeLog INSTALL \
    NEWS README || return 1
    idmapd.conf
    [General]
    Verbosity = 0
    Pipefs-Directory = /var/lib/nfs/rpc_pipefs
    Domain = localdomain
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nogroup
    [Translation]
    Method = nsswitch
    gssapi_mech.conf
    # Example /etc/gssapi_mech.conf file
    # GSSAPI Mechanism Definitions
    # This configuration file determines which GSS-API mechanisms
    # the gssd code should use
    # NOTE:
    # The initiaiization function "mechglue_internal_krb5_init"
    # is used for the MIT krb5 gssapi mechanism. This special
    # function name indicates that an internal function should
    # be used to determine the entry points for the MIT gssapi
    # mechanism funtions.
    # library initialization function
    # ================================ ==========================
    # The MIT K5 gssapi library, use special function for initialization.
    #/usr/lib/libgssapi_krb5.so mechglue_internal_krb5_init
    /usr/lib/libgssapi.so mechglue_internal_krb5_init
    # The SPKM3 gssapi library function. Use the function spkm3_gss_initialize.
    # /usr/local/gss_mechs/spkm/spkm3/libgssapi_spkm3.so spkm3_gss_initialize
    exports
    # /etc/exports
    # List of directories exported to NFS clients. See exports(5).
    # Use exportfs -arv to reread.
    # Example for NFSv2 and NFSv3:
    # /srv/home hostname1(rw,sync) hostname2(ro,sync)
    # Example for NFSv4:
    # /srv/nfs4 hostname1(rw,sync,fsid=0)
    # /srv/nfs4/home hostname1(rw,sync,nohide)
    # Using Kerberos and integrity checking:
    # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
    # /srv/nfs4/home gss/krb5i(rw,sync,nohide)
    start-statd.patch
    --- utils/statd/start-statd 2008-10-17 16:20:09.000000000 +0200
    +++ utils/statd/start-statd.new 2008-12-06 11:43:12.000000000 +0100
    @@ -1,9 +1,16 @@
    #!/bin/sh
    +
    +# Original script provided by the NFS project
    +# Modified for Arch Linux by Tom Killian
    +
    # nfsmount calls this script when mounting a filesystem with locking
    # enabled, but when statd does not seem to be running (based on
    # /var/run/rpc.statd.pid).
    # It should run run statd with whatever flags are apropriate for this
    # site.
    -PATH=/sbin:/usr/sbin
    -exec rpc.statd --no-notify
    +
    +# source application-specific settings
    +[ -f /etc/conf.d/nfs-common.conf ] && . /etc/conf.d/nfs-common.conf
    +
    +exec /usr/sbin/rpc.statd $STATD_OPTS
    nfs-utils.install
    ## arg 1: the new package version
    post_install() {
    cat << 'EOM'
    ==>
    ==> PLEASE NOTE:
    ==> Extended configuration options for NFS (clients & server) are available in
    ==> /etc/conf.d/nfs-common.conf and in /etc/conf.d/nfs-server.conf
    ==>
    ==> Please refer to http://wiki.archlinux.org/index.php/Nfs
    ==> for further information on NFS; for NFSv4, refer to
    ==> http://wiki.archlinux.org/index.php/NFSv4
    ==> Also, if you plan on using NFSv4, in /etc/conf.d/nfs-common.conf set:
    ==> 1) NEED_IDMAPD="yes" to start rpc.idmapd - on clients & server.
    ==> rpc.idmapd needs to be properly configured; edit at least the
    ==> daemon line in /etc/idmapd.conf.
    ==> 2) NEED_GSSD="yes" to start rpc.gssd (GSS authentication) - only on clients.
    ==> 3) Add "rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs 0 0" to /etc/fstab.
    ==> If not mounted when the init script nfs-common starts it tries to mount the
    ==> filesystem automatically (if rpc.idmapd or rpc.gssd is needed);
    ==> see /etc/conf.d/nfs-common.conf for extended configuration options.
    ==> in /etc/conf.d/nfs-server.conf (only server) set:
    ==> 1) add "nfsd /proc/fs/nfsd nfsd -o rw,nodev,noexec,nosuid 0 0" to /etc/fstab.
    ==> If not mounted when the init script nfs-server starts it tries to mount the
    ==> filesystem automatically; see /etc/conf.d/nfs-server.conf for extended
    ==> configuration options.
    ==> 2) NEED_SVCGSSD="yes" to start rpc.svcgssd (GSS authentication) - on server
    EOM
    ## arg 1: the new package version
    ## arg 2: the old package version
    post_upgrade() {
    post_install $1
    nfs-server.conf
    # Parameters to be passed to nfs-server init script.
    # Options to pass to rpc.nfsd.
    NFSD_OPTS=
    # Number of servers to start up; the default is 8 servers.
    NFSD_COUNT=
    # Where to mount nfsd filesystem; the default is "/proc/fs/nfsd".
    PROCNFSD_MOUNTPOINT=
    # Options used to mount nfsd filesystem; the default is "rw,nodev,noexec,nosuid".
    PROCNFSD_MOUNTOPTS=
    # Options for rpc.mountd.
    # If you have a port-based firewall, you might want to set up
    # a fixed port here using the --port option. For more information,
    # see rpc.mountd(8)
    MOUNTD_OPTS="--no-nfs-version 1 --no-nfs-version 2"
    # Do you want to start the svcgssd daemon? It is only required for Kerberos
    # exports. Valid alternatives are "yes" and "no"; the default is "no".
    NEED_SVCGSSD=
    # Options to pass to rpc.svcgssd.
    SVCGSSD_OPTS=
    nfs-server
    #!/bin/bash
    daemon_name=nfs-server
    NFSD_COUNT=
    NFSD_OPTS=
    NEED_SVCGSSD=
    SVCGSSD_OPTS=
    MOUNTD_OPTS=
    PROCNFSD_MOUNTPOINT=
    PROCNFSD_MOUNTOPTS=
    # rpc.nfsd daemon & binary location
    NFSD_PROCESS_NAME=nfsd
    NFSD_DAEMON_NAME=rpc.nfsd
    NFSD="/usr/sbin/rpc.nfsd"
    # rpc.svcgssd daemon & binary location
    SVCGSSD_DAEMON_NAME=rpc.svcgssd
    SVCGSSD="/usr/sbin/rpc.svcgssd"
    # rpc.idmapd daemon & binary location
    IDMAPD_DAEMON_NAME=rpc.idmapd
    IDMAPD="/usr/sbin/rpc.idmapd"
    # rpc.mountd daemon & binary location
    MOUNTD_DAEMON_NAME=rpc.mountd
    MOUNTD="/usr/sbin/rpc.mountd"
    # exortfs binary location
    EXPORTFS="/usr/sbin/exportfs"
    . /etc/rc.conf
    . /etc/rc.d/functions
    . /etc/conf.d/$daemon_name.conf
    # Default number of nfsd servers
    [ -z "$NFSD_COUNT" ] && NFSD_COUNT=8
    # Default mountpoint and options for nfsd filesystem
    [ -z "$PROCNFSD_MOUNTPOINT" ] && PROCNFSD_MOUNTPOINT="/proc/fs/nfsd"
    [ -z "$PROCNFSD_MOUNTOPTS" ] && PROCNFSD_MOUNTOPTS="rw,nodev,noexec,nosuid"
    case "$NEED_SVCGSSD" in
    yes|no)
    NEED_SVCGSSD=no
    esac
    do_modprobe() {
    if [ -x /sbin/modprobe -a -f /proc/modules ]; then
    modprobe -q "$1" || true
    fi
    do_mount() {
    if ! grep -E "$1\$" /proc/filesystems &> /dev/null ; then
    return 1
    fi
    if grep -vw "$1" /proc/mounts &> /dev/null ; then
    if ! mountpoint -q "$2" ; then
    mount -t "$1" "$1" "$2" -o "$3"
    return
    fi
    fi
    return 0
    do_umount() {
    if mountpoint -q "$1" ; then
    umount "$1"
    fi
    return 0
    get_pid() {
    pidof -o %PPID "$1"
    case "$1" in
    start)
    rc=0
    stat_busy "Mounting nfsd filesystem"
    do_modprobe nfsd
    do_mount nfsd "$PROCNFSD_MOUNTPOINT" "$PROCNFSD_MOUNTOPTS"
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    stat_done
    fi
    stat_busy "Exporting all directories"
    $EXPORTFS -r
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    stat_done
    fi
    stat_busy "Starting $NFSD_DAEMON_NAME daemon"
    PID=$(get_pid $NFSD_PROCESS_NAME)
    if [ -z "$PID" ]; then
    [ -f /var/run/$NFSD_DAEMON_NAME.pid ] && rm -f /var/run/$NFSD_DAEMON_NAME.pid
    # RUN
    $NFSD $NFSD_OPTS $NFSD_COUNT
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    echo $(get_pid $NFSD_PROCESS_NAME) > /var/run/$NFSD_DAEMON_NAME.pid
    stat_done
    fi
    else
    stat_fail
    exit 1
    fi
    if [ "$NEED_SVCGSSD" = yes ]; then
    stat_busy "Starting $SVCGSSD_DAEMON_NAME daemon"
    PID=$(get_pid $SVCGSSD)
    if [ -z "$PID" ]; then
    [ -f /var/run/$SVCGSSD_DAEMON_NAME.pid ] && rm -f /var/run/$SVCGSSD_DAEMON_NAME.pid
    # RUN
    $SVCGSSD $SVCGSSD_OPTS
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    echo $(get_pid $SVCGSSD) > /var/run/$SVCGSSD_DAEMON_NAME.pid
    stat_done
    fi
    else
    stat_fail
    exit 1
    fi
    fi
    PID=$(get_pid $IDMAPD)
    [ ! -z "$PID" ] && kill -SIGHUP $IDMAPD_DAEMON_NAME &> /dev/null
    stat_busy "Starting $MOUNTD_DAEMON_NAME daemon"
    PID=$(get_pid $MOUNTD)
    if [ -z "$PID" ]; then
    [ -f /var/run/$MOUNTD_DAEMON_NAME.pid ] && rm -f /var/run/$MOUNTD_DAEMON_NAME.pid
    # RUN
    $MOUNTD $MOUNTD_OPTS
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    echo $(get_pid $MOUNTD) > /var/run/$MOUNTD_DAEMON_NAME.pid
    stat_done
    fi
    else
    stat_fail
    exit 1
    fi
    add_daemon $daemon_name
    stop)
    rc=0
    stat_busy "Stopping $MOUNTD_DAEMON_NAME daemon"
    PID=$(get_pid $MOUNTD)
    # KILL
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    rm -f /var/run/$MOUNTD_DAEMON_NAME.pid &> /dev/null
    stat_done
    fi
    if [ "$NEED_SVCGSSD" = yes ]; then
    stat_busy "Stopping $SVCGSSD_DAEMON_NAME daemon"
    PID=$(get_pid $SVCGSSD)
    # KILL
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    rm -f /var/run/$SVCGSSD_DAEMON_NAME.pid &> /dev/null
    stat_done
    fi
    fi
    stat_busy "Stopping $NFSD_DAEMON_NAME daemon"
    PID=$(get_pid $NFSD_PROCESS_NAME)
    # KILL (SIGINT)
    [ ! -z "$PID" ] && kill -2 $PID &> /dev/null
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    sleep 1
    PID=$(get_pid $NFSD_PROCESS_NAME)
    # KILL (KILL) - just to be sure
    [ ! -z "$PID" ] && kill -9 $PID &> /dev/null
    rm -f /var/run/$NFSD_DAEMON_NAME.pid &> /dev/null
    stat_done
    fi
    stat_busy "Unexporting all directories"
    $EXPORTFS -au
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    stat_done
    fi
    # flush everything out of the kernels export table
    if mountpoint -q "$PROCNFSD_MOUNTPOINT" ; then
    $EXPORTFS -f
    fi
    rm_daemon $daemon_name
    status)
    stat_busy "$daemon_name running"
    if ck_daemon $daemon_name; then
    stat_fail
    else
    stat_done
    fi
    stat_busy "Daemon $NFSD_DAEMON_NAME running"
    PID=$(get_pid $NFSD_PROCESS_NAME)
    if [ -z "$PID" ]; then
    stat_fail
    else
    stat_done
    fi
    stat_busy "Daemon $MOUNTD_DAEMON_NAME running"
    PID=$(get_pid $MOUNTD)
    if [ -z "$PID" ]; then
    stat_fail
    else
    stat_done
    fi
    if [ "$NEED_SVCGSSD" = yes ]; then
    stat_busy "Daemon $SVCGSSD_DAEMON_NAME running"
    PID=$(get_pid $SVCGSSD)
    if [ -z "$PID" ]; then
    stat_fail
    else
    stat_done
    fi
    fi
    echo
    reload)
    rc=0
    stat_busy "Re-exporting all directories"
    $EXPORTFS -r
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    stat_done
    fi
    restart)
    $0 stop
    sleep 3
    $0 start
    echo "usage: $0 {start|stop|status|reload|restart}"
    esac
    exit 0
    nfs-common.conf
    # Parameters to be passed to nfs-common (nfs clients & server) init script.
    # If you do not set values for the NEED_ options, they will be attempted
    # autodetected; this should be sufficient for most people. Valid alternatives
    # for the NEED_ options are "yes" and "no".
    # Do you want to start the statd daemon? It is not needed for NFSv4.
    NEED_STATD=
    # Options to pass to rpc.statd.
    # N.B. statd normally runs on both client and server, and run-time
    # options should be specified accordingly. Specifically, the Arch
    # NFS init scripts require the --no-notify flag on the server,
    # but not on the client e.g.
    # STATD_OPTS="--no-notify -p 32765 -o 32766" -> server
    # STATD_OPTS="-p 32765 -o 32766" -> client
    STATD_OPTS=
    # Do you want to start the idmapd daemon? It is only needed for NFSv4.
    NEED_IDMAPD=
    # Options to pass to rpc.idmapd.
    IDMAPD_OPTS=
    # Do you want to start the gssd daemon? It is required for Kerberos mounts.
    NEED_GSSD=
    # Options to pass to rpc.gssd.
    GSSD_OPTS=
    # Where to mount rpc_pipefs filesystem; the default is "/var/lib/nfs/rpc_pipefs".
    PIPEFS_MOUNTPOINT=
    # Options used to mount rpc_pipefs filesystem; the default is "defaults".
    PIPEFS_MOUNTOPTS=
    nfs-common
    #!/bin/bash
    daemon_name=nfs-common
    NEED_STATD=
    STATD_OPTS=
    NEED_IDMAPD=
    IDMAPD_OPTS=
    NEED_GSSD=
    GSSD_OPTS=
    PIPEFS_MOUNTPOINT=
    PIPEFS_MOUNTOPTS=
    # rpc.statd daemon & binary location
    STATD_DAEMON_NAME=rpc.statd
    STATD="/usr/sbin/rpc.statd"
    # rpc.idmapd daemon & binary location
    IDMAPD_DAEMON_NAME=rpc.idmapd
    IDMAPD="/usr/sbin/rpc.idmapd"
    # rpc.gssd daemon & binary location
    GSSD_DAEMON_NAME=rpc.gssd
    GSSD="/usr/sbin/rpc.gssd"
    . /etc/rc.conf
    . /etc/rc.d/functions
    . /etc/conf.d/$daemon_name.conf
    # Default mountpoint and options for rpc_pipefs filesystem
    [ -z "$PIPEFS_MOUNTPOINT" ] && PIPEFS_MOUNTPOINT="/var/lib/nfs/rpc_pipefs"
    [ -z "$PIPEFS_MOUNTOPTS" ] && PIPEFS_MOUNTOPTS="defaults"
    # Parse the fstab file, and determine whether we need idmapd and gssd. (The
    # /etc/defaults settings, if any, will override our autodetection.) This code
    # is partially adapted from the mountnfs.sh script in the sysvinit package.
    AUTO_NEED_IDMAPD=no
    AUTO_NEED_GSSD=no
    if [ -f /etc/fstab ]; then
    exec 9<&0 </etc/fstab
    while read DEV MTPT FSTYPE OPTS REST; do
    if [ "$FSTYPE" = "nfs4" ]; then
    AUTO_NEED_IDMAPD=yes
    fi
    case "$OPTS" in
    sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5i,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
    AUTO_NEED_GSSD=yes
    esac
    done
    exec 0<&9 9<&-
    fi
    # We also need idmapd if we run an NFSv4 server. It's fairly difficult
    # to autodetect whether there are NFSv4 exports or not, and idmapd is not a
    # particularily heavy daemon, so we auto-enable it if we find an /etc/exports
    # file. This does not mean that there are NFSv4 or other mounts active (or
    # even that nfs-kernel-server is installed), but it matches what the "start"
    # condition in nfs-kernel-server's init script does, which has a value in
    # itself.
    if [ -f /etc/exports ] && grep -q '^[[:space:]]*[^#]*/' /etc/exports; then
    AUTO_NEED_IDMAPD=yes
    fi
    case "$NEED_STATD" in
    yes|no)
    NEED_STATD=yes
    esac
    case "$NEED_IDMAPD" in
    yes|no)
    NEED_IDMAPD=$AUTO_NEED_IDMAPD
    esac
    case "$NEED_GSSD" in
    yes|no)
    NEED_GSSD=$AUTO_NEED_GSSD
    esac
    do_modprobe() {
    if [ -x /sbin/modprobe -a -f /proc/modules ]; then
    modprobe -q "$1" || true
    fi
    do_mount() {
    if ! grep -E "$1\$" /proc/filesystems &> /dev/null ; then
    return 1
    fi
    if grep -vw "$1" /proc/mounts &> /dev/null ; then
    if ! mountpoint -q "$2" ; then
    mount -t "$1" "$1" "$2" -o "$3"
    return
    fi
    fi
    return 0
    do_umount() {
    if mountpoint -q "$1" ; then
    umount "$1"
    fi
    return 0
    get_pid() {
    pidof -o %PPID "$1"
    case "$1" in
    start)
    rc=0
    if [ "$NEED_STATD" = yes ]; then
    stat_busy "Starting $STATD_DAEMON_NAME daemon"
    PID=$(get_pid $STATD)
    if [ -z "$PID" ]; then
    [ -f /var/run/$STATD_DAEMON_NAME.pid ] && rm -f /var/run/$STATD_DAEMON_NAME.pid
    # RUN
    $STATD $STATD_OPTS
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    echo $(get_pid $STATD) > /var/run/$STATD_DAEMON_NAME.pid
    stat_done
    fi
    else
    stat_fail
    exit 1
    fi
    fi
    if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then
    do_modprobe sunrpc
    do_modprobe nfs
    do_mount rpc_pipefs "$PIPEFS_MOUNTPOINT" "$PIPEFS_MOUNTOPTS"
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    fi
    if [ "$NEED_IDMAPD" = yes ]; then
    stat_busy "Starting $IDMAPD_DAEMON_NAME daemon"
    PID=$(get_pid $IDMAPD)
    if [ -z "$PID" ]; then
    [ -f /var/run/$IDMAPD_DAEMON_NAME.pid ] && rm -f /var/run/$IDMAPD_DAEMON_NAME.pid
    # RUN
    $IDMAPD $IDMAPD_OPTS
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    echo $(get_pid $IDMAPD) > /var/run/$IDMAPD_DAEMON_NAME.pid
    stat_done
    fi
    else
    stat_fail
    exit 1
    fi
    fi
    if [ "$NEED_GSSD" = yes ]; then
    do_modprobe rpcsec_gss_krb5
    stat_busy "Starting $GSSD_DAEMON_NAME daemon"
    PID=$(get_pid $GSSD)
    if [ -z "$PID" ]; then
    [ -f /var/run/$GSSD_DAEMON_NAME.pid ] && rm -f /var/run/$GSSD_DAEMON_NAME.pid
    # RUN
    $GSSD $GSSD_OPTS
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    echo $(get_pid $GSSD) > /var/run/$GSSD_DAEMON_NAME.pid
    stat_done
    fi
    else
    stat_fail
    exit 1
    fi
    fi
    fi
    add_daemon $daemon_name
    stop)
    rc=0
    if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then
    if [ "$NEED_GSSD" = yes ]; then
    stat_busy "Stopping $GSSD_DAEMON_NAME daemon"
    PID=$(get_pid $GSSD)
    # KILL
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    rm -f /var/run/$GSSD_DAEMON_NAME.pid &> /dev/null
    stat_done
    fi
    fi
    if [ "$NEED_IDMAPD" = yes ]; then
    stat_busy "Stopping $IDMAPD_DAEMON_NAME daemon"
    PID=$(get_pid $IDMAPD)
    # KILL
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    rm -f /var/run/$IDMAPD_DAEMON_NAME.pid &> /dev/null
    stat_done
    fi
    fi
    do_umount "$PIPEFS_MOUNTPOINT" 2>/dev/null || true
    fi
    if [ "$NEED_STATD" = yes ]; then
    stat_busy "Stopping $STATD_DAEMON_NAME daemon"
    PID=$(get_pid $STATD)
    # KILL
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    rc=$(($rc+$?))
    if [ $rc -gt 0 ]; then
    stat_fail
    exit $rc
    else
    rm -f /var/run/$STATD_DAEMON_NAME.pid &> /dev/null
    stat_done
    fi
    fi
    rm_daemon $daemon_name
    status)
    stat_busy "$daemon_name running"
    if ck_daemon $daemon_name; then
    stat_fail
    else
    stat_done
    fi
    if [ "$NEED_STATD" = yes ]; then
    stat_busy "Daemon $STATD_DAEMON_NAME running"
    PID=$(get_pid $STATD)
    if [ -z "$PID" ]; then
    stat_fail
    else
    stat_done
    fi
    fi
    if [ "$NEED_GSSD" = yes ]; then
    stat_busy "Daemon $GSSD_DAEMON_NAME running"
    PID=$(get_pid $GSSD)
    if [ -z "$PID" ]; then
    stat_fail
    else
    stat_done
    fi
    fi
    if [ "$NEED_IDMAPD" = yes ]; then
    stat_busy "Daemon $IDMAPD_DAEMON_NAME running"
    PID=$(get_pid $IDMAPD)
    if [ -z "$PID" ]; then
    stat_fail
    else
    stat_done
    fi
    fi
    echo
    restart)
    $0 stop
    sleep 3
    $0 start
    echo "usage: $0 {start|stop|status|restart}"
    esac
    exit 0

Maybe you are looking for