Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Jan 2003 05:50:04 -0800 (PST)
From:      Ulrich Kiermayr <ulrich.kiermayr@univie.ac.at>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/47149: make -C documented but not working - [PATCH]
Message-ID:  <200301171350.h0HDo4lt066489@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/47149; it has been noted by GNATS.

From: Ulrich Kiermayr <ulrich.kiermayr@univie.ac.at>
To: freebsd-gnats-submit@FreeBSD.org
Cc: Lukas Ertl <l.ertl@univie.ac.at>
Subject: Re: bin/47149: make -C documented but not working - [PATCH]
Date: Fri, 17 Jan 2003 14:43:58 +0100

 This is the Complete backport of Lukas' Patch under -STABLE:
 
 -------------------------
 bash-2.05b# cat ~uk/make.patch.stable
 --- usr.bin/make/main.c.orig    Tue Dec 17 20:01:18 2002
 +++ usr.bin/make/main.c Fri Jan 17 14:39:29 2003
 @@ -176,9 +176,9 @@
 
           optind = 1;     /* since we're called more than once */
    #ifdef REMOTE
 -# define OPTFLAGS "BD:E:I:L:PSV:Xd:ef:ij:km:nqrstv"
 +# define OPTFLAGS "BC:D:E:I:L:PSV:Xd:ef:ij:km:nqrstv"
    #else
 -# define OPTFLAGS "BD:E:I:PSV:Xd:ef:ij:km:nqrstv"
 +# define OPTFLAGS "BC:D:E:I:PSV:Xd:ef:ij:km:nqrstv"
    #endif
    rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) {
                   switch(c) {
 @@ -503,17 +503,6 @@
                   }
           }
    #endif
 -       /*
 -        * Find where we are and take care of PWD for the automounter...
 -        * All this code is so that we know where we are when we start up
 -        * on a different machine with pmake.
 -        */
 -       curdir = cdpath;
 -       if (getcwd(curdir, MAXPATHLEN) == NULL)
 -               err(2, NULL);
 -
 -       if (stat(curdir, &sa) == -1)
 -           err(2, "%s", curdir);
 
    #ifdef WANT_ENV_PWD
           if ((pwd = getenv("PWD")) != NULL) {
 @@ -589,51 +578,6 @@
                           machine_cpu = "unknown";
           }
 
 -       /*
 -        * The object directory location is determined using the
 -        * following order of preference:
 -        *
 -        *      1. MAKEOBJDIRPREFIX`cwd`
 -        *      2. MAKEOBJDIR
 -        *      3. _PATH_OBJDIR.${MACHINE}
 -        *      4. _PATH_OBJDIR
 -        *      5. _PATH_OBJDIRPREFIX`cwd`
 -        *
 -        * If one of the first two fails, use the current directory.
 -        * If the remaining three all fail, use the current directory.
 -        *
 -        * Once things are initted,
 -        * have to add the original directory to the search path,
 -        * and modify the paths for the Makefiles apropriately.  The
 -        * current directory is also placed as a variable for make scripts.
 -        */
 -       if (!(pathp = getenv("MAKEOBJDIRPREFIX"))) {
 -               if (!(path = getenv("MAKEOBJDIR"))) {
 -                       path = _PATH_OBJDIR;
 -                       pathp = _PATH_OBJDIRPREFIX;
 -                       (void) snprintf(mdpath, MAXPATHLEN, "%s.%s",
 -                                       path, machine);
 -                       if (!(objdir = chdir_verify_path(mdpath, obpath)))
 -                               if (!(objdir=chdir_verify_path(path,
 obpath))) {
 -                                       (void) snprintf(mdpath, MAXPATHLEN,
 -                                                       "%s%s", pathp,
 curdir);
 -                                       if
 (!(objdir=chdir_verify_path(mdpath,
 -
 obpath)))
 -                                               objdir = curdir;
 -                               }
 -               }
 -               else if (!(objdir = chdir_verify_path(path, obpath)))
 -                       objdir = curdir;
 -       }
 -       else {
 -               (void) snprintf(mdpath, MAXPATHLEN, "%s%s", pathp, curdir);
 -               if (!(objdir = chdir_verify_path(mdpath, obpath)))
 -                       objdir = curdir;
 -       }
 -
 -#ifdef WANT_ENV_PWD
 -       setenv("PWD", objdir, 1);
 -#endif
 
           create = Lst_Init(FALSE);
           makefiles = Lst_Init(FALSE);
 @@ -675,10 +619,6 @@
           Var_Init();             /* As well as the lists of variables for
                                    * parsing arguments */
            str_init();
 -       if (objdir != curdir)
 -               Dir_AddDir(dirSearchPath, curdir);
 -       Var_Set(".CURDIR", curdir, VAR_GLOBAL);
 -       Var_Set(".OBJDIR", objdir, VAR_GLOBAL);
 
           /*
            * Initialize various variables.
 @@ -705,6 +645,69 @@
    #endif
 
           MainParseArgs(argc, argv);
 +
 +       /*
 +        * Find where we are and take care of PWD for the automounter...
 +        * All this code is so that we know where we are when we start up
 +        * on a different machine with pmake.
 +        */
 +       curdir = cdpath;
 +       if (getcwd(curdir, MAXPATHLEN) == NULL)
 +               err(2, NULL);
 +
 +       if (stat(curdir, &sa) == -1)
 +           err(2, "%s", curdir);
 +
 +       /*
 +        * The object directory location is determined using the
 +        * following order of preference:
 +        *
 +        *      1. MAKEOBJDIRPREFIX`cwd`
 +        *      2. MAKEOBJDIR
 +        *      3. _PATH_OBJDIR.${MACHINE}
 +        *      4. _PATH_OBJDIR
 +        *      5. _PATH_OBJDIRPREFIX`cwd`
 +        *
 +        * If one of the first two fails, use the current directory.
 +        * If the remaining three all fail, use the current directory.
 +        *
 +        * Once things are initted,
 +        * have to add the original directory to the search path,
 +        * and modify the paths for the Makefiles apropriately.  The
 +        * current directory is also placed as a variable for make scripts.
 +        */
 +       if (!(pathp = getenv("MAKEOBJDIRPREFIX"))) {
 +               if (!(path = getenv("MAKEOBJDIR"))) {
 +                       path = _PATH_OBJDIR;
 +                       pathp = _PATH_OBJDIRPREFIX;
 +                       (void) snprintf(mdpath, MAXPATHLEN, "%s.%s",
 +                                       path, machine);
 +                       if (!(objdir = chdir_verify_path(mdpath, obpath)))
 +                               if (!(objdir=chdir_verify_path(path,
 obpath))) {
 +                                       (void) snprintf(mdpath, MAXPATHLEN,
 +                                                       "%s%s", pathp,
 curdir);
 +                                       if
 (!(objdir=chdir_verify_path(mdpath,
 +
 obpath)))
 +                                               objdir = curdir;
 +                               }
 +               }
 +               else if (!(objdir = chdir_verify_path(path, obpath)))
 +                       objdir = curdir;
 +       }
 +       else {
 +               (void) snprintf(mdpath, MAXPATHLEN, "%s%s", pathp, curdir);
 +               if (!(objdir = chdir_verify_path(mdpath, obpath)))
 +                       objdir = curdir;
 +       }
 +
 +#ifdef WANT_ENV_PWD
 +       setenv("PWD", objdir, 1);
 +#endif
 +
 +       if (objdir != curdir)
 +               Dir_AddDir(dirSearchPath, curdir);
 +       Var_Set(".CURDIR", curdir, VAR_GLOBAL);
 +       Var_Set(".OBJDIR", objdir, VAR_GLOBAL);
 
           /*
            * Be compatible if user did not specify -j and did not explicitly
 
 -------------------------
 
 lG uk
 --
 ------------------------------------------------------------------------
 Ulrich Kiermayr         Zentraler Informatikdienst der Universitaet Wien
 Network Security              Universitaetsstrasse 7, 1010 Wien, Austria
 ------------------------------------------------------------------------
 eMail:   ulrich.kiermayr@univie.ac.at          Tel: (+43 1) 4277 / 14104
 Hotline: security.zid@univie.ac.at             Fax: (+43 1) 4277 /  9140
 Web:     http://www.univie.ac.at/zid/security.html
 ------------------------------------------------------------------------
 GPG Key fingerprint = BF0D 5749 4DC1 ED74 AB67  7180 105F 491D A8D7 64D8
 
 
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301171350.h0HDo4lt066489>