Put the ancho and guajillo chiles in a pot of water and bring to a boil. Turn off the heat and allow the chiles to steep until they are rehydrated, about 30 minutes. Discard the seeds and stems and toss the chiles in a food processor along with the pineapple, honey, smoked paprika, vinegar, salt, chipotle chile, adobo sauce, garlic and oregano.
For the roast:
Slice the roast into 3/4-inch-thick slices, but don't cut all the way through.
Slather the marinade between each layer until all the meat is covered. Stack the onion slices in between the slices of meat. Tie the roast back together. Cover it and allow it to marinade in the refrigerator for at least 3 hours or overnight.
Preheat the oven to 475 degrees F (245 degrees C).
Put the roast on a rack in a roasting pan and add water to the bottom of the pan (this is to keep the drippings from smoking). Roast for 30 minutes at this temperature, and then turn down the heat to 300 degrees F (160 degrees C). Roast until the meat is very tender, about 3 hours.
After removing the meat from the oven, cover it with foil and let it rest for about 20 minutes.
When you're ready to serve, thinly slice the meat. Serve the meat on corn tortillas and garnish with onions, salsa and cilantro, and lime wedges on the side.
You can also slow cook the roast on a barbecue using indirect heat or the rotisserie if you have one.