On 10/05/2013 11:11 PM, Rob Taylor wrote:
Hi Dan,
Thanks for the feedback. I'm just on vacation for a couple of weeks to Hawaii, the big island. So I may not seem very responsive to emails for a bit.
Oh goodness! I don't want to impact your vacation, but I'll still post--so that you can respond if you think this stuff is as much fun as Hawaii. :) BTW. I retired three years ago, so I am on continuous vacation. I love it. Besides, in one of my previous lives I was an engineer, and right now I'm trying to line up all my ducks before I start my build. So there is plenty of time. There are a few things I want to play with during my Ch. 5 efforts (see below) and that will slow me down.

Feel free to change or use anything I have created. I didn't really take over the hint, partially because I am not sure how much time I will have to put into supporting it. But I did work on the wrapper scripts because I tried out this user package management idea and I could see room for improvement. Anything you or anyone else can add to improve this project is welcome.
Which goes to my first question in this round. As a general statement, I'm closely reading the build and build.conf scripts. All of my questions stem from that.

Where can I find the 'root_{pre,post}_commands'? They do not appear in 'build.conf' and don't seem to be defined in 'build.' You call them as for .configure, make and install and make the logs, but I can't find the commands themselves. Ubuntu uses gedit for it's text editor and, when you print the file, it puts things in nice pretty colors depending on what the statement is. The last technicolor statement in the build script is "echo -n "Preparing for install(root)...". The next statement calls root_pre_install_commands, and it is in black as is the rest of the printed script. I'm thinking that it can't find the commands.

I downloaded the tarball yesterday.

...Su no longer exists in coreutils so copying it in section 5 can not occur. I see from the other effort mentioned here https://github.com/ericherman/package-users that he suggests installing shadow into the /tools area instead of /usr. That would make sense to avoid any collision of files later when the normal shadow install occurs.
This is one of the things I thought I'd play with after I learned about no 'su.' My building skills are a little stale, but they're slowly coming back. I seem to remember that you can 'make' or 'make install' individual targets. I'm wondering if you can do that in 'shadow' during Ch. 5. I think--remember I'm stale. please don't laugh--' make target=su' or 'make install -su'. If it's possible, the syntax escapes me right now. I seem to remember that there are some packages in LFS that build only one or a few targets in a package. I'll review the syntax and see what happens.
I thought about changing my_lfs_7_4_notes.txt <https://www.javacrypt.com/lfs/my_lfs_7_4_notes.txt> to use that approach but then decided that the example of how to deal with file overwrite issues is a useful demonstration of the scripts handling of these issues.
Gonna re-read those to see if it helps with the 'root_*_install commands' stuff.

6. The build script will still quit after a section such as the "check" fails. What I was referring to is that rather than a command such as

install -c -m04755 -o root -g root ../../sourcefilename /sbin

failing and causing the entire "make install" to fail because the package user 
does not have permissions to run it,
my wrapper scripts will filter out the -o root -g root and will alter the 
-m04755 to be -m755 and will create a log
of the command as it was before and after modification, present working 
directory when the command ran, any errors returned from

the command if it was run and in doing so the "make install" will continue to 
run through to completion installing any and all
files that would have been run after the failure. So when you are all done with 
a successful install, all you need to do is

examine the logs to see the list of files that you may or may not want to make 
SetUID or SetGID root etc..

My wrapper scripts will also examine any issues of ownership of files, log 
those issues and skip the specfic command that would

have generated a permission error so that the "make install" will continue as 
far as possible generating a complete list of these
files with ownership issues so that a single chown command can be run to fix 
all these permissions issues before rerunning

"make install" again without issue. You really would have to experience the 
process to appreaciate what I mean. Also, suppose you don't
want this package to have replaced those specific files where there was an 
overwrite situation? In this case if the overwrites

(which are logged for reveiew) are the only issue with an install and the 
install completed with a result of success, you can simply move on.
This is much more seamless than having to edit "Makefile.in" files removing or 
fixing offending entries and running

"make install" over and over again until it finally succeeds. Or moving files you want to 
"save" so that a "make install" can succeed just
to have to move those saved files back again as root overwritting the newly 
installed files with the ones you wanted to keep etc..
You can always run the build script with a list of phases as options to step 
through the install at yourown  pace. But then the ./build
script itself is open to change as well if you like.
This is a great improvement to this system. Matthias did a great job engineering it. However, as Linux and LFS grew and became more sophisticated, the original hint became a little (?) pedantic and "brute force." After a couple of builds, the interruptions were more than merely frustrating. That's why after I built my first {,B}LFS system, I generated my own install.dir.lst. I really want to see those 'root_*_install commands."
Thanks again for your feedback, I hope I didn't miss addressing any of your 
points.
Thanks for your efforts. You got them all. But.......I have some new ones. :)

I've beaten the "root_*" stuff enough. In addition, however, I didn't know that you could "su" in a script. That makes things really great!

I'm gonna go back to your build notes because I don't want to ask a dumb question about build directories. However, since you use 'ln -s' are the xxxbuild and yyysrc directories just "dummies" or do they actually exist? If they exist, what is their purpose?

Last thing so you can continue to vacation. I was interested to see how you handled all the tar.{xz,gz,bz.bz2} files. PATTERNS seems to be the key. In build.conf "PATTERNS='4.3.2.tar". I don't understand this. Would you explain it? I hope this isn't going to be a "duh moment" for me. :)

Thanks for getting back to me. Enjoy the sun and fun. In another venue I'll tell you about the "Kalakua Death March" I learned in the Navy.

You take care too,
Dan
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page

Reply via email to