Opened 14 years ago

Closed 14 years ago

#22798 closed defect (fixed)

signing-party port is missing a dependency to "getent"

Reported by: brian.gupta@… Owned by: milosh@…
Priority: Normal Milestone:
Component: ports Version: 1.8.1
Keywords: Cc:
Port: signing-party

Description (last modified by jmroot (Joshua Root))

B$ gpg-mailkeys KEYIDMASKED /opt/local/bin/gpg-mailkeys: line 54: getent: command not found

Looks like getent isn't available on OS-X, due to weirdness in NetInfo and DirectoryServices vs Linux user management.

Looks like it's simply puling out the current user's name: getent passwd $USER | cut -d: -f5 | cut -d, -f1

We could use a fake script called getent like this:

#!/bin/bash
# This file will not be consulted for authentication unless the BSD local node
#!/bin/bash
if [ -z $1 ];
  then
    echo "You must specify an user"
    exit 1
  else
    echo `dscl . -read /Users/$2 RecordName | sed 's/RecordName: //g'`:*:`dscl . -read /Users/$2 UniqueID | sed 's/UniqueID: //g'`:`dscl . -read /Users/$2 PrimaryGroupID | sed 's/PrimaryGroupID: //g'`:`dscl . -read /Users/$2 RealName | sed -e 's/RealName://g' -e 's/^ //g' | awk '{printf("%s", $0 (NR==1 ? "" : ""))}'`:/Users/$2:`dscl . -read /Users/$2 UserShell | sed 's/UserShell: //g'`
fi

exit 0

Change History (8)

comment:1 in reply to:  description Changed 14 years ago by brian.gupta@…

Opps try this:

#!/bin/bash if [ -z $1 ];

then

echo "You must specify an user" exit 1

else

echo dscl . -read /Users/$2 RecordName | sed 's/RecordName: g':*:dscl . -read /Users/$2 UniqueID | sed 's/UniqueID: g':dscl . -read /Users/$2 PrimaryGroupID | sed 's/PrimaryGroupID: g':dscl . -read /Users/$2 RealName | sed -e 's/RealName://g' -e 's/ g' | awk '{printf("%s", $0 (NR==1 ? "" : ""))}':/Users/$2:dscl . -read /Users/$2 UserShell | sed 's/UserShell: g'

fi

exit 0

comment:2 in reply to:  description Changed 14 years ago by brian.gupta@…

Find another missing deplendcy: qprint. http://www.fourmilab.ch/webtools/qprint/

Replying to brian.gupta@…:

B$ gpg-mailkeys KEYIDMASKED /opt/local/bin/gpg-mailkeys: line 54: getent: command not found

Looks like getent isn't available on OS-X, due to weirdness in NetInfo and DirectoryServices vs Linux user management.

Looks like it's simply puling out the current user's name: getent passwd $USER | cut -d: -f5 | cut -d, -f1

We could use a fake script called getent like this:

#!/bin/bash # This file will not be consulted for authentication unless the BSD local node #!/bin/bash if [ -z $1 ];

then

echo "You must specify an user" exit 1

else

echo dscl . -read /Users/$2 RecordName | sed 's/RecordName: //g':*:dscl . -read /Users/$2 UniqueID | sed 's/UniqueID: //g':dscl . -read /Users/$2 PrimaryGroupID | sed 's/PrimaryGroupID: //g':dscl . -read /Users/$2 RealName | sed -e 's/RealName://g' -e 's/^ //g' | awk '{printf("%s", $0 (NR==1 ? "" : ""))}':/Users/$2:dscl . -read /Users/$2 UserShell | sed 's/UserShell: //g'

fi

exit 0

comment:3 Changed 14 years ago by jmroot (Joshua Root)

Description: modified (diff)
Owner: changed from macports-tickets@… to milosh@…
Port: signing-party added

comment:4 Changed 14 years ago by milosh@…

Is this really this difficult to get a line like

milosh:x:1000:1000:Full Name:/home/milosh:/bin/zsh

on osx? There is no /etc/passwd file?

comment:5 Changed 14 years ago by brian.gupta@…

It sadly is so difficult because basically you have to pull the info out of Apple's DirectoryServices daemon, which is the successor to the NextStep netinfo tools. This has it's pluses and minuses. Key minus being incompatibility with legacy UNIX/Linux tools.

comment:6 Changed 14 years ago by milosh@…

On the mac I tested, there is a /etc/passwd file. So I propose as a replacement for getent the following script:

#! /bin/sh

if [ $# -eq 1 ] && [ $1 = 'passwd' ]; then
        cat /etc/passwd
elif [ $# -eq 2 ] && [ $1 = 'passwd' ]; then
        grep ^$2 /etc/passwd
else
        echo "getent: wrong number of arguments"
        exit 1
fi

comment:7 Changed 14 years ago by brian.gupta@…

/etc/passwd is a legecy file that won't have a user's entry in it. From: http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man5/passwd.5.html

"The /etc/passwd file is a legacy BSD 4.3 format file. It is mostly unused, but is updated by some utility programs. Its format is similar to the /etc/master.passwd file, except that it does not con-tain containtain the class, change, and expire fields described below."

Thus we do need to either use the getent I provided, or we need to succesfully push changes to support Mac OS-X dscl upstream. (into the Debian project).

Cheers, Brian

comment:8 Changed 14 years ago by milosh@…

Resolution: fixed
Status: newclosed

Resolved in r61387

Note: See TracTickets for help on using tickets.