Tutorial: debug language installation
This commit is contained in:
		
							parent
							
								
									2aac76d168
								
							
						
					
					
						commit
						c42dc69d58
					
				| 
						 | 
					@ -0,0 +1,81 @@
 | 
				
			||||||
 | 
					# Tutorial: debug language installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Except for the simplest cases, it's often helpful to debug lanugage
 | 
				
			||||||
 | 
					installation interactively. Open a new tab in the admin shell
 | 
				
			||||||
 | 
					(`control-b c`) and start the packaging image:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make shell I=packaging
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You'll probably want another instance of tmux:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make tmux
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now you should have at least three tabs in the top-level tmux: one
 | 
				
			||||||
 | 
					with the admin shell, one with the runtime shell, and one with the
 | 
				
			||||||
 | 
					packaging shell.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Targeted debugging commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Switch to the packaging shell and delete any leftover artifacts from
 | 
				
			||||||
 | 
					the previous build:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make pkg-clean T=lang L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then start a shell in the same context as the `install` scripts would
 | 
				
			||||||
 | 
					be run.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make pkg-debug T=lang L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now you can run installation commands manually to make sure they're
 | 
				
			||||||
 | 
					working. Normally the generated build script will be run; you can see
 | 
				
			||||||
 | 
					it by running
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make script T=lang L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and checking `build/lang/<mylanguage>/build.bash`. You can also run
 | 
				
			||||||
 | 
					that script in the appropriate context before entering your
 | 
				
			||||||
 | 
					`pkg-debug` session:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make pkg-build T=lang L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After you're satisfied with the layout of files you've put into
 | 
				
			||||||
 | 
					`${pkg}` and want to try installing the resulting package, start by
 | 
				
			||||||
 | 
					building the `.deb`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make pkg-deb T=lang L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then switch to the runtime shell. If you still only have one tab open
 | 
				
			||||||
 | 
					inside the nested tmux session, open a new one (`control-b control-b
 | 
				
			||||||
 | 
					c`). You can install the `.deb`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make install T=lang L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					At this point your language should be runnable so you can test it out.
 | 
				
			||||||
 | 
					It's best to test inside an isolated sandbox with the same set of
 | 
				
			||||||
 | 
					environment variables as will appear on Riju, though; you can start
 | 
				
			||||||
 | 
					such a shell as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ make sandbox L=mylanguage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You may find that the language fails to run as expected due to
 | 
				
			||||||
 | 
					packaging errors. If so, you can return to the packaging shell and
 | 
				
			||||||
 | 
					make adjustments inside `pkg-debug` before rebuilding and reinstalling
 | 
				
			||||||
 | 
					the package.
 | 
				
			||||||
		Loading…
	
		Reference in New Issue